* elf-bfd.h: Remove PARAMS macro. Replace PTR with void *.

(NAME): Use ## rather than CONCAT4 macro.
	* elfcode.h: Remove one remaining PARAMS macro.
	* elf-eh-frame.c: Convert to C90, remove unneeded casts and prototypes.
	* elf-strtab.c: Likewise.
	* elf-hppa.h: Likewise.
	* elf32-hppa.h: Likewise.
	* elf32-hppa.c: Likewise.
	(elf32_hppa_add_symbol_hook): Delete.
	(elf_backend_add_symbol_hook): Don't define.
	* libhppa.h: Convert to C90.  Replace INLINE with inline.
This commit is contained in:
Alan Modra
2003-08-07 07:25:34 +00:00
parent 29ceeffbde
commit c39a58e6ff
9 changed files with 641 additions and 1016 deletions

View File

@@ -44,62 +44,14 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define elf_hppa_final_link elf32_hppa_final_link
#endif
static void elf_hppa_info_to_howto
PARAMS ((bfd *, arelent *, Elf_Internal_Rela *));
static void elf_hppa_info_to_howto_rel
PARAMS ((bfd *, arelent *, Elf_Internal_Rela *));
static reloc_howto_type * elf_hppa_reloc_type_lookup
PARAMS ((bfd *, bfd_reloc_code_real_type));
static bfd_boolean elf_hppa_is_local_label_name
PARAMS ((bfd *, const char *));
static bfd_boolean elf_hppa_fake_sections
PARAMS ((bfd *abfd, Elf_Internal_Shdr *, asection *));
static void elf_hppa_final_write_processing
PARAMS ((bfd *, bfd_boolean));
static int hppa_unwind_entry_compare
PARAMS ((const PTR, const PTR));
static bfd_boolean elf_hppa_sort_unwind
PARAMS ((bfd *));
#if ARCH_SIZE == 64
static bfd_boolean elf_hppa_add_symbol_hook
PARAMS ((bfd *, struct bfd_link_info *, const Elf_Internal_Sym *,
const char **, flagword *, asection **, bfd_vma *));
static bfd_boolean elf_hppa_unmark_useless_dynamic_symbols
PARAMS ((struct elf_link_hash_entry *, PTR));
static bfd_boolean elf_hppa_remark_useless_dynamic_symbols
PARAMS ((struct elf_link_hash_entry *, PTR));
static bfd_boolean elf_hppa_is_dynamic_loader_symbol
PARAMS ((const char *));
static void elf_hppa_record_segment_addrs
PARAMS ((bfd *, asection *, PTR));
static bfd_boolean elf_hppa_final_link
PARAMS ((bfd *, struct bfd_link_info *));
static bfd_boolean elf_hppa_relocate_section
PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *,
bfd_byte *, Elf_Internal_Rela *, Elf_Internal_Sym *, asection **));
static bfd_reloc_status_type elf_hppa_final_link_relocate
PARAMS ((Elf_Internal_Rela *, bfd *, bfd *, asection *,
bfd_byte *, bfd_vma, struct bfd_link_info *,
asection *, struct elf_link_hash_entry *,
struct elf64_hppa_dyn_hash_entry *));
(Elf_Internal_Rela *, bfd *, bfd *, asection *, bfd_byte *, bfd_vma,
struct bfd_link_info *, asection *, struct elf_link_hash_entry *,
struct elf64_hppa_dyn_hash_entry *);
static int elf_hppa_relocate_insn
PARAMS ((int, int, unsigned int));
(int, int, unsigned int);
#endif
/* ELF/PA relocation howto entries. */
@@ -615,11 +567,10 @@ static reloc_howto_type elf_hppa_howto_table[ELF_HOWTO_TABLE_SIZE] =
format, and field selector. */
elf_hppa_reloc_type
elf_hppa_reloc_final_type (abfd, base_type, format, field)
bfd *abfd;
elf_hppa_reloc_type base_type;
int format;
unsigned int field;
elf_hppa_reloc_final_type (bfd *abfd,
elf_hppa_reloc_type base_type,
int format,
unsigned int field)
{
elf_hppa_reloc_type final_type = base_type;
@@ -884,26 +835,25 @@ elf_hppa_reloc_final_type (abfd, base_type, format, field)
relocation with modifications based on format and field. */
elf_hppa_reloc_type **
_bfd_elf_hppa_gen_reloc_type (abfd, base_type, format, field, ignore, sym)
bfd *abfd;
elf_hppa_reloc_type base_type;
int format;
unsigned int field;
int ignore ATTRIBUTE_UNUSED;
asymbol *sym ATTRIBUTE_UNUSED;
_bfd_elf_hppa_gen_reloc_type (bfd *abfd,
elf_hppa_reloc_type base_type,
int format,
unsigned int field,
int ignore ATTRIBUTE_UNUSED,
asymbol *sym ATTRIBUTE_UNUSED)
{
elf_hppa_reloc_type *finaltype;
elf_hppa_reloc_type **final_types;
bfd_size_type amt = sizeof (elf_hppa_reloc_type *) * 2;
/* Allocate slots for the BFD relocation. */
final_types = (elf_hppa_reloc_type **) bfd_alloc (abfd, amt);
final_types = bfd_alloc (abfd, amt);
if (final_types == NULL)
return NULL;
/* Allocate space for the relocation itself. */
amt = sizeof (elf_hppa_reloc_type);
finaltype = (elf_hppa_reloc_type *) bfd_alloc (abfd, amt);
finaltype = bfd_alloc (abfd, amt);
if (finaltype == NULL)
return NULL;
@@ -919,12 +869,11 @@ _bfd_elf_hppa_gen_reloc_type (abfd, base_type, format, field, ignore, sym)
/* Translate from an elf into field into a howto relocation pointer. */
static void
elf_hppa_info_to_howto (abfd, bfd_reloc, elf_reloc)
bfd *abfd ATTRIBUTE_UNUSED;
arelent *bfd_reloc;
Elf_Internal_Rela *elf_reloc;
elf_hppa_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
arelent *bfd_reloc,
Elf_Internal_Rela *elf_reloc)
{
BFD_ASSERT (ELF_R_TYPE(elf_reloc->r_info)
BFD_ASSERT (ELF_R_TYPE (elf_reloc->r_info)
< (unsigned int) R_PARISC_UNIMPLEMENTED);
bfd_reloc->howto = &elf_hppa_howto_table[ELF_R_TYPE (elf_reloc->r_info)];
}
@@ -932,10 +881,9 @@ elf_hppa_info_to_howto (abfd, bfd_reloc, elf_reloc)
/* Translate from an elf into field into a howto relocation pointer. */
static void
elf_hppa_info_to_howto_rel (abfd, bfd_reloc, elf_reloc)
bfd *abfd ATTRIBUTE_UNUSED;
arelent *bfd_reloc;
Elf_Internal_Rela *elf_reloc;
elf_hppa_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED,
arelent *bfd_reloc,
Elf_Internal_Rela *elf_reloc)
{
BFD_ASSERT (ELF_R_TYPE(elf_reloc->r_info)
< (unsigned int) R_PARISC_UNIMPLEMENTED);
@@ -946,9 +894,8 @@ elf_hppa_info_to_howto_rel (abfd, bfd_reloc, elf_reloc)
relocation for an ARCH machine. */
static reloc_howto_type *
elf_hppa_reloc_type_lookup (abfd, code)
bfd *abfd ATTRIBUTE_UNUSED;
bfd_reloc_code_real_type code;
elf_hppa_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
bfd_reloc_code_real_type code)
{
if ((int) code < (int) R_PARISC_UNIMPLEMENTED)
{
@@ -961,9 +908,7 @@ elf_hppa_reloc_type_lookup (abfd, code)
/* Return TRUE if SYM represents a local label symbol. */
static bfd_boolean
elf_hppa_is_local_label_name (abfd, name)
bfd *abfd ATTRIBUTE_UNUSED;
const char *name;
elf_hppa_is_local_label_name (bfd *abfd ATTRIBUTE_UNUSED, const char *name)
{
if (name[0] == 'L' && name[1] == '$')
return 1;
@@ -974,12 +919,9 @@ elf_hppa_is_local_label_name (abfd, name)
section name, which is a hack, but ought to work. */
static bfd_boolean
elf_hppa_fake_sections (abfd, hdr, sec)
bfd *abfd;
Elf_Internal_Shdr *hdr;
asection *sec;
elf_hppa_fake_sections (bfd *abfd, Elf_Internal_Shdr *hdr, asection *sec)
{
register const char *name;
const char *name;
name = bfd_get_section_name (abfd, sec);
@@ -1017,9 +959,8 @@ elf_hppa_fake_sections (abfd, hdr, sec)
}
static void
elf_hppa_final_write_processing (abfd, linker)
bfd *abfd;
bfd_boolean linker ATTRIBUTE_UNUSED;
elf_hppa_final_write_processing (bfd *abfd,
bfd_boolean linker ATTRIBUTE_UNUSED)
{
int mach = bfd_get_mach (abfd);
@@ -1048,20 +989,18 @@ elf_hppa_final_write_processing (abfd, linker)
final link. */
static int
hppa_unwind_entry_compare (a, b)
const PTR a;
const PTR b;
hppa_unwind_entry_compare (const void *a, const void *b)
{
const bfd_byte *ap, *bp;
unsigned long av, bv;
ap = (const bfd_byte *) a;
ap = a;
av = (unsigned long) ap[0] << 24;
av |= (unsigned long) ap[1] << 16;
av |= (unsigned long) ap[2] << 8;
av |= (unsigned long) ap[3];
bp = (const bfd_byte *) b;
bp = b;
bv = (unsigned long) bp[0] << 24;
bv |= (unsigned long) bp[1] << 16;
bv |= (unsigned long) bp[2] << 8;
@@ -1070,8 +1009,7 @@ hppa_unwind_entry_compare (a, b)
return av < bv ? -1 : av > bv ? 1 : 0;
}
static bfd_boolean elf_hppa_sort_unwind (abfd)
bfd *abfd;
static bfd_boolean elf_hppa_sort_unwind (bfd *abfd)
{
asection *s;
@@ -1108,14 +1046,13 @@ static bfd_boolean elf_hppa_sort_unwind (abfd)
indices, which we have to handle. */
static bfd_boolean
elf_hppa_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp)
bfd *abfd;
struct bfd_link_info *info ATTRIBUTE_UNUSED;
const Elf_Internal_Sym *sym;
const char **namep ATTRIBUTE_UNUSED;
flagword *flagsp ATTRIBUTE_UNUSED;
asection **secp;
bfd_vma *valp;
elf_hppa_add_symbol_hook (bfd *abfd,
struct bfd_link_info *info ATTRIBUTE_UNUSED,
const Elf_Internal_Sym *sym,
const char **namep ATTRIBUTE_UNUSED,
flagword *flagsp ATTRIBUTE_UNUSED,
asection **secp,
bfd_vma *valp)
{
int index = sym->st_shndx;
@@ -1138,11 +1075,10 @@ elf_hppa_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp)
}
static bfd_boolean
elf_hppa_unmark_useless_dynamic_symbols (h, data)
struct elf_link_hash_entry *h;
PTR data;
elf_hppa_unmark_useless_dynamic_symbols (struct elf_link_hash_entry *h,
void *data)
{
struct bfd_link_info *info = (struct bfd_link_info *)data;
struct bfd_link_info *info = data;
if (h->root.type == bfd_link_hash_warning)
h = (struct elf_link_hash_entry *) h->root.u.i.link;
@@ -1174,11 +1110,10 @@ elf_hppa_unmark_useless_dynamic_symbols (h, data)
}
static bfd_boolean
elf_hppa_remark_useless_dynamic_symbols (h, data)
struct elf_link_hash_entry *h;
PTR data;
elf_hppa_remark_useless_dynamic_symbols (struct elf_link_hash_entry *h,
void *data)
{
struct bfd_link_info *info = (struct bfd_link_info *)data;
struct bfd_link_info *info = data;
if (h->root.type == bfd_link_hash_warning)
h = (struct elf_link_hash_entry *) h->root.u.i.link;
@@ -1211,8 +1146,7 @@ elf_hppa_remark_useless_dynamic_symbols (h, data)
}
static bfd_boolean
elf_hppa_is_dynamic_loader_symbol (name)
const char * name;
elf_hppa_is_dynamic_loader_symbol (const char *name)
{
return (! strcmp (name, "__CPU_REVISION")
|| ! strcmp (name, "__CPU_KEYBITS_1")
@@ -1229,15 +1163,14 @@ elf_hppa_is_dynamic_loader_symbol (name)
/* Record the lowest address for the data and text segments. */
static void
elf_hppa_record_segment_addrs (abfd, section, data)
bfd *abfd ATTRIBUTE_UNUSED;
asection *section;
PTR data;
elf_hppa_record_segment_addrs (bfd *abfd ATTRIBUTE_UNUSED,
asection *section,
void *data)
{
struct elf64_hppa_link_hash_table *hppa_info;
bfd_vma value;
hppa_info = (struct elf64_hppa_link_hash_table *)data;
hppa_info = data;
value = section->vma - section->filepos;
@@ -1258,9 +1191,7 @@ elf_hppa_record_segment_addrs (abfd, section, data)
fall back to the generic ELF final link routine. */
static bfd_boolean
elf_hppa_final_link (abfd, info)
bfd *abfd;
struct bfd_link_info *info;
elf_hppa_final_link (bfd *abfd, struct bfd_link_info *info)
{
bfd_boolean retval;
struct elf64_hppa_link_hash_table *hppa_info = elf64_hppa_hash_table (info);
@@ -1360,16 +1291,14 @@ elf_hppa_final_link (abfd, info)
/* Relocate an HPPA ELF section. */
static bfd_boolean
elf_hppa_relocate_section (output_bfd, info, input_bfd, input_section,
contents, relocs, local_syms, local_sections)
bfd *output_bfd;
struct bfd_link_info *info;
bfd *input_bfd;
asection *input_section;
bfd_byte *contents;
Elf_Internal_Rela *relocs;
Elf_Internal_Sym *local_syms;
asection **local_sections;
elf_hppa_relocate_section (bfd *output_bfd,
struct bfd_link_info *info,
bfd *input_bfd,
asection *input_section,
bfd_byte *contents,
Elf_Internal_Rela *relocs,
Elf_Internal_Sym *local_syms,
asection **local_sections)
{
Elf_Internal_Shdr *symtab_hdr;
Elf_Internal_Rela *rel;
@@ -1578,19 +1507,16 @@ elf_hppa_relocate_section (output_bfd, info, input_bfd, input_section,
function. */
static bfd_reloc_status_type
elf_hppa_final_link_relocate (rel, input_bfd, output_bfd,
input_section, contents, value,
info, sym_sec, h, dyn_h)
Elf_Internal_Rela *rel;
bfd *input_bfd;
bfd *output_bfd;
asection *input_section;
bfd_byte *contents;
bfd_vma value;
struct bfd_link_info *info;
asection *sym_sec;
struct elf_link_hash_entry *h ATTRIBUTE_UNUSED;
struct elf64_hppa_dyn_hash_entry *dyn_h;
elf_hppa_final_link_relocate (Elf_Internal_Rela *rel,
bfd *input_bfd,
bfd *output_bfd,
asection *input_section,
bfd_byte *contents,
bfd_vma value,
struct bfd_link_info *info,
asection *sym_sec,
struct elf_link_hash_entry *h ATTRIBUTE_UNUSED,
struct elf64_hppa_dyn_hash_entry *dyn_h)
{
int insn;
bfd_vma offset = rel->r_offset;
@@ -2136,10 +2062,7 @@ elf_hppa_final_link_relocate (rel, input_bfd, output_bfd,
to insert the relocation into the given instruction. */
static int
elf_hppa_relocate_insn (insn, sym_value, r_type)
int insn;
int sym_value;
unsigned int r_type;
elf_hppa_relocate_insn (int insn, int sym_value, unsigned int r_type)
{
switch (r_type)
{