On Wed, 18 Jul 2018 at 09:37, Waldemar Brodkorb <w...@uclibc-ng.org> wrote: > > Hi Christophe, > Waldemar Brodkorb wrote, > > > Hi Christophe, > > > > i am doing a large testrun for the global changes and hopefully push on > > monday or at least have some news. i am afk atm with just little access to > > a computer. > > > > ARM v5 soft eabi arm mode fails to compile, see the attached error > log. You can check with embedded-test.sh if you like. > > Any idea? All patches appliend on top of master,
Thanks for testing this configuration. I left FDPIC-only code activated unconditionally. Can you try the attached small patch? I have an embedded-test.sh build running now. Sorry, I didn't know about this script, I have used armv5 as arch, is it the one you meant? I am on holidays atm, so I may not respond timely for a while. Thanks, Christophe > > best regards > Waldemar
diff --git a/ldso/ldso/arm/dl-sysdep.h b/ldso/ldso/arm/dl-sysdep.h index 2bb0023..be53bd6 100644 --- a/ldso/ldso/arm/dl-sysdep.h +++ b/ldso/ldso/arm/dl-sysdep.h @@ -77,6 +77,7 @@ unsigned long _dl_linux_resolver(struct elf_resolve * tpnt, int reloc_entry); ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one of the main executable's symbols, as for a COPY reloc. +#ifdef __FDPIC__ Avoid R_ARM_ABS32 to go through the PLT so that R_ARM_TARGET1 translated to R_ARM_ABS32 doesn't use the PLT: otherwise, this breaks init_array because functions are referenced through the @@ -87,6 +88,13 @@ unsigned long _dl_linux_resolver(struct elf_resolve * tpnt, int reloc_entry); || (type) == R_ARM_TLS_DTPOFF32 || (type) == R_ARM_TLS_TPOFF32) \ * ELF_RTYPE_CLASS_PLT) \ | (((type) == R_ARM_COPY) * ELF_RTYPE_CLASS_COPY)) +#else +#define elf_machine_type_class(type) \ + ((((type) == R_ARM_JUMP_SLOT || (type) == R_ARM_TLS_DTPMOD32 \ + || (type) == R_ARM_TLS_DTPOFF32 || (type) == R_ARM_TLS_TPOFF32) \ + - ELF_RTYPE_CLASS_PLT) \ + | (((type) == R_ARM_COPY) * ELF_RTYPE_CLASS_COPY)) +#endf /* __FDPIC__ */ /* Return the link-time address of _DYNAMIC. Conveniently, this is the first element of the GOT. We used to use the PIC register to do this @@ -125,6 +133,7 @@ elf_machine_dynamic (void) extern char __dl_start[] __asm__("_dl_start"); +#ifdef __FDPIC__ /* We must force strings used early in the bootstrap into the data segment. */ #undef SEND_EARLY_STDERR @@ -133,6 +142,7 @@ extern char __dl_start[] __asm__("_dl_start"); #undef INIT_GOT #include "../fdpic/dl-sysdep.h" +#endif /* __FDPIC__ */ /* Return the run-time load address of the shared object. */ static __always_inline Elf32_Addr __attribute__ ((unused))
_______________________________________________ devel mailing list devel@uclibc-ng.org https://mailman.uclibc-ng.org/cgi-bin/mailman/listinfo/devel