+1999-08-02 Jakub Jelinek <jj@ultra.linux.cz>
+
+ * elflink.h (elf_bfd_final_link): Copy the whole isym, not just
+ some fields.
+ * elf64-sparc.c (sparc64_elf_output_arch_syms): Declare used
+ variables and initialize them.
+
1999-08-01 Mark Mitchell <mark@codesourcery.com>
* elf32-mips.c (_bfd_mips_elf_final_link): Handle the case where
to back up symtab->sh_info. */
if (elf_hash_table (info)->dynlocal)
{
+ bfd * dynobj = elf_hash_table (info)->dynobj;
+ asection *dynsymsec = bfd_get_section_by_name (dynobj, ".dynsym");
struct elf_link_local_dynamic_entry *e;
for (e = elf_hash_table (info)->dynlocal; e ; e = e->next)
{
asection *s;
- sym.st_size = e->isym.st_size;
- sym.st_other = e->isym.st_other;
-
- /* Note that we saved a word of storage and overwrote
+ /* Copy the internal symbol as is.
+ Note that we saved a word of storage and overwrote
the original st_name with the dynstr_index. */
- sym.st_name = e->isym.st_name;
+ sym = e->isym;
- if (e->isym.st_shndx == 0 || e->isym.st_shndx >= SHN_LORESERVE)
- {
- sym.st_shndx = e->isym.st_shndx;
- sym.st_value = e->isym.st_value;
- }
- else
+ if (e->isym.st_shndx > 0 && e->isym.st_shndx < SHN_LORESERVE)
{
s = bfd_section_from_elf_index (e->input_bfd,
e->isym.st_shndx);