tcl global directive outside proc body does nothing (ld)
[binutils-gdb.git] / ld / testsuite / ld-elf / frame.exp
index 0a69024a8269e25695c7e81ba15a639212a31bfb..0bd0fb2d4c7c80a11ac69ab99c64386f76872df4 100644 (file)
@@ -1,5 +1,5 @@
 # Expect script for frame section tests
-#   Copyright 2004, 2005, 2007 Free Software Foundation, Inc.
+#   Copyright (C) 2004-2020 Free Software Foundation, Inc.
 #
 # This file is part of the GNU Binutils.
 #
@@ -29,7 +29,7 @@ if ![is_elf_format] {
 }
 
 # No shared lib support on this target.
-if { [istarget "mcore-*-*"] } {
+if ![check_shared_lib_support] {
     return
 }
 
@@ -40,43 +40,52 @@ if { [istarget "sh*-*-elf*"] } {
 
 # ??? These targets have their own .tbss section, with different meaning
 # to the usual ELF .tbss.
-if { [istarget "hppa64-*-*"] || [istarget "v850-*-*"] } {
+if { [istarget "hppa64-*-*"] || [istarget "v850*-*-*"] } {
     return
 }
 
+set as_opt ""
+
+# This target requires extra as options when building code for shared
+# libraries.
+if { [istarget "tic6x-*-*"] } {
+    set as_opt "-mpic -mpid=near"
+}
+
 set test1      "read-only .eh_frame section"
 set test2      "read-only .gcc_except_table section"
 
-global as
-global ld
-
-if { ![ld_assemble $as $srcdir/$subdir/tbss.s tmpdir/tbss.o ]
-     || ![ld_assemble $as $srcdir/$subdir/frame.s tmpdir/frame.o] } {
+if { ![ld_assemble_flags $as $as_opt $srcdir/$subdir/tbss.s tmpdir/tbss.o ]
+     || ![ld_assemble_flags $as $as_opt $srcdir/$subdir/frame.s tmpdir/frame.o] } {
     unresolved "$test1"
     return
 }
 
-if { [ld_simple_link $ld tmpdir/frame.so "--shared tmpdir/frame.o tmpdir/tbss.o"] } {
-    pass "$test1"
+if { [ld_link $ld tmpdir/frame.so "-z noseparate-code --shared tmpdir/frame.o tmpdir/tbss.o"] } {
+    pass "$test1 -z noseparate-code"
+} else {
+   fail "$test1 -z noseparate-code"
+}
+
+if { [ld_link $ld tmpdir/frame.so "-z separate-code --shared tmpdir/frame.o tmpdir/tbss.o"] } {
+    pass "$test1 -z separate-code"
 } else {
-    if [string match "*shared not supported*" $link_output] {
-       unsupported "-shared is not supported by this target"
-    } else {
-       fail "$test1"
-    }
+    fail "$test1 -z separate-code"
 }
 
-if ![ld_assemble $as $srcdir/$subdir/table.s tmpdir/table.o ] {
+if ![ld_assemble_flags $as $as_opt $srcdir/$subdir/table.s tmpdir/table.o ] {
     unresolved "$test2"
     return
 }
 
-if { [ld_simple_link $ld tmpdir/table.so "--shared tmpdir/table.o tmpdir/tbss.o"] } {
-    pass "$test2"
+if { [ld_link $ld tmpdir/table.so "-z noseparate-code --shared tmpdir/table.o tmpdir/tbss.o"] } {
+    pass "$test2 -z noseparate-code"
+} else {
+    fail "$test2 -z noseparate-code"
+}
+
+if { [ld_link $ld tmpdir/table.so "-z separate-code --shared tmpdir/table.o tmpdir/tbss.o"] } {
+    pass "$test2 -z separate-code"
 } else {
-    if [string match "*shared not supported*" $link_output] {
-       unsupported "-shared is not supported by this target"
-    } else {
-       fail "$test2"
-    }
+    fail "$test2 -z separate-code"
 }