diff options
author | Alan Modra <amodra@gmail.com> | 2014-12-23 19:07:23 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2014-12-23 23:36:50 +1030 |
commit | 12b2843a6bb12292d8e36d8df22c788a3c91cb2f (patch) | |
tree | 09f7f27839b1e5fe160a58612b5939037905e968 /include | |
parent | Don't PROVIDE over top of common symbols (diff) | |
download | binutils-gdb-12b2843a6bb12292d8e36d8df22c788a3c91cb2f.tar.gz binutils-gdb-12b2843a6bb12292d8e36d8df22c788a3c91cb2f.tar.bz2 binutils-gdb-12b2843a6bb12292d8e36d8df22c788a3c91cb2f.zip |
Use a symbol flag bit to mark linker defined symbols
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.
Diffstat (limited to 'include')
-rw-r--r-- | include/ChangeLog | 5 | ||||
-rw-r--r-- | include/bfdlink.h | 6 |
2 files changed, 11 insertions, 0 deletions
diff --git a/include/ChangeLog b/include/ChangeLog index 1114a638ad2..d2e057b2b13 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,8 @@ +2014-12-23 Alan Modra <amodra@gmail.com> + + * bfdlink.h (struct bfd_link_hash_entry): Comment non_ir_ref. Add + linker_def. + 2014-12-12 Phil Muldoon <pmuldoon@redhat.com> Jan Kratochvil <jan.kratochvil@redhat.com> Tom Tromey <tromey@redhat.com> diff --git a/include/bfdlink.h b/include/bfdlink.h index f3181ba6256..48c91da75a1 100644 --- a/include/bfdlink.h +++ b/include/bfdlink.h @@ -91,8 +91,14 @@ struct bfd_link_hash_entry /* Type of this entry. */ ENUM_BITFIELD (bfd_link_hash_type) type : 8; + /* Symbol is referenced in a normal object file, as distict from a LTO + IR object file. */ unsigned int non_ir_ref : 1; + /* Symbol is a built-in define. These will be overridden by PROVIDE + in a linker script. */ + unsigned int linker_def : 1; + /* A union of information depending upon the type. */ union { |