]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - ld/testsuite/ld-elfvers/vers.exp
Update year range in copyright notice of binutils files
[thirdparty/binutils-gdb.git] / ld / testsuite / ld-elfvers / vers.exp
index 6ab1e75db6aa2b34a7284d478d11372f877238e2..5dbe5dccfb4ad9d15cbe015ff627b932aafec69e 100644 (file)
@@ -1,5 +1,5 @@
 # Expect script for ld-version tests
-#   Copyright (C) 1997-2020 Free Software Foundation, Inc.
+#   Copyright (C) 1997-2021 Free Software Foundation, Inc.
 #
 # This file is part of the GNU Binutils.
 #
@@ -37,7 +37,6 @@ if { ![istarget hppa*64*-*-hpux*]
      && ![istarget i?86-*-elf*]
      && ![istarget i?86-*-linux*]
      && ![istarget i?86-*-gnu*]
-     && ![istarget i?86-*-nacl*]
      && ![istarget ia64-*-elf*]
      && ![istarget ia64-*-linux*]
      && ![istarget m68k-*-linux*]
@@ -54,12 +53,7 @@ if { ![istarget hppa*64*-*-hpux*]
      && ![istarget alpha*-*-linux*]
      && ![istarget s390*-*-linux*]
      && ![istarget sh\[34\]*-*-linux*]
-     && ![istarget x86_64-*-linux*]
-     && ![istarget x86_64-*-nacl*] } {
-    return
-}
-
-if { [istarget rs6000*-*-aix*] || [istarget powerpc*-*-aix*] } {
+     && ![istarget x86_64-*-linux*] } {
     return
 }
 
@@ -267,7 +261,8 @@ proc objdump_symstuff { objdump object expectfile } {
        verbose "# Diff'ing: $expectfile $tmpdir/objdump.out" 2
 
        set eof -1
-       set differences 0
+       set list_a {}
+       set list_b {}
 
        while { [gets $file_a line] != $eof } {
            if [regexp "^#.*$" $line] then {
@@ -292,7 +287,6 @@ proc objdump_symstuff { objdump object expectfile } {
            set line_a [lindex $list_a $i]
            set line_b [lindex $list_b $i]
 
-
            verbose "\t$expectfile: $i: $line_a" 3
            verbose "\t/tmp/objdump.out: $i: $line_b" 3
            if [regexp $line_a $line_b] then {
@@ -309,17 +303,12 @@ proc objdump_symstuff { objdump object expectfile } {
            verbose -log "Line count"
            return 0
        }
+       return 1
 
-       if $differences<1 then {
-           return 1
-       }
-
-       return 0
     } else {
        verbose -log "$exec_output"
        return 0
     }
-
 }
 
 #
@@ -363,7 +352,8 @@ proc objdump_dynsymstuff { objdump object expectfile } {
        verbose "# Diff'ing: $expectfile $tmpdir/objdump.out" 2
 
        set eof -1
-       set differences 0
+       set list_a {}
+       set list_b {}
 
        while { [gets $file_a line] != $eof } {
            if [regexp "^#.*$" $line] then {
@@ -384,15 +374,6 @@ proc objdump_dynsymstuff { objdump object expectfile } {
        }
        close $file_b
 
-       # Support empty files.
-       if { ![info exists list_a] } then {
-           if { ![info exists list_b] } then {
-               return 1
-           }
-           verbose -log "\t$tmpdir/objdump.out: $list_b"
-           return 0
-       }
-
        for { set i 0 } { $i < [llength $list_b] } { incr i } {
            set line_b [lindex $list_b $i]
 
@@ -429,17 +410,12 @@ proc objdump_dynsymstuff { objdump object expectfile } {
            verbose -log "Line count"
            return 0
        }
+       return 1
 
-       if $differences<1 then {
-           return 1
-       }
-
-       return 0
     } else {
        verbose -log "$exec_output"
        return 0
     }
-
 }
 
 #
@@ -513,8 +489,10 @@ proc build_binary { shared pic test source libname other mapfile verexp versymex
     global CC
     global CFLAGS
     global script
+    global NOSANITIZE_CFLAGS
+    global NOLTO_CFLAGS
 
-    if ![ld_compile "$CC -S $pic $CFLAGS" $srcdir/$subdir/$source $tmpdir/$libname.s]     {
+    if ![ld_compile "$CC -S $pic $CFLAGS $NOSANITIZE_CFLAGS $NOLTO_CFLAGS" $srcdir/$subdir/$source $tmpdir/$libname.s]     {
        unresolved "$test"
        return
     }
@@ -576,7 +554,7 @@ proc build_vers_lib_no_pic { test source libname other mapfile verexp versymexp
   global shared
   # Make sure that PLT is used since PLT is expected.
   global PLT_CFLAGS
-  build_binary $shared $PLT_CFLAGS $test $source $libname $other $mapfile $verexp $versymexp $symexp ""
+  build_binary "$shared -z notext" $PLT_CFLAGS $test $source $libname $other $mapfile $verexp $versymexp $symexp ""
 }
 
 proc build_vers_lib_pic { test source libname other mapfile verexp versymexp symexp } {
@@ -642,8 +620,9 @@ proc test_asfail { test flag source execname whyfail } {
     global as
     global CC
     global CFLAGS
+    global NOLTO_CFLAGS
 
-    if ![ld_compile "$CC -S $flag $CFLAGS" $srcdir/$subdir/$source $tmpdir/$execname.s]     {
+    if ![ld_compile "$CC -S $flag $CFLAGS $NOLTO_CFLAGS" $srcdir/$subdir/$source $tmpdir/$execname.s]     {
        unresolved "$test"
        return
     }
@@ -668,6 +647,10 @@ proc test_strip_vers_lib { test srclib libname verexp versymexp } {
     global tmpdir
     global objdump
 
+    if {! [file exists $tmpdir/$srclib] } then {
+       fail "$test ($tmpdir/$srclib does not exist)"
+       return  
+    }
     verbose -log "cp $tmpdir/$srclib $tmpdir/$libname.so"
     exec cp $tmpdir/$srclib $tmpdir/$libname.so
 
@@ -707,10 +690,22 @@ proc build_exec { test source execname flags solibname verexp versymexp symexp }
     global objdump
     global CC
     global CFLAGS
+    global NOSANITIZE_CFLAGS
+    global NOLTO_CFLAGS
 
     set shared "--shared --no-undefined-version"
     set script --version-script
-    if ![ld_compile "$CC -S $CFLAGS" $srcdir/$subdir/$source $tmpdir/$execname.s]     {
+
+    # Disable LTO for these tests.
+    set cc_cmd "$CC -S $CFLAGS"
+    if {[check_lto_available]} {
+       append cc_cmd " -fno-lto"
+    }
+
+    # Disable all sanitizers and LTO.
+    append cc_cmd " $NOSANITIZE_CFLAGS $NOLTO_CFLAGS"
+
+    if ![ld_compile $cc_cmd $srcdir/$subdir/$source $tmpdir/$execname.s]     {
        unresolved "$test"
        return
     }
@@ -903,8 +898,12 @@ build_vers_lib_pic "vers18" vers18.c vers18 vers17.so vers18.map vers18.ver vers
 build_exec "vers19" vers19.c vers19 "-Wl,--no-as-needed,-rpath,.,-rpath-link,." vers18.so vers19.ver vers19.dsym ""
 
 build_vers_lib_no_pic "vers20a" vers20.c vers20a "" vers20.map vers20a.ver vers20.dsym ""
-exec cp $tmpdir/vers20a.so $tmpdir/vers20b.so
-build_vers_lib_no_pic "vers20" vers20.c vers20 "vers20a.so vers20b.so" vers20.map vers20.ver vers20.dsym ""
+if {! [file exists $tmpdir/vers20a.so] } then {
+    fail "Building vers20a.so"
+} else {
+    exec cp $tmpdir/vers20a.so $tmpdir/vers20b.so
+    build_vers_lib_no_pic "vers20" vers20.c vers20 "vers20a.so vers20b.so" vers20.map vers20.ver vers20.dsym ""
+}
 
 # Test .symver override.
 build_vers_lib_pic "vers21" vers21.c vers21 "" vers21.map vers21.ver vers21.dsym vers21.sym
@@ -984,7 +983,7 @@ if [string match "yes" $pic] then {
     build_vers_lib_no_pic "vers27c1" vers27c.c vers27c1 "vers27b.o vers27a.so" "" vers27c.ver vers27c.dsym ""
     build_vers_lib_no_pic "vers27c2" vers27c.c vers27c2 "vers27a.so vers27b.o" "" vers27c.ver vers27c.dsym ""
     build_vers_lib_pic "vers27d1" vers27d1.c vers27d1 "" vers27a.map vers27d.ver vers27d.dsym vers27d.sym
-   build_vers_lib_pic "vers27d2" vers27d2.c vers27d2 "" "" vers27b.ver vers27b.dsym ""
+    build_vers_lib_pic "vers27d2" vers27d2.c vers27d2 "" "" vers27b.ver vers27b.dsym ""
     build_executable "vers27d3" vers27d3.c vers27d3 "vers27b.o vers27d2.so vers27d1.so" "" vers27b.ver vers27b.dsym ""
     build_vers_lib_pic "vers27d4" vers27d2.c vers27d4 "vers27a.so" "" vers27d4.ver vers27d4.dsym ""
     build_executable "vers27d5" vers27d3.c vers27d5 "vers27d4.so vers27b.o vers27a.so" "" vers27b.ver vers27b.dsym ""