From 1fa0ddb30b4401475d6a055946cc20909d0a9c21 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Mon, 2 Aug 1999 22:31:18 +0000 Subject: Jakub Jelinek * 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. --- bfd/ChangeLog | 7 +++++++ bfd/elf64-sparc.c | 2 ++ bfd/elflink.h | 15 ++++----------- 3 files changed, 13 insertions(+), 11 deletions(-) (limited to 'bfd') diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 13afd20..0b57442 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +1999-08-02 Jakub Jelinek + + * 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 * elf32-mips.c (_bfd_mips_elf_final_link): Handle the case where diff --git a/bfd/elf64-sparc.c b/bfd/elf64-sparc.c index 733ea5e5..e98f1be 100644 --- a/bfd/elf64-sparc.c +++ b/bfd/elf64-sparc.c @@ -1403,6 +1403,8 @@ sparc64_elf_output_arch_syms (output_bfd, info, finfo, func) 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) diff --git a/bfd/elflink.h b/bfd/elflink.h index cfb4909..7b3a417 100644 --- a/bfd/elflink.h +++ b/bfd/elflink.h @@ -4250,19 +4250,12 @@ elf_bfd_final_link (abfd, info) { 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); -- cgit v1.1