[PATCH] Introduce ELF_INITFINI for all architectures

Palmer Dabbelt palmer@sifive.com
Thu Aug 9 03:18:00 GMT 2018


On Wed, 08 Aug 2018 12:55:57 PDT (-0700), fweimer@redhat.com wrote:
> On 08/08/2018 09:49 PM, Palmer Dabbelt wrote:
>> On Wed, 08 Aug 2018 07:42:27 PDT (-0700), fweimer@redhat.com wrote:
>>> On 06/23/2018 11:45 PM, Florian Weimer wrote:
>>>> 2018-06-23  Florian Weimer<fweimer@redhat.com>
>>>>
>>>>     Introduce ELF_INITFINI, set everywhere except on RISC-V.
>>>>     * sysdeps/init_array/crti.S: Move to ...
>>>>     * sysdepes/generic/crti.S: here.  Report an error if ELF_INITFINI.
>>>>     * sysdeps/init_array/crtn.S: Move to ...
>>>>     * sysdeps/generic/crtn.S: here.  Report an error if ELF_INITFINI.
>>>>     * csu/elf-init.c: Check ELF_INITFINI instead of NO_INITFINI.
>>>>     * gmon/gmon-start.c [!ELF_INITFINI] (GMON_START_ARRAY_SECTION):
>>>>     Define.
>>>>     * elf/dl-fini.c (_dl_fini): Check for ELF_INITFINI before using
>>>>     DT_FINI.
>>>>     * elf/dl-init.c (call_init): Check for ELF_INITFINI before using
>>>>     DT_INIT.
>>>>     * nptl/pt-crti.S [ELF_INITFINI]: Use .init_array instead of
>>>>     PREINIT_FUNCTION.
>>>>     * sysdeps/generic/platform-params.h: New file.
>>>>     * sysdeps/init_array/elf-init.c: Remove file.
>>>>     * sysdeps/init_array/gmon-start.c: Likewise.
>>>>     * sysdeps/init_array/pt-crti.S: Likewise.
>>>>     * sysdeps/riscv/Implies (init_array): Remove.
>>>>     * sysdeps/riscv/platform-params.h: New file.
>>>
>>> Ping?
>>>
>>>    <https://sourceware.org/ml/libc-alpha/2018-07/msg00051.html>
>>
>> I'm happy with the RISC-V aspects, which I understand to be functionally
>> a NOP. I like avoiding the ABI bloat.
>>
>> For some reason I thought someone mentioned some references to
>> _init/_fini floating around our port, but I can't find any so maybe I'm
>> just going crazy? If they're there then we should probably remove them,
>> as they don't actually do anything.
>
> The patch removes the DT_INIT/DT_FINI execution logic from the RISC-V
> port because ELF_INITFINI && l->l_info[DT_FINI] != NULL and the similar
> condition for DT_INIT are always false.  Before the patch, the code is
> still there, but dormant because the GNU toolchain will always generate
> NULL pointers there.

Ah, thanks!



More information about the Libc-alpha mailing list