mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-24 20:28:28 +08:00
* cofflink.c (_bfd_coff_final_link): If there aren't any relocs in
a relocateable link, don't try to process them. From Heinz Wrobel <wrobel@lpr.e-technik.tu-muenchen.de>.
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
Mon Dec 2 12:13:51 1996 Ian Lance Taylor <ian@cygnus.com>
|
||||||
|
|
||||||
|
* cofflink.c (_bfd_coff_final_link): If there aren't any relocs in
|
||||||
|
a relocateable link, don't try to process them. From Heinz Wrobel
|
||||||
|
<wrobel@lpr.e-technik.tu-muenchen.de>.
|
||||||
|
|
||||||
Mon Dec 2 00:39:24 1996 Jeffrey A Law (law@cygnus.com)
|
Mon Dec 2 00:39:24 1996 Jeffrey A Law (law@cygnus.com)
|
||||||
|
|
||||||
* elf32-mn10300.c (mn10300_info_howto): Renamed from
|
* elf32-mn10300.c (mn10300_info_howto): Renamed from
|
||||||
|
@ -283,6 +283,7 @@ coff_link_add_symbols (abfd, info)
|
|||||||
struct bfd_link_info *info;
|
struct bfd_link_info *info;
|
||||||
{
|
{
|
||||||
boolean (*sym_is_global) PARAMS ((bfd *, struct internal_syment *));
|
boolean (*sym_is_global) PARAMS ((bfd *, struct internal_syment *));
|
||||||
|
boolean keep_syms;
|
||||||
boolean default_copy;
|
boolean default_copy;
|
||||||
bfd_size_type symcount;
|
bfd_size_type symcount;
|
||||||
struct coff_link_hash_entry **sym_hash;
|
struct coff_link_hash_entry **sym_hash;
|
||||||
@ -290,6 +291,11 @@ coff_link_add_symbols (abfd, info)
|
|||||||
bfd_byte *esym;
|
bfd_byte *esym;
|
||||||
bfd_byte *esym_end;
|
bfd_byte *esym_end;
|
||||||
|
|
||||||
|
/* Keep the symbols during this function, in case the linker needs
|
||||||
|
to read the generic symbols in order to report an error message. */
|
||||||
|
keep_syms = obj_coff_keep_syms (abfd);
|
||||||
|
obj_coff_keep_syms (abfd) = true;
|
||||||
|
|
||||||
sym_is_global = coff_backend_info (abfd)->_bfd_coff_sym_is_global;
|
sym_is_global = coff_backend_info (abfd)->_bfd_coff_sym_is_global;
|
||||||
|
|
||||||
if (info->keep_memory)
|
if (info->keep_memory)
|
||||||
@ -306,7 +312,7 @@ coff_link_add_symbols (abfd, info)
|
|||||||
((size_t) symcount
|
((size_t) symcount
|
||||||
* sizeof (struct coff_link_hash_entry *))));
|
* sizeof (struct coff_link_hash_entry *))));
|
||||||
if (sym_hash == NULL && symcount != 0)
|
if (sym_hash == NULL && symcount != 0)
|
||||||
return false;
|
goto error_return;
|
||||||
obj_coff_sym_hashes (abfd) = sym_hash;
|
obj_coff_sym_hashes (abfd) = sym_hash;
|
||||||
memset (sym_hash, 0,
|
memset (sym_hash, 0,
|
||||||
(size_t) symcount * sizeof (struct coff_link_hash_entry *));
|
(size_t) symcount * sizeof (struct coff_link_hash_entry *));
|
||||||
@ -335,7 +341,7 @@ coff_link_add_symbols (abfd, info)
|
|||||||
|
|
||||||
name = _bfd_coff_internal_syment_name (abfd, &sym, buf);
|
name = _bfd_coff_internal_syment_name (abfd, &sym, buf);
|
||||||
if (name == NULL)
|
if (name == NULL)
|
||||||
return false;
|
goto error_return;
|
||||||
|
|
||||||
/* We must copy the name into memory if we got it from the
|
/* We must copy the name into memory if we got it from the
|
||||||
syment itself, rather than the string table. */
|
syment itself, rather than the string table. */
|
||||||
@ -370,7 +376,7 @@ coff_link_add_symbols (abfd, info)
|
|||||||
(info, abfd, name, flags, section, value,
|
(info, abfd, name, flags, section, value,
|
||||||
(const char *) NULL, copy, false,
|
(const char *) NULL, copy, false,
|
||||||
(struct bfd_link_hash_entry **) sym_hash)))
|
(struct bfd_link_hash_entry **) sym_hash)))
|
||||||
return false;
|
goto error_return;
|
||||||
|
|
||||||
if (info->hash->creator->flavour == bfd_get_flavour (abfd))
|
if (info->hash->creator->flavour == bfd_get_flavour (abfd))
|
||||||
{
|
{
|
||||||
@ -405,7 +411,7 @@ coff_link_add_symbols (abfd, info)
|
|||||||
(sym.n_numaux
|
(sym.n_numaux
|
||||||
* sizeof (*alloc))));
|
* sizeof (*alloc))));
|
||||||
if (alloc == NULL)
|
if (alloc == NULL)
|
||||||
return false;
|
goto error_return;
|
||||||
for (i = 0, eaux = esym + symesz, iaux = alloc;
|
for (i = 0, eaux = esym + symesz, iaux = alloc;
|
||||||
i < sym.n_numaux;
|
i < sym.n_numaux;
|
||||||
i++, eaux += symesz, iaux++)
|
i++, eaux += symesz, iaux++)
|
||||||
@ -448,7 +454,7 @@ coff_link_add_symbols (abfd, info)
|
|||||||
(PTR) bfd_zalloc (abfd,
|
(PTR) bfd_zalloc (abfd,
|
||||||
sizeof (struct coff_section_tdata));
|
sizeof (struct coff_section_tdata));
|
||||||
if (stab->used_by_bfd == NULL)
|
if (stab->used_by_bfd == NULL)
|
||||||
return false;
|
goto error_return;
|
||||||
secdata = coff_section_data (abfd, stab);
|
secdata = coff_section_data (abfd, stab);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -457,12 +463,18 @@ coff_link_add_symbols (abfd, info)
|
|||||||
if (! _bfd_link_section_stabs (abfd, &table->stab_info,
|
if (! _bfd_link_section_stabs (abfd, &table->stab_info,
|
||||||
stab, stabstr,
|
stab, stabstr,
|
||||||
&secdata->stab_info))
|
&secdata->stab_info))
|
||||||
return false;
|
goto error_return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
obj_coff_keep_syms (abfd) = keep_syms;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
error_return:
|
||||||
|
obj_coff_keep_syms (abfd) = keep_syms;
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Do the final link step. */
|
/* Do the final link step. */
|
||||||
@ -826,7 +838,7 @@ _bfd_coff_final_link (abfd, info)
|
|||||||
finfo.outsyms = NULL;
|
finfo.outsyms = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (info->relocateable)
|
if (info->relocateable && max_output_reloc_count > 0)
|
||||||
{
|
{
|
||||||
/* Now that we have written out all the global symbols, we know
|
/* Now that we have written out all the global symbols, we know
|
||||||
the symbol indices to use for relocs against them, and we can
|
the symbol indices to use for relocs against them, and we can
|
||||||
|
Reference in New Issue
Block a user