/* BFD backend for hp-ux 9000/300
- Copyright 1990, 1991, 1993, 1994, 1995, 1997, 2000, 2001, 2002
- Free Software Foundation, Inc.
+ Copyright (C) 1990-2014 Free Software Foundation, Inc.
Written by Glenn Engel.
-This file is part of BFD, the Binary File Descriptor library.
+ This file is part of BFD, the Binary File Descriptor library.
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+ MA 02110-1301, USA. */
-/*
- hpux native ------------> | |
+
+/* hpux native ------------> | |
| hp300hpux bfd | ----------> hpux w/gnu ext
hpux w/gnu extension ----> | |
slurp_symbol_table
swap_std_reloc_in
slurp_reloc_table
- get_symtab
+ canonicalize_symtab
get_symtab_upper_bound
canonicalize_reloc
mkobject
/* Do not "beautify" the CONCAT* macro args. Traditional C will not
remove whitespace added here, and thus will fail to concatenate
the tokens. */
-#define MY(OP) CONCAT2 (hp300hpux_,OP)
+#define MY(OP) CONCAT2 (m68k_aout_hp300hpux_,OP)
#define external_exec hp300hpux_exec_bytes
#define external_nlist hp300hpux_nlist_bytes
/* these don't use MY because that causes problems within JUMP_TABLE
(CONCAT2 winds up being expanded recursively, which ANSI C compilers
will not do). */
-#define MY_get_symtab hp300hpux_get_symtab
-#define MY_get_symtab_upper_bound hp300hpux_get_symtab_upper_bound
-#define MY_canonicalize_reloc hp300hpux_canonicalize_reloc
-#define MY_write_object_contents hp300hpux_write_object_contents
+#define MY_canonicalize_symtab m68k_aout_hp300hpux_canonicalize_symtab
+#define MY_get_symtab_upper_bound m68k_aout_hp300hpux_get_symtab_upper_bound
+#define MY_canonicalize_reloc m68k_aout_hp300hpux_canonicalize_reloc
+#define MY_write_object_contents m68k_aout_hp300hpux_write_object_contents
#define MY_read_minisymbols _bfd_generic_read_minisymbols
#define MY_minisymbol_to_symbol _bfd_generic_minisymbol_to_symbol
were allocated using malloc. */
#define MY_bfd_free_cached_info bfd_true
-#define hp300hpux_write_syms aout_32_write_syms
+#define m68k_aout_hp300hpux_write_syms aout_32_write_syms
#define MY_callback MY(callback)
#include "aoutx.h"
-static const bfd_target * MY (callback)
- PARAMS ((bfd *));
-static bfd_boolean MY (write_object_contents)
- PARAMS ((bfd *));
+static const bfd_target * MY (callback) (bfd *);
+static bfd_boolean MY (write_object_contents) (bfd *);
static void convert_sym_type
- PARAMS ((struct external_nlist *, aout_symbol_type *, bfd *));
+ (struct external_nlist *, aout_symbol_type *, bfd *);
-bfd_boolean MY (slurp_symbol_table)
- PARAMS ((bfd *));
+bfd_boolean MY (slurp_symbol_table) (bfd *);
void MY (swap_std_reloc_in)
- PARAMS ((bfd *, struct hp300hpux_reloc *, arelent *, asymbol **,
- bfd_size_type));
+ (bfd *, struct hp300hpux_reloc *, arelent *, asymbol **, bfd_size_type);
bfd_boolean MY (slurp_reloc_table)
- PARAMS ((bfd *, sec_ptr, asymbol **));
-long MY (get_symtab)
- PARAMS ((bfd *, asymbol **));
-long MY (get_symtab_upper_bound)
- PARAMS ((bfd *));
-long MY (canonicalize_reloc)
- PARAMS ((bfd *, sec_ptr, arelent **, asymbol **));
+ (bfd *, sec_ptr, asymbol **);
+long MY (canonicalize_symtab) (bfd *, asymbol **);
+long MY (get_symtab_upper_bound) (bfd *);
+long MY (canonicalize_reloc) (bfd *, sec_ptr, arelent **, asymbol **);
/* Since the hpux symbol table has nlist elements interspersed with
strings and we need to insert som strings for secondary symbols, we
/* Set parameters about this a.out file that are machine-dependent.
This routine is called from some_aout_object_p just before it returns. */
static const bfd_target *
-MY (callback) (abfd)
- bfd *abfd;
+MY (callback) (bfd *abfd)
{
struct internal_exec *execp = exec_hdr (abfd);
/* Calculate the file positions of the parts of a newly read aout header */
- obj_textsec (abfd)->_raw_size = N_TXTSIZE (*execp);
+ obj_textsec (abfd)->size = N_TXTSIZE (*execp);
/* The virtual memory addresses of the sections */
obj_textsec (abfd)->vma = N_TXTADDR (*execp);
return abfd->xvec;
}
-extern bfd_boolean aout_32_write_syms
- PARAMS ((bfd * abfd));
+extern bfd_boolean aout_32_write_syms (bfd *);
static bfd_boolean
-MY (write_object_contents) (abfd)
- bfd *abfd;
+MY (write_object_contents) (bfd * abfd)
{
struct external_exec exec_bytes;
struct internal_exec *execp = exec_hdr (abfd);
H_PUT_32 (abfd, (bfd_get_symcount (abfd) * 12), exec_bytes.e_drelocs);
if (bfd_seek (abfd, (file_ptr) 0, FALSE) != 0
- || (bfd_bwrite ((PTR) &exec_bytes, (bfd_size_type) EXEC_BYTES_SIZE, abfd)
+ || (bfd_bwrite (&exec_bytes, (bfd_size_type) EXEC_BYTES_SIZE, abfd)
!= EXEC_BYTES_SIZE))
return FALSE;
return TRUE;
}
-/* convert the hp symbol type to be the same as aout64.h usage so we */
-/* can piggyback routines in aoutx.h. */
+/* Convert the hp symbol type to be the same as aout64.h usage so we
+ can piggyback routines in aoutx.h. */
static void
-convert_sym_type (sym_pointer, cache_ptr, abfd)
- struct external_nlist *sym_pointer ATTRIBUTE_UNUSED;
- aout_symbol_type *cache_ptr;
- bfd *abfd ATTRIBUTE_UNUSED;
+convert_sym_type (struct external_nlist *sym_pointer ATTRIBUTE_UNUSED,
+ aout_symbol_type *cache_ptr,
+ bfd *abfd ATTRIBUTE_UNUSED)
{
int name_type;
int new_type;
*/
void
-NAME (aout,swap_exec_header_in) (abfd, raw_bytes, execp)
- bfd *abfd;
- struct external_exec *raw_bytes;
- struct internal_exec *execp;
+NAME (aout,swap_exec_header_in) (bfd *abfd,
+ struct external_exec *raw_bytes,
+ struct internal_exec *execp)
{
struct external_exec *bytes = (struct external_exec *) raw_bytes;
/***************************************************************/
/* check the header to see if it was generated by a bfd output */
- /* this is detected rather bizarely by requiring a bunch of */
+ /* this is detected rather bizarrely by requiring a bunch of */
/* header fields to be zero and an old unused field (now used) */
/* to be set. */
/***************************************************************/
*/
bfd_boolean
-MY (slurp_symbol_table) (abfd)
- bfd *abfd;
+MY (slurp_symbol_table) (bfd *abfd)
{
bfd_size_type symbol_bytes;
struct external_nlist *syms;
return FALSE;
syms = (struct external_nlist *) (strings + SYM_EXTRA_BYTES);
if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0
- || bfd_bread ((PTR) syms, symbol_bytes, abfd) != symbol_bytes)
+ || bfd_bread (syms, symbol_bytes, abfd) != symbol_bytes)
{
bfd_release (abfd, syms);
return FALSE;
assignment to the strings pointer is done after we're thru using
the nlist so we don't overwrite anything important. */
- /* OK, now walk the new symtable, cacheing symbol properties */
+ /* OK, now walk the new symtable, caching symbol properties */
{
aout_symbol_type *cache_ptr = cached;
- aout_symbol_type cache_save;
/* Run through table and copy values */
for (sym_pointer = syms, cache_ptr = cached;
sym_pointer < sym_end; sym_pointer++, cache_ptr++)
length = bfd_get_8 (abfd, sym_pointer->e_length);
cache_ptr->other = length; /* other not used, save length here */
- cache_save = *cache_ptr;
convert_sym_type (sym_pointer, cache_ptr, abfd);
if (!translate_from_native_sym_flags (abfd, cache_ptr))
return FALSE;
/********************************************************/
- /* for hpux, the 'lenght' value indicates the length of */
+ /* for hpux, the 'length' value indicates the length of */
/* the symbol name which follows the nlist entry. */
/********************************************************/
if (length)
}
void
-MY (swap_std_reloc_in) (abfd, bytes, cache_ptr, symbols, symcount)
- bfd *abfd;
- struct hp300hpux_reloc *bytes;
- arelent *cache_ptr;
- asymbol **symbols;
- bfd_size_type symcount ATTRIBUTE_UNUSED;
+MY (swap_std_reloc_in) (bfd *abfd,
+ struct hp300hpux_reloc *bytes,
+ arelent *cache_ptr,
+ asymbol **symbols,
+ bfd_size_type symcount ATTRIBUTE_UNUSED)
{
int r_index;
int r_extern = 0;
}
bfd_boolean
-MY (slurp_reloc_table) (abfd, asect, symbols)
- bfd *abfd;
- sec_ptr asect;
- asymbol **symbols;
+MY (slurp_reloc_table) (bfd *abfd, sec_ptr asect, asymbol **symbols)
{
bfd_size_type count;
bfd_size_type reloc_size;
- PTR relocs;
+ void * relocs;
arelent *reloc_cache;
size_t each_size;
struct hp300hpux_reloc *rptr;
if (!reloc_cache && count != 0)
return FALSE;
- relocs = (PTR) bfd_alloc (abfd, reloc_size);
+ relocs = bfd_alloc (abfd, reloc_size);
if (!relocs && reloc_size != 0)
{
bfd_release (abfd, reloc_cache);
/* call aout_32 versions if the input file was generated by gcc */
/************************************************************************/
-long aout_32_get_symtab
- PARAMS ((bfd * abfd, asymbol ** location));
-long aout_32_get_symtab_upper_bound
- PARAMS ((bfd * abfd));
-long aout_32_canonicalize_reloc
- PARAMS ((bfd * abfd, sec_ptr section, arelent ** relptr,
- asymbol ** symbols));
+long aout_32_canonicalize_symtab (bfd *, asymbol **);
+long aout_32_get_symtab_upper_bound (bfd *);
+long aout_32_canonicalize_reloc (bfd *, sec_ptr, arelent **, asymbol **);
long
-MY (get_symtab) (abfd, location)
- bfd *abfd;
- asymbol **location;
+MY (canonicalize_symtab) (bfd *abfd, asymbol **location)
{
unsigned int counter = 0;
aout_symbol_type *symbase;
if (obj_aout_subformat (abfd) == gnu_encap_format)
- return aout_32_get_symtab (abfd, location);
+ return aout_32_canonicalize_symtab (abfd, location);
if (!MY (slurp_symbol_table) (abfd))
return -1;
}
long
-MY (get_symtab_upper_bound) (abfd)
- bfd *abfd;
+MY (get_symtab_upper_bound) (bfd *abfd)
{
if (obj_aout_subformat (abfd) == gnu_encap_format)
return aout_32_get_symtab_upper_bound (abfd);
}
long
-MY (canonicalize_reloc) (abfd, section, relptr, symbols)
- bfd *abfd;
- sec_ptr section;
- arelent **relptr;
- asymbol **symbols;
+MY (canonicalize_reloc) (bfd *abfd,
+ sec_ptr section,
+ arelent **relptr,
+ asymbol **symbols)
{
arelent *tblptr = section->relocation;
unsigned int count;
+
if (obj_aout_subformat (abfd) == gnu_encap_format)
return aout_32_canonicalize_reloc (abfd, section, relptr, symbols);