aboutsummaryrefslogtreecommitdiff
path: root/binutils/testsuite
diff options
context:
space:
mode:
authorHoward Chu <hyc@symas.com>2020-11-03 15:12:47 +0000
committerNick Clifton <nickc@redhat.com>2020-11-03 15:12:47 +0000
commitf3016d6ce178b76002edde12c30ebe7f608a8e21 (patch)
treec8c1943182747f75bafa7c34c4b7562ea7dfbbce /binutils/testsuite
parentfd65497db4098140490e59e3dbf4709da5536081 (diff)
downloadfsf-binutils-gdb-f3016d6ce178b76002edde12c30ebe7f608a8e21.zip
fsf-binutils-gdb-f3016d6ce178b76002edde12c30ebe7f608a8e21.tar.gz
fsf-binutils-gdb-f3016d6ce178b76002edde12c30ebe7f608a8e21.tar.bz2
Add an option to the archiver to add a section recording library dependencies.
* ar.c (long_options): Add --record-libdeps. (usage): Mention the new option. (decode_options): Handle the new option. (replace_members): If necessary, create a bfd to hold the libdeps description. * binemul.c (ar_emul_append_bfd): New function. (ar_emul_replace_bfd): New function. (ar_emul_default_append): Replace file_name and target arguments with new_bfd argument. (ar_emul_default_replace): Likewise. * binemul.h: Update prototypes. (struct bin_emulation_xfer_struct): Update fields. * doc/binutils.texi: Document the new option. * NEWS: Mention the new feature. * emul_aix.c (ar_emul_aix_append): Update. (ar_emul_aix_replace): Likewise. * testsuite/binutils-all/ar.exp: Add test of new feature.
Diffstat (limited to 'binutils/testsuite')
-rw-r--r--binutils/testsuite/binutils-all/ar.exp41
1 files changed, 41 insertions, 0 deletions
diff --git a/binutils/testsuite/binutils-all/ar.exp b/binutils/testsuite/binutils-all/ar.exp
index 5a9d27c..273a0a3 100644
--- a/binutils/testsuite/binutils-all/ar.exp
+++ b/binutils/testsuite/binutils-all/ar.exp
@@ -715,6 +715,46 @@ proc many_files { } {
pass $testname
}
+proc test_add_dependencies { } {
+ global AR
+ global AS
+ global srcdir
+ global subdir
+ global obj
+
+ set testname "ar adding library dependencies"
+
+ if ![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.${obj}] {
+ unresolved $testname
+ return
+ }
+
+ if [is_remote host] {
+ set archive artest.a
+ set objfile [remote_download host tmpdir/bintest.${obj}]
+ remote_file host delete $archive
+ } else {
+ set archive tmpdir/artest.a
+ set objfile tmpdir/bintest.${obj}
+ }
+
+ remote_file build delete tmpdir/artest.a
+
+ set got [binutils_run $AR "-r -c $archive --record-libdeps /foo/bar ${objfile}"]
+ if ![string match "" $got] {
+ fail $testname
+ return
+ }
+
+ set got [binutils_run $AR "-t $archive"]
+ if ![string match "*bintest.${obj} __.LIBDEP*" $got] {
+ fail $testname
+ return
+ }
+
+ pass $testname
+}
+
# Run the tests.
# Only run the bfdtest checks if the programs exist. Since these
@@ -743,6 +783,7 @@ move_an_element
empty_archive
extract_an_element
many_files
+test_add_dependencies
if { [is_elf_format] && [supports_gnu_unique] } {
unique_symbol