Add option to ar's 't' command to display the offset of elements within the archive.
[deliverable/binutils-gdb.git] / binutils / testsuite / binutils-all / ar.exp
index 508ae9c1d7562c8b0a2c090a93e35acdba733944..7abde851e0d202437d3b6192f7c3e24586de4cc0 100644 (file)
@@ -1,15 +1,15 @@
-#   Copyright (C) 1995-2016 Free Software Foundation, Inc.
+#   Copyright (C) 1995-2018 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # the Free Software Foundation; either version 3 of the License, or
 # (at your option) any later version.
-# 
+#
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
-# 
+#
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
@@ -26,6 +26,10 @@ if ![is_remote host] {
     }
 }
 
+if { [istarget "alpha-*-*"] && ![is_elf_format] } then {
+    return
+}
+
 # send_user "Version [binutil_version $AR]"
 
 # Test long file name support
@@ -109,7 +113,7 @@ proc long_filenames { bfdtests } {
        fail $testname
        return
     }
-    
+
     if [is_remote host] {
        remote_file host delete $file1
        remote_file host delete $file2
@@ -431,6 +435,12 @@ proc deterministic_archive { } {
        return
     }
 
+    set got [binutils_run $AR "tvO $archive"]
+    if ![string match "rw-r--r-- 0/0 *bintest.o 0x*" $got] {
+       fail $testname
+       return
+    }
+
     pass $testname
 }
 
@@ -445,6 +455,7 @@ proc unique_symbol { } {
 
     if ![binutils_assemble $srcdir/$subdir/unique.s tmpdir/unique.o] {
        unresolved $testname
+       return
     }
 
     if [is_remote host] {
@@ -555,13 +566,52 @@ proc move_an_element { } {
     pass $testname
 }
 
+# PR 19775: Test creating and listing archives with an empty element.
+
+proc empty_archive { } {
+    global AR
+    global srcdir
+    global subdir
+
+    set testname "archive with empty element"
+
+    # FIXME: There ought to be a way to dynamically create an empty file.
+    set empty $srcdir/$subdir/empty
+
+    if [is_remote host] {
+       set archive artest.a
+       set objfile [remote_download host $empty]
+       remote_file host delete $archive
+    } else {
+       set archive tmpdir/artest.a
+       set objfile $empty
+    }
+
+    remote_file build delete tmpdir/artest.a
+
+    set got [binutils_run $AR "-r -c $archive ${objfile}"]
+    if ![string match "" $got] {
+       fail $testname
+       return
+    }
+
+    # This commmand used to fail with: "Malformed archive".
+    set got [binutils_run $AR "-t $archive"]
+    if ![string match "empty\r" $got] {
+       fail $testname
+       return
+    }
+
+    pass $testname
+}
+
 # Run the tests.
 
 # Only run the bfdtest checks if the programs exist.  Since these
 # programs are built but not installed, running the testsuite on an
 # installed toolchain will produce ERRORs about missing bfdtest1 and
 # bfdtest2 executables.
-if { [file exists $base_dir/bfdtest1] && [file exists $base_dir/bfdtest2] } {
+if { ![istarget "tic30-*-*"] && [file exists $base_dir/bfdtest1] && [file exists $base_dir/bfdtest2] } {
     set bfdtests [list bfdtest1 bfdtest2]
 
     long_filenames $bfdtests
@@ -574,9 +624,8 @@ argument_parsing
 deterministic_archive
 delete_an_element
 move_an_element
+empty_archive
 
-if { [is_elf_format]
-     && ![istarget "*-*-hpux*"]
-     && ![istarget "msp*-*-*"] } {
+if { [is_elf_format] && [supports_gnu_unique] } {
     unique_symbol
 }
This page took 0.028344 seconds and 4 git commands to generate.