Correct logic for "defined by object"
Alan Modra
amodra@gmail.com
Tue Dec 23 12:41:00 GMT 2014
More information about the Binutils mailing list
Tue Dec 23 12:41:00 GMT 2014
- Previous message (by thread): Move support code for linker script DEFINED to ldexp.c
- Next message (by thread): Correct logic for "defined by object"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
The old code missed testing bfd_link_hash_undefweak, and wrongly
excluded bfd_link_hash_common symbols. It is also clearer to invert
the set of enum bfd_link_hash_type values tested.
bfd_link_hash_indirect and bfd_link_hash_warning will never appear
here.
* ldexp.c (update_definedness): Correct logic setting by_object.
diff --git a/ld/ldexp.c b/ld/ldexp.c
index 2828933..e9e95f9 100644
--- a/ld/ldexp.c
+++ b/ld/ldexp.c
@@ -304,11 +304,11 @@ update_definedness (const char *name, struct bfd_link_hash_entry *h)
einfo (_("%P%F: bfd_hash_lookup failed creating symbol %s\n"), name);
/* If the symbol was already defined, and not by a script, then it
- must be defined by an object file. */
+ must be defined by an object file or by the linker target code. */
if (!defentry->by_script
- && h->type != bfd_link_hash_undefined
- && h->type != bfd_link_hash_common
- && h->type != bfd_link_hash_new)
+ && (h->type == bfd_link_hash_defined
+ || h->type == bfd_link_hash_defweak
+ || h->type == bfd_link_hash_common))
defentry->by_object = 1;
defentry->by_script = 1;
--
Alan Modra
Australia Development Lab, IBM
- Previous message (by thread): Move support code for linker script DEFINED to ldexp.c
- Next message (by thread): Correct logic for "defined by object"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Binutils mailing list