PR ld/12365
PR ld/12696 include/ * bfdlink.h (ENUM_BITFIELD): Define. (struct bfd_link_hash_entry): Make "type" a bitfield. Add "non_ir_ref". (struct bfd_link_callbacks <notice>): Pass bfd_link_hash_entry pointer rather than "name". bfd/ * coff-aux.c (coff_m68k_aux_link_add_one_symbol): Update "notice" call. * linker.c (_bfd_link_hash_newfunc): Clear bitfields. (_bfd_generic_link_add_one_symbol): Update "notice" call. * elflink.c (_bfd_elf_merge_symbol): Don't skip weak redefs when it is a redef of an IR symbol in a real BFD. ld/ * ldmain.c (notice): Delete "name" param, add "h". * plugin.c (plugin_notice): Likewise. Set non_ir_ref. Handle redefinitions of IR symbols in real BFDs. (plugin_multiple_definition, plugin_multiple_common): Delete. (non_ironly_hash, init_non_ironly_hash): Delete. (is_visible_from_outside): Traverse entry_symbol chain. (get_symbols): Use non_ir_ref flag rather than hash lookup.
This commit is contained in:
parent
cca89be9ad
commit
6d49e852e1
|
@ -1,3 +1,12 @@
|
||||||
|
2011-04-24 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
|
PR ld/12365
|
||||||
|
PR ld/12696
|
||||||
|
* bfdlink.h (ENUM_BITFIELD): Define.
|
||||||
|
(struct bfd_link_hash_entry): Make "type" a bitfield. Add "non_ir_ref".
|
||||||
|
(struct bfd_link_callbacks <notice>): Pass bfd_link_hash_entry pointer
|
||||||
|
rather than "name".
|
||||||
|
|
||||||
2011-04-20 Alan Modra <amodra@gmail.com>
|
2011-04-20 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
PR ld/12365
|
PR ld/12365
|
||||||
|
|
|
@ -24,6 +24,12 @@
|
||||||
#ifndef BFDLINK_H
|
#ifndef BFDLINK_H
|
||||||
#define BFDLINK_H
|
#define BFDLINK_H
|
||||||
|
|
||||||
|
#if (__GNUC__ * 1000 + __GNUC_MINOR__ > 2000)
|
||||||
|
#define ENUM_BITFIELD(TYPE) __extension__ enum TYPE
|
||||||
|
#else
|
||||||
|
#define ENUM_BITFIELD(TYPE) unsigned int
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Which symbols to strip during a link. */
|
/* Which symbols to strip during a link. */
|
||||||
enum bfd_link_strip
|
enum bfd_link_strip
|
||||||
{
|
{
|
||||||
|
@ -91,7 +97,9 @@ struct bfd_link_hash_entry
|
||||||
struct bfd_hash_entry root;
|
struct bfd_hash_entry root;
|
||||||
|
|
||||||
/* Type of this entry. */
|
/* Type of this entry. */
|
||||||
enum bfd_link_hash_type type;
|
ENUM_BITFIELD (bfd_link_hash_type) type : 8;
|
||||||
|
|
||||||
|
unsigned int non_ir_ref : 1;
|
||||||
|
|
||||||
/* A union of information depending upon the type. */
|
/* A union of information depending upon the type. */
|
||||||
union
|
union
|
||||||
|
@ -570,11 +578,11 @@ struct bfd_link_callbacks
|
||||||
(struct bfd_link_info *, const char *name,
|
(struct bfd_link_info *, const char *name,
|
||||||
bfd *abfd, asection *section, bfd_vma address);
|
bfd *abfd, asection *section, bfd_vma address);
|
||||||
/* A function which is called when a symbol in notice_hash is
|
/* A function which is called when a symbol in notice_hash is
|
||||||
defined or referenced. NAME is the symbol. ABFD, SECTION and
|
defined or referenced. H is the symbol. ABFD, SECTION and
|
||||||
ADDRESS are the value of the symbol. If SECTION is
|
ADDRESS are the (new) value of the symbol. If SECTION is
|
||||||
bfd_und_section, this is a reference. */
|
bfd_und_section, this is a reference. */
|
||||||
bfd_boolean (*notice)
|
bfd_boolean (*notice)
|
||||||
(struct bfd_link_info *, const char *name,
|
(struct bfd_link_info *, struct bfd_link_hash_entry *h,
|
||||||
bfd *abfd, asection *section, bfd_vma address);
|
bfd *abfd, asection *section, bfd_vma address);
|
||||||
/* Error or warning link info message. */
|
/* Error or warning link info message. */
|
||||||
void (*einfo)
|
void (*einfo)
|
||||||
|
|
Loading…
Reference in New Issue