* aoutx.h: Fix formatting.
* bfd.c: Likewise.
* bfd-in2.h: Likewise.
* bfd-in.h: Likewise.
* cpu-i386.c: Likewise.
* cpu-m68hc11.c: Likewise.
* dwarf2.c: Likewise.
* elf64-x86-64.c: Likewise.
* format.c: Likewise.
* freebsd.h: Likewise.
* hash.c: Likewise.
* hp300hpux.c: Likewise.
* hppabsd-core.c: Likewise.
* hpux-core.c: Likewise.
* elf-m10300.c: Likewise.
* elfxx-ia64.c: Likewise.
+ * aoutx.h: Fix formatting.
+ * bfd.c: Likewise.
+ * bfd-in2.h: Likewise.
+ * bfd-in.h: Likewise.
+ * cpu-i386.c: Likewise.
+ * cpu-m68hc11.c: Likewise.
+ * dwarf2.c: Likewise.
+ * elf64-x86-64.c: Likewise.
+ * format.c: Likewise.
+ * freebsd.h: Likewise.
+ * hash.c: Likewise.
+ * hp300hpux.c: Likewise.
+ * hppabsd-core.c: Likewise.
+ * hpux-core.c: Likewise.
+
2001-01-22 Bo Thorsen <bo@suse.de>
* elf64-x86-64.c: Added PIC support for X86-64.
_bfd_stringtab_free (strtab);
return false;
}
-
\f
long
NAME(aout,get_symtab) (abfd, location)
*location++ =0;
return bfd_get_symcount (abfd);
}
-
\f
/* Standard reloc stuff */
/* Output standard relocation information to a file in target byte order. */
bfd_set_error (bfd_error_invalid_operation);
return -1;
}
-
\f
long
NAME(aout,get_symtab_upper_bound) (abfd)
int namidx; /* index into string table */
};
\f
-
/* Linenumber stuff */
typedef struct lineno_cache_entry {
unsigned int line_number; /* Linenumber from start of function*/
int namidx; /* index into string table */
};
\f
-
/* Linenumber stuff */
typedef struct lineno_cache_entry {
unsigned int line_number; /* Linenumber from start of function*/
PARAMS ((struct sec *));
/* And more from the source. */
-void
+void
bfd_init PARAMS ((void));
bfd *
bfd *
bfd_openw PARAMS ((CONST char *filename, CONST char *target));
-boolean
+boolean
bfd_close PARAMS ((bfd *abfd));
-boolean
+boolean
bfd_close_all_done PARAMS ((bfd *));
bfd *
bfd_create PARAMS ((CONST char *filename, bfd *templ));
-boolean
+boolean
bfd_make_writable PARAMS ((bfd *abfd));
-boolean
+boolean
bfd_make_readable PARAMS ((bfd *abfd));
-
/* Byte swapping macros for user section data. */
#define bfd_put_8(abfd, val, ptr) \
: (bits) == 64 ? bfd_put_64 (abfd, val, ptr) \
: (abort (), (void) 0))
-
/* Byte swapping macros for file header data. */
#define bfd_h_put_8(abfd, val, ptr) \
asection *
bfd_make_section PARAMS ((bfd *, const char *name));
-boolean
+boolean
bfd_set_section_flags PARAMS ((bfd *abfd, asection *sec, flagword flags));
-void
+void
bfd_map_over_sections PARAMS ((bfd *abfd,
void (*func) (bfd *abfd,
asection *sect,
PTR obj),
PTR obj));
-boolean
+boolean
bfd_set_section_size PARAMS ((bfd *abfd, asection *sec, bfd_size_type val));
-boolean
+boolean
bfd_set_section_contents
PARAMS ((bfd *abfd,
asection *section,
file_ptr offset,
bfd_size_type count));
-boolean
+boolean
bfd_get_section_contents
PARAMS ((bfd *abfd, asection *section, PTR location,
file_ptr offset, bfd_size_type count));
-boolean
+boolean
bfd_copy_private_section_data PARAMS ((bfd *ibfd, asection *isec, bfd *obfd, asection *osec));
#define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
BFD_SEND (obfd, _bfd_copy_private_section_data, \
(ibfd, isection, obfd, osection))
-void
+void
_bfd_strip_section_from_output
PARAMS ((struct bfd_link_info *info, asection *section));
const bfd *abfd,
const bfd *bbfd));
-void
+void
bfd_set_arch_info PARAMS ((bfd *abfd, const bfd_arch_info_type *arg));
-enum bfd_architecture
+enum bfd_architecture
bfd_get_arch PARAMS ((bfd *abfd));
-unsigned long
+unsigned long
bfd_get_mach PARAMS ((bfd *abfd));
-unsigned int
+unsigned int
bfd_arch_bits_per_byte PARAMS ((bfd *abfd));
-unsigned int
+unsigned int
bfd_arch_bits_per_address PARAMS ((bfd *abfd));
-const bfd_arch_info_type *
+const bfd_arch_info_type *
bfd_get_arch_info PARAMS ((bfd *abfd));
const bfd_arch_info_type *
bfd_printable_arch_mach
PARAMS ((enum bfd_architecture arch, unsigned long machine));
-unsigned int
+unsigned int
bfd_octets_per_byte PARAMS ((bfd *abfd));
-unsigned int
+unsigned int
bfd_arch_mach_octets_per_byte PARAMS ((enum bfd_architecture arch,
unsigned long machine));
}
bfd_reloc_status_type;
-
typedef struct reloc_cache_entry
{
/* A pointer into the canonical table of pointers */
} \
} \
}
-unsigned int
+unsigned int
bfd_get_reloc_size PARAMS ((reloc_howto_type *));
typedef struct relent_chain {
enum bfd_reloc_code_real {
_dummy_first_bfd_reloc_code_real,
-
/* Basic absolute relocations of N bits. */
BFD_RELOC_64,
BFD_RELOC_32,
BFD_RELOC_MIPS_GOT_OFST,
BFD_RELOC_MIPS_GOT_DISP,
-
/* i386/elf relocations */
BFD_RELOC_386_GOT32,
BFD_RELOC_386_PLT32,
/* This is a 16 bit offset from the call table base pointer. */
BFD_RELOC_V850_CALLT_16_16_OFFSET,
-
/* This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
instruction. */
BFD_RELOC_MN10300_32_PCREL,
const char *
bfd_get_reloc_code_name PARAMS ((bfd_reloc_code_real_type code));
-
typedef struct symbol_cache_entry
{
/* A pointer to the BFD which owns the symbol. This information
} asymbol;
#define bfd_get_symtab_upper_bound(abfd) \
BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
-boolean
+boolean
bfd_is_local_label PARAMS ((bfd *abfd, asymbol *sym));
-boolean
+boolean
bfd_is_local_label_name PARAMS ((bfd *abfd, const char *name));
#define bfd_is_local_label_name(abfd, name) \
#define bfd_canonicalize_symtab(abfd, location) \
BFD_SEND (abfd, _bfd_canonicalize_symtab,\
(abfd, location))
-boolean
+boolean
bfd_set_symtab PARAMS ((bfd *abfd, asymbol **location, unsigned int count));
-void
+void
bfd_print_symbol_vandf PARAMS ((PTR file, asymbol *symbol));
#define bfd_make_empty_symbol(abfd) \
BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
#define bfd_make_debug_symbol(abfd,ptr,size) \
BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
-int
+int
bfd_decode_symclass PARAMS ((asymbol *symbol));
-boolean
+boolean
bfd_is_undefined_symclass PARAMS ((int symclass));
-void
+void
bfd_symbol_info PARAMS ((asymbol *symbol, symbol_info *ret));
-boolean
+boolean
bfd_copy_private_symbol_data PARAMS ((bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym));
#define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
bfd_error_invalid_error_code
} bfd_error_type;
-bfd_error_type
+bfd_error_type
bfd_get_error PARAMS ((void));
-void
+void
bfd_set_error PARAMS ((bfd_error_type error_tag));
CONST char *
bfd_errmsg PARAMS ((bfd_error_type error_tag));
-void
+void
bfd_perror PARAMS ((CONST char *message));
typedef void (*bfd_error_handler_type) PARAMS ((const char *, ...));
-bfd_error_handler_type
+bfd_error_handler_type
bfd_set_error_handler PARAMS ((bfd_error_handler_type));
-void
+void
bfd_set_error_program_name PARAMS ((const char *));
-bfd_error_handler_type
+bfd_error_handler_type
bfd_get_error_handler PARAMS ((void));
-long
+long
bfd_get_reloc_upper_bound PARAMS ((bfd *abfd, asection *sect));
-long
+long
bfd_canonicalize_reloc
PARAMS ((bfd *abfd,
asection *sec,
arelent **loc,
asymbol **syms));
-void
+void
bfd_set_reloc
PARAMS ((bfd *abfd, asection *sec, arelent **rel, unsigned int count)
-
+
);
-boolean
+boolean
bfd_set_file_flags PARAMS ((bfd *abfd, flagword flags));
-int
+int
bfd_get_arch_size PARAMS ((bfd *abfd));
-int
+int
bfd_get_sign_extend_vma PARAMS ((bfd *abfd));
-boolean
+boolean
bfd_set_start_address PARAMS ((bfd *abfd, bfd_vma vma));
-long
+long
bfd_get_mtime PARAMS ((bfd *abfd));
-long
+long
bfd_get_size PARAMS ((bfd *abfd));
-int
+int
bfd_get_gp_size PARAMS ((bfd *abfd));
-void
+void
bfd_set_gp_size PARAMS ((bfd *abfd, int i));
-bfd_vma
+bfd_vma
bfd_scan_vma PARAMS ((CONST char *string, CONST char **end, int base));
-boolean
+boolean
bfd_copy_private_bfd_data PARAMS ((bfd *ibfd, bfd *obfd));
#define bfd_copy_private_bfd_data(ibfd, obfd) \
BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
(ibfd, obfd))
-boolean
+boolean
bfd_merge_private_bfd_data PARAMS ((bfd *ibfd, bfd *obfd));
#define bfd_merge_private_bfd_data(ibfd, obfd) \
BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
(ibfd, obfd))
-boolean
+boolean
bfd_set_private_flags PARAMS ((bfd *abfd, flagword flags));
#define bfd_set_private_flags(abfd, flags) \
#define bfd_debug_info_accumulate(abfd, section) \
BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
-
#define bfd_stat_arch_elt(abfd, stat) \
BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
struct bfd_link_order *, bfd_byte *,
boolean, asymbol **));
-symindex
+symindex
bfd_get_next_mapent PARAMS ((bfd *abfd, symindex previous, carsym **sym));
-boolean
+boolean
bfd_set_archive_head PARAMS ((bfd *output, bfd *new_head));
bfd *
CONST char *
bfd_core_file_failing_command PARAMS ((bfd *abfd));
-int
+int
bfd_core_file_failing_signal PARAMS ((bfd *abfd));
-boolean
+boolean
core_file_matches_executable_p
PARAMS ((bfd *core_bfd, bfd *exec_bfd));
PTR backend_data;
} bfd_target;
-boolean
+boolean
bfd_set_default_target PARAMS ((const char *name));
const bfd_target *
const char **
bfd_target_list PARAMS ((void));
-const bfd_target *
+const bfd_target *
bfd_search_for_target PARAMS ((int (* search_func) (const bfd_target *, void *), void *));
-boolean
+boolean
bfd_check_format PARAMS ((bfd *abfd, bfd_format format));
-boolean
+boolean
bfd_check_format_matches PARAMS ((bfd *abfd, bfd_format format, char ***matching));
-boolean
+boolean
bfd_set_format PARAMS ((bfd *abfd, bfd_format format));
CONST char *
struct which ultimately gets passed in to the bfd. When it arrives, copy
it to the following struct so that the data will be available in coffcode.h
where it is needed. The typedef's used are defined in bfd.h */
-
\f
/*
SECTION
"x86_64:intel",
3,
true,
- bfd_default_compatible,
+ bfd_default_compatible,
bfd_default_scan ,
&bfd_i386_arch_intel_syntax,
};
"x86_64",
3,
true,
- bfd_default_compatible,
+ bfd_default_compatible,
bfd_default_scan ,
&i8086_arch,
};
true,
bfd_default_compatible,
bfd_default_scan ,
- &bfd_x86_64_arch
+ &bfd_x86_64_arch
};
-
bfd_default_scan,
0,
};
-
char *info_ptr = stash->info_ptr;
char *end_ptr = info_ptr + unit_length;
-
+
version = read_2_bytes (abfd, info_ptr);
info_ptr += 2;
BFD_ASSERT (abbrev_length == 0
return false;
*pinfo = (PTR) stash;
-
+
msec = find_debug_info (abfd, NULL);
if (! msec)
/* No dwarf2 info. Note that at this point the stash
return true;
}
-
#define TARGET_LITTLE_SYM bfd_elf64_x86_64_vec
#define TARGET_LITTLE_NAME "elf64-x86-64"
#define ELF_ARCH bfd_arch_i386
File formats
A format is a BFD concept of high level file contents type. The
- formats supported by BFD are:
+ formats supported by BFD are:
o <<bfd_object>>
The BFD contains the result of an executable core dump.
-
*/
#include "bfd.h"
the file, or an error results.
The function returns <<true>> on success, otherwise <<false>>
- with one of the following error codes:
+ with one of the following error codes:
o <<bfd_error_invalid_operation>> -
if <<format>> is not one of <<bfd_object>>, <<bfd_archive>> or
Then the user may choose a format and try again.
When done with the list that @var{matching} points to, the caller
- should free it.
+ should free it.
*/
boolean
if (abfd->format != bfd_unknown)
return (abfd->format == format)? true: false;
- /* Since the target type was defaulted, check them
+ /* Since the target type was defaulted, check them
all in the hope that one will be uniquely recognized. */
save_targ = abfd->xvec;
match_count = 0;
-
+
if (matching)
{
matching_vector =
matching_vector[0] = NULL;
*matching = matching_vector;
}
-
+
right_targ = 0;
/* Presume the answer is yes. */
{
if (bfd_seek (abfd, (file_ptr)0, SEEK_SET) != 0) /* rewind! */
return false;
-
+
right_targ = BFD_SEND_FMT (abfd, _bfd_check_format, (abfd));
-
+
if (right_targ)
{
abfd->xvec = right_targ; /* Set the target as returned. */
-
+
if (matching)
free (matching_vector);
-
+
return true; /* File position has moved, BTW. */
}
{
abfd->xvec = save_targ;
abfd->format = bfd_unknown;
-
+
if (matching)
free (matching_vector);
-
+
bfd_set_error (bfd_error_file_not_recognized);
-
+
return false;
}
}
for (target = bfd_target_vector; *target != NULL; target++)
{
const bfd_target *temp;
-
+
if (*target == &binary_vec)
continue;
-
+
abfd->xvec = *target; /* Change BFD's target temporarily */
-
+
if (bfd_seek (abfd, (file_ptr)0, SEEK_SET) != 0)
return false;
-
+
/* If _bfd_check_format neglects to set bfd_error, assume
bfd_error_wrong_format. We didn't used to even pay any
attention to bfd_error, so I suspect that some
bfd_set_error (bfd_error_wrong_format);
temp = BFD_SEND_FMT (abfd, _bfd_check_format, (abfd));
-
+
if (temp)
{ /* This format checks out as ok! */
right_targ = temp;
-
+
if (matching)
{
matching_vector[match_count] = temp->name;
matching_vector[match_count + 1] = NULL;
}
-
+
match_count++;
-
+
/* If this is the default target, accept it, even if other
targets might match. People who want those other targets
have to set the GNUTARGET variable. */
{
abfd->xvec = save_targ;
abfd->format = bfd_unknown;
-
+
if (matching && bfd_get_error ()
!= bfd_error_file_ambiguously_recognized)
free (matching_vector);
-
+
return false;
}
}
-
+
if (match_count == 1)
{
abfd->xvec = right_targ; /* Change BFD's target permanently. */
-
+
if (matching)
free (matching_vector);
-
+
return true; /* File position has moved, BTW. */
}
abfd->xvec = save_targ; /* Restore original target type. */
abfd->format = bfd_unknown; /* Restore original format. */
-
+
if (match_count == 0)
{
bfd_set_error (bfd_error_file_not_recognized);
-
+
if (matching)
free (matching_vector);
}
else
bfd_set_error (bfd_error_file_ambiguously_recognized);
-
+
return false;
}
return true;
}
-
/*
FUNCTION
bfd_format_string
bfd_format_string (format)
bfd_format format;
{
- if (((int)format <(int) bfd_unknown)
- || ((int)format >=(int) bfd_type_end))
+ if (((int)format <(int) bfd_unknown)
+ || ((int)format >=(int) bfd_type_end))
return "invalid";
-
+
switch (format)
{
case bfd_object:
return "object"; /* Linker/assember/compiler output. */
- case bfd_archive:
+ case bfd_archive:
return "archive"; /* Object archive file. */
- case bfd_core:
+ case bfd_core:
return "core"; /* Core dump. */
- default:
+ default:
return "unknown";
}
}
format. I think. */
#define SWAP_MAGIC(ext) bfd_getl32 (ext)
-
#define MY_write_object_contents MY(write_object_contents)
static boolean MY(write_object_contents) PARAMS ((bfd *abfd));
Write other derived routines
You will want to write other routines for your new hash table,
- as well.
+ as well.
You will want an initialization routine which calls the
initialization routine of the hash table you are deriving from
struct bfd_hash_entry *hashp;
unsigned int len;
unsigned int index;
-
+
hash = 0;
len = 0;
s = (const unsigned char *) string;
| hp300hpux bfd | ----------> hpux w/gnu ext
hpux w/gnu extension ----> | |
-
Support for the 9000/[34]00 has several limitations.
1. Shared libraries are not supported.
2. The output format from this bfd is not usable by native tools.
bfd_default_set_arch_mach (abfd, DEFAULT_ARCH, 0);
#endif
-
if (obj_aout_subformat (abfd) == gnu_encap_format)
{
/* The file offsets of the relocation info */
}
-
/*
DESCRIPTION
Swaps the information in an executable header taken from a raw
while (0);
}
-
/* The hp symbol table is a bit different than other a.out targets. Instead
of having an array of nlist items and an array of strings, hp's format
has them mixed together in one structure. In addition, the strings are
return false;
}
-
sym_end = (struct external_nlist *) (((char *) syms) + symbol_bytes);
/* first, march thru the table and figure out how many symbols there are */
return true;
}
-
-
void
MY (swap_std_reloc_in) (abfd, bytes, cache_ptr, symbols, symcount)
bfd *abfd;
count = reloc_size / each_size;
-
reloc_cache = (arelent *) bfd_zalloc (abfd, (size_t) (count * sizeof
(arelent)));
if (!reloc_cache && count != 0)
bfd_get_symcount (abfd));
}
-
bfd_release (abfd, relocs);
asect->relocation = reloc_cache;
asect->reloc_count = count;
return true;
}
-
/************************************************************************/
/* The following functions are identical to functions in aoutx.h except */
/* they refer to MY(func) rather than NAME(aout,func) and they also */
return (bfd_get_symcount (abfd) + 1) * (sizeof (aout_symbol_type *));
}
-
-
-
long
MY (canonicalize_reloc) (abfd, section, relptr, symbols)
bfd *abfd;
return section->reloc_count;
}
-
#include "aout-target.h"
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Written by the Center for Software Science at the University of Utah
- and by Cygnus Support.
+ and by Cygnus Support.
The core file structure for the Utah 4.3BSD and OSF1 ports on the
PA is a mix between traditional cores and hpux cores -- just
different enough that supporting this format would tend to add
gross hacks to trad-core.c or hpux-core.c. So instead we keep any
gross hacks isolated to this file. */
-
/* This file can only be compiled on systems which use HPPA-BSD style
core files.
return NULL;
}
-
/* Sanity checks. Make sure the size of the core file matches the
the size computed from information within the core itself. */
{
core_stacksec (abfd) = make_bfd_asection (abfd, ".stack",
SEC_ALLOC + SEC_HAS_CONTENTS,
clicksz * u.u_ssize,
- NBPG * (USIZE + KSTAKSIZE)
+ NBPG * (USIZE + KSTAKSIZE)
+ clicksz * u.u_dsize, 2);
- core_stacksec (abfd)->vma = USRSTACK;
+ core_stacksec (abfd)->vma = USRSTACK;
core_datasec (abfd) = make_bfd_asection (abfd, ".data",
SEC_ALLOC + SEC_LOAD
/* There's no way to know this... */
return true;
}
-
\f
#define hppabsd_core_get_symtab_upper_bound \
_bfd_nosymbols_get_symtab_upper_bound
swap_abort ()
{
/* This way doesn't require any declaration for ANSI to fuck up. */
- abort ();
+ abort ();
}
#define NO_GET ((bfd_vma (*) PARAMS (( const bfd_byte *))) swap_abort )
bfd_false, bfd_false,
bfd_false, bfd_false
},
-
+
BFD_JUMP_TABLE_GENERIC (_bfd_generic),
BFD_JUMP_TABLE_COPY (_bfd_generic),
BFD_JUMP_TABLE_CORE (hppabsd_core),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
NULL,
-
+
(PTR) 0 /* backend_data */
};
#endif
/* .lwpid and .user_tid are only valid if PROC_INFO_HAS_THREAD_ID, else they
are set to 0. Also, until HP-UX implements MxN threads, .user_tid and
.lwpid are synonymous. */
-struct hpux_core_struct
+struct hpux_core_struct
{
int sig;
int lwpid; /* Kernel thread ID. */
return new;
}
-
/* this function builds a bfd target if the file is a corefile.
It returns null or 0 if it finds out thaat it is not a core file.
The way it checks this is by looking for allowed 'type' field values.
*/
unknown_sections++;
break;
-
+
default: return 0; /*unrecognized core file type */
}
}
bfd_false, bfd_false,
bfd_false, bfd_false
},
-
+
BFD_JUMP_TABLE_GENERIC (_bfd_generic),
BFD_JUMP_TABLE_COPY (_bfd_generic),
BFD_JUMP_TABLE_CORE (hpux_core),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
NULL,
-
+
(PTR) 0 /* backend_data */
};