aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1995-11-27 20:11:40 +0000
committerIan Lance Taylor <ian@airs.com>1995-11-27 20:11:40 +0000
commit1ff0461b4e89749c7835d630042255bf948e5c90 (patch)
treeb1faa0b7f5fa2369e1dd2db868832abf005d0e44 /bfd
parent4f351b156dc939e16549d2857106c121f2bb0c2a (diff)
downloadgdb-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/ChangeLog2
-rw-r--r--bfd/hp300hpux.c63
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);