bfd/
* elfxx-sparc.c (_bfd_sparc_elf_check_relocs): For R_SPARC_GOTDATA_OP_HIX22 and R_SPARC_GOTDATA_OP_LOX10, only bump the GOT refcount for global symbols. (_bfd_sparc_elf_gc_sweep_hook): Likewise only decrement the GOT count for these relocs on global symbols. (gdopoff): New. (_bfd_sparc_elf_relocate_section): Perform GOTDATA optimizations on local symbol references which are not STT_GNU_IFUNC. Handle relocation of them like R_SPARC_HIX22 and R_SPARC_LOX10 respectively, and deal with negative vs. non-negative values properly. ld/testsuite * ld-sparc/gotop32.s: Add local symbol case. * ld-sparc/gotop64.s: Likewise. * ld-sparc/gotop32.rd: Adjust expected results. * ld-sparc/gotop32.td: Likewise. * ld-sparc/gotop64.dd: Likewise. * ld-sparc/gotop64.rd: Likewise. * ld-sparc/gotop64.td: Likewise.
Showing
- bfd/ChangeLog 13 additions, 0 deletionsbfd/ChangeLog
- bfd/elfxx-sparc.c 85 additions, 26 deletionsbfd/elfxx-sparc.c
- ld/testsuite/ChangeLog 10 additions, 0 deletionsld/testsuite/ChangeLog
- ld/testsuite/ld-sparc/gotop32.dd 9 additions, 3 deletionsld/testsuite/ld-sparc/gotop32.dd
- ld/testsuite/ld-sparc/gotop32.rd 1 addition, 0 deletionsld/testsuite/ld-sparc/gotop32.rd
- ld/testsuite/ld-sparc/gotop32.s 9 additions, 0 deletionsld/testsuite/ld-sparc/gotop32.s
- ld/testsuite/ld-sparc/gotop32.td 1 addition, 1 deletionld/testsuite/ld-sparc/gotop32.td
- ld/testsuite/ld-sparc/gotop64.dd 9 additions, 3 deletionsld/testsuite/ld-sparc/gotop64.dd
- ld/testsuite/ld-sparc/gotop64.rd 1 addition, 0 deletionsld/testsuite/ld-sparc/gotop64.rd
- ld/testsuite/ld-sparc/gotop64.s 9 additions, 0 deletionsld/testsuite/ld-sparc/gotop64.s
- ld/testsuite/ld-sparc/gotop64.td 1 addition, 1 deletionld/testsuite/ld-sparc/gotop64.td
Loading
Please register or sign in to comment