mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-07-24 01:51:54 +08:00
Don't re-export common symbols
For ELF linker, a common symbol isn't a definition. When we decide if a symbol should be re-exported, we should check if the symbol isn't undefined, not if it is a definition. bfd/ PR ld/18914 * elflink.c (elf_link_add_object_symbols): Don't re-export a symbol if it isn't undefined. ld/testsuite/ PR ld/18914 * ld-elf/exclude.exp: Also check exclude_common. * ld-elf/exclude2.s: Add exclude_common.
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
2015-10-05 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
PR ld/18914
|
||||||
|
* elflink.c (elf_link_add_object_symbols): Don't re-export a
|
||||||
|
symbol if it isn't undefined.
|
||||||
|
|
||||||
2015-10-04 H.J. Lu <hongjiu.lu@intel.com>
|
2015-10-04 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* config.bfd (targ_selvecs, targ64_selvecs): Add iamcu_elf32_vec,
|
* config.bfd (targ_selvecs, targ64_selvecs): Add iamcu_elf32_vec,
|
||||||
|
@ -4216,7 +4216,7 @@ error_free_dyn:
|
|||||||
|
|
||||||
/* If this symbol has default visibility and the user has
|
/* If this symbol has default visibility and the user has
|
||||||
requested we not re-export it, then mark it as hidden. */
|
requested we not re-export it, then mark it as hidden. */
|
||||||
if (definition
|
if (!bfd_is_und_section (sec)
|
||||||
&& !dynamic
|
&& !dynamic
|
||||||
&& abfd->no_export
|
&& abfd->no_export
|
||||||
&& ELF_ST_VISIBILITY (isym->st_other) != STV_INTERNAL)
|
&& ELF_ST_VISIBILITY (isym->st_other) != STV_INTERNAL)
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
2015-10-05 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
PR ld/18914
|
||||||
|
* ld-elf/exclude.exp: Also check exclude_common.
|
||||||
|
* ld-elf/exclude2.s: Add exclude_common.
|
||||||
|
|
||||||
2015-10-02 Renlin Li <renlin.li@arm.com>
|
2015-10-02 Renlin Li <renlin.li@arm.com>
|
||||||
|
|
||||||
* ld-aarch64/aarch64-elf.exp (tls-relax-large-le-ie): Run new test.
|
* ld-aarch64/aarch64-elf.exp (tls-relax-large-le-ie): Run new test.
|
||||||
|
@ -83,7 +83,8 @@ if { [ld_simple_link $ld tmpdir/exclude.so "--shared tmpdir/exclude1.o -Ltmpdir
|
|||||||
|
|
||||||
if ![ld_nm $nm "-D" tmpdir/exclude.so] {
|
if ![ld_nm $nm "-D" tmpdir/exclude.so] {
|
||||||
unresolved $test2
|
unresolved $test2
|
||||||
} elseif { [info exists nm_output(exclude_sym)] } {
|
} elseif { [info exists nm_output(exclude_common)]
|
||||||
|
&& [info exists nm_output(exclude_sym)] } {
|
||||||
pass $test2
|
pass $test2
|
||||||
} else {
|
} else {
|
||||||
fail $test2
|
fail $test2
|
||||||
@ -99,7 +100,8 @@ if { [ld_simple_link $ld tmpdir/exclude.so "--exclude-libs libexclude --shared t
|
|||||||
|
|
||||||
if ![ld_nm $nm "-D" tmpdir/exclude.so] {
|
if ![ld_nm $nm "-D" tmpdir/exclude.so] {
|
||||||
unresolved $test4
|
unresolved $test4
|
||||||
} elseif { ! [info exists nm_output(exclude_sym)] } {
|
} elseif { ! [info exists nm_output(exclude_common)]
|
||||||
|
&& ! [info exists nm_output(exclude_sym)] } {
|
||||||
pass $test4
|
pass $test4
|
||||||
} else {
|
} else {
|
||||||
fail $test4
|
fail $test4
|
||||||
@ -109,6 +111,7 @@ if ![ld_nm $nm "-D" tmpdir/exclude.so] {
|
|||||||
|
|
||||||
if { [ld_simple_link $ld tmpdir/exclude.so "--exclude-libs libexclude.a --shared tmpdir/exclude1.o -Ltmpdir -lexclude"]
|
if { [ld_simple_link $ld tmpdir/exclude.so "--exclude-libs libexclude.a --shared tmpdir/exclude1.o -Ltmpdir -lexclude"]
|
||||||
&& [ld_nm $nm "-D" tmpdir/exclude.so]
|
&& [ld_nm $nm "-D" tmpdir/exclude.so]
|
||||||
|
&& ! [info exists nm_output(exclude_common)]
|
||||||
&& ! [info exists nm_output(exclude_sym)] } {
|
&& ! [info exists nm_output(exclude_sym)] } {
|
||||||
pass $test5
|
pass $test5
|
||||||
} else {
|
} else {
|
||||||
@ -117,6 +120,7 @@ if { [ld_simple_link $ld tmpdir/exclude.so "--exclude-libs libexclude.a --shared
|
|||||||
|
|
||||||
if { [ld_simple_link $ld tmpdir/exclude.so "--exclude-libs ALL --shared tmpdir/exclude1.o -Ltmpdir -lexclude"]
|
if { [ld_simple_link $ld tmpdir/exclude.so "--exclude-libs ALL --shared tmpdir/exclude1.o -Ltmpdir -lexclude"]
|
||||||
&& [ld_nm $nm "-D" tmpdir/exclude.so]
|
&& [ld_nm $nm "-D" tmpdir/exclude.so]
|
||||||
|
&& ! [info exists nm_output(exclude_common)]
|
||||||
&& ! [info exists nm_output(exclude_sym)] } {
|
&& ! [info exists nm_output(exclude_sym)] } {
|
||||||
pass $test6
|
pass $test6
|
||||||
} else {
|
} else {
|
||||||
@ -125,6 +129,7 @@ if { [ld_simple_link $ld tmpdir/exclude.so "--exclude-libs ALL --shared tmpdir/e
|
|||||||
|
|
||||||
if { [ld_simple_link $ld tmpdir/exclude.so "--exclude-libs foo:libexclude.a --shared tmpdir/exclude1.o -Ltmpdir -lexclude"]
|
if { [ld_simple_link $ld tmpdir/exclude.so "--exclude-libs foo:libexclude.a --shared tmpdir/exclude1.o -Ltmpdir -lexclude"]
|
||||||
&& [ld_nm $nm "-D" tmpdir/exclude.so]
|
&& [ld_nm $nm "-D" tmpdir/exclude.so]
|
||||||
|
&& ! [info exists nm_output(exclude_common)]
|
||||||
&& ! [info exists nm_output(exclude_sym)] } {
|
&& ! [info exists nm_output(exclude_sym)] } {
|
||||||
pass $test7
|
pass $test7
|
||||||
} else {
|
} else {
|
||||||
@ -133,6 +138,7 @@ if { [ld_simple_link $ld tmpdir/exclude.so "--exclude-libs foo:libexclude.a --sh
|
|||||||
|
|
||||||
if { [ld_simple_link $ld tmpdir/exclude.so "--exclude-libs foo,libexclude.a --shared tmpdir/exclude1.o -Ltmpdir -lexclude"]
|
if { [ld_simple_link $ld tmpdir/exclude.so "--exclude-libs foo,libexclude.a --shared tmpdir/exclude1.o -Ltmpdir -lexclude"]
|
||||||
&& [ld_nm $nm "-D" tmpdir/exclude.so]
|
&& [ld_nm $nm "-D" tmpdir/exclude.so]
|
||||||
|
&& ! [info exists nm_output(exclude_common)]
|
||||||
&& ! [info exists nm_output(exclude_sym)] } {
|
&& ! [info exists nm_output(exclude_sym)] } {
|
||||||
pass $test8
|
pass $test8
|
||||||
} else {
|
} else {
|
||||||
@ -141,6 +147,7 @@ if { [ld_simple_link $ld tmpdir/exclude.so "--exclude-libs foo,libexclude.a --sh
|
|||||||
|
|
||||||
if { [ld_simple_link $ld tmpdir/exclude.so "--exclude-libs foo:bar --shared tmpdir/exclude1.o -Ltmpdir -lexclude"]
|
if { [ld_simple_link $ld tmpdir/exclude.so "--exclude-libs foo:bar --shared tmpdir/exclude1.o -Ltmpdir -lexclude"]
|
||||||
&& [ld_nm $nm "-D" tmpdir/exclude.so]
|
&& [ld_nm $nm "-D" tmpdir/exclude.so]
|
||||||
|
&& [info exists nm_output(exclude_common)]
|
||||||
&& [info exists nm_output(exclude_sym)] } {
|
&& [info exists nm_output(exclude_sym)] } {
|
||||||
pass $test9
|
pass $test9
|
||||||
} else {
|
} else {
|
||||||
|
@ -2,3 +2,4 @@
|
|||||||
.data
|
.data
|
||||||
exclude_sym:
|
exclude_sym:
|
||||||
.long 0
|
.long 0
|
||||||
|
.common exclude_common, 4, 4
|
||||||
|
Reference in New Issue
Block a user