diff options
author | Ian Lance Taylor <ian@airs.com> | 1997-06-26 05:27:56 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1997-06-26 05:27:56 +0000 |
commit | 8211c929862c3a182eb99637ebf2117c4cbd5c23 (patch) | |
tree | 2ec11348e10a191533a8850f5dd07b8dcaedd9bd | |
parent | 662cc41eafa15f94499988b0e1c9a9ffc0afc39e (diff) | |
download | gdb-8211c929862c3a182eb99637ebf2117c4cbd5c23.zip gdb-8211c929862c3a182eb99637ebf2117c4cbd5c23.tar.gz gdb-8211c929862c3a182eb99637ebf2117c4cbd5c23.tar.bz2 |
* elflink.h (elf_link_output_extsym): Use the right section for a
common symbol.
* elf32-mips.c (mips_elf_link_output_symbol_hook): If a common
symbol was in .scommon, mark it as SHN_MIPS_SCOMMON.
PR 12697.
-rw-r--r-- | bfd/ChangeLog | 7 | ||||
-rw-r--r-- | bfd/elf32-mips.c | 16 | ||||
-rw-r--r-- | bfd/elflink.h | 2 |
3 files changed, 20 insertions, 5 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 4dc6767..bc69827 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +Thu Jun 26 01:26:31 1997 Ian Lance Taylor <ian@cygnus.com> + + * elflink.h (elf_link_output_extsym): Use the right section for a + common symbol. + * elf32-mips.c (mips_elf_link_output_symbol_hook): If a common + symbol was in .scommon, mark it as SHN_MIPS_SCOMMON. + Wed Jun 25 12:43:10 1997 H.J. Lu <hjl@gnu.ai.mit.edu> * elflink.h (elf_merge_symbols): Resolve indirect and warning diff --git a/bfd/elf32-mips.c b/bfd/elf32-mips.c index c094b76..af80f5f 100644 --- a/bfd/elf32-mips.c +++ b/bfd/elf32-mips.c @@ -2414,7 +2414,7 @@ _bfd_mips_elf_set_section_contents (abfd, section, location, offset, count) size = section->_cooked_size; else size = section->_raw_size; - c = (PTR) bfd_zalloc (abfd, size); + c = (bfd_byte *) bfd_zalloc (abfd, size); if (c == NULL) return false; elf_section_data (section)->tdata = (PTR) c; @@ -3711,7 +3711,7 @@ mips_elf_create_procedure_table (handle, abfd, info, s, debug) /* Set the size and contents of .rtproc section. */ s->_raw_size = size; - s->contents = rtproc; + s->contents = (bfd_byte *) rtproc; /* Skip this section later on (I don't think this currently matters, but someday it might). */ @@ -5412,8 +5412,8 @@ mips_elf_relocate_section (output_bfd, info, input_bfd, input_section, } /* This hook function is called before the linker writes out a global - symbol. This is where we undo the increment of the value for a - mips16 symbol. */ + symbol. We mark symbols as small common if appropriate. This is + also where we undo the increment of the value for a mips16 symbol. */ /*ARGSIGNORED*/ static boolean @@ -5424,9 +5424,17 @@ mips_elf_link_output_symbol_hook (abfd, info, name, sym, input_sec) Elf_Internal_Sym *sym; asection *input_sec; { + /* If we see a common symbol, which implies a relocatable link, then + if a symbol was small common in an input file, mark it as small + common in the output file. */ + if (sym->st_shndx == SHN_COMMON + && strcmp (input_sec->name, ".scommon") == 0) + sym->st_shndx = SHN_MIPS_SCOMMON; + if (sym->st_other == STO_MIPS16 && (sym->st_value & 1) != 0) --sym->st_value; + return true; } diff --git a/bfd/elflink.h b/bfd/elflink.h index d0fccf3..82e10d2 100644 --- a/bfd/elflink.h +++ b/bfd/elflink.h @@ -4277,7 +4277,7 @@ elf_link_output_extsym (h, data) break; case bfd_link_hash_common: - input_sec = bfd_com_section_ptr; + input_sec = h->root.u.c.p->section; sym.st_shndx = SHN_COMMON; sym.st_value = 1 << h->root.u.c.p->alignment_power; break; |