diff options
author | Ian Lance Taylor <ian@airs.com> | 1995-11-27 20:11:40 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1995-11-27 20:11:40 +0000 |
commit | 1ff0461b4e89749c7835d630042255bf948e5c90 (patch) | |
tree | b1faa0b7f5fa2369e1dd2db868832abf005d0e44 /bfd | |
parent | 4f351b156dc939e16549d2857106c121f2bb0c2a (diff) | |
download | gdb-1ff0461b4e89749c7835d630042255bf948e5c90.zip gdb-1ff0461b4e89749c7835d630042255bf948e5c90.tar.gz gdb-1ff0461b4e89749c7835d630042255bf948e5c90.tar.bz2 |
* hp300hpux.c (MY(callback)): Set lma as well as vma.
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 2 | ||||
-rw-r--r-- | bfd/hp300hpux.c | 63 |
2 files changed, 30 insertions, 35 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 3b52da6..85f39df 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,5 +1,7 @@ Mon Nov 27 12:27:46 1995 Ian Lance Taylor <ian@cygnus.com> + * hp300hpux.c (MY(callback)): Set lma as well as vma. + * configure, config.in: Regenerate with autoconf 2.7. * elf32-i386.c (elf_backend_plt_readonly): Set correctly, to 1. diff --git a/bfd/hp300hpux.c b/bfd/hp300hpux.c index 54e5e50..ec48fd3 100644 --- a/bfd/hp300hpux.c +++ b/bfd/hp300hpux.c @@ -1,5 +1,5 @@ /* BFD backend for hp-ux 9000/300 - Copyright (C) 1990, 1991, 1994 Free Software Foundation, Inc. + Copyright (C) 1990, 1991, 1994, 1995 Free Software Foundation, Inc. Written by Glenn Engel. This file is part of BFD, the Binary File Descriptor library. @@ -215,6 +215,10 @@ MY (callback) (abfd) obj_datasec (abfd)->vma = N_DATADDR (*execp); obj_bsssec (abfd)->vma = N_BSSADDR (*execp); + obj_textsec (abfd)->lma = obj_textsec (abfd)->vma; + obj_datasec (abfd)->lma = obj_datasec (abfd)->vma; + obj_bsssec (abfd)->lma = obj_bsssec (abfd)->vma; + /* The file offsets of the sections */ obj_textsec (abfd)->filepos = N_TXTOFF (*execp); obj_datasec (abfd)->filepos = N_DATOFF (*execp); @@ -386,7 +390,28 @@ convert_sym_type (sym_pointer, cache_ptr, abfd) new_type |= N_EXT; if (name_type & HP_SECONDARY_SYMBOL) - new_type = (new_type & ~N_TYPE) | N_INDR; + { + switch (new_type) + { + default: + abort (); + case N_UNDF | N_EXT: + new_type = N_WEAKU; + break; + case N_ABS | N_EXT: + new_type = N_WEAKA; + break; + case N_TEXT | N_EXT: + new_type = N_WEAKT; + break; + case N_DATA | N_EXT: + new_type = N_WEAKD; + break; + case N_BSS | N_EXT: + new_type = N_WEAKB; + break; + } + } } cache_ptr->type = new_type; @@ -496,7 +521,6 @@ MY (slurp_symbol_table) (abfd) char *strings; aout_symbol_type *cached; unsigned num_syms = 0; - unsigned num_secondary = 0; /* If there's no work to be done, don't do any */ if (obj_aout_symbols (abfd) != (aout_symbol_type *) NULL) @@ -524,15 +548,13 @@ MY (slurp_symbol_table) (abfd) /* first, march thru the table and figure out how many symbols there are */ for (sym_pointer = syms; sym_pointer < sym_end; sym_pointer++, num_syms++) { - if (bfd_get_8 (abfd, sym_pointer->e_type) & HP_SECONDARY_SYMBOL) - num_secondary++; /* skip over the embedded symbol. */ sym_pointer = (struct external_nlist *) (((char *) sym_pointer) + sym_pointer->e_length[0]); } /* now that we know the symbol count, update the bfd header */ - bfd_get_symcount (abfd) = num_syms + num_secondary; + bfd_get_symcount (abfd) = num_syms; cached = ((aout_symbol_type *) bfd_zalloc (abfd, @@ -547,7 +569,6 @@ MY (slurp_symbol_table) (abfd) null terminated strings to hold the symbol names. Make sure any assignment to the strings pointer is done after we're thru using the nlist so we don't overwrite anything important. */ - num_secondary = 0; /* OK, now walk the new symtable, cacheing symbol properties */ { @@ -590,34 +611,6 @@ MY (slurp_symbol_table) (abfd) else cache_ptr->symbol.name = (char *) NULL; - /**********************************************************/ - /* this is a bit of a kludge, but a secondary hp symbol */ - /* gets translated into a gnu indirect symbol. When this */ - /* happens, we need to create a "dummy" record to which */ - /* we can point the indirect symbol to. */ - /**********************************************************/ - if ((cache_ptr->type | N_EXT) == (N_INDR | N_EXT)) - { - aout_symbol_type *cache_ptr2 = cached + num_syms + num_secondary; - - num_secondary++; - - /* aoutx.h assumes the "next" value is the indirect sym */ - /* since we don't want to disturb the order by inserting */ - /* a new symbol, we tack on the created secondary syms */ - /* at the end. */ - cache_ptr->symbol.value = (bfd_vma) (cache_ptr2); - *cache_ptr2 = cache_save; - cache_ptr2->symbol.name = strings; - memcpy (strings, cache_ptr->symbol.name, length); - strcpy (strings + length, ":secondry"); /* 9 max chars + null */ - strings += length + 10; - cache_ptr2->type &= ~HP_SECONDARY_SYMBOL; /* clear secondary */ - convert_sym_type (sym_pointer, cache_ptr2, abfd); - if (!translate_from_native_sym_flags (abfd, cache_ptr2)) - return false; - } - /* skip over the embedded symbol. */ sym_pointer = (struct external_nlist *) (((char *) sym_pointer) + length); |