Browse Source
Trying to use the SEC_LINKER_CREATED section flag to determine whether a symbol is linker defined fails to work on targets like alpha that define special SEC_COMMON sections. These might contain symbols that originated in an object file. include/ * bfdlink.h (struct bfd_link_hash_entry): Comment non_ir_ref. Add linker_def. bfd/ * elflink.c (_bfd_elf_define_linkage_sym): Set linker_def. * linker.c (_bfd_generic_link_add_one_symbol): Clear linker_def for CDEF, DEF, DEFW, COM. ld/ * ldexp.c (exp_fold_tree_1 <etree_provide>): Test linker_def. ld/testsuite/ * ld-powerpc/sdabase.s, * ld-powerpc/sdabase.t, * ld-powerpc/sdabase.d: New test. * ld-powerpc/sdabase2.t, * ld-powerpc/sdabase2.d: New test. * ld-powerpc/powerpc.exp: Run them.gdb-7.9-branch
14 changed files with 77 additions and 3 deletions
@ -0,0 +1,10 @@ |
|||
#source: sdabase.s |
|||
#as: -a32 |
|||
#ld: -melf32ppc -T sdabase.t |
|||
#objdump: -s |
|||
#target: powerpc*-*-* |
|||
|
|||
.*: file format .* |
|||
|
|||
Contents of section \.sdata: |
|||
0400 (00008400|00840000) (00000400|00040000) .* |
|||
@ -0,0 +1,9 @@ |
|||
.text |
|||
.globl _start |
|||
_start: |
|||
|
|||
.section .sdata,"aw",@progbits |
|||
.globl my_sdata |
|||
my_sdata: |
|||
.dc.a _SDA_BASE_ |
|||
.dc.a my_sdata |
|||
@ -0,0 +1,6 @@ |
|||
SECTIONS |
|||
{ |
|||
.text 0x100 : { *(.text) } |
|||
.sdata 0x400 : { *(.sdata) } |
|||
/DISCARD/ : { *(*) } |
|||
} |
|||
@ -0,0 +1,10 @@ |
|||
#source: sdabase.s |
|||
#as: -a32 |
|||
#ld: -melf32ppc -T sdabase2.t |
|||
#objdump: -s |
|||
#target: powerpc*-*-* |
|||
|
|||
.*: file format .* |
|||
|
|||
Contents of section \.sdata: |
|||
0400 (00000400|00040000) (00000400|00040000) .* |
|||
@ -0,0 +1,6 @@ |
|||
SECTIONS |
|||
{ |
|||
.text 0x100 : { *(.text) } |
|||
.sdata 0x400 : { PROVIDE (_SDA_BASE_ = .); *(.sdata) } |
|||
/DISCARD/ : { *(*) } |
|||
} |
|||
Loading…
Reference in new issue