* Vineet Gupta: > It seems that commit also removed init_array from > sysdeps/{riscv,csky}/Implies - so newer arches. I suppose I need to do > that for ARC as well - but could you please explain (or point to > documentation) which explains how this the Implies stuff works. You are very lucky. The mechanism is explained in the section Porting the GNU C Library in the manual: <https://www.gnu.org/software/libc/manual/html_node/Porting.html> It's one of the few aspects of our build systems that's documented. However, in commit f4349837d93b4dfe9ba09791e280ee2d6c99919f ("Introduce <elf-initfini.h> and ELF_INITFINI for all architectures") I replaced the use of the implies mechanism with a new header file, <elf-initfini.h>. This allows us to control the default for new targets in a more explicit way. Previously, new ports had to include initarray explicitly, and we know from past experience (the lack of removal of the sysctl function comes to my mind) that this does not work. >> But I'm no longer sure if RISC-V is actually an !ELF_INITFINI >> architecture. > > And an arch is !ELF_INITFINI if it supports initarray ? Not necessarily. glibc always supports DT_INITARRAY for all targets, but on some targets, it is necessary to honor DT_INIT/DT_FINI for legacy binaries at least. (I hope no targets are left where binutils produces DT_INIT for regular ELF constructors, but I haven't checked.) > I did switch ARC gcc [1] / binutils [2]to initarray last year > > [1] http://lists.infradead.org/pipermail/linux-snps-arc/2019-January/005318.html > [2] http://lists.infradead.org/pipermail/linux-snps-arc/2019-February/005388.html I haven't followed the ARC contribution process closely, sorry. Do you plan to contribute the port with a GLIBC_2.32 ABI baseline, or do you want to support older binaries for an earlier non-upstream port, backdating the baseline? This matters because in the GLIBC_2.32 case, old binaries will not work anyway, so we may as well require that they are rebuilt without DT_INIT/DT_FINI. In this case, the glibc master defaults should work. If you want to support old binaries (which use older symbol versions such as GLIBC_2.17), it may make sense to keep DT_INIT/DT_FINI support as well. To achieve this, you need to add an <elf-initifini.h> header file with /* Enable DT_INIT/DT_FINI support. */ #define ELF_INITFINI 1 and keep the crti.S and crtn.S files you already have. Thanks, Florian _______________________________________________ linux-snps-arc mailing list linux-snps-arc@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/linux-snps-arc