blob: a3dafcc8dabbf48c211d24e62bd4ee4291316d36 [file]
# Test for archive handling.
# Copyright (C) 2025 Free Software Foundation, Inc.
#
# This file is part of the GNU Binutils.
#
# 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; see the file COPYING3. If not,
# see <http://www.gnu.org/licenses/>.
#
remote_file host delete \
"tmpdir/ab.a" "tmpdir/cd.a" "tmpdir/abt.a" "tmpdir/cdt.a" \
"tmpdir/abn.a" "tmpdir/abnt.a"
run_ld_link_tests {
{"First regular archive create" "" "" "" {a.s b.s} {} "ab.a" }
{"Second regular archive create" "" "" "" {c.s d.s} {} "cd.a" }
{"First thin archive create" "T" "" "" {a.s b.s} {} "abt.a" }
{"Second thin archive create" "T" "" "" {c.s d.s} {} "cdt.a" }
{"Regular archive w/o index create" "S" "" "" {a.s b.s} {} "abn.a" }
{"Thin archive w/o index create" "ST" "" "" {a.s b.s} {} "abnt.a"}
}
set old_ldflags $LDFLAGS
# Prevent our otherwise unused data symbols from being GC'd on XCOFF targets.
if { [is_xcoff_format] } {
append LDFLAGS " -bexpall"
}
# For MS-DOS there's no way to keep symbols, so just check for success.
run_ld_link_tests [list \
[list "Regular archive link" \
"-e ff" "tmpdir/ab.a" \
"" {abc.s} \
[expr { [istarget "*-*-msdos"] ? {} : {{nm "" abc.nd}} }] \
"abc" \
] \
]
setup_xfail "binutils/33484" "alpha*-*-linux*ecoff*" "alpha*-*-osf*"
setup_xfail "binutils/33485" "cris-*-*aout*" "i\[3-7\]86-*-bsd*" \
"i\[3-7\]86-*-msdos*" "pdp11-*-*"
run_ld_link_tests [list \
[list "Thin archive link" \
"-e ff" "tmpdir/abt.a" \
"" {abc.s} \
[expr { [istarget "*-*-msdos"] ? {} : {{nm "" abc.nd}} }] \
"abtc" \
] \
]
run_ld_link_tests [list \
[list "Regular archive plus regular link" \
"-e ff" "tmpdir/ab.a tmpdir/cd.a" \
"" {abcde.s} \
[expr { [istarget "*-*-msdos"] ? {} : {{nm "" abcde.nd}} }] \
"abcde" \
] \
]
setup_xfail "binutils/33484" "alpha*-*-linux*ecoff*" "alpha*-*-osf*"
setup_xfail "binutils/33485" "cris-*-*aout*" "i\[3-7\]86-*-bsd*" \
"i\[3-7\]86-*-msdos*" "pdp11-*-*"
run_ld_link_tests [list \
[list "Regular archive plus thin link" \
"-e ff" "tmpdir/ab.a tmpdir/cdt.a" \
"" {abcde.s} \
[expr { [istarget "*-*-msdos"] ? {} : {{nm "" abcde.nd}} }] \
"abcdte" \
] \
]
setup_xfail "binutils/33484" "alpha*-*-linux*ecoff*" "alpha*-*-osf*"
setup_xfail "binutils/33485" "cris-*-*aout*" "i\[3-7\]86-*-bsd*" \
"i\[3-7\]86-*-msdos*" "pdp11-*-*"
run_ld_link_tests [list \
[list "Thin archive plus regular link" \
"-e ff" "tmpdir/abt.a tmpdir/cd.a" \
"" {abcde.s} \
[expr { [istarget "*-*-msdos"] ? {} : {{nm "" abcde.nd}} }] \
"abtcde" \
] \
]
setup_xfail "binutils/33484" "alpha*-*-linux*ecoff*" "alpha*-*-osf*"
setup_xfail "binutils/33485" "cris-*-*aout*" "i\[3-7\]86-*-bsd*" \
"i\[3-7\]86-*-msdos*" "pdp11-*-*"
run_ld_link_tests [list \
[list "Thin archive plus thin link" \
"-e ff" "tmpdir/abt.a tmpdir/cdt.a" \
"" {abcde.s} \
[expr { [istarget "*-*-msdos"] ? {} : {{nm "" abcde.nd}} }] \
"abtcdte" \
] \
]
set LDFLAGS $old_ldflags
# XCOFF targets currently accept archives w/o index.
if { [is_xcoff_format] } {
return
}
run_ld_link_tests [list \
[list "Regular archive w/o index link" \
"-e ff" "tmpdir/abn.a" \
"" {abc.s} \
{{ld abc.ed}} \
"abnc" \
] \
[list "Thin archive w/o index link" \
"-e ff" "tmpdir/abnt.a" \
"" {abc.s} \
{{ld abct.ed}} \
"abnct" \
] \
]