diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2002-08-12 19:23:33 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2002-08-12 19:23:33 +0000 |
commit | 871da94f03d35c4aea188ef89a6c7b50b8e17b90 (patch) | |
tree | 66fddacdc2331af542108e1a050f000583c03ae3 /bfd/elflink.h | |
parent | 9c0921673dc228e6afc4270cbdfbfb1a59b345b8 (diff) | |
download | gdb-871da94f03d35c4aea188ef89a6c7b50b8e17b90.zip gdb-871da94f03d35c4aea188ef89a6c7b50b8e17b90.tar.gz gdb-871da94f03d35c4aea188ef89a6c7b50b8e17b90.tar.bz2 |
2002-08-12 H.J. Lu <hjl@gnu.org>
* elflink.h (elf_add_default_symbol): Preserve section across
elf_merge_symbol.
Diffstat (limited to 'bfd/elflink.h')
-rw-r--r-- | bfd/elflink.h | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/bfd/elflink.h b/bfd/elflink.h index d849478..0840f8e 100644 --- a/bfd/elflink.h +++ b/bfd/elflink.h @@ -899,19 +899,19 @@ elf_merge_symbol (abfd, info, name, sym, psec, pvalue, sym_hash, /* This function is called to create an indirect symbol from the default for the symbol with the default version if needed. The - symbol is described by H, NAME, SYM, SEC, VALUE, and OVERRIDE. We + symbol is described by H, NAME, SYM, PSEC, VALUE, and OVERRIDE. We set DYNSYM if the new indirect symbol is dynamic. DT_NEEDED indicates if it comes from a DT_NEEDED entry of a shared object. */ static boolean -elf_add_default_symbol (abfd, info, h, name, sym, sec, value, +elf_add_default_symbol (abfd, info, h, name, sym, psec, value, dynsym, override, dt_needed) bfd *abfd; struct bfd_link_info *info; struct elf_link_hash_entry *h; const char *name; Elf_Internal_Sym *sym; - asection **sec; + asection **psec; bfd_vma *value; boolean *dynsym; boolean override; @@ -926,6 +926,7 @@ elf_add_default_symbol (abfd, info, h, name, sym, sec, value, boolean dynamic; char *p; size_t len, shortlen; + asection *sec; /* If this symbol has a version, and it is the default version, we create an indirect symbol from the default name to the fully @@ -970,7 +971,8 @@ elf_add_default_symbol (abfd, info, h, name, sym, sec, value, actually going to define an indirect symbol. */ type_change_ok = false; size_change_ok = false; - if (! elf_merge_symbol (abfd, info, shortname, sym, sec, value, + sec = *psec; + if (! elf_merge_symbol (abfd, info, shortname, sym, &sec, value, &hi, &override, &type_change_ok, &size_change_ok, dt_needed)) return false; @@ -1077,7 +1079,8 @@ elf_add_default_symbol (abfd, info, h, name, sym, sec, value, /* Once again, merge with any existing symbol. */ type_change_ok = false; size_change_ok = false; - if (! elf_merge_symbol (abfd, info, shortname, sym, sec, value, + sec = *psec; + if (! elf_merge_symbol (abfd, info, shortname, sym, &sec, value, &hi, &override, &type_change_ok, &size_change_ok, dt_needed)) return false; |