mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-06 12:09:26 +08:00
34a87bb07a
There should be no difference in output for symbols defined by HIDDEN or PROVIDE_HIDDEN assignments whether they are explicitly marked as hidden or not. This patch adds a new BFD function, bfd_link_hide_symbol, to hide symbols defined by HIDDEN and PROVIDE_HIDDEN assignments. bfd PR ld/23201 * aout-target.h (MY_bfd_link_hide_symbol): New. * aout-tic30.c (MY_bfd_link_hide_symbol): Likewise. * binary.c (binary_bfd_link_hide_symbol): Likewise. * coff-alpha.c (_bfd_ecoff_bfd_link_hide_symbol): Likewise. * coff-mips.c (_bfd_ecoff_bfd_link_hide_symbol): Likewise. * coff-rs6000.c (_bfd_xcoff_bfd_link_hide_symbol): Likewise. * coffcode.h (coff_bfd_link_hide_symbol): Likewise. * elf-bfd.h (_bfd_elf_link_hide_symbol): Likewise. * elfxx-target.h (bfd_elfNN_bfd_link_hide_symbol): Likewise. * i386msdos.c (msdos_bfd_link_hide_symbol): Likewise. * ihex.c (ihex_bfd_link_hide_symbol): Likewise. * libbfd-in.h (_bfd_nolink_bfd_link_hide_symbol): Likewise. * linker.c (_bfd_generic_link_hide_symbol): Likewise. (bfd_link_hide_symbol): Likewise. * mach-o-target.c (bfd_mach_o_bfd_link_hide_symbol): Likewise. * mmo.c (mmo_bfd_link_hide_symbol): Likewise. * pef.c (bfd_pef_bfd_link_hide_symbol): Likewise. * plugin.c (bfd_plugin_bfd_link_hide_symbol): Likewise. * ppcboot.c (ppcboot_bfd_link_hide_symbol): Likewise. * som.c (som_bfd_link_hide_symbol): Likewise. * srec.c (srec_bfd_link_hide_symbol): Likewise. * tekhex.c (tekhex_bfd_link_hide_symbol): Likewise. * vms-alpha.c (vms_bfd_link_hide_symbol): Likewise. (alpha_vms_bfd_link_hide_symbol): Likewise. * xsym.c (bfd_sym_bfd_link_hide_symbol): Likewise. * coff64-rs6000.c (rs6000_xcoff64_vec): Add _bfd_generic_link_hide_symbol. (rs6000_xcoff64_aix_vec): Likewise. * elflink.c (bfd_elf_record_link_assignment): Don't make forced local symbol dynamic. (_bfd_elf_link_hide_symbol): New function. * elfxx-x86.c (_bfd_x86_elf_link_symbol_references_local): Don't check root.ldscript_def. * targets.c (bfd_target): Add _bfd_link_hide_symbol. (BFD_JUMP_TABLE_LINK): Add NAME##_bfd_link_hide_symbol. * bfd-in2.h: Regenerated. * libbfd.h: Likewise. ld/ PR ld/23201 * ldexp.c (exp_fold_tree_1): Call bfd_link_hide_symbol to hide a symbol. * testsuite/ld-elf/provide-hidden-dynabs.nd: Removed. * testsuite/ld-elf/provide-hidden-dynsec.nd: Likewise. * testsuite/ld-elf/provide-hidden.exp: Replace provide-hidden-dynsec.nd with provide-hidden-sec.nd and provide-hidden-dyn.nd. Replace provide-hidden-dynabs.nd with provide-hidden-abs.nd and provide-hidden-dyn.nd. * testsuite/ld-i386/pr23189.d: Expect no dynamic relocation. * testsuite/ld-x86-64/pr23189.d: Likewise.
165 lines
4.5 KiB
Plaintext
165 lines
4.5 KiB
Plaintext
# Expect script for the PROVIDE_HIDDEN linker script command.
|
|
#
|
|
# Copyright (C) 2013-2018 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; if not, write to the Free Software
|
|
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
|
# MA 02110-1301, USA.
|
|
#
|
|
|
|
#
|
|
# Written by Maciej W. Rozycki <macro@codesourcery.com>
|
|
#
|
|
|
|
# Export classes only make sense for ELF shared-library targets.
|
|
if { ![is_elf_format] || ![check_shared_lib_support] } {
|
|
return
|
|
}
|
|
|
|
# This target requires extra GAS options when building code for shared
|
|
# libraries.
|
|
set AFLAGS_PIC ""
|
|
if [istarget "tic6x-*-*"] {
|
|
append AFLAGS_PIC " -mpic -mpid=near"
|
|
}
|
|
# These targets do not default to linking with shared libraries.
|
|
if { [istarget "mips*vr4100*-*-elf*"] \
|
|
|| [istarget "mips*vr4300*-*-elf*"] \
|
|
|| [istarget "mips*vr5000*-*-elf*"] } {
|
|
append LFLAGS " -call_shared"
|
|
}
|
|
|
|
set testname "PROVIDE_HIDDEN test"
|
|
|
|
run_ld_link_tests [list \
|
|
[list \
|
|
"$testname (auxiliary shared object)" \
|
|
"-shared -T provide-hidden-s.ld" "" \
|
|
"$AFLAGS_PIC" \
|
|
[list provide-hidden-1.s ] \
|
|
[list "readelf -s provide-hidden-s.nd"] \
|
|
"provide-hidden-s.so"]]
|
|
|
|
run_ld_link_tests [list \
|
|
[list \
|
|
"$testname 1" \
|
|
"-T provide-hidden-1.ld" "" \
|
|
"" \
|
|
[list provide-hidden-1.s] \
|
|
[list \
|
|
[list readelf -s provide-hidden-def.nd] \
|
|
[list readelf -s provide-hidden-dyn.nd]] \
|
|
"provide-hidden-1"] \
|
|
[list \
|
|
"$testname 2" \
|
|
"-T provide-hidden-1.ld" "" \
|
|
"" \
|
|
[list provide-hidden-2.s] \
|
|
[list \
|
|
[list readelf -s provide-hidden-def.nd] \
|
|
[list readelf -s provide-hidden-dyn.nd]] \
|
|
"provide-hidden-2"] \
|
|
[list \
|
|
"$testname 3" \
|
|
"-T provide-hidden-1.ld" "" \
|
|
"" \
|
|
[list provide-hidden-3.s] \
|
|
[list \
|
|
[list readelf -s provide-hidden-sec.nd] \
|
|
[list readelf -s provide-hidden-dyn.nd]] \
|
|
"provide-hidden-3"] \
|
|
[list \
|
|
"$testname 4" \
|
|
"$LFLAGS -T provide-hidden-1.ld" "tmpdir/provide-hidden-s.so" \
|
|
"" \
|
|
[list provide-hidden-3.s] \
|
|
[list \
|
|
[list readelf -s provide-hidden-sec.nd] \
|
|
[list readelf -s provide-hidden-dyn.nd]] \
|
|
"provide-hidden-4"] \
|
|
[list \
|
|
"$testname 5" \
|
|
"-T provide-hidden-1.ld" "" \
|
|
"" \
|
|
[list provide-hidden-4.s] \
|
|
[list \
|
|
[list readelf -s provide-hidden-sec.nd] \
|
|
[list readelf -s provide-hidden-dyn.nd]] \
|
|
"provide-hidden-5"] \
|
|
[list \
|
|
"$testname 6" \
|
|
"$LFLAGS -T provide-hidden-1.ld" "tmpdir/provide-hidden-s.so" \
|
|
"" \
|
|
[list provide-hidden-4.s] \
|
|
[list \
|
|
[list readelf -s provide-hidden-sec.nd] \
|
|
[list readelf -s provide-hidden-dyn.nd]] \
|
|
"provide-hidden-6"] \
|
|
[list \
|
|
"$testname 7" \
|
|
"-T provide-hidden-2.ld" "" \
|
|
"" \
|
|
[list provide-hidden-1.s] \
|
|
[list \
|
|
[list readelf -s provide-hidden-def.nd] \
|
|
[list readelf -s provide-hidden-dyn.nd]] \
|
|
"provide-hidden-7"] \
|
|
[list \
|
|
"$testname 8" \
|
|
"-T provide-hidden-2.ld" "" \
|
|
"" \
|
|
[list provide-hidden-2.s] \
|
|
[list \
|
|
[list readelf -s provide-hidden-def.nd] \
|
|
[list readelf -s provide-hidden-dyn.nd]] \
|
|
"provide-hidden-8"] \
|
|
[list \
|
|
"$testname 9" \
|
|
"-T provide-hidden-2.ld" "" \
|
|
"" \
|
|
[list provide-hidden-3.s] \
|
|
[list \
|
|
[list readelf -s provide-hidden-abs.nd] \
|
|
[list readelf -s provide-hidden-dyn.nd]] \
|
|
"provide-hidden-9"] \
|
|
[list \
|
|
"$testname 10" \
|
|
"$LFLAGS -T provide-hidden-2.ld" "tmpdir/provide-hidden-s.so" \
|
|
"" \
|
|
[list provide-hidden-3.s] \
|
|
[list \
|
|
[list readelf -s provide-hidden-abs.nd] \
|
|
[list readelf -s provide-hidden-dyn.nd]] \
|
|
"provide-hidden-10"] \
|
|
[list \
|
|
"$testname 11" \
|
|
"-T provide-hidden-2.ld" "" \
|
|
"" \
|
|
[list provide-hidden-4.s] \
|
|
[list \
|
|
[list readelf -s provide-hidden-abs.nd] \
|
|
[list readelf -s provide-hidden-dyn.nd]] \
|
|
"provide-hidden-11"] \
|
|
[list \
|
|
"$testname 12" \
|
|
"$LFLAGS -T provide-hidden-2.ld" "tmpdir/provide-hidden-s.so" \
|
|
"" \
|
|
[list provide-hidden-4.s] \
|
|
[list \
|
|
[list readelf -s provide-hidden-abs.nd] \
|
|
[list readelf -s provide-hidden-dyn.nd]] \
|
|
"provide-hidden-12"]]
|