Evan Green
a29bb320a1
riscv: Enable multi-arg ifunc resolvers
...
RISC-V is apparently the first architecture to pass more than one
argument to ifunc resolvers. The helper macros in libc-symbols.h,
__ifunc_resolver(), __ifunc(), and __ifunc_hidden(), are incompatible
with this. These macros have an "arg" (non-final) parameter that
represents the parameter signature of the ifunc resolver. The result is
an inability to pass the required comma through in a single preprocessor
argument.
Rearrange the __ifunc_resolver() macro to be variadic, and pass the
types as those variable parameters. Move the guts of __ifunc() and
__ifunc_hidden() into new macros, __ifunc_args(), and
__ifunc_args_hidden(), that pass the variable arguments down through to
__ifunc_resolver(). Then redefine __ifunc() and __ifunc_hidden(), which
are used in a bunch of places, to simply shuffle the arguments down into
__ifunc_args[_hidden]. Finally, define a riscv-ifunc.h header, which
provides convenience macros to those looking to write ifunc selectors
that use both arguments.
Signed-off-by: Evan Green <evan@rivosinc.com>
Reviewed-by: Florian Weimer <fweimer@redhat.com>
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
2024-03-01 07:14:59 -08:00
..
2023-06-02 01:39:48 +00:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2020-07-21 07:33:20 +02:00
2024-01-01 10:53:40 -08:00
2020-12-10 11:11:20 +01:00
2020-07-08 17:25:57 +02:00
2024-01-01 10:53:40 -08:00
2021-06-25 11:55:27 +02:00
2023-10-24 12:30:59 +02:00
2024-01-01 10:53:40 -08:00
2018-06-27 19:20:37 +02:00
2024-01-01 10:53:40 -08:00
2019-02-16 08:25:16 +01:00
2017-10-01 15:10:27 -07:00
2019-03-01 15:21:32 -03:00
2018-02-15 21:00:02 +00:00
2024-01-01 10:53:40 -08:00
2022-08-03 11:43:04 +02:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2023-09-05 13:08:59 -03:00
2017-05-15 10:23:28 -03:00
2018-02-23 13:54:53 +00:00
2021-06-22 12:09:52 -03:00
2024-02-23 08:50:00 -03:00
2017-09-26 16:53:44 -07:00
2019-06-18 16:42:10 +02:00
2016-09-23 08:43:56 -04:00
2020-03-25 14:34:23 -05:00
2020-11-13 12:59:19 -03:00
2023-05-01 19:33:21 +02:00
2016-09-23 08:43:56 -04:00
2018-06-26 13:22:53 -03:00
2021-06-15 10:42:11 -03:00
2024-02-01 11:02:01 +00:00
2018-09-04 19:52:06 +00:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2019-08-15 15:18:34 +00:00
2017-10-01 17:52:15 -07:00
2019-02-16 08:25:16 +01:00
2021-06-15 10:42:11 -03:00
2021-06-15 10:42:11 -03:00
2017-04-07 07:45:53 -04:00
2021-07-01 16:46:59 +02:00
2022-11-07 10:40:21 -03:00
2024-01-01 10:53:40 -08:00
2023-10-24 12:30:59 +02:00
2023-10-24 12:30:59 +02:00
2023-10-24 12:30:59 +02:00
2024-01-01 10:53:40 -08:00
2023-08-11 10:10:16 +02:00
2017-10-01 17:35:46 -07:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2020-12-08 18:15:27 +00:00
2019-02-16 08:25:16 +01:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-03-01 07:14:59 -08:00
2020-05-06 17:35:40 +02:00
2024-02-01 11:02:01 +00:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2021-07-22 18:38:04 +05:30
2024-01-01 10:53:40 -08:00
2021-09-15 22:57:35 +00:00
2021-07-22 18:38:02 +05:30
2017-10-01 17:37:42 -07:00
2020-04-30 08:52:08 -05:00
2021-06-25 12:21:12 +02:00
2023-10-24 12:30:59 +02:00
2023-10-24 12:30:59 +02:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2017-11-23 14:08:11 +01:00
2016-09-23 08:43:56 -04:00
2017-10-01 17:31:05 -07:00
2024-01-01 10:53:40 -08:00
2022-12-19 18:56:54 +01:00
2021-06-25 12:20:47 +02:00
2021-06-30 08:43:37 +02:00
2023-10-24 12:30:59 +02:00
2024-01-01 10:53:40 -08:00
2019-02-16 08:25:16 +01:00
2023-05-01 09:08:59 -04:00
2019-02-16 08:25:16 +01:00
2024-01-01 10:53:40 -08:00
2022-08-30 10:02:49 +02:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2020-02-20 08:57:01 +01:00
2024-01-01 10:53:40 -08:00
2019-05-02 11:42:51 +02:00
2024-01-01 10:53:40 -08:00
2023-08-03 22:46:48 +02:00
2023-10-24 12:30:59 +02:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2022-05-13 10:54:41 -03:00
2019-10-09 17:48:41 -03:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-03 12:07:14 +00:00
2024-01-01 10:53:40 -08:00
2019-03-13 09:42:09 -04:00
2016-09-23 08:43:56 -04:00
2024-02-01 11:02:01 +00:00
2024-02-01 11:02:01 +00:00
2024-02-06 09:17:04 +01:00
2020-10-27 09:54:50 -03:00
2020-04-06 23:05:11 +02:00
2020-05-05 19:36:25 +02:00
2017-10-01 17:48:24 -07:00
2022-11-17 14:35:13 -03:00
2016-09-23 08:43:56 -04:00
2024-01-01 10:53:40 -08:00
2023-07-05 16:59:48 +02:00
2021-06-30 08:43:37 +02:00
2024-01-01 10:53:40 -08:00
2019-11-06 09:20:52 -03:00
2019-02-16 08:25:16 +01:00
2024-02-01 11:02:01 +00:00
2017-06-08 13:58:17 -04:00