* hppa.c: Get rid of DEFUN, use more conventional prolog stuff.

Make a bunch more routines be static.
* hppa.c (fill_spaces):  Get rid of this, replace with much better
written setup_sections().
* (setup_sections):  New routine to create BFD sections for each
space and subspace in SOM files.
* (hppa_object_setup):  Use BFD sections created by
setup_sections() to locate GDB symbol table info.
* (make_unique_section):  New routine to create a BFD section.  It
ensures that the given name is unique, and will generate a unique
one if necessary.
* (hppa_object_p):  Become much more paranoid about file header.
* (make_bfd_asection):  Call bfd_make_section to do the dirty
work.  Simplify code somewhat.
* (hppa_core_file_p):  Use proper name for stack section.
* libhppa.h:  Remove millicode_start, millicode_end decls.
This commit is contained in:
Stu Grossman
1992-12-28 22:57:19 +00:00
parent 7917455ffd
commit edff05870e
2 changed files with 261 additions and 200 deletions

View File

@ -1,3 +1,22 @@
Mon Dec 28 14:30:55 1992 Stu Grossman (grossman at cygnus.com)
* hppa.c: Get rid of DEFUN, use more conventional prolog stuff.
Make a bunch more routines be static.
* hppa.c (fill_spaces): Get rid of this, replace with much better
written setup_sections().
* (setup_sections): New routine to create BFD sections for each
space and subspace in SOM files.
* (hppa_object_setup): Use BFD sections created by
setup_sections() to locate GDB symbol table info.
* (make_unique_section): New routine to create a BFD section. It
ensures that the given name is unique, and will generate a unique
one if necessary.
* (hppa_object_p): Become much more paranoid about file header.
* (make_bfd_asection): Call bfd_make_section to do the dirty
work. Simplify code somewhat.
* (hppa_core_file_p): Use proper name for stack section.
* libhppa.h: Remove millicode_start, millicode_end decls.
Mon Dec 28 11:03:22 1992 Ken Raeburn (raeburn@cygnus.com) Mon Dec 28 11:03:22 1992 Ken Raeburn (raeburn@cygnus.com)
* Makefile.in (coff-we32k.o, coff-z8k.o): Note dependencies. * Makefile.in (coff-we32k.o, coff-z8k.o): Note dependencies.

View File

@ -43,108 +43,19 @@ struct container {
struct som_exec_auxhdr e; struct som_exec_auxhdr e;
}; };
#undef USIZE static bfd_target *
#undef UPAGES hppa_object_setup (abfd, file_hdrp, aux_hdrp)
#define USIZE 3
#define UPAGES 7
void
fill_spaces(abfd, file_hdr, dbx_subspace, dbx_strings_subspace)
bfd *abfd; bfd *abfd;
struct header *file_hdr; struct header *file_hdrp;
struct subspace_dictionary_record *dbx_subspace, *dbx_strings_subspace; struct som_exec_auxhdr *aux_hdrp;
{
char *space_strings = (char *) alloca (file_hdr->space_strings_size);
int i;
/* for millicode games. */
struct space_dictionary_record space;
struct subspace_dictionary_record subspace;
int index;
/* indices of subspace entries for $TEXT$ and $GDB_DEBUG$ */
long text_index = 0, gdb_debug_index = -1;
/* initialize in case we don't find any dbx symbols. */
dbx_subspace->subspace_length = dbx_strings_subspace->subspace_length = 0;
bfd_seek (abfd, file_hdr->space_strings_location, SEEK_SET);
if (bfd_read ((PTR) space_strings, 1, file_hdr->space_strings_size, abfd)
!= file_hdr->space_strings_size)
{
bfd_error = wrong_format; /* space strings table corrupted. */
return;
}
bfd_seek (abfd, file_hdr->space_location, SEEK_SET);
for (i = 0; i < file_hdr->space_total; i++)
{
bfd_read ((PTR) &space, 1, sizeof(space), abfd);
index = (file_hdr->subspace_location +
(space.subspace_index * sizeof(subspace)));
if (!strcmp (space_strings + space.name.n_strx, "$TEXT$"))
text_index = index;
else if (!strcmp (space_strings + space.name.n_strx, "$GDB_DEBUG$"))
gdb_debug_index = index;
}
/* search out the beginning and end if millicode */
bfd_seek (abfd, text_index, SEEK_SET);
for (i = 0; i < file_hdr->subspace_total; i++)
{
bfd_read ((PTR) &subspace, 1, sizeof(subspace), abfd);
if (!strcmp (space_strings + subspace.name.n_strx, "$MILLICODE$"))
{
millicode_start = subspace.subspace_start;
millicode_end = (millicode_start + subspace.subspace_length);
}
else if (!strncmp (space_strings + subspace.name.n_strx, "$UNWIND", 7))
{
int *foo;
long s;
#if 0
s = bfd_tell(abfd);
printf("Found %s\n", space_strings + subspace.name.n_strx);
foo = malloc (subspace.initialization_length);
bfd_seek (abfd, subspace.file_loc_init_value, SEEK_SET);
bfd_read (foo, 1, subspace.initialization_length, abfd);
bfd_seek (abfd, s, SEEK_SET);
free (foo);
#endif
}
}
if (gdb_debug_index == -1)
return;
/* read symbols subspace and strings subspace in possibly arbitrary
order. */
bfd_seek (abfd, gdb_debug_index, SEEK_SET);
bfd_read ((PTR) &subspace, 1, sizeof(struct subspace_dictionary_record),
abfd);
if (!strcmp (space_strings + subspace.name.n_strx, "$GDB_STRINGS$"))
{
*dbx_strings_subspace = subspace;
bfd_read ((PTR) dbx_subspace, 1,
sizeof(struct subspace_dictionary_record), abfd);
}
else
{
*dbx_subspace = subspace;
bfd_read ((PTR) dbx_strings_subspace, 1,
sizeof(struct subspace_dictionary_record), abfd);
}
}
bfd_target *
DEFUN(hppa_object_setup,(abfd, file_hdrp, aux_hdrp, dbx_subspace,
dbx_strings_subspace),
bfd *abfd AND
struct header *file_hdrp AND
struct som_exec_auxhdr *aux_hdrp AND
struct subspace_dictionary_record *dbx_subspace AND
struct subspace_dictionary_record *dbx_strings_subspace)
{ {
struct container *rawptr; struct container *rawptr;
struct header *f; struct header *f;
struct hppa_data_struct *rawptr1; struct hppa_data_struct *rawptr1;
asection *dbx, *dbx_strings;
dbx = bfd_get_section_by_name (abfd, "$GDB_SYMBOLS$");
dbx_strings = bfd_get_section_by_name (abfd, "$GDB_STRINGS$");
rawptr = (struct container *) bfd_zalloc (abfd, sizeof (struct container)); rawptr = (struct container *) bfd_zalloc (abfd, sizeof (struct container));
if (rawptr == NULL) { if (rawptr == NULL) {
@ -178,7 +89,7 @@ DEFUN(hppa_object_setup,(abfd, file_hdrp, aux_hdrp, dbx_subspace,
obj_pa_symbols (abfd) = (hppa_symbol_type *)NULL; obj_pa_symbols (abfd) = (hppa_symbol_type *)NULL;
obj_hp_sym_count (abfd) = file_hdrp->symbol_total; obj_hp_sym_count (abfd) = file_hdrp->symbol_total;
obj_dbx_sym_count (abfd) = dbx_subspace->subspace_length / obj_dbx_sym_count (abfd) = bfd_section_size (abfd, dbx) /
obj_dbx_symbol_entry_size (abfd); obj_dbx_symbol_entry_size (abfd);
bfd_get_symcount (abfd) = obj_hp_sym_count (abfd) + obj_dbx_sym_count (abfd); bfd_get_symcount (abfd) = obj_hp_sym_count (abfd) + obj_dbx_sym_count (abfd);
@ -193,9 +104,11 @@ DEFUN(hppa_object_setup,(abfd, file_hdrp, aux_hdrp, dbx_subspace,
(void)bfd_make_section(abfd, ".data"); (void)bfd_make_section(abfd, ".data");
(void)bfd_make_section(abfd, ".bss"); (void)bfd_make_section(abfd, ".bss");
#if 0
abfd->sections = obj_textsec (abfd); abfd->sections = obj_textsec (abfd);
obj_textsec (abfd)->next = obj_datasec (abfd); obj_textsec (abfd)->next = obj_datasec (abfd);
obj_datasec (abfd)->next = obj_bsssec (abfd); obj_datasec (abfd)->next = obj_bsssec (abfd);
#endif
obj_datasec (abfd)->_raw_size = aux_hdrp->exec_dsize; obj_datasec (abfd)->_raw_size = aux_hdrp->exec_dsize;
obj_bsssec (abfd)->_raw_size = aux_hdrp->exec_bsize; obj_bsssec (abfd)->_raw_size = aux_hdrp->exec_bsize;
@ -221,17 +134,166 @@ DEFUN(hppa_object_setup,(abfd, file_hdrp, aux_hdrp, dbx_subspace,
/* The file offsets of the string table and symbol table. */ /* The file offsets of the string table and symbol table. */
obj_hp_sym_filepos (abfd) = file_hdrp->symbol_location; obj_hp_sym_filepos (abfd) = file_hdrp->symbol_location;
obj_hp_str_filepos (abfd) = file_hdrp->symbol_strings_location; obj_hp_str_filepos (abfd) = file_hdrp->symbol_strings_location;
obj_dbx_sym_filepos (abfd) = dbx_subspace->file_loc_init_value; obj_dbx_sym_filepos (abfd) = dbx->filepos;
obj_dbx_str_filepos (abfd) = dbx_strings_subspace->file_loc_init_value; obj_dbx_str_filepos (abfd) = dbx_strings->filepos;
obj_hp_stringtab_size (abfd) = file_hdrp->symbol_strings_size; obj_hp_stringtab_size (abfd) = file_hdrp->symbol_strings_size;
obj_dbx_stringtab_size (abfd) = dbx_strings_subspace->subspace_length; obj_dbx_stringtab_size (abfd) = bfd_section_size (abfd, dbx_strings);
return abfd->xvec; return abfd->xvec;
} }
bfd_target * /* Create a new BFD section for NAME. If NAME already exists, then create a
DEFUN(hppa_object_p,(abfd), new unique name, with NAME as the prefix. This exists because SOM .o files
bfd *abfd) created by the native compiler can have a $CODE$ section for each
subroutine.
*/
static asection *
make_unique_section (abfd, name, num)
bfd *abfd;
CONST char *name;
int num;
{
asection *sect;
char *newname;
char altname[100];
sect = bfd_make_section (abfd, name);
while (!sect)
{
sprintf(altname, "%s-%d", name, num++);
sect = bfd_make_section (abfd, altname);
}
newname = bfd_alloc (abfd, strlen(sect->name) + 1);
strcpy (newname, sect->name);
sect->name = newname;
return sect;
}
/* Convert all of the space and subspace info into BFD sections. Each space
contains a number of subspaces, which in turn describe the mapping between
regions of the exec file, and the address space that the program runs in.
BFD sections which correspond to spaces will overlap the sections for the
associated subspaces. */
static int
setup_sections (abfd, file_hdr)
bfd *abfd;
struct header *file_hdr;
{
char *space_strings;
int space_index;
/* First, read in space names */
space_strings = alloca (file_hdr->space_strings_size);
if (!space_strings)
return 0;
if (bfd_seek (abfd, file_hdr->space_strings_location, SEEK_SET) < 0)
return 0;
if (bfd_read (space_strings, 1, file_hdr->space_strings_size, abfd)
!= file_hdr->space_strings_size)
return 0;
/* Loop over all of the space dictionaries, building up sections */
for (space_index = 0; space_index < file_hdr->space_total; space_index++)
{
struct space_dictionary_record space;
struct subspace_dictionary_record subspace;
int subspace_index, tmp;
asection *space_asect;
/* Read the space dictionary element */
if (bfd_seek (abfd, file_hdr->space_location
+ space_index * sizeof space, SEEK_SET) < 0)
return 0;
if (bfd_read (&space, 1, sizeof space, abfd) != sizeof space)
return 0;
/* Setup the space name string */
space.name.n_name = space.name.n_strx + space_strings;
/* Make a section out of it */
space_asect = make_unique_section (abfd, space.name.n_name, space_index);
if (!space_asect)
return 0;
/* Now, read in the first subspace for this space */
if (bfd_seek (abfd, file_hdr->subspace_location
+ space.subspace_index * sizeof subspace,
SEEK_SET) < 0)
return 0;
if (bfd_read (&subspace, 1, sizeof subspace, abfd) != sizeof subspace)
return 0;
/* Seek back to the start of the subspaces for loop below */
if (bfd_seek (abfd, file_hdr->subspace_location
+ space.subspace_index * sizeof subspace,
SEEK_SET) < 0)
return 0;
/* Setup the section flags as appropriate (this is somewhat bogus, as
there isn't a clear mapping between what's in the space record, and
what BFD can describe here). */
if (space.is_loadable)
space_asect->flags |= SEC_ALLOC;
if (space.is_defined)
space_asect->flags |= SEC_LOAD;
/* Setup the start address and file loc from the first subspace record */
space_asect->vma = subspace.subspace_start;
space_asect->filepos = subspace.file_loc_init_value;
space_asect->alignment_power = subspace.alignment;
/* Loop over the rest of the subspaces, building up more sections */
for (subspace_index = 0; subspace_index < space.subspace_quantity;
subspace_index++)
{
asection *subspace_asect;
/* Read in the next subspace */
if (bfd_read (&subspace, 1, sizeof subspace, abfd)
!= sizeof subspace)
return 0;
/* Setup the subspace name string */
subspace.name.n_name = subspace.name.n_strx + space_strings;
/* Make a section out of this subspace */
subspace_asect = make_unique_section (abfd, subspace.name.n_name,
space.subspace_index + subspace_index);
if (!subspace_asect)
return 0;
if (subspace.is_loadable)
subspace_asect->flags |= SEC_ALLOC | SEC_LOAD;
if (subspace.code_only)
subspace_asect->flags |= SEC_CODE;
subspace_asect->vma = subspace.subspace_start;
subspace_asect->_cooked_size = subspace.subspace_length;
subspace_asect->_raw_size = subspace.initialization_length;
subspace_asect->alignment_power = subspace.alignment;
subspace_asect->filepos = subspace.file_loc_init_value;
}
/* Setup the sizes for the space section based upon the info in the
last subspace of the space. */
space_asect->_cooked_size = (subspace.subspace_start - space_asect->vma)
+ subspace.subspace_length;
space_asect->_raw_size = (subspace.file_loc_init_value
- space_asect->filepos)
+ subspace.initialization_length;
}
}
static bfd_target *
hppa_object_p (abfd)
bfd *abfd;
{ {
struct header file_hdr; struct header file_hdr;
struct som_exec_auxhdr aux_hdr; struct som_exec_auxhdr aux_hdr;
@ -239,14 +301,14 @@ DEFUN(hppa_object_p,(abfd),
struct subspace_dictionary_record dbx_strings_subspace; struct subspace_dictionary_record dbx_strings_subspace;
if (bfd_read ((PTR) &file_hdr, 1, FILE_HDR_SIZE, abfd) != FILE_HDR_SIZE) if (bfd_read ((PTR) &file_hdr, 1, FILE_HDR_SIZE, abfd) != FILE_HDR_SIZE)
return 0;
if (!_PA_RISC_ID (file_hdr.system_id))
{ {
bfd_error = wrong_format; bfd_error = wrong_format;
return 0; return 0;
} }
if (!_PA_RISC_ID (file_hdr.system_id))
return 0;
switch (file_hdr.a_magic) switch (file_hdr.a_magic)
{ {
case RELOC_MAGIC: /* I'm not really sure about all of these types... */ case RELOC_MAGIC: /* I'm not really sure about all of these types... */
@ -257,21 +319,26 @@ DEFUN(hppa_object_p,(abfd),
case SHL_MAGIC: case SHL_MAGIC:
break; break;
default: default:
bfd_error = wrong_format;
return 0; return 0;
} }
if (bfd_read ((PTR) &aux_hdr, 1, AUX_HDR_SIZE, abfd) != AUX_HDR_SIZE) if (file_hdr.version_id != VERSION_ID
&& file_hdr.version_id != NEW_VERSION_ID)
{ {
bfd_error = wrong_format; bfd_error = wrong_format;
return 0; return 0;
} }
fill_spaces(abfd, &file_hdr, &dbx_subspace, &dbx_strings_subspace); if (bfd_read ((PTR) &aux_hdr, 1, AUX_HDR_SIZE, abfd) != AUX_HDR_SIZE)
bfd_error = wrong_format;
return hppa_object_setup(abfd, &file_hdr, &aux_hdr, &dbx_subspace, &dbx_strings_subspace); if (!setup_sections (abfd, &file_hdr))
return 0;
return hppa_object_setup(abfd, &file_hdr, &aux_hdr);
} }
static boolean static boolean
DEFUN(hppa_mkobject,(abfd), DEFUN(hppa_mkobject,(abfd),
bfd *abfd) bfd *abfd)
@ -292,11 +359,9 @@ DEFUN(hppa_write_object_contents,(abfd),
return (false); return (false);
} }
static unsigned int
hppa_get_symtab_upper_bound (abfd)
unsigned int bfd *abfd;
DEFUN(hppa_get_symtab_upper_bound,(abfd),
bfd *abfd)
{ {
fprintf (stderr, "hppa_get_symtab_upper_bound unimplemented\n"); fprintf (stderr, "hppa_get_symtab_upper_bound unimplemented\n");
fflush (stderr); fflush (stderr);
@ -304,10 +369,10 @@ DEFUN(hppa_get_symtab_upper_bound,(abfd),
return (0); return (0);
} }
unsigned int static unsigned int
DEFUN(hppa_get_reloc_upper_bound,(abfd, asect), hppa_get_reloc_upper_bound (abfd, asect)
bfd *abfd AND bfd *abfd;
sec_ptr asect) sec_ptr asect;
{ {
fprintf (stderr, "hppa_get_reloc_upper_bound unimplemented\n"); fprintf (stderr, "hppa_get_reloc_upper_bound unimplemented\n");
fflush (stderr); fflush (stderr);
@ -315,12 +380,12 @@ DEFUN(hppa_get_reloc_upper_bound,(abfd, asect),
return (0); return (0);
} }
unsigned int static unsigned int
DEFUN(hppa_canonicalize_reloc,(abfd, section, relptr, symbols), hppa_canonicalize_reloc (abfd, section, relptr, symbols)
bfd *abfd AND bfd *abfd;
sec_ptr section AND sec_ptr section;
arelent **relptr AND arelent **relptr;
asymbol **symbols) asymbol **symbols;
{ {
fprintf (stderr, "hppa_canonicalize_reloc unimplemented\n"); fprintf (stderr, "hppa_canonicalize_reloc unimplemented\n");
fflush (stderr); fflush (stderr);
@ -328,10 +393,11 @@ DEFUN(hppa_canonicalize_reloc,(abfd, section, relptr, symbols),
} }
extern bfd_target hppa_vec; extern bfd_target hppa_vec;
unsigned int
DEFUN(hppa_get_symtab,(abfd, location), static unsigned int
bfd *abfd AND hppa_get_symtab (abfd, location)
asymbol **location) bfd *abfd;
asymbol **location;
{ {
fprintf (stderr, "hppa_get_symtab unimplemented\n"); fprintf (stderr, "hppa_get_symtab unimplemented\n");
fflush (stderr); fflush (stderr);
@ -339,9 +405,9 @@ DEFUN(hppa_get_symtab,(abfd, location),
return (0); return (0);
} }
asymbol * static asymbol *
DEFUN(hppa_make_empty_symbol,(abfd), hppa_make_empty_symbol (abfd)
bfd *abfd) bfd *abfd;
{ {
hppa_symbol_type *new = hppa_symbol_type *new =
(hppa_symbol_type *)bfd_zalloc (abfd, sizeof (hppa_symbol_type)); (hppa_symbol_type *)bfd_zalloc (abfd, sizeof (hppa_symbol_type));
@ -350,25 +416,22 @@ DEFUN(hppa_make_empty_symbol,(abfd),
return &new->symbol; return &new->symbol;
} }
static void
void hppa_print_symbol (ignore_abfd, afile, symbol, how)
DEFUN(hppa_print_symbol,(ignore_abfd, afile, symbol, how), bfd *ignore_abfd;
bfd *ignore_abfd AND PTR afile;
PTR afile AND asymbol *symbol;
asymbol *symbol AND bfd_print_symbol_type how;
bfd_print_symbol_type how)
{ {
fprintf (stderr, "hppa_print_symbol unimplemented\n"); fprintf (stderr, "hppa_print_symbol unimplemented\n");
fflush (stderr); fflush (stderr);
abort (); abort ();
} }
static boolean
hppa_new_section_hook (abfd, newsect)
boolean bfd *abfd;
DEFUN(hppa_new_section_hook,(abfd, newsect), asection *newsect;
bfd *abfd AND
asection *newsect)
{ {
/* align to double at least */ /* align to double at least */
newsect->alignment_power = 3; newsect->alignment_power = 3;
@ -394,16 +457,13 @@ DEFUN(hppa_new_section_hook,(abfd, newsect),
return true; return true;
} }
static boolean
hppa_set_section_contents (abfd, section, location, offset, count)
bfd *abfd;
boolean sec_ptr section;
DEFUN(hppa_set_section_contents,(abfd, section, location, offset, count), PTR location;
bfd *abfd AND file_ptr offset;
sec_ptr section AND bfd_size_type count;
PTR location AND
file_ptr offset AND
bfd_size_type count)
{ {
fprintf (stderr, "hppa_set_section_contents unimplimented\n"); fprintf (stderr, "hppa_set_section_contents unimplimented\n");
fflush (stderr); fflush (stderr);
@ -411,12 +471,11 @@ DEFUN(hppa_set_section_contents,(abfd, section, location, offset, count),
return false; return false;
} }
static boolean
boolean hppa_set_arch_mach (abfd, arch, machine)
DEFUN(hppa_set_arch_mach,(abfd, arch, machine), bfd *abfd;
bfd *abfd AND enum bfd_architecture arch;
enum bfd_architecture arch AND unsigned long machine;
unsigned long machine)
{ {
fprintf (stderr, "hppa_set_arch_mach unimplemented\n"); fprintf (stderr, "hppa_set_arch_mach unimplemented\n");
fflush (stderr); fflush (stderr);
@ -424,22 +483,16 @@ DEFUN(hppa_set_arch_mach,(abfd, arch, machine),
return bfd_default_set_arch_mach(abfd, arch, machine); return bfd_default_set_arch_mach(abfd, arch, machine);
} }
static boolean static boolean
DEFUN (hppa_find_nearest_line,(abfd, hppa_find_nearest_line (abfd, section, symbols, offset, filename_ptr,
section, functionname_ptr, line_ptr)
symbols, bfd *abfd;
offset, asection *section;
filename_ptr, asymbol **symbols;
functionname_ptr, bfd_vma offset;
line_ptr), CONST char **filename_ptr;
bfd *abfd AND CONST char **functionname_ptr;
asection *section AND unsigned int *line_ptr;
asymbol **symbols AND
bfd_vma offset AND
CONST char **filename_ptr AND
CONST char **functionname_ptr AND
unsigned int *line_ptr)
{ {
fprintf (stderr, "hppa_find_nearest_line unimplemented\n"); fprintf (stderr, "hppa_find_nearest_line unimplemented\n");
fflush (stderr); fflush (stderr);
@ -448,9 +501,9 @@ DEFUN (hppa_find_nearest_line,(abfd,
} }
static int static int
DEFUN (hppa_sizeof_headers, (abfd, reloc), hppa_sizeof_headers (abfd, reloc)
bfd *abfd AND bfd *abfd;
boolean reloc) boolean reloc;
{ {
fprintf (stderr, "hppa_sizeof_headers unimplemented\n"); fprintf (stderr, "hppa_sizeof_headers unimplemented\n");
fflush (stderr); fflush (stderr);
@ -469,28 +522,20 @@ make_bfd_asection (abfd, name, flags, _raw_size, vma, alignment_power)
{ {
asection *asect; asection *asect;
asect = bfd_zalloc (abfd, sizeof (asection)); asect = bfd_make_section (abfd, name);
if (!asect) if (!asect)
{
bfd_error = no_memory;
return NULL; return NULL;
}
asect->name = name;
asect->flags = flags; asect->flags = flags;
asect->_raw_size = _raw_size; asect->_raw_size = _raw_size;
asect->vma = vma; asect->vma = vma;
asect->filepos = bfd_tell (abfd); asect->filepos = bfd_tell (abfd);
asect->alignment_power = alignment_power; asect->alignment_power = alignment_power;
asect->next = abfd->sections;
abfd->sections = asect;
abfd->section_count++;
return asect; return asect;
} }
bfd_target * static bfd_target *
hppa_core_file_p (abfd) hppa_core_file_p (abfd)
bfd *abfd; bfd *abfd;
{ {
@ -544,7 +589,7 @@ hppa_core_file_p (abfd)
bfd_seek (abfd, core_header.len, SEEK_CUR); bfd_seek (abfd, core_header.len, SEEK_CUR);
break; break;
case CORE_STACK: case CORE_STACK:
core_stacksec (abfd) = make_bfd_asection (abfd, ".data", core_stacksec (abfd) = make_bfd_asection (abfd, ".stack",
SEC_ALLOC+SEC_LOAD+SEC_HAS_CONTENTS, SEC_ALLOC+SEC_LOAD+SEC_HAS_CONTENTS,
core_header.len, core_header.len,
core_header.addr, core_header.addr,
@ -566,7 +611,7 @@ hppa_core_file_p (abfd)
return abfd->xvec; return abfd->xvec;
} }
char * static char *
hppa_core_file_failing_command (abfd) hppa_core_file_failing_command (abfd)
bfd *abfd; bfd *abfd;
{ {
@ -574,7 +619,7 @@ hppa_core_file_failing_command (abfd)
} }
/* ARGSUSED */ /* ARGSUSED */
int static int
hppa_core_file_failing_signal (abfd) hppa_core_file_failing_signal (abfd)
bfd *abfd; bfd *abfd;
{ {
@ -582,7 +627,7 @@ hppa_core_file_failing_signal (abfd)
} }
/* ARGSUSED */ /* ARGSUSED */
boolean static boolean
hppa_core_file_matches_executable_p (core_bfd, exec_bfd) hppa_core_file_matches_executable_p (core_bfd, exec_bfd)
bfd *core_bfd, *exec_bfd; bfd *core_bfd, *exec_bfd;
{ {
@ -625,14 +670,11 @@ bfd_target hppa_vec =
/* leading_symbol_char: is the first char of a user symbol /* leading_symbol_char: is the first char of a user symbol
predictable, and if so what is it */ predictable, and if so what is it */
0, 0,
' ', /* ar_pad_char */ ' ', /* ar_pad_char */
16, /* ar_max_namelen */ 16, /* ar_max_namelen */
3, /* minimum alignment */ 3, /* minimum alignment */
_do_getb64, _do_putb64, _do_getb32, _do_putb32, _do_getb16, _do_putb16, /* data */ _do_getb64, _do_putb64, _do_getb32, _do_putb32, _do_getb16, _do_putb16, /* data */
_do_getb64, _do_putb64, _do_getb32, _do_putb32, _do_getb16, _do_putb16, /* hdrs */ _do_getb64, _do_putb64, _do_getb32, _do_putb32, _do_getb16, _do_putb16, /* hdrs */
{ _bfd_dummy_target, { _bfd_dummy_target,
hppa_object_p, /* bfd_check_format */ hppa_object_p, /* bfd_check_format */
bfd_generic_archive_p, bfd_generic_archive_p,