diff options
Diffstat (limited to 'bfd/libcoff.h')
-rw-r--r-- | bfd/libcoff.h | 133 |
1 files changed, 129 insertions, 4 deletions
diff --git a/bfd/libcoff.h b/bfd/libcoff.h index 094c30b..ee4f471 100644 --- a/bfd/libcoff.h +++ b/bfd/libcoff.h @@ -73,7 +73,40 @@ typedef struct coff_tdata * macro is only ever applied to an asymbol. */ #define coffsymbol(asymbol) ((coff_symbol_type *)(&((asymbol)->the_bfd))) - +/* Functions in coffgen.c. */ +extern bfd_target *coff_object_p PARAMS ((bfd *)); +extern struct sec *coff_section_from_bfd_index PARAMS ((bfd *, int)); +extern unsigned int coff_get_symtab_upper_bound PARAMS ((bfd *)); +extern unsigned int coff_get_symtab PARAMS ((bfd *, asymbol **)); +extern void coff_count_linenumbers PARAMS ((bfd *)); +extern struct coff_symbol_struct *coff_symbol_from PARAMS ((bfd *, asymbol *)); +extern void coff_renumber_symbols PARAMS ((bfd *)); +extern void coff_mangle_symbols PARAMS ((bfd *)); +extern void coff_write_symbols PARAMS ((bfd *)); +extern void coff_write_linenumbers PARAMS ((bfd *)); +extern alent *coff_get_lineno PARAMS ((bfd *, asymbol *)); +extern asymbol *coff_section_symbol PARAMS ((bfd *, char *)); +extern struct coff_ptr_struct *coff_get_normalized_symtab PARAMS ((bfd *)); +extern unsigned int coff_get_reloc_upper_bound PARAMS ((bfd *, sec_ptr)); +extern asymbol *coff_make_empty_symbol PARAMS ((bfd *)); +extern void coff_print_symbol PARAMS ((bfd *, PTR filep, asymbol *, + bfd_print_symbol_type how)); +extern asymbol *coff_make_debug_symbol PARAMS ((bfd *, PTR, unsigned long)); +extern boolean coff_find_nearest_line PARAMS ((bfd *, + asection *, + asymbol **, + bfd_vma offset, + CONST char **filename_ptr, + CONST char **functionname_ptr, + unsigned int *line_ptr)); +extern int coff_sizeof_headers PARAMS ((bfd *, boolean reloc)); +extern boolean bfd_coff_reloc16_relax_section PARAMS ((bfd *, + asection *, + asymbol **)); +extern bfd_byte *bfd_coff_reloc16_get_relocated_section_contents + PARAMS ((bfd *, bfd_seclet_type *, bfd_byte *)); +extern bfd_vma bfd_coff_reloc16_get_value PARAMS ((arelent *, + bfd_seclet_type *)); /* And more taken from the source .. */ @@ -118,7 +151,8 @@ struct lineno_cache_entry *lineno; /* Have the line numbers been relocated yet ? */ boolean done_lineno; } coff_symbol_type; -typedef struct { +typedef struct +{ void (*_bfd_coff_swap_aux_in) PARAMS (( bfd *abfd , PTR ext, @@ -173,10 +207,58 @@ typedef struct { PTR in, PTR out)); + unsigned int _bfd_filhsz; + unsigned int _bfd_aoutsz; + unsigned int _bfd_scnhsz; + unsigned int _bfd_symesz; + unsigned int _bfd_auxesz; + unsigned int _bfd_linesz; + boolean _bfd_coff_long_filenames; + void (*_bfd_coff_swap_filehdr_in) PARAMS (( + bfd *abfd, + PTR ext, + PTR in)); + void (*_bfd_coff_swap_aouthdr_in) PARAMS (( + bfd *abfd, + PTR ext, + PTR in)); + void (*_bfd_coff_swap_scnhdr_in) PARAMS (( + bfd *abfd, + PTR ext, + PTR in)); + boolean (*_bfd_coff_bad_format_hook) PARAMS (( + bfd *abfd, + PTR internal_filehdr)); + boolean (*_bfd_coff_set_arch_mach_hook) PARAMS (( + bfd *abfd, + PTR internal_filehdr)); + PTR (*_bfd_coff_mkobject_hook) PARAMS (( + bfd *abfd, + PTR internal_filehdr)); + flagword (*_bfd_styp_to_sec_flags_hook) PARAMS (( + bfd *abfd, + PTR internal_scnhdr)); + asection *(*_bfd_make_section_hook) PARAMS (( + bfd *abfd, + char *name)); + void (*_bfd_set_alignment_hook) PARAMS (( + bfd *abfd, + asection *sec, + PTR internal_scnhdr)); + boolean (*_bfd_coff_slurp_symbol_table) PARAMS (( + bfd *abfd)); + boolean (*_bfd_coff_symname_in_debug) PARAMS (( + bfd *abfd, + struct internal_syment *sym)); + void (*_bfd_coff_reloc16_extra_cases) PARAMS (( + bfd *abfd, + bfd_seclet_type *seclet, + arelent *reloc, + bfd_byte *data, + unsigned int *src_ptr, + unsigned int *dst_ptr)); } bfd_coff_backend_data; -extern bfd_coff_backend_data bfd_coff_std_swap_table; - #define coff_backend_info(abfd) ((bfd_coff_backend_data *) (abfd)->xvec->backend_data) #define bfd_coff_swap_aux_in(a,e,t,c,i) \ @@ -209,3 +291,46 @@ extern bfd_coff_backend_data bfd_coff_std_swap_table; #define bfd_coff_swap_aouthdr_out(abfd, i,o) \ ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_out) (abfd, i, o)) +#define bfd_coff_filhsz(abfd) (coff_backend_info (abfd)->_bfd_filhsz) +#define bfd_coff_aoutsz(abfd) (coff_backend_info (abfd)->_bfd_aoutsz) +#define bfd_coff_scnhsz(abfd) (coff_backend_info (abfd)->_bfd_scnhsz) +#define bfd_coff_symesz(abfd) (coff_backend_info (abfd)->_bfd_symesz) +#define bfd_coff_auxesz(abfd) (coff_backend_info (abfd)->_bfd_auxesz) +#define bfd_coff_linesz(abfd) (coff_backend_info (abfd)->_bfd_linesz) +#define bfd_coff_long_filenames(abfd) (coff_backend_info (abfd)->_bfd_coff_long_filenames) +#define bfd_coff_swap_filehdr_in(abfd, i,o) \ + ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_in) (abfd, i, o)) + +#define bfd_coff_swap_aouthdr_in(abfd, i,o) \ + ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_in) (abfd, i, o)) + +#define bfd_coff_swap_scnhdr_in(abfd, i,o) \ + ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_in) (abfd, i, o)) + +#define bfd_coff_bad_format_hook(abfd, filehdr) \ + ((coff_backend_info (abfd)->_bfd_coff_bad_format_hook) (abfd, filehdr)) + +#define bfd_coff_set_arch_mach_hook(abfd, filehdr)\ + ((coff_backend_info (abfd)->_bfd_coff_set_arch_mach_hook) (abfd, filehdr)) +#define bfd_coff_mkobject_hook(abfd, filehdr)\ + ((coff_backend_info (abfd)->_bfd_coff_mkobject_hook) (abfd, filehdr)) + +#define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr)\ + ((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook) (abfd, scnhdr)) + +#define bfd_coff_make_section_hook(abfd, name)\ + ((coff_backend_info (abfd)->_bfd_make_section_hook) (abfd, name)) + +#define bfd_coff_set_alignment_hook(abfd, sec, scnhdr)\ + ((coff_backend_info (abfd)->_bfd_set_alignment_hook) (abfd, sec, scnhdr)) + +#define bfd_coff_slurp_symbol_table(abfd)\ + ((coff_backend_info (abfd)->_bfd_coff_slurp_symbol_table) (abfd)) + +#define bfd_coff_symname_in_debug(abfd, sym)\ + ((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym)) + +#define bfd_coff_reloc16_extra_cases(abfd, seclet, reloc, data, src_ptr, dst_ptr)\ + ((coff_backend_info (abfd)->_bfd_coff_reloc16_extra_cases)\ + (abfd, seclet, reloc, data, src_ptr, dst_ptr)) + |