MIPS: Verify the ISA mode and alignment of branch and jump targets
[deliverable/binutils-gdb.git] / ld / testsuite / ld-mips-elf / mips-elf.exp
index 3b02bc0e245cefcb58f6a62510ad99903f39d0fc..6a78fd8f1c117e8a16b9aa3662cefd165dd1cc3a 100644 (file)
@@ -1,5 +1,5 @@
 # Expect script for MIPS ELF linker tests
-#   Copyright (C) 2002-2015 Free Software Foundation, Inc.
+#   Copyright (C) 2002-2016 Free Software Foundation, Inc.
 #
 # This file is part of the GNU Binutils.
 #
@@ -142,6 +142,49 @@ run_dump_test "mips16-1"
 
 # MIPS branch offset final link checking.
 run_dump_test "branch-misc-1"
+run_dump_test "branch-misc-2"
+run_dump_test "branch-absolute" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "branch-absolute-addend" [list [list ld $abi_ldflags(o32)]]
+if $has_newabi {
+    run_dump_test "branch-absolute-n32" [list [list ld $abi_ldflags(n32)]]
+    run_dump_test "branch-absolute-addend-n32" \
+                                       [list [list ld $abi_ldflags(n32)]]
+    run_dump_test "branch-absolute-n64" [list [list ld $abi_ldflags(n64)]]
+    run_dump_test "branch-absolute-addend-n64" \
+                                       [list [list ld $abi_ldflags(n64)]]
+}
+
+run_dump_test "mips16-branch-2" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "mips16-branch-3" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "mips16-branch-addend-2" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "mips16-branch-addend-3" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "mips16-branch-absolute" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "mips16-branch-absolute-addend" \
+                                       [list [list ld $abi_ldflags(o32)]]
+if $has_newabi {
+    run_dump_test "mips16-branch-absolute-n32" \
+                                       [list [list ld $abi_ldflags(n32)]]
+    run_dump_test "mips16-branch-absolute-addend-n32" \
+                                       [list [list ld $abi_ldflags(n32)]]
+    run_dump_test "mips16-branch-absolute-n64" \
+                                       [list [list ld $abi_ldflags(n64)]]
+    run_dump_test "mips16-branch-absolute-addend-n64" \
+                                       [list [list ld $abi_ldflags(n64)]]
+}
+
+run_dump_test "micromips-branch-absolute" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "micromips-branch-absolute-addend" \
+                                       [list [list ld $abi_ldflags(o32)]]
+if $has_newabi {
+    run_dump_test "micromips-branch-absolute-n32" \
+                                       [list [list ld $abi_ldflags(n32)]]
+    run_dump_test "micromips-branch-absolute-addend-n32" \
+                                       [list [list ld $abi_ldflags(n32)]]
+    run_dump_test "micromips-branch-absolute-n64" \
+                                       [list [list ld $abi_ldflags(n64)]]
+    run_dump_test "micromips-branch-absolute-addend-n64" \
+                                       [list [list ld $abi_ldflags(n64)]]
+}
 
 # Jalx test
 run_dump_test "jalx-1"
@@ -168,6 +211,63 @@ if { $linux_gnu } {
              "jalx-2"]]
 }
 
+run_dump_test "jalx-addend" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "jalx-local" [list [list ld $abi_ldflags(o32)]]
+if $has_newabi {
+    run_dump_test "jalx-addend-n32" [list [list ld $abi_ldflags(n32)]]
+    run_dump_test "jalx-local-n32" [list [list ld $abi_ldflags(n32)]]
+    run_dump_test "jalx-addend-n64" [list [list ld $abi_ldflags(n64)]]
+    run_dump_test "jalx-local-n64" [list [list ld $abi_ldflags(n64)]]
+}
+
+run_dump_test "unaligned-jalx-0" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "unaligned-jalx-1" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "unaligned-jalx-mips16-0" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "unaligned-jalx-mips16-1" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "unaligned-jalx-micromips-0" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "unaligned-jalx-micromips-1" [list [list ld $abi_ldflags(o32)]]
+
+if $has_newabi {
+    run_dump_test "unaligned-jalx-addend-0" \
+                                       [list [list ld $abi_ldflags(n32)]]
+    run_dump_test "unaligned-jalx-addend-1" \
+                                       [list [list ld $abi_ldflags(n32)]]
+    run_dump_test "unaligned-jalx-addend-mips16-0" \
+                                       [list [list ld $abi_ldflags(n32)]]
+    run_dump_test "unaligned-jalx-addend-mips16-1" \
+                                       [list [list ld $abi_ldflags(n32)]]
+    run_dump_test "unaligned-jalx-addend-micromips-0" \
+                                       [list [list ld $abi_ldflags(n32)]]
+    run_dump_test "unaligned-jalx-addend-micromips-1" \
+                                       [list [list ld $abi_ldflags(n32)]]
+}
+
+run_dump_test "unaligned-branch" [list [list ld $abi_ldflags(o32)]]
+
+if $has_newabi {
+    run_dump_test "unaligned-branch-2" \
+                                       [list [list ld $abi_ldflags(n32)]]
+    run_dump_test "unaligned-branch-r6-1" \
+                                       [list [list ld $abi_ldflags(n32)]]
+    run_dump_test "unaligned-branch-r6-2" \
+                                       [list [list ld $abi_ldflags(n32)]]
+    run_dump_test "unaligned-branch-mips16" \
+                                       [list [list ld $abi_ldflags(n32)]]
+    run_dump_test "unaligned-branch-micromips" \
+                                       [list [list ld $abi_ldflags(n32)]]
+    run_dump_test "unaligned-jump" \
+                                       [list [list ld $abi_ldflags(n32)]]
+    run_dump_test "unaligned-jump-mips16" \
+                                       [list [list ld $abi_ldflags(n32)]]
+    run_dump_test "unaligned-jump-micromips" \
+                                       [list [list ld $abi_ldflags(n32)]]
+}
+
+run_dump_test "unaligned-lwpc-0" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "unaligned-lwpc-1" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "unaligned-ldpc-0" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "unaligned-ldpc-1" [list [list ld $abi_ldflags(o32)]]
+
 # Test multi-got link.  We only do this on GNU/Linux because it requires
 # the "traditional" emulations.
 if { $linux_gnu } {
@@ -419,6 +519,8 @@ if { $has_newabi } {
            "reloc-6b"]]
 }
 
+run_dump_test "reloc-local-overflow" [list [list ld $abi_ldflags(o32)]]
+
 if {$has_newabi && $linux_gnu} {
     run_dump_test "eh-frame1-n32"
     run_dump_test "eh-frame1-n64"
@@ -455,13 +557,21 @@ if {$linux_gnu} {
 
 run_dump_test "jaloverflow"
 run_dump_test "jaloverflow-2"
+
+run_dump_test "jal-global-overflow-0" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "jal-global-overflow-1" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "jal-local-overflow-0" [list [list ld $abi_ldflags(o32)]]
+run_dump_test "jal-local-overflow-1" [list [list ld $abi_ldflags(o32)]]
+
 run_dump_test "undefweak-overflow" [list [list as $abi_asflags(o32)] \
                                         [list ld $abi_ldflags(o32)]]
 
 if {$has_newabi} {
-    run_dump_test "undefweak-overflow" [list [list as $abi_asflags(n32)] \
+    run_dump_test "undefweak-overflow" [list [list name (n32)] \
+                                            [list as $abi_asflags(n32)] \
                                             [list ld $abi_ldflags(n32)]]
-    run_dump_test "undefweak-overflow" [list [list as $abi_asflags(n64)] \
+    run_dump_test "undefweak-overflow" [list [list name (n64)] \
+                                            [list as $abi_asflags(n64)] \
                                             [list ld $abi_ldflags(n64)]]
 }
 
@@ -899,3 +1009,31 @@ if { $linux_gnu } {
            n32 -1 1 umips
     }
 }
+
+# PR ld/19908 export class tests.
+if { $linux_gnu } {
+    run_ld_link_tests [list \
+       [list "Shared library for MIPS export class symbol reference tests" \
+             "$abi_ldflags(o32) -shared" "" \
+             "$abi_asflags(o32)" \
+             { export-class-ref-f2.s } \
+             { { readelf --dyn-syms export-class-ref-lib.sd } } \
+             "export-class-ref-lib.so"]]
+    foreach { class flag } { internal 1 hidden 2 protected 3 } {
+       run_ld_link_tests [list \
+           [list "MIPS $class symbol reference test 1" \
+                 "$abi_ldflags(o32) -e f0" "tmpdir/export-class-ref-lib.so" \
+                 "$abi_asflags(o32) --defsym defv=$flag" \
+                 { export-class-ref-f0.s export-class-ref-f1.s } \
+                 [list [list readelf --dyn-syms export-$class-ref.sd] \
+                       [list readelf --dyn-syms export-local-ref.sd]] \
+                 "export-$class-ref"] \
+           [list "MIPS $class symbol reference test 2" \
+                 "$abi_ldflags(o32) -e f0" "tmpdir/export-class-ref-lib.so" \
+                 "$abi_asflags(o32) --defsym defv=$flag --defsym refv=$flag" \
+                 { export-class-ref-f0.s export-class-ref-f1.s } \
+                 [list [list readelf --dyn-syms export-$class-ref.sd] \
+                       [list readelf --dyn-syms export-local-ref.sd]] \
+                 "export-$class-ref"]]
+    }
+}
This page took 0.028603 seconds and 4 git commands to generate.