]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
LoongArch: Fix some test failures about TLS desc and TLS relaxation
authorXi Ruoyao <xry111@xry111.site>
Fri, 19 Jan 2024 16:38:24 +0000 (00:38 +0800)
committerliuzhensong <liuzhensong@loongson.cn>
Mon, 22 Jan 2024 09:14:36 +0000 (17:14 +0800)
There are two issues causing 11 test failures:

1. The TLS desc tests are matching the entire disassemble of a linked
   executable.  But if ld is configured --enable-default-hash-style=gnu
   (note that most modern distros use this option), the layout of the
   linked executables will be different and the immediate operands in
   the linked executables will also be different.  So we add
   "--hash-style=both" for these tests to cancel the effect of
   --enable-default-hash-style=gnu, like [x86_64 mark-plt tests].
2. By default objdump disassemble uses [pseudo-instructions] so "addi.w"
   is outputed as "li.w", causing mismatches in TLS relaxation tests.
   We can turn off the pseudo-instruction usage in objdump using "-M
   no-aliases" to fix them.

[x86_64 mark-plt tests]: 16666ccc91295d1568c5c2cb0e7600694840dfd9
[pseudo-instructions]: 17f9439038257b1de0c130a416a9a7645c653cb0

Signed-off-by: Xi Ruoyao <xry111@xry111.site>
ld/testsuite/ld-loongarch-elf/desc-ie.d
ld/testsuite/ld-loongarch-elf/desc-norelax.d
ld/testsuite/ld-loongarch-elf/desc-relax.d
ld/testsuite/ld-loongarch-elf/relax.exp
ld/testsuite/ld-loongarch-elf/tlsdesc-dso.d

index d1acbfc69727b2c210125229d43a0d28c38e3141..32e350507dbd46f29c07c07251623599b96784bd 100644 (file)
@@ -1,5 +1,5 @@
 #as:
-#ld: -shared -z norelro -e 0x0
+#ld: -shared -z norelro -e 0x0 --hash-style=both
 #objdump: -dr
 #skip: loongarch32-*-*
 
index 32ce3e5eb943e9ac6ceb9fff7c80f18b9a712bdd..e4863dda36a5087dd38f9d5d95d6fab968daa3b2 100644 (file)
@@ -1,5 +1,5 @@
 #as:
-#ld: -z norelro -shared --section-start=.got=0x1ff000
+#ld: -z norelro -shared --section-start=.got=0x1ff000 --hash-style=both
 #objdump: -dr
 #skip: loongarch32-*-*
 
index ce53d3172729e10a5e63f4548358f2a165d4113a..c885953c7273b2fd1b25fb1803120b905b9dbd67 100644 (file)
@@ -1,5 +1,5 @@
 #as:
-#ld: -z norelro -shared
+#ld: -z norelro -shared --hash-style=both
 #objdump: -dr
 #skip: loongarch32-*-*
 
index f3fd169dbd36c78100c98c652a1b79fbd7f87a4a..f421e8af8dd6bbef261a61b381ebf1d1cab44946 100644 (file)
@@ -104,7 +104,7 @@ if [istarget loongarch64-*-*] {
        ]
 
       if [file exist "tmpdir/relax-tls-le"] {
-       set objdump_output1 [run_host_cmd "objdump" "-d tmpdir/relax-tls-le"]
+       set objdump_output1 [run_host_cmd "objdump" "-d tmpdir/relax-tls-le -M no-aliases"]
        if { [ regexp ".addi.*st.*" $objdump_output1] } {
          pass "loongarch relax success"
        } {
@@ -125,7 +125,7 @@ if [istarget loongarch64-*-*] {
        ]
 
       if [file exist "tmpdir/no-relax-tls-le"] {
-       set objdump_output2 [run_host_cmd "objdump" "-d tmpdir/no-relax-tls-le"]
+       set objdump_output2 [run_host_cmd "objdump" "-d tmpdir/no-relax-tls-le -M no-aliases"]
        if { [ regexp ".*lu12i.*add.*addi.*st.*" $objdump_output2] } {
          pass "loongarch no-relax success"
        } {
@@ -146,7 +146,7 @@ if [istarget loongarch64-*-*] {
        ]
 
       if [file exist "tmpdir/old-tls-le"] {
-       set objdump_output3 [run_host_cmd "objdump" "-d tmpdir/old-tls-le"]
+       set objdump_output3 [run_host_cmd "objdump" "-d tmpdir/old-tls-le -M no-aliases"]
        if { [ regexp ".*lu12i.*ori.*add.*addi.*stptr.*" $objdump_output3] } {
          pass "loongarch old tls le success"
        } {
@@ -167,7 +167,7 @@ if [istarget loongarch64-*-*] {
        ]
 
       if [file exist "tmpdir/realx-compatible"] {
-       set objdump_output4 [run_host_cmd "objdump" "-d tmpdir/realx-compatible"]
+       set objdump_output4 [run_host_cmd "objdump" "-d tmpdir/realx-compatible -M no-aliases"]
        if { [ regexp ".addi.*st.*" $objdump_output4] && \
             [ regexp ".*lu12i.*ori.*add.*addi.*stptr.*" $objdump_output4] } {
          pass "loongarch tls le relax compatible check success"
@@ -188,7 +188,7 @@ if [istarget loongarch64-*-*] {
            ] \
        ]
       if [file exist "tmpdir/no-realx-compatible"] {
-       set objdump_output4 [run_host_cmd "objdump" "-d tmpdir/no-realx-compatible"]
+       set objdump_output4 [run_host_cmd "objdump" "-d tmpdir/no-realx-compatible -M no-aliases"]
        if { [ regexp ".*lu12i.*add.*addi.*st.*" $objdump_output4] && \
             [ regexp ".*lu12i.*ori.*add.*addi.*stptr.*" $objdump_output4] } {
          pass "loongarch tls le no-relax compatible check success"
@@ -210,7 +210,7 @@ if [istarget loongarch64-*-*] {
        ]
 
       if [file exist "tmpdir/relax-bound-check-tls-le"] {
-       set objdump_output5 [run_host_cmd "objdump" "-d tmpdir/relax-bound-check-tls-le"]
+       set objdump_output5 [run_host_cmd "objdump" "-d tmpdir/relax-bound-check-tls-le -M no-aliases"]
        if { [ regexp ".*lu12i.*add.*addi.*st.*" $objdump_output5] && \
             [ regexp ".addi.*st.*" $objdump_output5] } {
          pass "loongarch no-relax success"
@@ -232,7 +232,7 @@ if [istarget loongarch64-*-*] {
        ]
 
       if [file exist "tmpdir/no-relax-bound-check-tls-le"] {
-       set objdump_output5 [run_host_cmd "objdump" "-d tmpdir/no-relax-bound-check-tls-le"]
+       set objdump_output5 [run_host_cmd "objdump" "-d tmpdir/no-relax-bound-check-tls-le -M no-aliases"]
        if { [ regexp ".*addi.*st.*" $objdump_output5] } {
          pass "loongarch no-relax success"
        } {
index 667ad746f6212c14842134916db26e9552c1da8e..453902d1622fe11f75aa3c82d5bf71951bf52188 100644 (file)
@@ -1,5 +1,5 @@
 #as:
-#ld: -shared -z norelro
+#ld: -shared -z norelro --hash-style=both
 #objdump: -dr
 #skip: loongarch32-*-*