mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-23 19:50:13 +08:00
* 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:
@ -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)
|
||||
|
||||
* Makefile.in (coff-we32k.o, coff-z8k.o): Note dependencies.
|
||||
|
442
bfd/hppa.c
442
bfd/hppa.c
@ -43,108 +43,19 @@ struct container {
|
||||
struct som_exec_auxhdr e;
|
||||
};
|
||||
|
||||
#undef USIZE
|
||||
#undef UPAGES
|
||||
|
||||
#define USIZE 3
|
||||
#define UPAGES 7
|
||||
|
||||
void
|
||||
fill_spaces(abfd, file_hdr, dbx_subspace, dbx_strings_subspace)
|
||||
static bfd_target *
|
||||
hppa_object_setup (abfd, file_hdrp, aux_hdrp)
|
||||
bfd *abfd;
|
||||
struct header *file_hdr;
|
||||
struct subspace_dictionary_record *dbx_subspace, *dbx_strings_subspace;
|
||||
{
|
||||
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 header *file_hdrp;
|
||||
struct som_exec_auxhdr *aux_hdrp;
|
||||
{
|
||||
struct container *rawptr;
|
||||
struct header *f;
|
||||
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));
|
||||
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_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);
|
||||
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, ".bss");
|
||||
|
||||
#if 0
|
||||
abfd->sections = obj_textsec (abfd);
|
||||
obj_textsec (abfd)->next = obj_datasec (abfd);
|
||||
obj_datasec (abfd)->next = obj_bsssec (abfd);
|
||||
#endif
|
||||
|
||||
obj_datasec (abfd)->_raw_size = aux_hdrp->exec_dsize;
|
||||
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. */
|
||||
obj_hp_sym_filepos (abfd) = file_hdrp->symbol_location;
|
||||
obj_hp_str_filepos (abfd) = file_hdrp->symbol_strings_location;
|
||||
obj_dbx_sym_filepos (abfd) = dbx_subspace->file_loc_init_value;
|
||||
obj_dbx_str_filepos (abfd) = dbx_strings_subspace->file_loc_init_value;
|
||||
obj_dbx_sym_filepos (abfd) = dbx->filepos;
|
||||
obj_dbx_str_filepos (abfd) = dbx_strings->filepos;
|
||||
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;
|
||||
}
|
||||
|
||||
bfd_target *
|
||||
DEFUN(hppa_object_p,(abfd),
|
||||
bfd *abfd)
|
||||
/* Create a new BFD section for NAME. If NAME already exists, then create a
|
||||
new unique name, with NAME as the prefix. This exists because SOM .o files
|
||||
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 som_exec_auxhdr aux_hdr;
|
||||
@ -239,17 +301,17 @@ DEFUN(hppa_object_p,(abfd),
|
||||
struct subspace_dictionary_record dbx_strings_subspace;
|
||||
|
||||
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;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!_PA_RISC_ID (file_hdr.system_id))
|
||||
return 0;
|
||||
|
||||
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... */
|
||||
case EXEC_MAGIC:
|
||||
case SHARE_MAGIC:
|
||||
case DEMAND_MAGIC:
|
||||
@ -257,21 +319,26 @@ DEFUN(hppa_object_p,(abfd),
|
||||
case SHL_MAGIC:
|
||||
break;
|
||||
default:
|
||||
bfd_error = wrong_format;
|
||||
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;
|
||||
return 0;
|
||||
}
|
||||
|
||||
fill_spaces(abfd, &file_hdr, &dbx_subspace, &dbx_strings_subspace);
|
||||
|
||||
return hppa_object_setup(abfd, &file_hdr, &aux_hdr, &dbx_subspace, &dbx_strings_subspace);
|
||||
if (bfd_read ((PTR) &aux_hdr, 1, AUX_HDR_SIZE, abfd) != AUX_HDR_SIZE)
|
||||
bfd_error = wrong_format;
|
||||
|
||||
if (!setup_sections (abfd, &file_hdr))
|
||||
return 0;
|
||||
|
||||
return hppa_object_setup(abfd, &file_hdr, &aux_hdr);
|
||||
}
|
||||
|
||||
|
||||
static boolean
|
||||
DEFUN(hppa_mkobject,(abfd),
|
||||
bfd *abfd)
|
||||
@ -292,11 +359,9 @@ DEFUN(hppa_write_object_contents,(abfd),
|
||||
return (false);
|
||||
}
|
||||
|
||||
|
||||
|
||||
unsigned int
|
||||
DEFUN(hppa_get_symtab_upper_bound,(abfd),
|
||||
bfd *abfd)
|
||||
static unsigned int
|
||||
hppa_get_symtab_upper_bound (abfd)
|
||||
bfd *abfd;
|
||||
{
|
||||
fprintf (stderr, "hppa_get_symtab_upper_bound unimplemented\n");
|
||||
fflush (stderr);
|
||||
@ -304,10 +369,10 @@ DEFUN(hppa_get_symtab_upper_bound,(abfd),
|
||||
return (0);
|
||||
}
|
||||
|
||||
unsigned int
|
||||
DEFUN(hppa_get_reloc_upper_bound,(abfd, asect),
|
||||
bfd *abfd AND
|
||||
sec_ptr asect)
|
||||
static unsigned int
|
||||
hppa_get_reloc_upper_bound (abfd, asect)
|
||||
bfd *abfd;
|
||||
sec_ptr asect;
|
||||
{
|
||||
fprintf (stderr, "hppa_get_reloc_upper_bound unimplemented\n");
|
||||
fflush (stderr);
|
||||
@ -315,12 +380,12 @@ DEFUN(hppa_get_reloc_upper_bound,(abfd, asect),
|
||||
return (0);
|
||||
}
|
||||
|
||||
unsigned int
|
||||
DEFUN(hppa_canonicalize_reloc,(abfd, section, relptr, symbols),
|
||||
bfd *abfd AND
|
||||
sec_ptr section AND
|
||||
arelent **relptr AND
|
||||
asymbol **symbols)
|
||||
static unsigned int
|
||||
hppa_canonicalize_reloc (abfd, section, relptr, symbols)
|
||||
bfd *abfd;
|
||||
sec_ptr section;
|
||||
arelent **relptr;
|
||||
asymbol **symbols;
|
||||
{
|
||||
fprintf (stderr, "hppa_canonicalize_reloc unimplemented\n");
|
||||
fflush (stderr);
|
||||
@ -328,10 +393,11 @@ DEFUN(hppa_canonicalize_reloc,(abfd, section, relptr, symbols),
|
||||
}
|
||||
|
||||
extern bfd_target hppa_vec;
|
||||
unsigned int
|
||||
DEFUN(hppa_get_symtab,(abfd, location),
|
||||
bfd *abfd AND
|
||||
asymbol **location)
|
||||
|
||||
static unsigned int
|
||||
hppa_get_symtab (abfd, location)
|
||||
bfd *abfd;
|
||||
asymbol **location;
|
||||
{
|
||||
fprintf (stderr, "hppa_get_symtab unimplemented\n");
|
||||
fflush (stderr);
|
||||
@ -339,9 +405,9 @@ DEFUN(hppa_get_symtab,(abfd, location),
|
||||
return (0);
|
||||
}
|
||||
|
||||
asymbol *
|
||||
DEFUN(hppa_make_empty_symbol,(abfd),
|
||||
bfd *abfd)
|
||||
static asymbol *
|
||||
hppa_make_empty_symbol (abfd)
|
||||
bfd *abfd;
|
||||
{
|
||||
hppa_symbol_type *new =
|
||||
(hppa_symbol_type *)bfd_zalloc (abfd, sizeof (hppa_symbol_type));
|
||||
@ -350,25 +416,22 @@ DEFUN(hppa_make_empty_symbol,(abfd),
|
||||
return &new->symbol;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
DEFUN(hppa_print_symbol,(ignore_abfd, afile, symbol, how),
|
||||
bfd *ignore_abfd AND
|
||||
PTR afile AND
|
||||
asymbol *symbol AND
|
||||
bfd_print_symbol_type how)
|
||||
static void
|
||||
hppa_print_symbol (ignore_abfd, afile, symbol, how)
|
||||
bfd *ignore_abfd;
|
||||
PTR afile;
|
||||
asymbol *symbol;
|
||||
bfd_print_symbol_type how;
|
||||
{
|
||||
fprintf (stderr, "hppa_print_symbol unimplemented\n");
|
||||
fflush (stderr);
|
||||
abort ();
|
||||
}
|
||||
|
||||
|
||||
|
||||
boolean
|
||||
DEFUN(hppa_new_section_hook,(abfd, newsect),
|
||||
bfd *abfd AND
|
||||
asection *newsect)
|
||||
static boolean
|
||||
hppa_new_section_hook (abfd, newsect)
|
||||
bfd *abfd;
|
||||
asection *newsect;
|
||||
{
|
||||
/* align to double at least */
|
||||
newsect->alignment_power = 3;
|
||||
@ -394,16 +457,13 @@ DEFUN(hppa_new_section_hook,(abfd, newsect),
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
boolean
|
||||
DEFUN(hppa_set_section_contents,(abfd, section, location, offset, count),
|
||||
bfd *abfd AND
|
||||
sec_ptr section AND
|
||||
PTR location AND
|
||||
file_ptr offset AND
|
||||
bfd_size_type count)
|
||||
static boolean
|
||||
hppa_set_section_contents (abfd, section, location, offset, count)
|
||||
bfd *abfd;
|
||||
sec_ptr section;
|
||||
PTR location;
|
||||
file_ptr offset;
|
||||
bfd_size_type count;
|
||||
{
|
||||
fprintf (stderr, "hppa_set_section_contents unimplimented\n");
|
||||
fflush (stderr);
|
||||
@ -411,12 +471,11 @@ DEFUN(hppa_set_section_contents,(abfd, section, location, offset, count),
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
boolean
|
||||
DEFUN(hppa_set_arch_mach,(abfd, arch, machine),
|
||||
bfd *abfd AND
|
||||
enum bfd_architecture arch AND
|
||||
unsigned long machine)
|
||||
static boolean
|
||||
hppa_set_arch_mach (abfd, arch, machine)
|
||||
bfd *abfd;
|
||||
enum bfd_architecture arch;
|
||||
unsigned long machine;
|
||||
{
|
||||
fprintf (stderr, "hppa_set_arch_mach unimplemented\n");
|
||||
fflush (stderr);
|
||||
@ -424,22 +483,16 @@ DEFUN(hppa_set_arch_mach,(abfd, arch, machine),
|
||||
return bfd_default_set_arch_mach(abfd, arch, machine);
|
||||
}
|
||||
|
||||
|
||||
static boolean
|
||||
DEFUN (hppa_find_nearest_line,(abfd,
|
||||
section,
|
||||
symbols,
|
||||
offset,
|
||||
filename_ptr,
|
||||
functionname_ptr,
|
||||
line_ptr),
|
||||
bfd *abfd AND
|
||||
asection *section AND
|
||||
asymbol **symbols AND
|
||||
bfd_vma offset AND
|
||||
CONST char **filename_ptr AND
|
||||
CONST char **functionname_ptr AND
|
||||
unsigned int *line_ptr)
|
||||
hppa_find_nearest_line (abfd, section, symbols, offset, filename_ptr,
|
||||
functionname_ptr, line_ptr)
|
||||
bfd *abfd;
|
||||
asection *section;
|
||||
asymbol **symbols;
|
||||
bfd_vma offset;
|
||||
CONST char **filename_ptr;
|
||||
CONST char **functionname_ptr;
|
||||
unsigned int *line_ptr;
|
||||
{
|
||||
fprintf (stderr, "hppa_find_nearest_line unimplemented\n");
|
||||
fflush (stderr);
|
||||
@ -448,9 +501,9 @@ DEFUN (hppa_find_nearest_line,(abfd,
|
||||
}
|
||||
|
||||
static int
|
||||
DEFUN (hppa_sizeof_headers, (abfd, reloc),
|
||||
bfd *abfd AND
|
||||
boolean reloc)
|
||||
hppa_sizeof_headers (abfd, reloc)
|
||||
bfd *abfd;
|
||||
boolean reloc;
|
||||
{
|
||||
fprintf (stderr, "hppa_sizeof_headers unimplemented\n");
|
||||
fflush (stderr);
|
||||
@ -469,28 +522,20 @@ make_bfd_asection (abfd, name, flags, _raw_size, vma, alignment_power)
|
||||
{
|
||||
asection *asect;
|
||||
|
||||
asect = bfd_zalloc (abfd, sizeof (asection));
|
||||
asect = bfd_make_section (abfd, name);
|
||||
if (!asect)
|
||||
{
|
||||
bfd_error = no_memory;
|
||||
return NULL;
|
||||
}
|
||||
return NULL;
|
||||
|
||||
asect->name = name;
|
||||
asect->flags = flags;
|
||||
asect->_raw_size = _raw_size;
|
||||
asect->vma = vma;
|
||||
asect->filepos = bfd_tell (abfd);
|
||||
asect->alignment_power = alignment_power;
|
||||
|
||||
asect->next = abfd->sections;
|
||||
abfd->sections = asect;
|
||||
abfd->section_count++;
|
||||
|
||||
return asect;
|
||||
}
|
||||
|
||||
bfd_target *
|
||||
static bfd_target *
|
||||
hppa_core_file_p (abfd)
|
||||
bfd *abfd;
|
||||
{
|
||||
@ -544,7 +589,7 @@ hppa_core_file_p (abfd)
|
||||
bfd_seek (abfd, core_header.len, SEEK_CUR);
|
||||
break;
|
||||
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,
|
||||
core_header.len,
|
||||
core_header.addr,
|
||||
@ -566,7 +611,7 @@ hppa_core_file_p (abfd)
|
||||
return abfd->xvec;
|
||||
}
|
||||
|
||||
char *
|
||||
static char *
|
||||
hppa_core_file_failing_command (abfd)
|
||||
bfd *abfd;
|
||||
{
|
||||
@ -574,7 +619,7 @@ hppa_core_file_failing_command (abfd)
|
||||
}
|
||||
|
||||
/* ARGSUSED */
|
||||
int
|
||||
static int
|
||||
hppa_core_file_failing_signal (abfd)
|
||||
bfd *abfd;
|
||||
{
|
||||
@ -582,7 +627,7 @@ hppa_core_file_failing_signal (abfd)
|
||||
}
|
||||
|
||||
/* ARGSUSED */
|
||||
boolean
|
||||
static boolean
|
||||
hppa_core_file_matches_executable_p (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
|
||||
predictable, and if so what is it */
|
||||
0,
|
||||
|
||||
|
||||
' ', /* ar_pad_char */
|
||||
16, /* ar_max_namelen */
|
||||
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, /* hdrs */
|
||||
|
||||
{ _bfd_dummy_target,
|
||||
hppa_object_p, /* bfd_check_format */
|
||||
bfd_generic_archive_p,
|
||||
|
Reference in New Issue
Block a user