From: Xi Ruoyao Date: Wed, 19 Jun 2024 06:04:18 +0000 (+0800) Subject: LoongArch: TLS IE needs only one dynamic reloc X-Git-Tag: binutils-2_43~341 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b5b05a6e6524778e20fccd6b019e781727659f42;p=thirdparty%2Fbinutils-gdb.git LoongArch: TLS IE needs only one dynamic reloc As the comment in the code says, TLS_IE needs only one dynamic reloc. But commit b67a17aa7c0c ("LoongArch: Fix the issue of excessive relocation generated by GD and IE") has incorrectly allocated the space for two dynamic relocs, causing libc.so to contain 8 R_LARCH_NONE. Adjust tlsdesc-dso.d for the offset changes and add two tests to ensure there are no R_LARCH_NONE with TLS. Signed-off-by: Xi Ruoyao --- diff --git a/bfd/elfnn-loongarch.c b/bfd/elfnn-loongarch.c index 93c036f6a53..b1720760475 100644 --- a/bfd/elfnn-loongarch.c +++ b/bfd/elfnn-loongarch.c @@ -1353,7 +1353,7 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf) { s->size += GOT_ENTRY_SIZE; if (need_reloc) - htab->elf.srelgot->size += 2 * sizeof (ElfNN_External_Rela); + htab->elf.srelgot->size += sizeof (ElfNN_External_Rela); } /* TLS_DESC needs one dynamic reloc and two GOT slot. */ diff --git a/ld/testsuite/ld-loongarch-elf/desc-ie-reloc.d b/ld/testsuite/ld-loongarch-elf/desc-ie-reloc.d new file mode 100644 index 00000000000..c7a2f8edb8a --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/desc-ie-reloc.d @@ -0,0 +1,9 @@ +#source: desc-ie.s +#as: +#ld: -shared -z norelro --hash-style=both +#readelf: -Wr + +#failif +#... +.* +R_LARCH_NONE +.* +#... diff --git a/ld/testsuite/ld-loongarch-elf/desc-ie.d b/ld/testsuite/ld-loongarch-elf/desc-ie.d index c833b233d42..0759404b89a 100644 --- a/ld/testsuite/ld-loongarch-elf/desc-ie.d +++ b/ld/testsuite/ld-loongarch-elf/desc-ie.d @@ -8,7 +8,7 @@ Disassembly of section .text: [0-9a-f]+ : - +[0-9a-f]+: 1a000084 pcalau12i \$a0, .* - +[0-9a-f]+: 28cd0084 ld.d \$a0, \$a0, .* - +[0-9a-f]+: 1a000084 pcalau12i \$a0, .* - +[0-9a-f]+: 28cd0084 ld.d \$a0, \$a0, .* + +[0-9a-f]+: [0-9a-f]+ pcalau12i \$a0, .* + +[0-9a-f]+: [0-9a-f]+ ld.d \$a0, \$a0, .* + +[0-9a-f]+: [0-9a-f]+ pcalau12i \$a0, .* + +[0-9a-f]+: [0-9a-f]+ ld.d \$a0, \$a0, .* diff --git a/ld/testsuite/ld-loongarch-elf/ld-loongarch-elf.exp b/ld/testsuite/ld-loongarch-elf/ld-loongarch-elf.exp index 40f56576cbc..d833a89246e 100644 --- a/ld/testsuite/ld-loongarch-elf/ld-loongarch-elf.exp +++ b/ld/testsuite/ld-loongarch-elf/ld-loongarch-elf.exp @@ -130,7 +130,9 @@ if [istarget "loongarch64-*-*"] { if [istarget "loongarch64-*-*"] { if [check_shared_lib_support] { run_dump_test "desc-ie" + run_dump_test "desc-ie-reloc" run_dump_test "tlsdesc-dso" + run_dump_test "tlsdesc-dso-reloc" run_dump_test "desc-norelax" run_dump_test "desc-relax" run_dump_test "data-got" diff --git a/ld/testsuite/ld-loongarch-elf/tlsdesc-dso-reloc.d b/ld/testsuite/ld-loongarch-elf/tlsdesc-dso-reloc.d new file mode 100644 index 00000000000..d5afa7c3657 --- /dev/null +++ b/ld/testsuite/ld-loongarch-elf/tlsdesc-dso-reloc.d @@ -0,0 +1,9 @@ +#source: tlsdesc-dso.s +#as: +#ld: -shared -z norelro --hash-style=both +#readelf: -Wr + +#failif +#... +.* +R_LARCH_NONE +.* +#... diff --git a/ld/testsuite/ld-loongarch-elf/tlsdesc-dso.d b/ld/testsuite/ld-loongarch-elf/tlsdesc-dso.d index 8f66302f1cf..d6997ec9455 100644 --- a/ld/testsuite/ld-loongarch-elf/tlsdesc-dso.d +++ b/ld/testsuite/ld-loongarch-elf/tlsdesc-dso.d @@ -9,52 +9,52 @@ Disassembly of section .text: [0-9a-f]+ : - +[0-9a-f]+: 18021584 pcaddi \$a0, 4268 - +[0-9a-f]+: 1a000084 pcalau12i \$a0, 4 - +[0-9a-f]+: 28dd4084 ld.d \$a0, \$a0, 1872 - +[0-9a-f]+: 18021364 pcaddi \$a0, 4251 - +[0-9a-f]+: 180213c4 pcaddi \$a0, 4254 - +[0-9a-f]+: 28c00081 ld.d \$ra, \$a0, 0 - +[0-9a-f]+: 4c000021 jirl \$ra, \$ra, 0 - +[0-9a-f]+: 1a000084 pcalau12i \$a0, 4 - +[0-9a-f]+: 28dc0084 ld.d \$a0, \$a0, 1792 - +[0-9a-f]+: 1a000084 pcalau12i \$a0, 4 - +[0-9a-f]+: 28dc0084 ld.d \$a0, \$a0, 1792 - +[0-9a-f]+: 18021364 pcaddi \$a0, 4251 - +[0-9a-f]+: 180213c4 pcaddi \$a0, 4254 - +[0-9a-f]+: 28c00081 ld.d \$ra, \$a0, 0 - +[0-9a-f]+: 4c000021 jirl \$ra, \$ra, 0 - +[0-9a-f]+: 1a000084 pcalau12i \$a0, 4 - +[0-9a-f]+: 28dce084 ld.d \$a0, \$a0, 1848 + +[0-9a-f]+: [0-9a-f]+ pcaddi \$a0, .* + +[0-9a-f]+: [0-9a-f]+ pcalau12i \$a0, .* + +[0-9a-f]+: [0-9a-f]+ ld.d \$a0, \$a0, .* + +[0-9a-f]+: [0-9a-f]+ pcaddi \$a0, .* + +[0-9a-f]+: [0-9a-f]+ pcaddi \$a0, .* + +[0-9a-f]+: [0-9a-f]+ ld.d \$ra, \$a0, .* + +[0-9a-f]+: [0-9a-f]+ jirl \$ra, \$ra, .* + +[0-9a-f]+: [0-9a-f]+ pcalau12i \$a0, .* + +[0-9a-f]+: [0-9a-f]+ ld.d \$a0, \$a0, .* + +[0-9a-f]+: [0-9a-f]+ pcalau12i \$a0, .* + +[0-9a-f]+: [0-9a-f]+ ld.d \$a0, \$a0, .* + +[0-9a-f]+: [0-9a-f]+ pcaddi \$a0, .* + +[0-9a-f]+: [0-9a-f]+ pcaddi \$a0, .* + +[0-9a-f]+: [0-9a-f]+ ld.d \$ra, \$a0, .* + +[0-9a-f]+: [0-9a-f]+ jirl \$ra, \$ra, .* + +[0-9a-f]+: [0-9a-f]+ pcalau12i \$a0, .* + +[0-9a-f]+: [0-9a-f]+ ld.d \$a0, \$a0, .* [0-9a-f]+ : - +[0-9a-f]+: 1a000084 pcalau12i \$a0, 4 - +[0-9a-f]+: 28daa084 ld.d \$a0, \$a0, 1704 - +[0-9a-f]+: 18020de4 pcaddi \$a0, 4207 - +[0-9a-f]+: 18020f04 pcaddi \$a0, 4216 - +[0-9a-f]+: 28c00081 ld.d \$ra, \$a0, 0 - +[0-9a-f]+: 4c000021 jirl \$ra, \$ra, 0 - +[0-9a-f]+: 18020e24 pcaddi \$a0, 4209 - +[0-9a-f]+: 1a000084 pcalau12i \$a0, 4 - +[0-9a-f]+: 28db4084 ld.d \$a0, \$a0, 1744 - +[0-9a-f]+: 1a000084 pcalau12i \$a0, 4 - +[0-9a-f]+: 28db4084 ld.d \$a0, \$a0, 1744 - +[0-9a-f]+: 18020f44 pcaddi \$a0, 4218 - +[0-9a-f]+: 28c00081 ld.d \$ra, \$a0, 0 - +[0-9a-f]+: 4c000021 jirl \$ra, \$ra, 0 - +[0-9a-f]+: 18020e64 pcaddi \$a0, 4211 - +[0-9a-f]+: 1a000084 pcalau12i \$a0, 4 - +[0-9a-f]+: 28dba084 ld.d \$a0, \$a0, 1768 + +[0-9a-f]+: [0-9a-f]+ pcalau12i \$a0, .* + +[0-9a-f]+: [0-9a-f]+ ld.d \$a0, \$a0, .* + +[0-9a-f]+: [0-9a-f]+ pcaddi \$a0, .* + +[0-9a-f]+: [0-9a-f]+ pcaddi \$a0, .* + +[0-9a-f]+: [0-9a-f]+ ld.d \$ra, \$a0, .* + +[0-9a-f]+: [0-9a-f]+ jirl \$ra, \$ra, .* + +[0-9a-f]+: [0-9a-f]+ pcaddi \$a0, .* + +[0-9a-f]+: [0-9a-f]+ pcalau12i \$a0, .* + +[0-9a-f]+: [0-9a-f]+ ld.d \$a0, \$a0, .* + +[0-9a-f]+: [0-9a-f]+ pcalau12i \$a0, .* + +[0-9a-f]+: [0-9a-f]+ ld.d \$a0, \$a0, .* + +[0-9a-f]+: [0-9a-f]+ pcaddi \$a0, .* + +[0-9a-f]+: [0-9a-f]+ ld.d \$ra, \$a0, .* + +[0-9a-f]+: [0-9a-f]+ jirl \$ra, \$ra, .* + +[0-9a-f]+: [0-9a-f]+ pcaddi \$a0, .* + +[0-9a-f]+: [0-9a-f]+ pcalau12i \$a0, .* + +[0-9a-f]+: [0-9a-f]+ ld.d \$a0, \$a0, .* [0-9a-f]+ : - +[0-9a-f]+: 18020ec4 pcaddi \$a0, 4214 - +[0-9a-f]+: 28c00081 ld.d \$ra, \$a0, 0 - +[0-9a-f]+: 4c000021 jirl \$ra, \$ra, 0 + +[0-9a-f]+: [0-9a-f]+ pcaddi \$a0, .* + +[0-9a-f]+: [0-9a-f]+ ld.d \$ra, \$a0, .* + +[0-9a-f]+: [0-9a-f]+ jirl \$ra, \$ra, .* [0-9a-f]+ : - +[0-9a-f]+: 18021224 pcaddi \$a0, 4241 - +[0-9a-f]+: 28c00081 ld.d \$ra, \$a0, 0 - +[0-9a-f]+: 4c000021 jirl \$ra, \$ra, 0 - +[0-9a-f]+: 18021144 pcaddi \$a0, 4234 - +[0-9a-f]+: 28c00081 ld.d \$ra, \$a0, 0 - +[0-9a-f]+: 4c000021 jirl \$ra, \$ra, 0 + +[0-9a-f]+: [0-9a-f]+ pcaddi \$a0, .* + +[0-9a-f]+: [0-9a-f]+ ld.d \$ra, \$a0, .* + +[0-9a-f]+: [0-9a-f]+ jirl \$ra, \$ra, .* + +[0-9a-f]+: [0-9a-f]+ pcaddi \$a0, .* + +[0-9a-f]+: [0-9a-f]+ ld.d \$ra, \$a0, .* + +[0-9a-f]+: [0-9a-f]+ jirl \$ra, \$ra, .*