summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
f29d9b6)
* 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.
15 files changed:
* elf-m10300.c: Likewise.
* elfxx-ia64.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.
2001-01-22 Bo Thorsen <bo@suse.de>
* elf64-x86-64.c: Added PIC support for X86-64.
_bfd_stringtab_free (strtab);
return false;
}
_bfd_stringtab_free (strtab);
return false;
}
\f
long
NAME(aout,get_symtab) (abfd, location)
\f
long
NAME(aout,get_symtab) (abfd, location)
*location++ =0;
return bfd_get_symcount (abfd);
}
*location++ =0;
return bfd_get_symcount (abfd);
}
\f
/* Standard reloc stuff */
/* Output standard relocation information to a file in target byte order. */
\f
/* Standard reloc stuff */
/* Output standard relocation information to a file in target byte order. */
bfd_set_error (bfd_error_invalid_operation);
return -1;
}
bfd_set_error (bfd_error_invalid_operation);
return -1;
}
\f
long
NAME(aout,get_symtab_upper_bound) (abfd)
\f
long
NAME(aout,get_symtab_upper_bound) (abfd)
int namidx; /* index into string table */
};
\f
int namidx; /* index into string table */
};
\f
/* Linenumber stuff */
typedef struct lineno_cache_entry {
unsigned int line_number; /* Linenumber from start of function*/
/* Linenumber stuff */
typedef struct lineno_cache_entry {
unsigned int line_number; /* Linenumber from start of function*/
int namidx; /* index into string table */
};
\f
int namidx; /* index into string table */
};
\f
/* Linenumber stuff */
typedef struct lineno_cache_entry {
unsigned int line_number; /* Linenumber from start of function*/
/* Linenumber stuff */
typedef struct lineno_cache_entry {
unsigned int line_number; /* Linenumber from start of function*/
PARAMS ((struct sec *));
/* And more from the source. */
PARAMS ((struct sec *));
/* And more from the source. */
bfd_init PARAMS ((void));
bfd *
bfd_init PARAMS ((void));
bfd *
bfd *
bfd_openw PARAMS ((CONST char *filename, CONST char *target));
bfd *
bfd_openw PARAMS ((CONST char *filename, CONST char *target));
bfd_close PARAMS ((bfd *abfd));
bfd_close PARAMS ((bfd *abfd));
bfd_close_all_done PARAMS ((bfd *));
bfd *
bfd_create PARAMS ((CONST char *filename, bfd *templ));
bfd_close_all_done PARAMS ((bfd *));
bfd *
bfd_create PARAMS ((CONST char *filename, bfd *templ));
bfd_make_writable PARAMS ((bfd *abfd));
bfd_make_writable PARAMS ((bfd *abfd));
bfd_make_readable PARAMS ((bfd *abfd));
bfd_make_readable PARAMS ((bfd *abfd));
/* Byte swapping macros for user section data. */
#define bfd_put_8(abfd, val, ptr) \
/* 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))
: (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) \
/* Byte swapping macros for file header data. */
#define bfd_h_put_8(abfd, val, ptr) \
asection *
bfd_make_section PARAMS ((bfd *, const char *name));
asection *
bfd_make_section PARAMS ((bfd *, const char *name));
bfd_set_section_flags PARAMS ((bfd *abfd, asection *sec, flagword flags));
bfd_set_section_flags PARAMS ((bfd *abfd, asection *sec, flagword flags));
bfd_map_over_sections PARAMS ((bfd *abfd,
void (*func) (bfd *abfd,
asection *sect,
PTR obj),
PTR obj));
bfd_map_over_sections PARAMS ((bfd *abfd,
void (*func) (bfd *abfd,
asection *sect,
PTR obj),
PTR obj));
bfd_set_section_size PARAMS ((bfd *abfd, asection *sec, bfd_size_type val));
bfd_set_section_size PARAMS ((bfd *abfd, asection *sec, bfd_size_type val));
bfd_set_section_contents
PARAMS ((bfd *abfd,
asection *section,
bfd_set_section_contents
PARAMS ((bfd *abfd,
asection *section,
file_ptr offset,
bfd_size_type count));
file_ptr offset,
bfd_size_type count));
bfd_get_section_contents
PARAMS ((bfd *abfd, asection *section, PTR location,
file_ptr offset, bfd_size_type count));
bfd_get_section_contents
PARAMS ((bfd *abfd, asection *section, PTR location,
file_ptr offset, bfd_size_type count));
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))
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))
_bfd_strip_section_from_output
PARAMS ((struct bfd_link_info *info, asection *section));
_bfd_strip_section_from_output
PARAMS ((struct bfd_link_info *info, asection *section));
const bfd *abfd,
const bfd *bbfd));
const bfd *abfd,
const bfd *bbfd));
bfd_set_arch_info PARAMS ((bfd *abfd, const bfd_arch_info_type *arg));
bfd_set_arch_info PARAMS ((bfd *abfd, const bfd_arch_info_type *arg));
bfd_get_arch PARAMS ((bfd *abfd));
bfd_get_arch PARAMS ((bfd *abfd));
bfd_get_mach PARAMS ((bfd *abfd));
bfd_get_mach PARAMS ((bfd *abfd));
bfd_arch_bits_per_byte PARAMS ((bfd *abfd));
bfd_arch_bits_per_byte PARAMS ((bfd *abfd));
bfd_arch_bits_per_address PARAMS ((bfd *abfd));
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_get_arch_info PARAMS ((bfd *abfd));
const bfd_arch_info_type *
bfd_printable_arch_mach
PARAMS ((enum bfd_architecture arch, unsigned long machine));
bfd_printable_arch_mach
PARAMS ((enum bfd_architecture arch, unsigned long machine));
bfd_octets_per_byte PARAMS ((bfd *abfd));
bfd_octets_per_byte PARAMS ((bfd *abfd));
bfd_arch_mach_octets_per_byte PARAMS ((enum bfd_architecture arch,
unsigned long machine));
bfd_arch_mach_octets_per_byte PARAMS ((enum bfd_architecture arch,
unsigned long machine));
typedef struct reloc_cache_entry
{
/* A pointer into the canonical table of pointers */
typedef struct reloc_cache_entry
{
/* A pointer into the canonical table of pointers */
bfd_get_reloc_size PARAMS ((reloc_howto_type *));
typedef struct relent_chain {
bfd_get_reloc_size PARAMS ((reloc_howto_type *));
typedef struct relent_chain {
enum bfd_reloc_code_real {
_dummy_first_bfd_reloc_code_real,
enum bfd_reloc_code_real {
_dummy_first_bfd_reloc_code_real,
/* Basic absolute relocations of N bits. */
BFD_RELOC_64,
BFD_RELOC_32,
/* Basic absolute relocations of N bits. */
BFD_RELOC_64,
BFD_RELOC_32,
BFD_RELOC_MIPS_GOT_OFST,
BFD_RELOC_MIPS_GOT_DISP,
BFD_RELOC_MIPS_GOT_OFST,
BFD_RELOC_MIPS_GOT_DISP,
/* i386/elf relocations */
BFD_RELOC_386_GOT32,
BFD_RELOC_386_PLT32,
/* 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 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,
/* 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));
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
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))
} asymbol;
#define bfd_get_symtab_upper_bound(abfd) \
BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
bfd_is_local_label PARAMS ((bfd *abfd, asymbol *sym));
bfd_is_local_label PARAMS ((bfd *abfd, asymbol *sym));
bfd_is_local_label_name PARAMS ((bfd *abfd, const char *name));
#define bfd_is_local_label_name(abfd, name) \
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))
#define bfd_canonicalize_symtab(abfd, location) \
BFD_SEND (abfd, _bfd_canonicalize_symtab,\
(abfd, location))
bfd_set_symtab PARAMS ((bfd *abfd, asymbol **location, unsigned int count));
bfd_set_symtab PARAMS ((bfd *abfd, asymbol **location, unsigned int count));
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))
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))
bfd_decode_symclass PARAMS ((asymbol *symbol));
bfd_decode_symclass PARAMS ((asymbol *symbol));
bfd_is_undefined_symclass PARAMS ((int symclass));
bfd_is_undefined_symclass PARAMS ((int symclass));
bfd_symbol_info PARAMS ((asymbol *symbol, symbol_info *ret));
bfd_symbol_info PARAMS ((asymbol *symbol, symbol_info *ret));
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_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_invalid_error_code
} bfd_error_type;
bfd_get_error PARAMS ((void));
bfd_get_error PARAMS ((void));
bfd_set_error PARAMS ((bfd_error_type error_tag));
CONST char *
bfd_errmsg PARAMS ((bfd_error_type error_tag));
bfd_set_error PARAMS ((bfd_error_type error_tag));
CONST char *
bfd_errmsg PARAMS ((bfd_error_type error_tag));
bfd_perror PARAMS ((CONST char *message));
typedef void (*bfd_error_handler_type) PARAMS ((const char *, ...));
bfd_perror PARAMS ((CONST char *message));
typedef void (*bfd_error_handler_type) PARAMS ((const char *, ...));
bfd_set_error_handler PARAMS ((bfd_error_handler_type));
bfd_set_error_handler PARAMS ((bfd_error_handler_type));
bfd_set_error_program_name PARAMS ((const char *));
bfd_set_error_program_name PARAMS ((const char *));
bfd_get_error_handler PARAMS ((void));
bfd_get_error_handler PARAMS ((void));
bfd_get_reloc_upper_bound PARAMS ((bfd *abfd, asection *sect));
bfd_get_reloc_upper_bound PARAMS ((bfd *abfd, asection *sect));
bfd_canonicalize_reloc
PARAMS ((bfd *abfd,
asection *sec,
arelent **loc,
asymbol **syms));
bfd_canonicalize_reloc
PARAMS ((bfd *abfd,
asection *sec,
arelent **loc,
asymbol **syms));
bfd_set_reloc
PARAMS ((bfd *abfd, asection *sec, arelent **rel, unsigned int count)
bfd_set_reloc
PARAMS ((bfd *abfd, asection *sec, arelent **rel, unsigned int count)
bfd_set_file_flags PARAMS ((bfd *abfd, flagword flags));
bfd_set_file_flags PARAMS ((bfd *abfd, flagword flags));
bfd_get_arch_size PARAMS ((bfd *abfd));
bfd_get_arch_size PARAMS ((bfd *abfd));
bfd_get_sign_extend_vma PARAMS ((bfd *abfd));
bfd_get_sign_extend_vma PARAMS ((bfd *abfd));
bfd_set_start_address PARAMS ((bfd *abfd, bfd_vma vma));
bfd_set_start_address PARAMS ((bfd *abfd, bfd_vma vma));
bfd_get_mtime PARAMS ((bfd *abfd));
bfd_get_mtime PARAMS ((bfd *abfd));
bfd_get_size PARAMS ((bfd *abfd));
bfd_get_size PARAMS ((bfd *abfd));
bfd_get_gp_size PARAMS ((bfd *abfd));
bfd_get_gp_size PARAMS ((bfd *abfd));
bfd_set_gp_size PARAMS ((bfd *abfd, int i));
bfd_set_gp_size PARAMS ((bfd *abfd, int i));
bfd_scan_vma PARAMS ((CONST char *string, CONST char **end, int base));
bfd_scan_vma PARAMS ((CONST char *string, CONST char **end, int base));
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))
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))
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))
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))
bfd_set_private_flags PARAMS ((bfd *abfd, flagword flags));
#define bfd_set_private_flags(abfd, flags) \
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_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))
#define bfd_stat_arch_elt(abfd, stat) \
BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
struct bfd_link_order *, bfd_byte *,
boolean, asymbol **));
struct bfd_link_order *, bfd_byte *,
boolean, asymbol **));
bfd_get_next_mapent PARAMS ((bfd *abfd, symindex previous, carsym **sym));
bfd_get_next_mapent PARAMS ((bfd *abfd, symindex previous, carsym **sym));
bfd_set_archive_head PARAMS ((bfd *output, bfd *new_head));
bfd *
bfd_set_archive_head PARAMS ((bfd *output, bfd *new_head));
bfd *
CONST char *
bfd_core_file_failing_command PARAMS ((bfd *abfd));
CONST char *
bfd_core_file_failing_command PARAMS ((bfd *abfd));
bfd_core_file_failing_signal PARAMS ((bfd *abfd));
bfd_core_file_failing_signal PARAMS ((bfd *abfd));
core_file_matches_executable_p
PARAMS ((bfd *core_bfd, bfd *exec_bfd));
core_file_matches_executable_p
PARAMS ((bfd *core_bfd, bfd *exec_bfd));
PTR backend_data;
} bfd_target;
PTR backend_data;
} bfd_target;
bfd_set_default_target PARAMS ((const char *name));
const bfd_target *
bfd_set_default_target PARAMS ((const char *name));
const bfd_target *
const char **
bfd_target_list PARAMS ((void));
const char **
bfd_target_list PARAMS ((void));
bfd_search_for_target PARAMS ((int (* search_func) (const bfd_target *, void *), void *));
bfd_search_for_target PARAMS ((int (* search_func) (const bfd_target *, void *), void *));
bfd_check_format PARAMS ((bfd *abfd, bfd_format format));
bfd_check_format PARAMS ((bfd *abfd, bfd_format format));
bfd_check_format_matches PARAMS ((bfd *abfd, bfd_format format, char ***matching));
bfd_check_format_matches PARAMS ((bfd *abfd, bfd_format format, char ***matching));
bfd_set_format PARAMS ((bfd *abfd, bfd_format format));
CONST char *
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 */
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 */
- bfd_default_compatible,
+ bfd_default_compatible,
bfd_default_scan ,
&bfd_i386_arch_intel_syntax,
};
bfd_default_scan ,
&bfd_i386_arch_intel_syntax,
};
- bfd_default_compatible,
+ bfd_default_compatible,
bfd_default_scan ,
&i8086_arch,
};
bfd_default_scan ,
&i8086_arch,
};
true,
bfd_default_compatible,
bfd_default_scan ,
true,
bfd_default_compatible,
bfd_default_scan ,
char *info_ptr = stash->info_ptr;
char *end_ptr = info_ptr + unit_length;
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
version = read_2_bytes (abfd, info_ptr);
info_ptr += 2;
BFD_ASSERT (abbrev_length == 0
return false;
*pinfo = (PTR) stash;
return false;
*pinfo = (PTR) stash;
msec = find_debug_info (abfd, NULL);
if (! msec)
/* No dwarf2 info. Note that at this point the stash
msec = find_debug_info (abfd, NULL);
if (! msec)
/* No dwarf2 info. Note that at this point the stash
#define TARGET_LITTLE_SYM bfd_elf64_x86_64_vec
#define TARGET_LITTLE_NAME "elf64-x86-64"
#define ELF_ARCH bfd_arch_i386
#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
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:
The BFD contains the result of an executable core dump.
The BFD contains the result of an executable core dump.
the file, or an error results.
The function returns <<true>> on success, otherwise <<false>>
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
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
Then the user may choose a format and try again.
When done with the list that @var{matching} points to, the caller
if (abfd->format != bfd_unknown)
return (abfd->format == format)? true: false;
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;
all in the hope that one will be uniquely recognized. */
save_targ = abfd->xvec;
match_count = 0;
if (matching)
{
matching_vector =
if (matching)
{
matching_vector =
matching_vector[0] = NULL;
*matching = matching_vector;
}
matching_vector[0] = NULL;
*matching = matching_vector;
}
right_targ = 0;
/* Presume the answer is yes. */
right_targ = 0;
/* Presume the answer is yes. */
{
if (bfd_seek (abfd, (file_ptr)0, SEEK_SET) != 0) /* rewind! */
return false;
{
if (bfd_seek (abfd, (file_ptr)0, SEEK_SET) != 0) /* rewind! */
return false;
right_targ = BFD_SEND_FMT (abfd, _bfd_check_format, (abfd));
right_targ = BFD_SEND_FMT (abfd, _bfd_check_format, (abfd));
if (right_targ)
{
abfd->xvec = right_targ; /* Set the target as returned. */
if (right_targ)
{
abfd->xvec = right_targ; /* Set the target as returned. */
if (matching)
free (matching_vector);
if (matching)
free (matching_vector);
return true; /* File position has moved, BTW. */
}
return true; /* File position has moved, BTW. */
}
{
abfd->xvec = save_targ;
abfd->format = bfd_unknown;
{
abfd->xvec = save_targ;
abfd->format = bfd_unknown;
if (matching)
free (matching_vector);
if (matching)
free (matching_vector);
bfd_set_error (bfd_error_file_not_recognized);
bfd_set_error (bfd_error_file_not_recognized);
for (target = bfd_target_vector; *target != NULL; target++)
{
const bfd_target *temp;
for (target = bfd_target_vector; *target != NULL; target++)
{
const bfd_target *temp;
if (*target == &binary_vec)
continue;
if (*target == &binary_vec)
continue;
abfd->xvec = *target; /* Change BFD's target temporarily */
abfd->xvec = *target; /* Change BFD's target temporarily */
if (bfd_seek (abfd, (file_ptr)0, SEEK_SET) != 0)
return false;
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
/* 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));
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 (temp)
{ /* This format checks out as ok! */
right_targ = temp;
if (matching)
{
matching_vector[match_count] = temp->name;
matching_vector[match_count + 1] = NULL;
}
if (matching)
{
matching_vector[match_count] = temp->name;
matching_vector[match_count + 1] = NULL;
}
/* 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. */
/* 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;
{
abfd->xvec = save_targ;
abfd->format = bfd_unknown;
if (matching && bfd_get_error ()
!= bfd_error_file_ambiguously_recognized)
free (matching_vector);
if (matching && bfd_get_error ()
!= bfd_error_file_ambiguously_recognized)
free (matching_vector);
if (match_count == 1)
{
abfd->xvec = right_targ; /* Change BFD's target permanently. */
if (match_count == 1)
{
abfd->xvec = right_targ; /* Change BFD's target permanently. */
if (matching)
free (matching_vector);
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. */
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 (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);
if (matching)
free (matching_vector);
}
else
bfd_set_error (bfd_error_file_ambiguously_recognized);
/*
FUNCTION
bfd_format_string
/*
FUNCTION
bfd_format_string
bfd_format_string (format)
bfd_format format;
{
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))
switch (format)
{
case bfd_object:
return "object"; /* Linker/assember/compiler output. */
switch (format)
{
case bfd_object:
return "object"; /* Linker/assember/compiler output. */
return "archive"; /* Object archive file. */
return "archive"; /* Object archive file. */
return "core"; /* Core dump. */
return "core"; /* Core dump. */
format. I think. */
#define SWAP_MAGIC(ext) bfd_getl32 (ext)
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));
#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,
Write other derived routines
You will want to write other routines for your new hash table,
You will want an initialization routine which calls the
initialization routine of the hash table you are deriving from
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;
struct bfd_hash_entry *hashp;
unsigned int len;
unsigned int index;
hash = 0;
len = 0;
s = (const unsigned char *) string;
hash = 0;
len = 0;
s = (const unsigned char *) string;
| hp300hpux bfd | ----------> hpux w/gnu ext
hpux w/gnu extension ----> | |
| 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.
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
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 */
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
/*
DESCRIPTION
Swaps the information in an executable header taken from a raw
/* 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
/* 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
sym_end = (struct external_nlist *) (((char *) syms) + symbol_bytes);
/* first, march thru the table and figure out how many symbols there are */
sym_end = (struct external_nlist *) (((char *) syms) + symbol_bytes);
/* first, march thru the table and figure out how many symbols there are */
void
MY (swap_std_reloc_in) (abfd, bytes, cache_ptr, symbols, symcount)
bfd *abfd;
void
MY (swap_std_reloc_in) (abfd, bytes, cache_ptr, symbols, symcount)
bfd *abfd;
count = reloc_size / each_size;
count = reloc_size / each_size;
reloc_cache = (arelent *) bfd_zalloc (abfd, (size_t) (count * sizeof
(arelent)));
if (!reloc_cache && count != 0)
reloc_cache = (arelent *) bfd_zalloc (abfd, (size_t) (count * sizeof
(arelent)));
if (!reloc_cache && count != 0)
bfd_get_symcount (abfd));
}
bfd_get_symcount (abfd));
}
bfd_release (abfd, relocs);
asect->relocation = reloc_cache;
asect->reloc_count = count;
return true;
}
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 */
/************************************************************************/
/* 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 *));
}
return (bfd_get_symcount (abfd) + 1) * (sizeof (aout_symbol_type *));
}
long
MY (canonicalize_reloc) (abfd, section, relptr, symbols)
bfd *abfd;
long
MY (canonicalize_reloc) (abfd, section, relptr, symbols)
bfd *abfd;
return section->reloc_count;
}
return section->reloc_count;
}
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Written by the Center for Software Science at the University of Utah
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Written by the Center for Software Science at the University of Utah
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. */
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.
/* This file can only be compiled on systems which use HPPA-BSD style
core files.
/* Sanity checks. Make sure the size of the core file matches the
the size computed from information within the core itself. */
{
/* 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,
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);
+ 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
core_datasec (abfd) = make_bfd_asection (abfd, ".data",
SEC_ALLOC + SEC_LOAD
/* There's no way to know this... */
return true;
}
/* There's no way to know this... */
return true;
}
\f
#define hppabsd_core_get_symtab_upper_bound \
_bfd_nosymbols_get_symtab_upper_bound
\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. */
swap_abort ()
{
/* This way doesn't require any declaration for ANSI to fuck up. */
}
#define NO_GET ((bfd_vma (*) PARAMS (( const bfd_byte *))) swap_abort )
}
#define NO_GET ((bfd_vma (*) PARAMS (( const bfd_byte *))) swap_abort )
bfd_false, bfd_false,
bfd_false, bfd_false
},
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_GENERIC (_bfd_generic),
BFD_JUMP_TABLE_COPY (_bfd_generic),
BFD_JUMP_TABLE_CORE (hppabsd_core),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
NULL,
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
NULL,
(PTR) 0 /* backend_data */
};
#endif
(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. */
/* .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. */
{
int sig;
int lwpid; /* Kernel thread ID. */
{
int sig;
int lwpid; /* Kernel thread ID. */
/* 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.
/* 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;
*/
unknown_sections++;
break;
default: return 0; /*unrecognized core file type */
}
}
default: return 0; /*unrecognized core file type */
}
}
bfd_false, bfd_false,
bfd_false, bfd_false
},
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_GENERIC (_bfd_generic),
BFD_JUMP_TABLE_COPY (_bfd_generic),
BFD_JUMP_TABLE_CORE (hpux_core),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
NULL,
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
NULL,
(PTR) 0 /* backend_data */
};
(PTR) 0 /* backend_data */
};