]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - ld/testsuite/ld-aarch64/aarch64-elf.exp
Only check for valid Morello bounds on non-exec syms
[thirdparty/binutils-gdb.git] / ld / testsuite / ld-aarch64 / aarch64-elf.exp
index 19070408e990abbe50050b1cba183a6e4bf24934..b32cb235ead6c8070c39dc43caaf672ba4ff550c 100644 (file)
@@ -91,6 +91,26 @@ proc aarch64_required_func_addend { base result } {
   return [format %x [expr "0x$result + 1 - 0x$base"]];
 }
 
+# Return the hexadecimal addition of the two given values.  Values should be
+# provided in hexadecimal without the leading 0x prefix.
+#
+# Used in a testsuite to check that the combination of some ADRP/ADD constants
+# do indeed point at a variable later on in the dump.
+proc aarch64_page_plus_offset { page offset } {
+  return [format %x [expr "0x$page + 0x$offset"] ];
+}
+proc aarch64_page_plus_decimal_offset { page offset } {
+  return [format %x [expr "0x$page + $offset"] ];
+}
+
+# Return the 8-hexdigit truncation of an address.
+proc aarch64_8digit_addr { addr { plusLSB 0 } } {
+  if { $plusLSB } {
+    return [format %08x [expr "0x$addr + 1"]];
+  }
+  return [format %08x "0x$addr"];
+}
+
 set eh-frame-merge-lp64 [list [list "EH Frame merge" \
                              [concat "-m " [aarch64_choose_lp64_emul] \
                                      " -Ttext 0x8000"] \
@@ -264,6 +284,7 @@ run_dump_test_lp64 "emit-relocs-morello-6b"
 run_dump_test_lp64 "emit-relocs-morello-7"
 run_dump_test_lp64 "emit-relocs-morello-8"
 run_dump_test_lp64 "emit-relocs-morello-9"
+run_dump_test_lp64 "emit-relocs-morello-10"
 run_dump_test_lp64 "emit-relocs-morello-hidden"
 run_dump_test_lp64 "emit-morello-reloc-markers-1"
 run_dump_test_lp64 "emit-morello-reloc-markers-2"
@@ -276,12 +297,58 @@ run_dump_test_lp64 "c64-ehdr-sized-reloc"
 
 # Test for morello dynamic relocs can not be written in the usual manner since
 # we need to specify different `ld` command lines for different objects.
-if { [ld_assemble_flags $as -march=morello+c64 $srcdir/$subdir/morello-dynamic-relocs-lib.s tmpdir/morello-dynamic-relocs-lib.o]
+if { [check_shared_lib_support]
+     && [ld_assemble_flags $as -march=morello+c64 $srcdir/$subdir/morello-dynamic-relocs-lib.s tmpdir/morello-dynamic-relocs-lib.o]
      && [ld_link $ld tmpdir/morello-dynamic-relocs.so "--shared tmpdir/morello-dynamic-relocs-lib.o"] } {
   run_dump_test_lp64 "morello-dynamic-relocs"
   run_dump_test_lp64 "morello-dynamic-link-rela-dyn"
   run_dump_test_lp64 "morello-dynamic-link-rela-dyn2"
   run_dump_test_lp64 "morello-dynamic-local-got"
+  run_dump_test_lp64 "morello-funcptr-in-code"
+  run_dump_test_lp64 "morello-funcptr-through-data"
+  run_dump_test_lp64 "morello-funcptr-through-data-pie"
+  run_dump_test_lp64 "morello-funcptr-code-and-data"
+  run_dump_test_lp64 "morello-dataptr-in-code"
+  run_dump_test_lp64 "morello-dataptr-through-data"
+  run_dump_test_lp64 "morello-dataptr-through-data-pie"
+  run_dump_test_lp64 "morello-dataptr-code-and-data"
+  run_dump_test_lp64 "morello-ifunc-a"
+  run_dump_test_lp64 "morello-ifunc1-a"
+}
+run_dump_test_lp64 "morello-ifunc"
+run_dump_test_lp64 "morello-ifunc-b"
+run_dump_test_lp64 "morello-ifunc1"
+run_dump_test_lp64 "morello-ifunc1-b"
+run_dump_test_lp64 "morello-ifunc1-c"
+run_dump_test_lp64 "morello-ifunc2"
+run_dump_test_lp64 "morello-ifunc2-b"
+run_dump_test_lp64 "morello-ifunc3"
+run_dump_test_lp64 "morello-ifunc4"
+run_dump_test_lp64 "morello-ifunc4a"
+
+if { [check_shared_lib_support]
+     && [ld_assemble_flags $as -march=morello+c64 $srcdir/$subdir/morello-ifunc-shared.s tmpdir/morello-ifunc-shared.o]
+     && [ld_link $ld tmpdir/morello-ifunc-shared.so "--shared tmpdir/morello-ifunc-shared.o"] } {
+  run_dump_test_lp64 "morello-ifunc-dynlink"
+  run_dump_test_lp64 "morello-ifunc-dynlink-pie"
+}
+
+if { [check_shared_lib_support]
+     && [ld_assemble_flags $as -march=morello+c64 $srcdir/$subdir/morello-weakdefinitions.s tmpdir/morello-weakdefinitions.o]
+     && [ld_link $ld tmpdir/morello-weakdefinitions.so "--shared tmpdir/morello-weakdefinitions.o"] } {
+     run_dump_test_lp64 "morello-undefweak-relocs-PDE"
+}
+run_dump_test_lp64 "morello-undefweak-relocs-no-dyn-linker"
+run_dump_test_lp64 "morello-undefweak-relocs-PIE"
+run_dump_test_lp64 "morello-undefweak-relocs-static"
+run_dump_test_lp64 "morello-undefweak-relocs-static-relocs"
+
+if { [check_shared_lib_support]
+     && [ld_assemble_flags $as -march=morello+c64 $srcdir/$subdir/tls-shared.s tmpdir/tls-shared.o]
+     && [ld_link $ld tmpdir/tls-shared.so "-shared tmpdir/tls-shared.o"] } {
+     run_dump_test_lp64 "morello-tls-pde"
+     run_dump_test_lp64 "illegal-tlsle-pde"
+     run_dump_test_lp64 "morello-tlsie-overflow"
 }
 
 run_dump_test_lp64 "morello-static-got"
@@ -290,6 +357,8 @@ run_dump_test_lp64 "morello-dt-init-fini"
 run_dump_test_lp64 "morello-capinit"
 run_dump_test_lp64 "morello-stubs"
 run_dump_test_lp64 "morello-stubs-static"
+run_dump_test_lp64 "morello-stubs-pcc-bounds"
+run_dump_test_lp64 "morello-stubs-sec-bounds"
 run_dump_test_lp64 "morello-sec-round"
 run_dump_test_lp64 "morello-sec-round-adjust"
 run_dump_test_lp64 "morello-sec-always-align"
@@ -303,6 +372,27 @@ run_dump_test_lp64 "morello-sec-start_stop-round"
 run_dump_test_lp64 "morello-tlsdesc"
 run_dump_test_lp64 "morello-tlsdesc-static"
 run_dump_test_lp64 "morello-tlsdesc-staticpie"
+run_dump_test_lp64 "morello-tlsdesc-seen-ie"
+
+run_dump_test_lp64 "morello-tlsle"
+run_dump_test_lp64 "morello-tlsle-pie"
+run_dump_test_lp64 "morello-tlsie"
+run_dump_test_lp64 "morello-tlsie-pie"
+run_dump_test_lp64 "morello-tlsie-shared"
+
+run_dump_test_lp64 "morello-size-relocs"
+run_dump_test_lp64 "morello-size-relocs-pie"
+run_dump_test_lp64 "morello-size-relocs-shared"
+
+run_dump_test_lp64 "morello-illegal-size-relocs"
+run_dump_test_lp64 "morello-illegal-size-relocs-pie"
+run_dump_test_lp64 "morello-illegal-size-relocs-shared"
+
+run_dump_test_lp64 "morello-illegal-tls"
+run_dump_test_lp64 "morello-illegal-tls-pie"
+run_dump_test_lp64 "morello-illegal-tls-shared"
+
+run_dump_test_lp64 "morello-large-function"
 
 run_dump_test "no-morello-syms-static"
 
@@ -340,17 +430,8 @@ run_dump_test "tls-relax-gd-le-ilp32"
 run_dump_test "tls-relax-gdesc-le"
 run_dump_test "tls-relax-gdesc-le-now"
 run_dump_test "tls-relax-gdesc-le-ilp32"
-run_dump_test "tls-relax-gd-ie"
-run_dump_test "tls-relax-gd-ie-ilp32"
-run_dump_test_lp64 "tls-relax-large-gd-ie"
-run_dump_test_lp64 "tls-relax-large-gd-ie-be"
 run_dump_test_lp64 "tls-relax-large-gd-le"
 run_dump_test_lp64 "tls-relax-large-gd-le-be"
-run_dump_test_lp64 "tls-relax-large-desc-ie"
-run_dump_test_lp64 "tls-relax-large-desc-ie-be"
-run_dump_test_lp64 "tls-relax-large-desc-le"
-run_dump_test_lp64 "tls-relax-large-desc-le-be"
-run_dump_test "tls-relax-gdesc-ie"
 run_dump_test "tls-relax-ie-le"
 run_dump_test "tls-relax-ie-le-ilp32"
 run_dump_test "tls-relax-ld-le-small"
@@ -359,7 +440,6 @@ run_dump_test "tls-relax-ld-le-tiny"
 run_dump_test "tls-relax-ld-le-tiny-ilp32"
 run_dump_test "tls-desc-ie"
 run_dump_test "tls-desc-ie-ilp32"
-run_dump_test "tls-relax-gdesc-ie-2"
 run_dump_test "tls-relax-gdesc-le-2"
 run_dump_test "tls-relax-gdesc-le-2-ilp32"
 run_dump_test "tls-relax-ie-le-2"
@@ -367,13 +447,9 @@ run_dump_test "tls-relax-ie-le-2-ilp32"
 run_dump_test "tls-relax-ie-le-3"
 run_dump_test "tls-relax-ie-le-3-ilp32"
 run_dump_test "tls-tiny-gd"
-run_dump_test "tls-tiny-gd-ie"
-run_dump_test "tls-tiny-gd-ie-ilp32"
 run_dump_test "tls-tiny-gd-le"
 run_dump_test "tls-tiny-gd-le-ilp32"
 run_dump_test "tls-tiny-desc"
-run_dump_test "tls-tiny-desc-ie"
-run_dump_test "tls-tiny-desc-ie-ilp32"
 run_dump_test "tls-tiny-desc-le"
 run_dump_test "tls-tiny-desc-le-ilp32"
 run_dump_test "tls-tiny-ie"
@@ -398,6 +474,31 @@ run_dump_test "protected-data"
 run_dump_test_lp64 "pr22764"
 run_dump_test_lp64 "pr20402"
 
+if {[check_shared_lib_support]
+    && [ld_assemble $as $srcdir/$subdir/tls-sharedlib.s tmpdir/tls-sharedlib.o]
+    && [ld_link $ld tmpdir/tls-sharedlib.so "-shared tmpdir/tls-sharedlib.o"] } {
+      run_dump_test "tls-relax-gd-ie"
+      run_dump_test_lp64 "tls-relax-large-gd-ie"
+      run_dump_test_lp64 "tls-relax-large-gd-ie-be"
+      run_dump_test_lp64 "tls-relax-large-desc-ie"
+      run_dump_test_lp64 "tls-relax-large-desc-ie-be"
+      run_dump_test_lp64 "tls-relax-large-desc-le"
+      run_dump_test_lp64 "tls-relax-large-desc-le-be"
+      run_dump_test "tls-relax-gdesc-ie"
+      run_dump_test "tls-relax-gdesc-ie-2"
+      run_dump_test "tls-tiny-gd-ie"
+      run_dump_test "tls-tiny-desc-ie"
+}
+if {[check_shared_lib_support]
+    && [ld_assemble_flags $as -mabi=ilp32 $srcdir/$subdir/tls-sharedlib.s tmpdir/tls-sharedlib.o]
+    && [ld_link $ld tmpdir/tls-sharedlib-ilp32.so "-shared tmpdir/tls-sharedlib.o -m [aarch64_choose_ilp32_emul]"] } {
+      run_dump_test "tls-relax-gd-ie-ilp32"
+      run_dump_test "tls-tiny-gd-ie-ilp32"
+      run_dump_test "tls-tiny-desc-ie-ilp32"
+}
+run_dump_test "tls-relax-gd-ie-2"
+run_dump_test "tls-relax-ie-le-4"
+
 # ifunc tests
 run_dump_test "ifunc-1"
 run_dump_test "ifunc-1-local"