diff options
49 files changed, 1714 insertions, 1426 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 53ef902..df39493 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,37 @@ +Wed Apr 6 17:24:14 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) + + * targets.c (bfd_target): Rearranged fields in target vector. + Removed _bfd_debug_info_start, _bfd_debug_info_end and + _bfd_debug_info_accumulate, which were never used. + (BFD_JUMP_TABLE_GENERIC, BFD_JUMP_TABLE_COPY): Defined. + (BFD_JUMP_TABLE_CORE, BFD_JUMP_TABLE_ARCHIVE): Defined. + (BFD_JUMP_TABLE_SYMBOLS, BFD_JUMP_TABLE_RELOCS): Defined. + (BFD_JUMP_TABLE_WRITE, BFD_JUMP_TABLE_LINK): Defined. + * All backends: Changed to use the new BFD_JUMP_TABLE_* macros + rather than the single JUMP_TABLE macro. Removed many of the + weird macro definitions needed to support the monolithic + JUMP_TABLE. + * bfd-in.h (JUMP_TABLE): Removed. + * libbfd-in.h: Define a bunch of macros, and declare a few + functions, for use with the new BFD_JUMP_TABLE_* macros. + * libbfd.c (_bfd_dummy_new_section_hook): Removed. + (bfd_false): Set bfd_error_invalid_operation. + (bfd_nullvoidptr): Likewise. + (bfd_n1): New function. + (_bfd_nocore_core_file_matches_executable_p): Renamed from + _bfd_dummy_core_file_matches_executable_p. + (_bfd_nocore_core_file_failing_command): Similar rename. Set + bfd_error_invalid_operation. + (_bfd_nocore_core_file_failing_signal): Likewise. + (_bfd_generic_get_section_contents): Renamed from + bfd_generic_get_section_contents. Changed all callers. + (_bfd_generic_set_section_contents): Similar rename. + * ieee.c: #if 0 out ieee_bfd_debug_info_start, + ieee_bfd_debug_info_end, ieee_bfd_debug_info_accumulate. They + were never called. + * bfd-in2.h: Rebuilt. + * libbfd.h: Rebuilt. + Tue Apr 5 22:10:04 1994 Jeffrey A. Law (law@snake.cs.utah.edu) * Crude support for examining dynamic libraries. diff --git a/bfd/aix386-core.c b/bfd/aix386-core.c index 99c015e..7f7a6bb 100644 --- a/bfd/aix386-core.c +++ b/bfd/aix386-core.c @@ -244,73 +244,6 @@ aix386_core_file_matches_executable_p (core_bfd, exec_bfd) point */ } -/* No archive file support via this BFD */ -#define aix386_openr_next_archived_file bfd_generic_openr_next_archived_file -#define aix386_generic_stat_arch_elt bfd_generic_stat_arch_elt -#define aix386_slurp_armap bfd_false -#define aix386_slurp_extended_name_table bfd_true -#define aix386_write_armap (PROTO (boolean, (*), \ - (bfd *arch, unsigned int elength, struct orl *map, \ - unsigned int orl_count, int stridx))) bfd_false -#define aix386_truncate_arname bfd_dont_truncate_arname - -#define aix386_close_and_cleanup bfd_generic_close_and_cleanup -#define aix386_set_section_contents (PROTO(boolean, (*), \ - (bfd *abfd, asection *section, PTR data, file_ptr offset, \ - bfd_size_type count))) bfd_generic_set_section_contents -#define aix386_get_section_contents bfd_generic_get_section_contents -#define aix386_new_section_hook (PROTO (boolean, (*), \ - (bfd *, sec_ptr))) bfd_true -#define aix386_get_symtab_upper_bound bfd_0l -#define aix386_get_symtab (PROTO (long, (*), \ - (bfd *, struct symbol_cache_entry **))) bfd_0l -#define aix386_get_reloc_upper_bound (PROTO (long, (*), \ - (bfd *, sec_ptr))) bfd_0l -#define aix386_canonicalize_reloc (PROTO (long, (*), \ - (bfd *, sec_ptr, arelent **, struct symbol_cache_entry**))) bfd_0l -#define aix386_make_empty_symbol (PROTO ( \ - struct symbol_cache_entry *, (*), (bfd *))) bfd_false -#define aix386_print_symbol (PROTO (void, (*), \ - (bfd *, PTR, struct symbol_cache_entry *, \ - bfd_print_symbol_type))) bfd_false -#define aix386_get_symbol_info (PROTO (void, (*), \ - (bfd *, struct symbol_cache_entry *, \ - symbol_info *))) bfd_false -#define aix386_get_lineno (PROTO (alent *, (*), \ - (bfd *, struct symbol_cache_entry *))) bfd_nullvoidptr -#define aix386_set_arch_mach (PROTO (boolean, (*), \ - (bfd *, enum bfd_architecture, unsigned long))) bfd_false -#define aix386_find_nearest_line (PROTO (boolean, (*), \ - (bfd *abfd, struct sec *section, \ - struct symbol_cache_entry **symbols,bfd_vma offset, \ - CONST char **file, CONST char **func, unsigned int *line))) bfd_false -#define aix386_sizeof_headers (PROTO (int, (*), \ - (bfd *, boolean))) bfd_0 - -#define aix386_bfd_debug_info_start bfd_void -#define aix386_bfd_debug_info_end bfd_void -#define aix386_bfd_debug_info_accumulate (PROTO (void, (*), \ - (bfd *, struct sec *))) bfd_void -#define aix386_bfd_get_relocated_section_contents bfd_generic_get_relocated_section_contents -#define aix386_bfd_relax_section bfd_generic_relax_section -#define aix386_bfd_reloc_type_lookup \ - ((CONST struct reloc_howto_struct *(*) PARAMS ((bfd *, bfd_reloc_code_real_type))) bfd_nullvoidptr) -#define aix386_bfd_make_debug_symbol \ - ((asymbol *(*) PARAMS ((bfd *, void *, unsigned long))) bfd_nullvoidptr) -#define aix386_bfd_link_hash_table_create \ - ((struct bfd_link_hash_table *(*) PARAMS ((bfd *))) bfd_nullvoidptr) -#define aix386_bfd_link_add_symbols \ - ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false) -#define aix386_bfd_final_link \ - ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false) -#define aix386_bfd_copy_private_section_data \ - ((boolean (*) PARAMS ((bfd *, asection *, bfd *, asection *))) bfd_false) -#define aix386_bfd_copy_private_bfd_data \ - ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_false) -#define aix386_bfd_is_local_label \ - ((boolean (*) PARAMS ((bfd *, asymbol *))) bfd_false) -#define aix386_bfd_free_cached_info bfd_true - /* If somebody calls any byte-swapping routines, shoot them. */ void swap_abort() @@ -349,7 +282,15 @@ bfd_target aix386_core_vec = bfd_false, bfd_false}, {bfd_false, bfd_false, /* bfd_write_contents */ bfd_false, bfd_false}, - - JUMP_TABLE(aix386), + + BFD_JUMP_TABLE_GENERIC (_bfd_generic), + BFD_JUMP_TABLE_COPY (_bfd_generic), + BFD_JUMP_TABLE_CORE (aix386), + BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive), + BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols), + BFD_JUMP_TABLE_RELOCS (_bfd_norelocs), + BFD_JUMP_TABLE_WRITE (_bfd_generic), + BFD_JUMP_TABLE_LINK (_bfd_nolink), + (PTR) 0 }; diff --git a/bfd/aout-adobe.c b/bfd/aout-adobe.c index 3abd88e..4218859 100644 --- a/bfd/aout-adobe.c +++ b/bfd/aout-adobe.c @@ -465,39 +465,26 @@ aout_adobe_sizeof_headers (ignore_abfd, ignore) /* Build the transfer vector for Adobe A.Out files. */ -/* We don't have core files. */ -#define aout_32_core_file_failing_command _bfd_dummy_core_file_failing_command -#define aout_32_core_file_failing_signal _bfd_dummy_core_file_failing_signal -#define aout_32_core_file_matches_executable_p \ - _bfd_dummy_core_file_matches_executable_p - -/* We use BSD-Unix generic archive files. */ -#define aout_32_openr_next_archived_file bfd_generic_openr_next_archived_file -#define aout_32_generic_stat_arch_elt bfd_generic_stat_arch_elt -#define aout_32_slurp_armap bfd_slurp_bsd_armap -#define aout_32_slurp_extended_name_table bfd_true -#define aout_32_write_armap bsd_write_armap -#define aout_32_truncate_arname bfd_bsd_truncate_arname - -/* We override these routines from the usual a.out file routines. */ -#define aout_32_set_section_contents aout_adobe_set_section_contents -#define aout_32_set_arch_mach aout_adobe_set_arch_mach -#define aout_32_sizeof_headers aout_adobe_sizeof_headers - -#define aout_32_bfd_debug_info_start bfd_void -#define aout_32_bfd_debug_info_end bfd_void -#define aout_32_bfd_debug_info_accumulate (PROTO(void,(*),(bfd*, struct sec *))) bfd_void +#define aout_32_close_and_cleanup aout_32_bfd_free_cached_info -#define aout_32_bfd_get_relocated_section_contents bfd_generic_get_relocated_section_contents -#define aout_32_bfd_relax_section bfd_generic_relax_section -#define aout_32_bfd_reloc_type_lookup \ - ((CONST struct reloc_howto_struct *(*) PARAMS ((bfd *, bfd_reloc_code_real_type))) bfd_nullvoidptr) #define aout_32_bfd_make_debug_symbol \ ((asymbol *(*) PARAMS ((bfd *, void *, unsigned long))) bfd_nullvoidptr) -#define aout_32_bfd_link_hash_table_create _bfd_generic_link_hash_table_create -#define aout_32_bfd_link_add_symbols _bfd_generic_link_add_symbols -#define aout_32_bfd_final_link _bfd_generic_final_link -#define aout_32_close_and_cleanup aout_32_bfd_free_cached_info + +#define aout_32_bfd_reloc_type_lookup \ + ((CONST struct reloc_howto_struct *(*) \ + PARAMS ((bfd *, bfd_reloc_code_real_type))) bfd_nullvoidptr) + +#define aout_32_set_arch_mach aout_adobe_set_arch_mach +#define aout_32_set_section_contents aout_adobe_set_section_contents + +#define aout_32_sizeof_headers aout_adobe_sizeof_headers +#define aout_32_bfd_get_relocated_section_contents \ + bfd_generic_get_relocated_section_contents +#define aout_32_bfd_relax_section bfd_generic_relax_section +#define aout_32_bfd_link_hash_table_create \ + _bfd_generic_link_hash_table_create +#define aout_32_bfd_link_add_symbols _bfd_generic_link_add_symbols +#define aout_32_bfd_final_link _bfd_generic_final_link bfd_target a_out_adobe_vec = { @@ -528,6 +515,14 @@ bfd_target a_out_adobe_vec = {bfd_false, aout_adobe_write_object_contents, /* bfd_write_contents */ _bfd_write_archive_contents, bfd_false}, - JUMP_TABLE(aout_32), + BFD_JUMP_TABLE_GENERIC (aout_32), + BFD_JUMP_TABLE_COPY (_bfd_generic), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_bsd), + BFD_JUMP_TABLE_SYMBOLS (aout_32), + BFD_JUMP_TABLE_RELOCS (aout_32), + BFD_JUMP_TABLE_WRITE (aout_32), + BFD_JUMP_TABLE_LINK (aout_32), + (PTR) 0 }; diff --git a/bfd/aout-target.h b/bfd/aout-target.h index 8d2f616..68cda6c 100644 --- a/bfd/aout-target.h +++ b/bfd/aout-target.h @@ -272,14 +272,14 @@ MY_bfd_final_link (abfd, info) /* No core file defined here -- configure in trad-core.c separately. */ #ifndef MY_core_file_failing_command -#define MY_core_file_failing_command _bfd_dummy_core_file_failing_command +#define MY_core_file_failing_command _bfd_nocore_core_file_failing_command #endif #ifndef MY_core_file_failing_signal -#define MY_core_file_failing_signal _bfd_dummy_core_file_failing_signal +#define MY_core_file_failing_signal _bfd_nocore_core_file_failing_signal #endif #ifndef MY_core_file_matches_executable_p #define MY_core_file_matches_executable_p \ - _bfd_dummy_core_file_matches_executable_p + _bfd_nocore_core_file_matches_executable_p #endif #ifndef MY_core_file_p #define MY_core_file_p _bfd_dummy_target @@ -305,18 +305,6 @@ MY_bfd_final_link (abfd, info) #ifndef MY_core_file_matches_executable_p #define MY_core_file_matches_executable_p NAME(aout,core_file_matches_executable_p) #endif -#ifndef MY_slurp_armap -#define MY_slurp_armap NAME(aout,slurp_armap) -#endif -#ifndef MY_slurp_extended_name_table -#define MY_slurp_extended_name_table NAME(aout,slurp_extended_name_table) -#endif -#ifndef MY_truncate_arname -#define MY_truncate_arname NAME(aout,truncate_arname) -#endif -#ifndef MY_write_armap -#define MY_write_armap NAME(aout,write_armap) -#endif #ifndef MY_set_section_contents #define MY_set_section_contents NAME(aout,set_section_contents) #endif @@ -353,15 +341,9 @@ MY_bfd_final_link (abfd, info) #ifndef MY_set_arch_mach #define MY_set_arch_mach NAME(aout,set_arch_mach) #endif -#ifndef MY_openr_next_archived_file -#define MY_openr_next_archived_file NAME(aout,openr_next_archived_file) -#endif #ifndef MY_find_nearest_line #define MY_find_nearest_line NAME(aout,find_nearest_line) #endif -#ifndef MY_generic_stat_arch_elt -#define MY_generic_stat_arch_elt NAME(aout,generic_stat_arch_elt) -#endif #ifndef MY_sizeof_headers #define MY_sizeof_headers NAME(aout,sizeof_headers) #endif @@ -387,11 +369,10 @@ MY_bfd_final_link (abfd, info) #ifndef MY_bfd_copy_private_section_data #define MY_bfd_copy_private_section_data \ - ((boolean (*) PARAMS ((bfd *, asection *, bfd *, asection *))) bfd_true) + _bfd_generic_bfd_copy_private_section_data #endif #ifndef MY_bfd_copy_private_bfd_data -#define MY_bfd_copy_private_bfd_data \ - ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_true) +#define MY_bfd_copy_private_bfd_data _bfd_generic_bfd_copy_private_bfd_data #endif #ifndef MY_bfd_is_local_label @@ -458,7 +439,15 @@ bfd_target MY(vec) = {bfd_false, MY_write_object_contents, /* bfd_write_contents */ _bfd_write_archive_contents, bfd_false}, - JUMP_TABLE (MY), + BFD_JUMP_TABLE_GENERIC (MY), + BFD_JUMP_TABLE_COPY (MY), + BFD_JUMP_TABLE_CORE (MY), + BFD_JUMP_TABLE_ARCHIVE (MY), + BFD_JUMP_TABLE_SYMBOLS (MY), + BFD_JUMP_TABLE_RELOCS (MY), + BFD_JUMP_TABLE_WRITE (MY), + BFD_JUMP_TABLE_LINK (MY), + (PTR) MY_backend_data, }; #endif /* MY_BFD_TARGET */ diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h index d42d2c5..e2f9226 100644 --- a/bfd/bfd-in.h +++ b/bfd/bfd-in.h @@ -389,11 +389,6 @@ extern void bfd_hash_traverse PARAMS ((struct bfd_hash_table *, PTR), PTR info)); -/* The code that implements targets can initialize a jump table with this - macro. It must name all its routines the same way (a prefix plus - the standard routine suffix), or it must #define the routines that - are not so named, before calling JUMP_TABLE in the initializer. */ - /* Semi-portable string concatenation in cpp. The CAT4 hack is to avoid a problem with some strict ANSI C preprocessors. The problem is, "32_" is not a valid preprocessing token, and we don't @@ -419,48 +414,7 @@ extern void bfd_hash_traverse PARAMS ((struct bfd_hash_table *, #endif #endif -#define JUMP_TABLE(NAME)\ -CAT(NAME,_core_file_failing_command),\ -CAT(NAME,_core_file_failing_signal),\ -CAT(NAME,_core_file_matches_executable_p),\ -CAT(NAME,_slurp_armap),\ -CAT(NAME,_slurp_extended_name_table),\ -CAT(NAME,_truncate_arname),\ -CAT(NAME,_write_armap),\ -CAT(NAME,_close_and_cleanup),\ -CAT(NAME,_set_section_contents),\ -CAT(NAME,_get_section_contents),\ -CAT(NAME,_new_section_hook),\ -CAT(NAME,_bfd_copy_private_section_data),\ -CAT(NAME,_bfd_copy_private_bfd_data),\ -CAT(NAME,_get_symtab_upper_bound),\ -CAT(NAME,_get_symtab),\ -CAT(NAME,_get_reloc_upper_bound),\ -CAT(NAME,_canonicalize_reloc),\ -CAT(NAME,_make_empty_symbol),\ -CAT(NAME,_print_symbol),\ -CAT(NAME,_get_symbol_info),\ -CAT(NAME,_bfd_is_local_label),\ -CAT(NAME,_get_lineno),\ -CAT(NAME,_set_arch_mach),\ -CAT(NAME,_openr_next_archived_file),\ -CAT(NAME,_find_nearest_line),\ -CAT(NAME,_generic_stat_arch_elt),\ -CAT(NAME,_sizeof_headers),\ -CAT(NAME,_bfd_debug_info_start),\ -CAT(NAME,_bfd_debug_info_end),\ -CAT(NAME,_bfd_debug_info_accumulate),\ -CAT(NAME,_bfd_get_relocated_section_contents),\ -CAT(NAME,_bfd_relax_section),\ -CAT(NAME,_bfd_reloc_type_lookup),\ -CAT(NAME,_bfd_make_debug_symbol),\ -CAT(NAME,_bfd_link_hash_table_create),\ -CAT(NAME,_bfd_link_add_symbols),\ -CAT(NAME,_bfd_final_link),\ -CAT(NAME,_bfd_free_cached_info) - #define COFF_SWAP_TABLE (PTR) &bfd_coff_std_swap_table - /* User program access to BFD facilities */ diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index 248c04f..8b07188 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -389,11 +389,6 @@ extern void bfd_hash_traverse PARAMS ((struct bfd_hash_table *, PTR), PTR info)); -/* The code that implements targets can initialize a jump table with this - macro. It must name all its routines the same way (a prefix plus - the standard routine suffix), or it must #define the routines that - are not so named, before calling JUMP_TABLE in the initializer. */ - /* Semi-portable string concatenation in cpp. The CAT4 hack is to avoid a problem with some strict ANSI C preprocessors. The problem is, "32_" is not a valid preprocessing token, and we don't @@ -419,48 +414,7 @@ extern void bfd_hash_traverse PARAMS ((struct bfd_hash_table *, #endif #endif -#define JUMP_TABLE(NAME)\ -CAT(NAME,_core_file_failing_command),\ -CAT(NAME,_core_file_failing_signal),\ -CAT(NAME,_core_file_matches_executable_p),\ -CAT(NAME,_slurp_armap),\ -CAT(NAME,_slurp_extended_name_table),\ -CAT(NAME,_truncate_arname),\ -CAT(NAME,_write_armap),\ -CAT(NAME,_close_and_cleanup),\ -CAT(NAME,_set_section_contents),\ -CAT(NAME,_get_section_contents),\ -CAT(NAME,_new_section_hook),\ -CAT(NAME,_bfd_copy_private_section_data),\ -CAT(NAME,_bfd_copy_private_bfd_data),\ -CAT(NAME,_get_symtab_upper_bound),\ -CAT(NAME,_get_symtab),\ -CAT(NAME,_get_reloc_upper_bound),\ -CAT(NAME,_canonicalize_reloc),\ -CAT(NAME,_make_empty_symbol),\ -CAT(NAME,_print_symbol),\ -CAT(NAME,_get_symbol_info),\ -CAT(NAME,_bfd_is_local_label),\ -CAT(NAME,_get_lineno),\ -CAT(NAME,_set_arch_mach),\ -CAT(NAME,_openr_next_archived_file),\ -CAT(NAME,_find_nearest_line),\ -CAT(NAME,_generic_stat_arch_elt),\ -CAT(NAME,_sizeof_headers),\ -CAT(NAME,_bfd_debug_info_start),\ -CAT(NAME,_bfd_debug_info_end),\ -CAT(NAME,_bfd_debug_info_accumulate),\ -CAT(NAME,_bfd_get_relocated_section_contents),\ -CAT(NAME,_bfd_relax_section),\ -CAT(NAME,_bfd_reloc_type_lookup),\ -CAT(NAME,_bfd_make_debug_symbol),\ -CAT(NAME,_bfd_link_hash_table_create),\ -CAT(NAME,_bfd_link_add_symbols),\ -CAT(NAME,_bfd_final_link),\ -CAT(NAME,_bfd_free_cached_info) - #define COFF_SWAP_TABLE (PTR) &bfd_coff_std_swap_table - /* User program access to BFD facilities */ @@ -2025,9 +1979,52 @@ typedef struct bfd_target struct bfd_target * (*_bfd_check_format[bfd_type_end]) PARAMS ((bfd *)); boolean (*_bfd_set_format[bfd_type_end]) PARAMS ((bfd *)); boolean (*_bfd_write_contents[bfd_type_end]) PARAMS ((bfd *)); + + /* Generic entry points. */ +#define BFD_JUMP_TABLE_GENERIC(NAME)\ +CAT(NAME,_close_and_cleanup),\ +CAT(NAME,_bfd_free_cached_info),\ +CAT(NAME,_new_section_hook),\ +CAT(NAME,_get_section_contents) + /* Called when the BFD is being closed to do any necessary cleanup. */ + boolean (*_close_and_cleanup) PARAMS ((bfd *)); + /* Ask the BFD to free all cached information. */ + boolean (*_bfd_free_cached_info) PARAMS ((bfd *)); + /* Called when a new section is created. */ + boolean (*_new_section_hook) PARAMS ((bfd *, sec_ptr)); + /* Read the contents of a section. */ + boolean (*_bfd_get_section_contents) PARAMS ((bfd *, sec_ptr, PTR, + file_ptr, bfd_size_type)); + + /* Entry points to copy private data. */ +#define BFD_JUMP_TABLE_COPY(NAME)\ +CAT(NAME,_bfd_copy_private_bfd_data),\ +CAT(NAME,_bfd_copy_private_section_data) + /* Called to copy BFD general private data from one object file + to another. */ + boolean (*_bfd_copy_private_bfd_data) PARAMS ((bfd *, bfd *)); + /* Called to copy BFD private section data from one object file + to another. */ + boolean (*_bfd_copy_private_section_data) PARAMS ((bfd *, sec_ptr, + bfd *, sec_ptr)); + + /* Core file entry points. */ +#define BFD_JUMP_TABLE_CORE(NAME)\ +CAT(NAME,_core_file_failing_command),\ +CAT(NAME,_core_file_failing_signal),\ +CAT(NAME,_core_file_matches_executable_p) char * (*_core_file_failing_command) PARAMS ((bfd *)); int (*_core_file_failing_signal) PARAMS ((bfd *)); boolean (*_core_file_matches_executable_p) PARAMS ((bfd *, bfd *)); + + /* Archive entry points. */ +#define BFD_JUMP_TABLE_ARCHIVE(NAME)\ +CAT(NAME,_slurp_armap),\ +CAT(NAME,_slurp_extended_name_table),\ +CAT(NAME,_truncate_arname),\ +CAT(NAME,_write_armap),\ +CAT(NAME,_openr_next_archived_file),\ +CAT(NAME,_generic_stat_arch_elt) boolean (*_bfd_slurp_armap) PARAMS ((bfd *)); boolean (*_bfd_slurp_extended_name_table) PARAMS ((bfd *)); void (*_bfd_truncate_arname) PARAMS ((bfd *, CONST char *, char *)); @@ -2036,21 +2033,23 @@ typedef struct bfd_target struct orl *map, unsigned int orl_count, int stridx)); - boolean (*_close_and_cleanup) PARAMS ((bfd *)); - boolean (*_bfd_set_section_contents) PARAMS ((bfd *, sec_ptr, PTR, - file_ptr, bfd_size_type)); - boolean (*_bfd_get_section_contents) PARAMS ((bfd *, sec_ptr, PTR, - file_ptr, bfd_size_type)); - boolean (*_new_section_hook) PARAMS ((bfd *, sec_ptr)); - boolean (*_bfd_copy_private_section_data) PARAMS ((bfd *, sec_ptr, - bfd *, sec_ptr)); - boolean (*_bfd_copy_private_bfd_data) PARAMS ((bfd *, bfd *)); + bfd * (*openr_next_archived_file) PARAMS ((bfd *arch, bfd *prev)); + int (*_bfd_stat_arch_elt) PARAMS ((bfd *, struct stat *)); + + /* Entry points used for symbols. */ +#define BFD_JUMP_TABLE_SYMBOLS(NAME)\ +CAT(NAME,_get_symtab_upper_bound),\ +CAT(NAME,_get_symtab),\ +CAT(NAME,_make_empty_symbol),\ +CAT(NAME,_print_symbol),\ +CAT(NAME,_get_symbol_info),\ +CAT(NAME,_bfd_is_local_label),\ +CAT(NAME,_get_lineno),\ +CAT(NAME,_find_nearest_line),\ +CAT(NAME,_bfd_make_debug_symbol) long (*_bfd_get_symtab_upper_bound) PARAMS ((bfd *)); long (*_bfd_canonicalize_symtab) PARAMS ((bfd *, struct symbol_cache_entry **)); - long (*_get_reloc_upper_bound) PARAMS ((bfd *, sec_ptr)); - long (*_bfd_canonicalize_reloc) PARAMS ((bfd *, sec_ptr, arelent **, - struct symbol_cache_entry **)); struct symbol_cache_entry * (*_bfd_make_empty_symbol) PARAMS ((bfd *)); void (*_bfd_print_symbol) PARAMS ((bfd *, PTR, @@ -2062,26 +2061,51 @@ typedef struct bfd_target symbol_info *)); #define bfd_get_symbol_info(b,p,e) BFD_SEND(b, _bfd_get_symbol_info, (b,p,e)) boolean (*_bfd_is_local_label) PARAMS ((bfd *, asymbol *)); - alent * (*_get_lineno) PARAMS ((bfd *, struct symbol_cache_entry *)); - - boolean (*_bfd_set_arch_mach) PARAMS ((bfd *, enum bfd_architecture, - unsigned long)); - bfd * (*openr_next_archived_file) PARAMS ((bfd *arch, bfd *prev)); - + alent * (*_get_lineno) PARAMS ((bfd *, struct symbol_cache_entry *)); boolean (*_bfd_find_nearest_line) PARAMS ((bfd *abfd, struct sec *section, struct symbol_cache_entry **symbols, bfd_vma offset, CONST char **file, CONST char **func, unsigned int *line)); - - int (*_bfd_stat_arch_elt) PARAMS ((bfd *, struct stat *)); + /* Back-door to allow format-aware applications to create debug symbols + while using BFD for everything else. Currently used by the assembler + when creating COFF files. */ + asymbol * (*_bfd_make_debug_symbol) PARAMS (( + bfd *abfd, + void *ptr, + unsigned long size)); - int (*_bfd_sizeof_headers) PARAMS ((bfd *, boolean)); + /* Routines for relocs. */ +#define BFD_JUMP_TABLE_RELOCS(NAME)\ +CAT(NAME,_get_reloc_upper_bound),\ +CAT(NAME,_canonicalize_reloc),\ +CAT(NAME,_bfd_reloc_type_lookup) + long (*_get_reloc_upper_bound) PARAMS ((bfd *, sec_ptr)); + long (*_bfd_canonicalize_reloc) PARAMS ((bfd *, sec_ptr, arelent **, + struct symbol_cache_entry **)); + /* See documentation on reloc types. */ + CONST struct reloc_howto_struct * + (*reloc_type_lookup) PARAMS ((bfd *abfd, + bfd_reloc_code_real_type code)); - void (*_bfd_debug_info_start) PARAMS ((bfd *)); - void (*_bfd_debug_info_end) PARAMS ((bfd *)); - void (*_bfd_debug_info_accumulate) PARAMS ((bfd *, struct sec *)); + /* Routines used when writing an object file. */ +#define BFD_JUMP_TABLE_WRITE(NAME)\ +CAT(NAME,_set_arch_mach),\ +CAT(NAME,_set_section_contents) + boolean (*_bfd_set_arch_mach) PARAMS ((bfd *, enum bfd_architecture, + unsigned long)); + boolean (*_bfd_set_section_contents) PARAMS ((bfd *, sec_ptr, PTR, + file_ptr, bfd_size_type)); + /* Routines used by the linker. */ +#define BFD_JUMP_TABLE_LINK(NAME)\ +CAT(NAME,_sizeof_headers),\ +CAT(NAME,_bfd_get_relocated_section_contents),\ +CAT(NAME,_bfd_relax_section),\ +CAT(NAME,_bfd_link_hash_table_create),\ +CAT(NAME,_bfd_link_add_symbols),\ +CAT(NAME,_bfd_final_link) + int (*_bfd_sizeof_headers) PARAMS ((bfd *, boolean)); bfd_byte * (*_bfd_get_relocated_section_contents) PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *data, boolean relocateable, @@ -2090,19 +2114,6 @@ typedef struct bfd_target boolean (*_bfd_relax_section) PARAMS ((bfd *, struct sec *, struct bfd_link_info *, boolean *again)); - /* See documentation on reloc types. */ - CONST struct reloc_howto_struct * - (*reloc_type_lookup) PARAMS ((bfd *abfd, - bfd_reloc_code_real_type code)); - - /* Back-door to allow format-aware applications to create debug symbols - while using BFD for everything else. Currently used by the assembler - when creating COFF files. */ - asymbol * (*_bfd_make_debug_symbol) PARAMS (( - bfd *abfd, - void *ptr, - unsigned long size)); - /* Create a hash table for the linker. Different backends store different information in this table. */ struct bfd_link_hash_table *(*_bfd_link_hash_table_create) PARAMS ((bfd *)); @@ -2114,9 +2125,6 @@ typedef struct bfd_target section of the BFD. */ boolean (*_bfd_final_link) PARAMS ((bfd *, struct bfd_link_info *)); - /* Ask the BFD to free all cached information. */ - boolean (*_bfd_free_cached_info) PARAMS ((bfd *)); - PTR backend_data; } bfd_target; bfd_target * @@ -46,10 +46,10 @@ static bfd_vma get_value PARAMS ((arelent *, struct bfd_link_info *, asection *)); static int abs32code PARAMS ((bfd *, asection *, arelent *, unsigned int, struct bfd_link_info *)); -static boolean b_out_relax_section PARAMS ((bfd *, asection *, - struct bfd_link_info *, - boolean *)); -static bfd_byte *b_out_get_relocated_section_contents +static boolean b_out_bfd_relax_section PARAMS ((bfd *, asection *, + struct bfd_link_info *, + boolean *)); +static bfd_byte *b_out_bfd_get_relocated_section_contents PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *, boolean, asymbol **)); @@ -428,7 +428,7 @@ static reloc_howto_type howto_done_align_table[] = { }; static const reloc_howto_type * -b_out_reloc_type_lookup (abfd, code) +b_out_bfd_reloc_type_lookup (abfd, code) bfd *abfd; bfd_reloc_code_real_type code; { @@ -1100,7 +1100,7 @@ aligncode (abfd, input_section, r, shrink) } static boolean -b_out_relax_section (abfd, i, link_info, again) +b_out_bfd_relax_section (abfd, i, link_info, again) bfd *abfd; asection *i; struct bfd_link_info *link_info; @@ -1174,8 +1174,8 @@ b_out_relax_section (abfd, i, link_info, again) } static bfd_byte * -b_out_get_relocated_section_contents (in_abfd, link_info, link_order, data, - relocateable, symbols) +b_out_bfd_get_relocated_section_contents (in_abfd, link_info, link_order, + data, relocateable, symbols) bfd *in_abfd; struct bfd_link_info *link_info; struct bfd_link_order *link_order; @@ -1356,41 +1356,13 @@ b_out_get_relocated_section_contents (in_abfd, link_info, link_order, data, /* Build the transfer vectors for Big and Little-Endian B.OUT files. */ -/* We don't have core files. */ -#define aout_32_core_file_failing_command _bfd_dummy_core_file_failing_command -#define aout_32_core_file_failing_signal _bfd_dummy_core_file_failing_signal -#define aout_32_core_file_matches_executable_p \ - _bfd_dummy_core_file_matches_executable_p - -/* We use BSD-Unix generic archive files. */ -#define aout_32_openr_next_archived_file bfd_generic_openr_next_archived_file -#define aout_32_generic_stat_arch_elt bfd_generic_stat_arch_elt -#define aout_32_slurp_armap bfd_slurp_bsd_armap -#define aout_32_slurp_extended_name_table _bfd_slurp_extended_name_table -#define aout_32_write_armap bsd_write_armap -#define aout_32_truncate_arname bfd_bsd_truncate_arname - -/* We override these routines from the usual a.out file routines. */ -#define aout_32_canonicalize_reloc b_out_canonicalize_reloc -#define aout_32_get_reloc_upper_bound b_out_get_reloc_upper_bound -#define aout_32_set_section_contents b_out_set_section_contents -#define aout_32_set_arch_mach b_out_set_arch_mach -#define aout_32_sizeof_headers b_out_sizeof_headers - -#define aout_32_bfd_debug_info_start bfd_void -#define aout_32_bfd_debug_info_end bfd_void -#define aout_32_bfd_debug_info_accumulate (PROTO(void,(*),(bfd*, struct sec *))) bfd_void - -#define aout_32_bfd_get_relocated_section_contents b_out_get_relocated_section_contents -#define aout_32_bfd_relax_section b_out_relax_section -#define aout_32_bfd_reloc_type_lookup b_out_reloc_type_lookup -#define aout_32_bfd_make_debug_symbol \ - ((asymbol *(*) PARAMS ((bfd *, void *, unsigned long))) bfd_nullvoidptr) -#define aout_32_bfd_link_hash_table_create _bfd_generic_link_hash_table_create -#define aout_32_bfd_link_add_symbols _bfd_generic_link_add_symbols -#define aout_32_bfd_final_link _bfd_generic_final_link +#define aout_32_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol #define aout_32_close_and_cleanup aout_32_bfd_free_cached_info +#define b_out_bfd_link_hash_table_create _bfd_generic_link_hash_table_create +#define b_out_bfd_link_add_symbols _bfd_generic_link_add_symbols +#define b_out_bfd_final_link _bfd_generic_final_link + bfd_target b_out_vec_big_host = { "b.out.big", /* name */ @@ -1419,7 +1391,15 @@ bfd_target b_out_vec_big_host = {bfd_false, b_out_write_object_contents, /* bfd_write_contents */ _bfd_write_archive_contents, bfd_false}, - JUMP_TABLE(aout_32), + BFD_JUMP_TABLE_GENERIC (aout_32), + BFD_JUMP_TABLE_COPY (_bfd_generic), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_bsd), + BFD_JUMP_TABLE_SYMBOLS (aout_32), + BFD_JUMP_TABLE_RELOCS (b_out), + BFD_JUMP_TABLE_WRITE (b_out), + BFD_JUMP_TABLE_LINK (b_out), + (PTR) 0, }; @@ -1451,6 +1431,15 @@ bfd_target b_out_vec_little_host = _bfd_generic_mkarchive, bfd_false}, {bfd_false, b_out_write_object_contents, /* bfd_write_contents */ _bfd_write_archive_contents, bfd_false}, - JUMP_TABLE(aout_32), + + BFD_JUMP_TABLE_GENERIC (aout_32), + BFD_JUMP_TABLE_COPY (_bfd_generic), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_bsd), + BFD_JUMP_TABLE_SYMBOLS (aout_32), + BFD_JUMP_TABLE_RELOCS (b_out), + BFD_JUMP_TABLE_WRITE (b_out), + BFD_JUMP_TABLE_LINK (b_out), + (PTR) 0 }; diff --git a/bfd/cf-i386lynx.c b/bfd/cf-i386lynx.c new file mode 100644 index 0000000..3c9c8d0 --- /dev/null +++ b/bfd/cf-i386lynx.c @@ -0,0 +1,98 @@ +/* BFD back-end for Intel 386 COFF LynxOS files. + Copyright 1993 Free Software Foundation, Inc. + Written by Cygnus Support. + +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 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#define TARGET_SYM i386lynx_coff_vec +#define TARGET_NAME "coff-i386-lynx" + +#define LYNXOS + +#define COFF_LONG_FILENAMES + +#include "coff-i386.c" + +static bfd_target * +i386_lynxos_coff_object_p(a) + bfd *a; +{ + return coff_object_p(a); +} + +#if 0 + +#undef TARGET_SYM +#define TARGET_SYM i386lynx_sysv_coff_vec +#undef TARGET_NAME +#define TARGET_NAME "coff-i386-lynx-sysv" + +/* Another almost-copy of the vector in coff-i386.c. */ + +bfd_target +#ifdef TARGET_SYM + TARGET_SYM = +#else + i386coff_vec = +#endif +{ +#ifdef TARGET_NAME + TARGET_NAME, +#else + "coff-i386", /* name */ +#endif + bfd_target_coff_flavour, + false, /* data byte order is little */ + false, /* header byte order is little */ + + (HAS_RELOC | EXEC_P | /* object flags */ + HAS_LINENO | HAS_DEBUG | + HAS_SYMS | HAS_LOCALS | DYNAMIC | WP_TEXT), + + (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */ + 0, /* leading underscore */ + '/', /* ar_pad_char */ + 15, /* ar_max_namelen */ + + 2, /* minimum alignment power */ + bfd_getl64, bfd_getl_signed_64, bfd_putl64, + bfd_getl32, bfd_getl_signed_32, bfd_putl32, + bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */ + bfd_getl64, bfd_getl_signed_64, bfd_putl64, + bfd_getl32, bfd_getl_signed_32, bfd_putl32, + bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* hdrs */ + +/* Note that we allow an object file to be treated as a core file as well. */ + {_bfd_dummy_target, i3coff_object_p, /* bfd_check_format */ + bfd_generic_archive_p, i3coff_object_p}, + {bfd_false, coff_mkobject, _bfd_generic_mkarchive, /* bfd_set_format */ + bfd_false}, + {bfd_false, coff_write_object_contents, /* bfd_write_contents */ + _bfd_write_archive_contents, bfd_false}, + + BFD_JUMP_TABLE_GENERIC (coff), + BFD_JUMP_TABLE_COPY (coff), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff), + BFD_JUMP_TABLE_SYMBOLS (coff), + BFD_JUMP_TABLE_RELOCS (coff), + BFD_JUMP_TABLE_WRITE (coff), + BFD_JUMP_TABLE_LINK (coff), + + COFF_SWAP_TABLE, +}; +#endif diff --git a/bfd/cisco-core.c b/bfd/cisco-core.c index 5a94d51..a253675 100644 --- a/bfd/cisco-core.c +++ b/bfd/cisco-core.c @@ -273,74 +273,6 @@ cisco_core_file_matches_executable_p (core_bfd, exec_bfd) return true; } -/* No archive file support via this BFD */ -#define cisco_openr_next_archived_file bfd_generic_openr_next_archived_file -#define cisco_generic_stat_arch_elt bfd_generic_stat_arch_elt -#define cisco_slurp_armap bfd_false -#define cisco_slurp_extended_name_table bfd_true -#define cisco_write_armap (boolean (*) PARAMS \ - ((bfd *arch, unsigned int elength, struct orl *map, \ - unsigned int orl_count, int stridx))) bfd_false -#define cisco_truncate_arname bfd_dont_truncate_arname -#define aout_32_openr_next_archived_file bfd_generic_openr_next_archived_file - -#define cisco_close_and_cleanup bfd_generic_close_and_cleanup -#define cisco_set_section_contents (boolean (*) PARAMS \ - ((bfd *abfd, asection *section, PTR data, file_ptr offset, \ - bfd_size_type count))) bfd_generic_set_section_contents -#define cisco_get_section_contents bfd_generic_get_section_contents -#define cisco_new_section_hook (boolean (*) PARAMS \ - ((bfd *, sec_ptr))) bfd_true -#define cisco_get_symtab_upper_bound bfd_0l -#define cisco_get_symtab (long (*) PARAMS \ - ((bfd *, struct symbol_cache_entry **))) bfd_0l -#define cisco_get_reloc_upper_bound (long (*) PARAMS \ - ((bfd *, sec_ptr))) bfd_0l -#define cisco_canonicalize_reloc (long (*) PARAMS \ - ((bfd *, sec_ptr, arelent **, struct symbol_cache_entry**))) bfd_0l -#define cisco_make_empty_symbol (struct symbol_cache_entry * \ - (*) PARAMS ((bfd *))) bfd_false -#define cisco_print_symbol (void (*) PARAMS \ - ((bfd *, PTR, struct symbol_cache_entry *, \ - bfd_print_symbol_type))) bfd_false -#define cisco_get_symbol_info (void (*) PARAMS \ - ((bfd *, struct symbol_cache_entry *, \ - symbol_info *))) bfd_false -#define cisco_get_lineno (alent * (*) PARAMS \ - ((bfd *, struct symbol_cache_entry *))) bfd_nullvoidptr -#define cisco_set_arch_mach (boolean (*) PARAMS \ - ((bfd *, enum bfd_architecture, unsigned long))) bfd_false -#define cisco_find_nearest_line (boolean (*) PARAMS \ - ((bfd *abfd, struct sec *section, \ - struct symbol_cache_entry **symbols,bfd_vma offset, \ - CONST char **file, CONST char **func, unsigned int *line))) bfd_false -#define cisco_sizeof_headers (int (*) PARAMS \ - ((bfd *, boolean))) bfd_0 - -#define cisco_bfd_debug_info_start bfd_void -#define cisco_bfd_debug_info_end bfd_void -#define cisco_bfd_debug_info_accumulate (void (*) PARAMS \ - ((bfd *, struct sec *))) bfd_void -#define cisco_bfd_get_relocated_section_contents bfd_generic_get_relocated_section_contents -#define cisco_bfd_relax_section bfd_generic_relax_section -#define cisco_bfd_reloc_type_lookup \ - ((CONST struct reloc_howto_struct *(*) PARAMS ((bfd *, bfd_reloc_code_real_type))) bfd_nullvoidptr) -#define cisco_bfd_make_debug_symbol \ - ((asymbol *(*) PARAMS ((bfd *, void *, unsigned long))) bfd_nullvoidptr) -#define cisco_bfd_link_hash_table_create \ - ((struct bfd_link_hash_table *(*) PARAMS ((bfd *))) bfd_nullvoidptr) -#define cisco_bfd_link_add_symbols \ - ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false) -#define cisco_bfd_final_link \ - ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false) -#define cisco_bfd_copy_private_section_data \ - ((boolean (*) PARAMS ((bfd *, asection *, bfd *, asection *))) bfd_false) -#define cisco_bfd_copy_private_bfd_data \ - ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_false) -#define cisco_bfd_is_local_label \ - ((boolean (*) PARAMS ((bfd *, asymbol *))) bfd_false) -#define cisco_bfd_free_cached_info bfd_true - bfd_target cisco_core_vec = { "trad-core", @@ -377,6 +309,14 @@ bfd_target cisco_core_vec = bfd_false, bfd_false }, - JUMP_TABLE(cisco), + BFD_JUMP_TABLE_GENERIC (_bfd_generic), + BFD_JUMP_TABLE_COPY (_bfd_generic), + BFD_JUMP_TABLE_CORE (cisco), + BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive), + BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols), + BFD_JUMP_TABLE_RELOCS (_bfd_norelocs), + BFD_JUMP_TABLE_WRITE (_bfd_generic), + BFD_JUMP_TABLE_LINK (_bfd_nolink), + (PTR) 0 /* backend_data */ }; diff --git a/bfd/coff-a29k.c b/bfd/coff-a29k.c index 1016b21..21b48502 100644 --- a/bfd/coff-a29k.c +++ b/bfd/coff-a29k.c @@ -335,6 +335,14 @@ bfd_target a29kcoff_big_vec = bfd_false }, - JUMP_TABLE(coff), + BFD_JUMP_TABLE_GENERIC (coff), + BFD_JUMP_TABLE_COPY (coff), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff), + BFD_JUMP_TABLE_SYMBOLS (coff), + BFD_JUMP_TABLE_RELOCS (coff), + BFD_JUMP_TABLE_WRITE (coff), + BFD_JUMP_TABLE_LINK (coff), + COFF_SWAP_TABLE }; diff --git a/bfd/coff-alpha.c b/bfd/coff-alpha.c index 49cb9df..cee3ea7 100644 --- a/bfd/coff-alpha.c +++ b/bfd/coff-alpha.c @@ -1895,12 +1895,6 @@ alpha_relocate_section (output_bfd, info, input_bfd, input_section, return true; } -#define ecoff_core_file_p _bfd_dummy_target -#define ecoff_core_file_failing_command _bfd_dummy_core_file_failing_command -#define ecoff_core_file_failing_signal _bfd_dummy_core_file_failing_signal -#define ecoff_core_file_matches_executable_p \ - _bfd_dummy_core_file_matches_executable_p - /* This is the ECOFF backend structure. The backend field of the target vector points to this. */ @@ -2024,6 +2018,15 @@ bfd_target ecoffalpha_little_vec = _bfd_generic_mkarchive, bfd_false}, {bfd_false, ecoff_write_object_contents, /* bfd_write_contents */ _bfd_write_archive_contents, bfd_false}, - JUMP_TABLE (ecoff), + + BFD_JUMP_TABLE_GENERIC (ecoff), + BFD_JUMP_TABLE_COPY (ecoff), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (ecoff), + BFD_JUMP_TABLE_SYMBOLS (ecoff), + BFD_JUMP_TABLE_RELOCS (ecoff), + BFD_JUMP_TABLE_WRITE (ecoff), + BFD_JUMP_TABLE_LINK (ecoff), + (PTR) &alpha_ecoff_backend_data }; diff --git a/bfd/coff-apollo.c b/bfd/coff-apollo.c new file mode 100644 index 0000000..45493ca --- /dev/null +++ b/bfd/coff-apollo.c @@ -0,0 +1,160 @@ +/* BFD back-end for Apollo 68000 COFF binaries. + Copyright 1990, 1991, 1992, 1993, 1994 Free Software Foundation, Inc. + By Troy Rollo (troy@cbme.unsw.edu.au) + Based on m68k standard COFF version Written by Cygnus Support. + +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 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#include "bfd.h" +#include "sysdep.h" +#include "libbfd.h" +#include "obstack.h" +#include "coff/apollo.h" +#include "coff/internal.h" +#include "libcoff.h" + +#ifdef ONLY_DECLARE_RELOCS +extern reloc_howto_type apollocoff_howto_table[]; +#else +reloc_howto_type apollocoff_howto_table[] = +{ + HOWTO(R_RELBYTE, 0, 0, 8, false, 0, complain_overflow_bitfield, 0, "8", true, 0x000000ff,0x000000ff, false), + HOWTO(R_RELWORD, 0, 1, 16, false, 0, complain_overflow_bitfield, 0, "16", true, 0x0000ffff,0x0000ffff, false), + HOWTO(R_RELLONG, 0, 2, 32, false, 0, complain_overflow_bitfield, 0, "32", true, 0xffffffff,0xffffffff, false), + HOWTO(R_PCRBYTE, 0, 0, 8, true, 0, complain_overflow_signed, 0, "DISP8", true, 0x000000ff,0x000000ff, false), + HOWTO(R_PCRWORD, 0, 1, 16, true, 0, complain_overflow_signed, 0, "DISP16", true, 0x0000ffff,0x0000ffff, false), + HOWTO(R_PCRLONG, 0, 2, 32, true, 0, complain_overflow_signed, 0, "DISP32", true, 0xffffffff,0xffffffff, false), + HOWTO(R_RELLONG_NEG, 0, -2, 32, false, 0, complain_overflow_bitfield, 0, "-32", true, 0xffffffff,0xffffffff, false), +}; +#endif /* not ONLY_DECLARE_RELOCS */ + +#ifndef BADMAG +#define BADMAG(x) M68KBADMAG(x) +#endif +#define APOLLO_M68 1 /* Customize coffcode.h */ + +/* Turn a howto into a reloc number */ + +#ifdef ONLY_DECLARE_RELOCS +extern void apollo_rtype2howto PARAMS ((arelent *internal, int relocentry)); +extern int apollo_howto2rtype PARAMS ((CONST struct reloc_howto_struct *)); +#else +void +apollo_rtype2howto(internal, relocentry) + arelent *internal; + int relocentry; +{ + switch (relocentry) + { + case R_RELBYTE: internal->howto = apollocoff_howto_table + 0; break; + case R_RELWORD: internal->howto = apollocoff_howto_table + 1; break; + case R_RELLONG: internal->howto = apollocoff_howto_table + 2; break; + case R_PCRBYTE: internal->howto = apollocoff_howto_table + 3; break; + case R_PCRWORD: internal->howto = apollocoff_howto_table + 4; break; + case R_PCRLONG: internal->howto = apollocoff_howto_table + 5; break; + case R_RELLONG_NEG: internal->howto = apollocoff_howto_table + 6; break; + } +} + +int +apollo_howto2rtype (internal) + CONST struct reloc_howto_struct *internal; +{ + if (internal->pc_relative) + { + switch (internal->bitsize) + { + case 32: return R_PCRLONG; + case 16: return R_PCRWORD; + case 8: return R_PCRBYTE; + } + } + else + { + switch (internal->bitsize) + { + case 32: return R_RELLONG; + case 16: return R_RELWORD; + case 8: return R_RELBYTE; + } + } + return R_RELLONG; +} +#endif /* not ONLY_DECLARE_RELOCS */ + +#define RTYPE2HOWTO(internal, relocentry) \ + apollo_rtype2howto(internal, (relocentry)->r_type) + +#define SELECT_RELOC(external, internal) \ + external.r_type = apollo_howto2rtype(internal); + +#include "coffcode.h" + +bfd_target +#ifdef TARGET_SYM + TARGET_SYM = +#else + apollocoff_vec = +#endif +{ +#ifdef TARGET_NAME + TARGET_NAME, +#else + "apollo-m68k", /* name */ +#endif + bfd_target_coff_flavour, + true, /* data byte order is big */ + true, /* header byte order is big */ + + (HAS_RELOC | EXEC_P | /* object flags */ + HAS_LINENO | HAS_DEBUG | + HAS_SYMS | HAS_LOCALS | WP_TEXT), + + (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */ +#ifdef NAMES_HAVE_UNDERSCORE + '_', +#else + 0, /* leading underscore */ +#endif + '/', /* ar_pad_char */ + 15, /* ar_max_namelen */ + 3, /* minimum section alignment */ + bfd_getb64, bfd_getb_signed_64, bfd_putb64, + bfd_getb32, bfd_getb_signed_32, bfd_putb32, + bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */ + bfd_getb64, bfd_getb_signed_64, bfd_putb64, + bfd_getb32, bfd_getb_signed_32, bfd_putb32, + bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* hdrs */ + + {_bfd_dummy_target, coff_object_p, /* bfd_check_format */ + bfd_generic_archive_p, _bfd_dummy_target}, + {bfd_false, coff_mkobject, _bfd_generic_mkarchive, /* bfd_set_format */ + bfd_false}, + {bfd_false, coff_write_object_contents, /* bfd_write_contents */ + _bfd_write_archive_contents, bfd_false}, + + BFD_JUMP_TABLE_GENERIC (coff), + BFD_JUMP_TABLE_COPY (coff), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff), + BFD_JUMP_TABLE_SYMBOLS (coff), + BFD_JUMP_TABLE_RELOCS (coff), + BFD_JUMP_TABLE_WRITE (coff), + BFD_JUMP_TABLE_LINK (coff), + + COFF_SWAP_TABLE + }; diff --git a/bfd/coff-h8300.c b/bfd/coff-h8300.c index 54aa028..8c7af9b 100644 --- a/bfd/coff-h8300.c +++ b/bfd/coff-h8300.c @@ -591,6 +591,14 @@ bfd_target h8300coff_vec = {bfd_false, coff_write_object_contents, /* bfd_write_contents */ _bfd_write_archive_contents, bfd_false}, - JUMP_TABLE (coff), + BFD_JUMP_TABLE_GENERIC (coff), + BFD_JUMP_TABLE_COPY (coff), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff), + BFD_JUMP_TABLE_SYMBOLS (coff), + BFD_JUMP_TABLE_RELOCS (coff), + BFD_JUMP_TABLE_WRITE (coff), + BFD_JUMP_TABLE_LINK (coff), + COFF_SWAP_TABLE, }; diff --git a/bfd/coff-h8500.c b/bfd/coff-h8500.c index cf87258..bc80a22 100644 --- a/bfd/coff-h8500.c +++ b/bfd/coff-h8500.c @@ -339,6 +339,14 @@ bfd_target h8500coff_vec = {bfd_false, coff_write_object_contents, /* bfd_write_contents */ _bfd_write_archive_contents, bfd_false}, - JUMP_TABLE (coff), + BFD_JUMP_TABLE_GENERIC (coff), + BFD_JUMP_TABLE_COPY (coff), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff), + BFD_JUMP_TABLE_SYMBOLS (coff), + BFD_JUMP_TABLE_RELOCS (coff), + BFD_JUMP_TABLE_WRITE (coff), + BFD_JUMP_TABLE_LINK (coff), + COFF_SWAP_TABLE, }; diff --git a/bfd/coff-i386.c b/bfd/coff-i386.c index 981b510..da8d0d8 100644 --- a/bfd/coff-i386.c +++ b/bfd/coff-i386.c @@ -1,5 +1,5 @@ /* BFD back-end for Intel 386 COFF files. - Copyright 1990, 1991, 1992, 1993 Free Software Foundation, Inc. + Copyright 1990, 1991, 1992, 1993, 1994 Free Software Foundation, Inc. Written by Cygnus Support. This file is part of BFD, the Binary File Descriptor library. @@ -31,7 +31,8 @@ static bfd_reloc_status_type coff_i386_reloc PARAMS ((bfd *abfd, asymbol *symbol, PTR data, asection *input_section, - bfd *output_bfd)); + bfd *output_bfd, + char **error_message)); /* For some reason when using i386 COFF the value stored in the .text section for a reference to a common symbol is the value itself plus @@ -43,13 +44,15 @@ static bfd_reloc_status_type coff_i386_reloc PARAMS ((bfd *abfd, reloc type to make any required adjustments. */ static bfd_reloc_status_type -coff_i386_reloc (abfd, reloc_entry, symbol, data, input_section, output_bfd) +coff_i386_reloc (abfd, reloc_entry, symbol, data, input_section, output_bfd, + error_message) bfd *abfd; arelent *reloc_entry; asymbol *symbol; PTR data; asection *input_section; bfd *output_bfd; + char **error_message; { symvalue diff; @@ -85,7 +88,7 @@ coff_i386_reloc (abfd, reloc_entry, symbol, data, input_section, output_bfd) if (diff != 0) { - reloc_howto_type *howto = reloc_entry->howto; + const reloc_howto_type *howto = reloc_entry->howto; unsigned char *addr = (unsigned char *) data + reloc_entry->address; switch (howto->size) @@ -234,7 +237,7 @@ static reloc_howto_type howto_table[] = /* Turn a howto into a reloc nunmber */ -#define SELECT_RELOC(x,howto) { x = howto->type; } +#define SELECT_RELOC(x,howto) { x.r_type = howto->type; } #define BADMAG(x) I386BADMAG(x) #define I386 1 /* Customize coffcode.h */ @@ -284,14 +287,6 @@ static reloc_howto_type howto_table[] = cache_ptr->addend += asect->vma; \ } -/* For aix386, define a variable to track the number of sections discarded - during a strip. */ - -#if defined(_AIX) && defined(_I386) -#define USE_DISCARDED_SECTIONS_COUNT -int discarded_sections_count = 0; -#endif - #include "coffcode.h" static bfd_target * @@ -319,7 +314,7 @@ bfd_target (HAS_RELOC | EXEC_P | /* object flags */ HAS_LINENO | HAS_DEBUG | - HAS_SYMS | HAS_LOCALS | DYNAMIC | WP_TEXT), + HAS_SYMS | HAS_LOCALS | WP_TEXT), (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */ 0, /* leading underscore */ @@ -342,6 +337,14 @@ bfd_target {bfd_false, coff_write_object_contents, /* bfd_write_contents */ _bfd_write_archive_contents, bfd_false}, - JUMP_TABLE(coff), + BFD_JUMP_TABLE_GENERIC (coff), + BFD_JUMP_TABLE_COPY (coff), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff), + BFD_JUMP_TABLE_SYMBOLS (coff), + BFD_JUMP_TABLE_RELOCS (coff), + BFD_JUMP_TABLE_WRITE (coff), + BFD_JUMP_TABLE_LINK (coff), + COFF_SWAP_TABLE, }; diff --git a/bfd/coff-i960.c b/bfd/coff-i960.c index f58f948..c505798 100644 --- a/bfd/coff-i960.c +++ b/bfd/coff-i960.c @@ -1,5 +1,5 @@ -/* Intel 960 COFF support for BFD. - Copyright (C) 1990-1991 Free Software Foundation, Inc. +/* BFD back-end for Intel 960 COFF files. + Copyright (C) 1990, 1991, 1992, 1993 Free Software Foundation, Inc. Written by Cygnus Support. This file is part of BFD, the Binary File Descriptor library. @@ -28,6 +28,10 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "coff/i960.h" #include "coff/internal.h" #include "libcoff.h" /* to allow easier abstraction-breaking */ + +static bfd_reloc_status_type optcall_callback + PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); + #define COFF_LONG_FILENAMES #define CALLS 0x66003800 /* Template for 'calls' instruction */ @@ -35,14 +39,15 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #define BAL_MASK 0x00ffffff static bfd_reloc_status_type -DEFUN (optcall_callback, (abfd, reloc_entry, symbol_in, data, - ignore_input_section, ignore_bfd), - bfd *abfd AND - arelent *reloc_entry AND - asymbol *symbol_in AND - PTR data AND - asection *ignore_input_section AND - bfd *ignore_bfd) +optcall_callback (abfd, reloc_entry, symbol_in, data, + ignore_input_section, ignore_bfd, error_message) + bfd *abfd; + arelent *reloc_entry; + asymbol *symbol_in; + PTR data; + asection *ignore_input_section; + bfd *ignore_bfd; + char **error_message; { /* This item has already been relocated correctly, but we may be * able to patch in yet better code - done by digging out the @@ -52,33 +57,36 @@ DEFUN (optcall_callback, (abfd, reloc_entry, symbol_in, data, /* So the target symbol has to be of coff type, and the symbol has to have the correct native information within it */ - if ((cs->symbol.the_bfd->xvec->flavour != bfd_target_coff_flavour) - || (cs->native == (combined_entry_type *)NULL)) { - /* This is interesting, consider the case where we're outputting */ - /* coff from a mix n match input, linking from coff to a symbol */ - /* defined in a bout file will cause this match to be true. Should */ - /* I complain ? - This will only work if the bout symbol is non */ - /* leaf. */ - result = bfd_reloc_dangerous; - } - else { + if ((bfd_asymbol_flavour(&cs->symbol) != bfd_target_coff_flavour) + || (cs->native == (combined_entry_type *)NULL)) + { + /* This is interesting, consider the case where we're outputting coff + from a mix n match input, linking from coff to a symbol defined in a + bout file will cause this match to be true. Should I complain? This + will only work if the bout symbol is non leaf. */ + *error_message = + (char *) "uncertain calling convention for non-COFF symbol"; + result = bfd_reloc_dangerous; + } + else + { switch (cs->native->u.syment.n_sclass) { case C_LEAFSTAT: case C_LEAFEXT: /* This is a call to a leaf procedure, replace instruction with a bal - to the correct location */ + to the correct location. */ { union internal_auxent *aux = &((cs->native+2)->u.auxent); int word = bfd_get_32(abfd, (bfd_byte *)data + reloc_entry->address); int olf = (aux->x_bal.x_balntry - cs->native->u.syment.n_value); BFD_ASSERT(cs->native->u.syment.n_numaux==2); - /* We replace the original call instruction with a bal to */ - /* the bal entry point - the offset of which is described in the */ - /* 2nd auxent of the original symbol. We keep the native sym and */ - /* auxents untouched, so the delta between the two is the */ - /* offset of the bal entry point */ + /* We replace the original call instruction with a bal to + the bal entry point - the offset of which is described in + the 2nd auxent of the original symbol. We keep the native + sym and auxents untouched, so the delta between the two + is the offset of the bal entry point. */ word = ((word + olf) & BAL_MASK) | BAL; bfd_put_32(abfd, word, (bfd_byte *) data + reloc_entry->address); } @@ -98,19 +106,20 @@ DEFUN (optcall_callback, (abfd, reloc_entry, symbol_in, data, } static reloc_howto_type howto_rellong = - { (unsigned int) R_RELLONG, 0, 2, 32,false, 0, true, true, - 0,"rellong", true, 0xffffffff, 0xffffffff}; + { (unsigned int) R_RELLONG, 0, 2, 32,false, 0, + complain_overflow_bitfield, 0,"rellong", true, 0xffffffff, + 0xffffffff}; static reloc_howto_type howto_iprmed = - { R_IPRMED, 0, 2, 24,true,0, true, true,0,"iprmed ", true, - 0x00ffffff, 0x00ffffff}; + { R_IPRMED, 0, 2, 24,true,0, complain_overflow_signed,0, + "iprmed ", true, 0x00ffffff, 0x00ffffff}; static reloc_howto_type howto_optcall = - { R_OPTCALL, 0,2,24,true,0, true, true, optcall_callback, - "optcall", true, 0x00ffffff, 0x00ffffff}; + { R_OPTCALL, 0,2,24,true,0, complain_overflow_signed, + optcall_callback, "optcall", true, 0x00ffffff, 0x00ffffff}; -static reloc_howto_type * -DEFUN (coff_i960_reloc_type_lookup, (abfd, code), - bfd *abfd AND - bfd_reloc_code_real_type code) +static const reloc_howto_type * +coff_i960_reloc_type_lookup (abfd, code) + bfd *abfd; + bfd_reloc_code_real_type code; { switch (code) { @@ -141,6 +150,9 @@ DEFUN (coff_i960_reloc_type_lookup, (abfd, code), #include "coffcode.h" +#undef coff_bfd_reloc_type_lookup +#define coff_bfd_reloc_type_lookup coff_i960_reloc_type_lookup + bfd_target icoff_little_vec = { "coff-Intel-little", /* name */ @@ -150,7 +162,7 @@ bfd_target icoff_little_vec = (HAS_RELOC | EXEC_P | /* object flags */ HAS_LINENO | HAS_DEBUG | - HAS_SYMS | HAS_LOCALS | DYNAMIC | WP_TEXT), + HAS_SYMS | HAS_LOCALS | WP_TEXT), (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */ 0, /* leading underscore */ @@ -158,8 +170,12 @@ bfd_target icoff_little_vec = 15, /* ar_max_namelen */ 3, /* minimum alignment power */ - _do_getl64, _do_putl64, _do_getl32, _do_putl32, _do_getl16, _do_putl16, /* data */ - _do_getl64, _do_putl64, _do_getl32, _do_putl32, _do_getl16, _do_putl16, /* hdrs */ + bfd_getl64, bfd_getl_signed_64, bfd_putl64, + bfd_getl32, bfd_getl_signed_32, bfd_putl32, + bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */ + bfd_getl64, bfd_getl_signed_64, bfd_putl64, + bfd_getl32, bfd_getl_signed_32, bfd_putl32, + bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* hdrs */ {_bfd_dummy_target, coff_object_p, /* bfd_check_format */ bfd_generic_archive_p, _bfd_dummy_target}, @@ -167,10 +183,17 @@ bfd_target icoff_little_vec = _bfd_generic_mkarchive, bfd_false}, {bfd_false, coff_write_object_contents, /* bfd_write_contents */ _bfd_write_archive_contents, bfd_false}, - JUMP_TABLE(coff), + + BFD_JUMP_TABLE_GENERIC (coff), + BFD_JUMP_TABLE_COPY (coff), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff), + BFD_JUMP_TABLE_SYMBOLS (coff), + BFD_JUMP_TABLE_RELOCS (coff), + BFD_JUMP_TABLE_WRITE (coff), + BFD_JUMP_TABLE_LINK (coff), + COFF_SWAP_TABLE, - coff_i960_reloc_type_lookup, - coff_make_debug_symbol, }; @@ -183,7 +206,7 @@ bfd_target icoff_big_vec = (HAS_RELOC | EXEC_P | /* object flags */ HAS_LINENO | HAS_DEBUG | - HAS_SYMS | HAS_LOCALS | DYNAMIC | WP_TEXT), + HAS_SYMS | HAS_LOCALS | WP_TEXT), (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */ 0, /* leading underscore */ @@ -191,8 +214,12 @@ bfd_target icoff_big_vec = 15, /* ar_max_namelen */ 3, /* minimum alignment power */ -_do_getl64, _do_putl64, _do_getl32, _do_putl32, _do_getl16, _do_putl16, /* data */ -_do_getb64, _do_putb64, _do_getb32, _do_putb32, _do_getb16, _do_putb16, /* hdrs */ +bfd_getl64, bfd_getl_signed_64, bfd_putl64, + bfd_getl32, bfd_getl_signed_32, bfd_putl32, + bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */ +bfd_getb64, bfd_getb_signed_64, bfd_putb64, + bfd_getb32, bfd_getb_signed_32, bfd_putb32, + bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* hdrs */ {_bfd_dummy_target, coff_object_p, /* bfd_check_format */ bfd_generic_archive_p, _bfd_dummy_target}, @@ -200,8 +227,15 @@ _do_getb64, _do_putb64, _do_getb32, _do_putb32, _do_getb16, _do_putb16, /* hdrs _bfd_generic_mkarchive, bfd_false}, {bfd_false, coff_write_object_contents, /* bfd_write_contents */ _bfd_write_archive_contents, bfd_false}, - JUMP_TABLE(coff), + + BFD_JUMP_TABLE_GENERIC (coff), + BFD_JUMP_TABLE_COPY (coff), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff), + BFD_JUMP_TABLE_SYMBOLS (coff), + BFD_JUMP_TABLE_RELOCS (coff), + BFD_JUMP_TABLE_WRITE (coff), + BFD_JUMP_TABLE_LINK (coff), + COFF_SWAP_TABLE, - coff_i960_reloc_type_lookup, - coff_make_debug_symbol, }; diff --git a/bfd/coff-m68k.c b/bfd/coff-m68k.c index ee113ec..cd4fd42 100644 --- a/bfd/coff-m68k.c +++ b/bfd/coff-m68k.c @@ -1,5 +1,5 @@ /* BFD back-end for Motorola 68000 COFF binaries. - Copyright 1990, 1991, 1992, 1993 Free Software Foundation, Inc. + Copyright 1990, 1991, 1992, 1993, 1994 Free Software Foundation, Inc. Written by Cygnus Support. This file is part of BFD, the Binary File Descriptor library. @@ -26,18 +26,27 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "coff/internal.h" #include "libcoff.h" +#ifndef LYNX_SPECIAL_FN +#define LYNX_SPECIAL_FN 0 +#endif + +/* Clean up namespace. */ +#define m68kcoff_howto_table _bfd_m68kcoff_howto_table +#define m68k_rtype2howto _bfd_m68kcoff_rtype2howto +#define m68k_howto2rtype _bfd_m68kcoff_howto2rtype + #ifdef ONLY_DECLARE_RELOCS extern reloc_howto_type m68kcoff_howto_table[]; #else reloc_howto_type m68kcoff_howto_table[] = { - HOWTO(R_RELBYTE, 0, 0, 8, false, 0, true, true,0,"8", true, 0x000000ff,0x000000ff, false), - HOWTO(R_RELWORD, 0, 1, 16, false, 0, true, true,0,"16", true, 0x0000ffff,0x0000ffff, false), - HOWTO(R_RELLONG, 0, 2, 32, false, 0, true, true,0,"32", true, 0xffffffff,0xffffffff, false), - HOWTO(R_PCRBYTE, 0, 0, 8, true, 0, false, true,0,"DISP8", true, 0x000000ff,0x000000ff, false), - HOWTO(R_PCRWORD, 0, 1, 16, true, 0, false, true,0,"DISP16", true, 0x0000ffff,0x0000ffff, false), - HOWTO(R_PCRLONG, 0, 2, 32, true, 0, false, true,0,"DISP32", true, 0xffffffff,0xffffffff, false), - HOWTO(R_RELLONG_NEG, 0, -2, 32, false, 0, true, true,0,"-32", true, 0xffffffff,0xffffffff, false), + HOWTO(R_RELBYTE, 0, 0, 8, false, 0, complain_overflow_bitfield, LYNX_SPECIAL_FN, "8", true, 0x000000ff,0x000000ff, false), + HOWTO(R_RELWORD, 0, 1, 16, false, 0, complain_overflow_bitfield, LYNX_SPECIAL_FN, "16", true, 0x0000ffff,0x0000ffff, false), + HOWTO(R_RELLONG, 0, 2, 32, false, 0, complain_overflow_bitfield, LYNX_SPECIAL_FN, "32", true, 0xffffffff,0xffffffff, false), + HOWTO(R_PCRBYTE, 0, 0, 8, true, 0, complain_overflow_signed, LYNX_SPECIAL_FN, "DISP8", true, 0x000000ff,0x000000ff, false), + HOWTO(R_PCRWORD, 0, 1, 16, true, 0, complain_overflow_signed, LYNX_SPECIAL_FN, "DISP16", true, 0x0000ffff,0x0000ffff, false), + HOWTO(R_PCRLONG, 0, 2, 32, true, 0, complain_overflow_signed, LYNX_SPECIAL_FN, "DISP32", true, 0xffffffff,0xffffffff, false), + HOWTO(R_RELLONG_NEG, 0, -2, 32, false, 0, complain_overflow_bitfield, LYNX_SPECIAL_FN, "-32", true, 0xffffffff,0xffffffff, false), }; #endif /* not ONLY_DECLARE_RELOCS */ @@ -99,7 +108,7 @@ m68k_howto2rtype (internal) m68k_rtype2howto(internal, (relocentry)->r_type) #define SELECT_RELOC(external, internal) \ - external = m68k_howto2rtype(internal); + external.r_type = m68k_howto2rtype(internal); #include "coffcode.h" @@ -121,7 +130,7 @@ bfd_target (HAS_RELOC | EXEC_P | /* object flags */ HAS_LINENO | HAS_DEBUG | - HAS_SYMS | HAS_LOCALS | DYNAMIC | WP_TEXT), + HAS_SYMS | HAS_LOCALS | WP_TEXT), (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */ #ifdef NAMES_HAVE_UNDERSCORE @@ -132,12 +141,12 @@ bfd_target '/', /* ar_pad_char */ 15, /* ar_max_namelen */ 1, /* minimum section alignment */ - _do_getb64, _do_getb_signed_64, _do_putb64, - _do_getb32, _do_getb_signed_32, _do_putb32, - _do_getb16, _do_getb_signed_16, _do_putb16, /* data */ - _do_getb64, _do_getb_signed_64, _do_putb64, - _do_getb32, _do_getb_signed_32, _do_putb32, - _do_getb16, _do_getb_signed_16, _do_putb16, /* hdrs */ + bfd_getb64, bfd_getb_signed_64, bfd_putb64, + bfd_getb32, bfd_getb_signed_32, bfd_putb32, + bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */ + bfd_getb64, bfd_getb_signed_64, bfd_putb64, + bfd_getb32, bfd_getb_signed_32, bfd_putb32, + bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* hdrs */ {_bfd_dummy_target, coff_object_p, /* bfd_check_format */ bfd_generic_archive_p, _bfd_dummy_target}, @@ -146,6 +155,14 @@ bfd_target {bfd_false, coff_write_object_contents, /* bfd_write_contents */ _bfd_write_archive_contents, bfd_false}, - JUMP_TABLE(coff), + BFD_JUMP_TABLE_GENERIC (coff), + BFD_JUMP_TABLE_COPY (coff), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff), + BFD_JUMP_TABLE_SYMBOLS (coff), + BFD_JUMP_TABLE_RELOCS (coff), + BFD_JUMP_TABLE_WRITE (coff), + BFD_JUMP_TABLE_LINK (coff), + COFF_SWAP_TABLE }; diff --git a/bfd/coff-m88k.c b/bfd/coff-m88k.c index ff67087..aa0d8ea 100644 --- a/bfd/coff-m88k.c +++ b/bfd/coff-m88k.c @@ -46,14 +46,15 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ static bfd_reloc_status_type -DEFUN(howto_hvrt16,(abfd, reloc_entry, symbol_in, data, - ignore_input_section, ignore_bfd), - bfd *abfd AND - arelent *reloc_entry AND - asymbol *symbol_in AND - PTR data AND - asection *ignore_input_section AND - bfd *ignore_bfd) +howto_hvrt16 (abfd, reloc_entry, symbol_in, data, + ignore_input_section, ignore_bfd, error_message) + bfd *abfd; + arelent *reloc_entry; + asymbol *symbol_in; + PTR data; + asection *ignore_input_section; + bfd *ignore_bfd; + char **error_message; { long relocation = 0; bfd_vma addr = reloc_entry->address; @@ -71,12 +72,12 @@ DEFUN(howto_hvrt16,(abfd, reloc_entry, symbol_in, data, static reloc_howto_type howto_table[] = { - HOWTO(R_PCR16L,02,1,16,true, 0,false,true,0,"PCR16L",false,0x0000ffff,0x0000ffff,true), - HOWTO(R_PCR26L,02,2,26,true, 0,false,true,0,"PCR26L",false,0x03ffffff,0x03ffffff,true), - HOWTO(R_VRT16, 00,1,16,false,0,false,true,0,"VRT16", false,0x0000ffff,0x0000ffff,true), - HOWTO(R_HVRT16,16,1,16,false,0,false,true,howto_hvrt16,"HVRT16",false,0x0000ffff,0x0000ffff,true), - HOWTO(R_LVRT16,00,1,16,false,0,false,true,0,"LVRT16",false,0x0000ffff,0x0000ffff,true), - HOWTO(R_VRT32, 00,2,32,false,0,false,true,0,"VRT32", false,0xffffffff,0xffffffff,true), + HOWTO(R_PCR16L,02,1,16,true, 0,complain_overflow_signed, 0, "PCR16L",false,0x0000ffff,0x0000ffff,true), + HOWTO(R_PCR26L,02,2,26,true, 0,complain_overflow_signed, 0, "PCR26L",false,0x03ffffff,0x03ffffff,true), + HOWTO(R_VRT16, 00,1,16,false,0,complain_overflow_bitfield, 0, "VRT16", false,0x0000ffff,0x0000ffff,true), + HOWTO(R_HVRT16,16,1,16,false,0,complain_overflow_dont,howto_hvrt16,"HVRT16",false,0x0000ffff,0x0000ffff,true), + HOWTO(R_LVRT16,00,1,16,false,0,complain_overflow_dont, 0, "LVRT16",false,0x0000ffff,0x0000ffff,true), + HOWTO(R_VRT32, 00,2,32,false,0,complain_overflow_bitfield, 0, "VRT32", false,0xffffffff,0xffffffff,true), }; @@ -112,19 +113,19 @@ bfd_target m88kbcs_vec = (HAS_RELOC | EXEC_P | /* object flags */ HAS_LINENO | HAS_DEBUG | - HAS_SYMS | HAS_LOCALS | DYNAMIC | WP_TEXT), + HAS_SYMS | HAS_LOCALS | WP_TEXT), (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */ '_', /* leading underscore */ '/', /* ar_pad_char */ 15, /* ar_max_namelen */ 3, /* default alignment power */ - _do_getb64, _do_getb_signed_64, _do_putb64, - _do_getb32, _do_getb_signed_32, _do_putb32, - _do_getb16, _do_getb_signed_16, _do_putb16, /* data */ - _do_getb64, _do_getb_signed_64, _do_putb64, - _do_getb32, _do_getb_signed_32, _do_putb32, - _do_getb16, _do_getb_signed_16, _do_putb16, /* hdrs */ + bfd_getb64, bfd_getb_signed_64, bfd_putb64, + bfd_getb32, bfd_getb_signed_32, bfd_putb32, + bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */ + bfd_getb64, bfd_getb_signed_64, bfd_putb64, + bfd_getb32, bfd_getb_signed_32, bfd_putb32, + bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* hdrs */ {_bfd_dummy_target, coff_object_p, /* bfd_check_format */ bfd_generic_archive_p, _bfd_dummy_target}, @@ -133,6 +134,14 @@ bfd_target m88kbcs_vec = {bfd_false, coff_write_object_contents, /* bfd_write_contents */ _bfd_write_archive_contents, bfd_false}, - JUMP_TABLE(coff), + BFD_JUMP_TABLE_GENERIC (coff), + BFD_JUMP_TABLE_COPY (coff), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff), + BFD_JUMP_TABLE_SYMBOLS (coff), + BFD_JUMP_TABLE_RELOCS (coff), + BFD_JUMP_TABLE_WRITE (coff), + BFD_JUMP_TABLE_LINK (coff), + COFF_SWAP_TABLE, }; diff --git a/bfd/coff-mips.c b/bfd/coff-mips.c index 71a0cd5..7aa2aa1 100644 --- a/bfd/coff-mips.c +++ b/bfd/coff-mips.c @@ -1776,14 +1776,6 @@ static const struct ecoff_backend_data mips_ecoff_backend_data = /* Relaxing sections is MIPS specific. */ #define ecoff_bfd_relax_section mips_relax_section -/* Core file support is usually traditional (but note that Irix uses - irix-core.c). */ -#define ecoff_core_file_p _bfd_dummy_target -#define ecoff_core_file_failing_command _bfd_dummy_core_file_failing_command -#define ecoff_core_file_failing_signal _bfd_dummy_core_file_failing_signal -#define ecoff_core_file_matches_executable_p \ - _bfd_dummy_core_file_matches_executable_p - bfd_target ecoff_little_vec = { "ecoff-littlemips", /* name */ @@ -1814,7 +1806,16 @@ bfd_target ecoff_little_vec = _bfd_generic_mkarchive, bfd_false}, {bfd_false, ecoff_write_object_contents, /* bfd_write_contents */ _bfd_write_archive_contents, bfd_false}, - JUMP_TABLE (ecoff), + + BFD_JUMP_TABLE_GENERIC (ecoff), + BFD_JUMP_TABLE_COPY (ecoff), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (ecoff), + BFD_JUMP_TABLE_SYMBOLS (ecoff), + BFD_JUMP_TABLE_RELOCS (ecoff), + BFD_JUMP_TABLE_WRITE (ecoff), + BFD_JUMP_TABLE_LINK (ecoff), + (PTR) &mips_ecoff_backend_data }; @@ -1841,14 +1842,20 @@ bfd_target ecoff_big_vec = bfd_getb32, bfd_getb_signed_32, bfd_putb32, bfd_getb16, bfd_getb_signed_16, bfd_putb16, {_bfd_dummy_target, coff_object_p, /* bfd_check_format */ - ecoff_archive_p, ecoff_core_file_p}, + ecoff_archive_p, _bfd_dummy_target}, {bfd_false, ecoff_mkobject, /* bfd_set_format */ _bfd_generic_mkarchive, bfd_false}, {bfd_false, ecoff_write_object_contents, /* bfd_write_contents */ _bfd_write_archive_contents, bfd_false}, - JUMP_TABLE(ecoff), + + BFD_JUMP_TABLE_GENERIC (ecoff), + BFD_JUMP_TABLE_COPY (ecoff), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (ecoff), + BFD_JUMP_TABLE_SYMBOLS (ecoff), + BFD_JUMP_TABLE_RELOCS (ecoff), + BFD_JUMP_TABLE_WRITE (ecoff), + BFD_JUMP_TABLE_LINK (ecoff), + (PTR) &mips_ecoff_backend_data - /* Note that there is another bfd_target just above this one. If - you are adding initializers here, you should be adding them there - as well. */ }; diff --git a/bfd/coff-rs6000.c b/bfd/coff-rs6000.c index b24c015..0b1ba78 100644 --- a/bfd/coff-rs6000.c +++ b/bfd/coff-rs6000.c @@ -469,17 +469,9 @@ rs6000coff_reloc_type_lookup (abfd, code) /* Stolen from Damon A. Permezel's `bfd' portation. */ /* ------------------------------------------------------------------------ */ -#undef coff_openr_next_archived_file -#define coff_openr_next_archived_file rs6000coff_openr_next_archived_file - -#undef coff_write_armap -#define coff_write_armap rs6000coff_write_armap - -#undef coff_stat_arch_elt -#define coff_stat_arch_elt rs6000coff_stat_arch_elt - -#undef coff_snarf_ar_hdr -#define coff_snarf_ar_hdr rs6000coff_snarf_ar_hdr +#define rs6000coff_slurp_armap bfd_slurp_coff_armap +#define rs6000coff_slurp_extended_name_table _bfd_slurp_extended_name_table +#define rs6000coff_truncate_arname bfd_dont_truncate_arname #undef coff_mkarchive #define coff_mkarchive rs6000coff_mkarchive @@ -669,7 +661,7 @@ rs6000coff_archive_p (abfd) static int -rs6000coff_stat_arch_elt(abfd, buf) +rs6000coff_generic_stat_arch_elt(abfd, buf) bfd *abfd; struct stat *buf; { @@ -713,6 +705,11 @@ rs6000coff_write_armap (arch, elength, map, orl_count, stridx) #define CORE_FILE_P _bfd_dummy_target +#define coff_core_file_failing_command _bfd_nocore_core_file_failing_command +#define coff_core_file_failing_signal _bfd_nocore_core_file_failing_signal +#define coff_core_file_matches_executable_p \ + _bfd_nocore_core_file_matches_executable_p + #ifdef HOST_AIX #undef CORE_FILE_P #define CORE_FILE_P rs6000coff_core_p @@ -782,6 +779,18 @@ bfd_target rs6000coff_vec = {bfd_false, coff_write_object_contents, /* bfd_write_contents */ _bfd_write_archive_contents, bfd_false}, - JUMP_TABLE(coff), + BFD_JUMP_TABLE_GENERIC (coff), + BFD_JUMP_TABLE_COPY (coff), + BFD_JUMP_TABLE_CORE (coff), +#ifdef HOST_AIX + BFD_JUMP_TABLE_ARCHIVE (rs6000coff), +#else + BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff), +#endif + BFD_JUMP_TABLE_SYMBOLS (coff), + BFD_JUMP_TABLE_RELOCS (coff), + BFD_JUMP_TABLE_WRITE (coff), + BFD_JUMP_TABLE_LINK (coff), + COFF_SWAP_TABLE, }; diff --git a/bfd/coff-sh.c b/bfd/coff-sh.c index 37f92ed..00b1602 100644 --- a/bfd/coff-sh.c +++ b/bfd/coff-sh.c @@ -1,5 +1,5 @@ /* BFD back-end for Hitachi Super-H COFF binaries. - Copyright 1993 Free Software Foundation, Inc. + Copyright 1993, 1994 Free Software Foundation, Inc. Contributed by Cygnus Support. Written by Steve Chamberlain, <sac@cygnus.com>. @@ -21,18 +21,17 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "bfd.h" #include "sysdep.h" -#include "libbfd.h" #include "obstack.h" +#include "libbfd.h" +#include "bfdlink.h" #include "coff/sh.h" #include "coff/internal.h" #include "libcoff.h" -#include "seclet.h" - -extern bfd_error_vector_type bfd_error_vector; static reloc_howto_type r_imm32 = -HOWTO (R_SH_IMM32, 0,2, 32, false, 0, true, - true, 0, "r_imm32", false, 0x0, 0xffffffff, false); +HOWTO (R_SH_IMM32, 0,2, 32, false, 0, + complain_overflow_bitfield, 0, "r_imm32", false, 0x0, 0xffffffff, + false); @@ -45,7 +44,7 @@ coff_SH_select_reloc (howto) return howto->type; } -#define SELECT_RELOC(x,howto) x= coff_SH_select_reloc(howto) +#define SELECT_RELOC(x,howto) x.r_type = coff_SH_select_reloc(howto) #define BADMAG(x) SHBADMAG(x) @@ -64,9 +63,9 @@ coff_SH_select_reloc (howto) */ static void -DEFUN (rtype2howto, (internal, dst), - arelent * internal AND - struct internal_reloc *dst) +rtype2howto (internal, dst) + arelent * internal; + struct internal_reloc *dst; { switch (dst->r_type) { @@ -92,12 +91,12 @@ DEFUN (rtype2howto, (internal, dst), reloc_processing(relent, reloc, symbols, abfd, section) static void -DEFUN (reloc_processing, (relent, reloc, symbols, abfd, section), - arelent * relent AND - struct internal_reloc *reloc AND - asymbol ** symbols AND - bfd * abfd AND - asection * section) +reloc_processing (relent, reloc, symbols, abfd, section) + arelent * relent; + struct internal_reloc *reloc; + asymbol ** symbols; + bfd * abfd; + asection * section; { relent->address = reloc->r_vaddr; rtype2howto (relent, reloc); @@ -117,9 +116,10 @@ DEFUN (reloc_processing, (relent, reloc, symbols, abfd, section), } static void -extra_case (in_abfd, seclet, reloc, data, src_ptr, dst_ptr) +extra_case (in_abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr) bfd *in_abfd; - bfd_seclet_type *seclet; + struct bfd_link_info *link_info; + struct bfd_link_order *link_order; arelent *reloc; bfd_byte *data; unsigned int *src_ptr; @@ -129,7 +129,8 @@ extra_case (in_abfd, seclet, reloc, data, src_ptr, dst_ptr) { case R_SH_IMM32: { - int v = bfd_coff_reloc16_get_value(reloc, seclet); + int v = bfd_coff_reloc16_get_value(reloc, link_info, + link_order->u.indirect.section); bfd_put_32 (in_abfd, v, data + *dst_ptr); (*dst_ptr) +=4; (*src_ptr)+=4;; @@ -148,7 +149,8 @@ extra_case (in_abfd, seclet, reloc, data, src_ptr, dst_ptr) #undef coff_bfd_get_relocated_section_contents #undef coff_bfd_relax_section -#define coff_bfd_get_relocated_section_contents bfd_coff_reloc16_get_relocated_section_contents +#define coff_bfd_get_relocated_section_contents \ + bfd_coff_reloc16_get_relocated_section_contents #define coff_bfd_relax_section bfd_coff_reloc16_relax_section bfd_target shcoff_vec = @@ -160,19 +162,19 @@ bfd_target shcoff_vec = (HAS_RELOC | EXEC_P | /* object flags */ HAS_LINENO | HAS_DEBUG | - HAS_SYMS | HAS_LOCALS | DYNAMIC | WP_TEXT), + HAS_SYMS | HAS_LOCALS | WP_TEXT | BFD_IS_RELAXABLE ), (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */ '_', /* leading symbol underscore */ '/', /* ar_pad_char */ 15, /* ar_max_namelen */ 2, /* minimum section alignment */ -_do_getb64, _do_getb_signed_64, _do_putb64, - _do_getb32, _do_getb_signed_32, _do_putb32, - _do_getb16, _do_getb_signed_16, _do_putb16, /* data */ -_do_getb64, _do_getb_signed_64, _do_putb64, - _do_getb32, _do_getb_signed_32, _do_putb32, - _do_getb16, _do_getb_signed_16, _do_putb16, /* hdrs */ +bfd_getb64, bfd_getb_signed_64, bfd_putb64, + bfd_getb32, bfd_getb_signed_32, bfd_putb32, + bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */ +bfd_getb64, bfd_getb_signed_64, bfd_putb64, + bfd_getb32, bfd_getb_signed_32, bfd_putb32, + bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* hdrs */ {_bfd_dummy_target, coff_object_p, /* bfd_check_format */ bfd_generic_archive_p, _bfd_dummy_target}, @@ -181,6 +183,14 @@ _do_getb64, _do_getb_signed_64, _do_putb64, {bfd_false, coff_write_object_contents, /* bfd_write_contents */ _bfd_write_archive_contents, bfd_false}, - JUMP_TABLE(coff), + BFD_JUMP_TABLE_GENERIC (coff), + BFD_JUMP_TABLE_COPY (coff), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff), + BFD_JUMP_TABLE_SYMBOLS (coff), + BFD_JUMP_TABLE_RELOCS (coff), + BFD_JUMP_TABLE_WRITE (coff), + BFD_JUMP_TABLE_LINK (coff), + COFF_SWAP_TABLE, }; diff --git a/bfd/coff-sparc.c b/bfd/coff-sparc.c index 304087b..ebd5bab 100644 --- a/bfd/coff-sparc.c +++ b/bfd/coff-sparc.c @@ -247,7 +247,15 @@ bfd_target {bfd_false, coff_write_object_contents, /* bfd_write_contents */ _bfd_write_archive_contents, bfd_false}, - JUMP_TABLE(coff), + BFD_JUMP_TABLE_GENERIC (coff), + BFD_JUMP_TABLE_COPY (coff), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff), + BFD_JUMP_TABLE_SYMBOLS (coff), + BFD_JUMP_TABLE_RELOCS (coff), + BFD_JUMP_TABLE_WRITE (coff), + BFD_JUMP_TABLE_LINK (coff), + COFF_SWAP_TABLE, }; diff --git a/bfd/coff-we32k.c b/bfd/coff-we32k.c new file mode 100644 index 0000000..6b05615 --- /dev/null +++ b/bfd/coff-we32k.c @@ -0,0 +1,109 @@ +/* BFD back-end for we32k COFF files. + Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc. + Contributed by Brendan Kehoe (brendan@cs.widener.edu). + +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 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#include "bfd.h" +#include "sysdep.h" +#include "libbfd.h" +#include "obstack.h" +#include "coff/we32k.h" +#include "coff/internal.h" +#include "libcoff.h" + + +static reloc_howto_type howto_table[] = +{ + {0}, + {1}, + {2}, + {3}, + {4}, + {5}, + HOWTO(R_DIR32, 0, 2, 32, false, 0,complain_overflow_bitfield, 0, "dir32", true, 0xffffffff,0xffffffff, false), + {7}, + {010}, + {011}, + {012}, + {013}, + {014}, + {015}, + {016}, + HOWTO(R_RELBYTE, 0, 0, 8, false, 0, complain_overflow_bitfield, 0, "8", true, 0x000000ff,0x000000ff, false), + HOWTO(R_RELWORD, 0, 1, 16, false, 0, complain_overflow_bitfield, 0, "16", true, 0x0000ffff,0x0000ffff, false), + HOWTO(R_RELLONG, 0, 2, 32, false, 0, complain_overflow_bitfield, 0, "32", true, 0xffffffff,0xffffffff, false), + HOWTO(R_PCRBYTE, 0, 0, 8, true, 0, complain_overflow_signed, 0, "DISP8", true, 0x000000ff,0x000000ff, false), + HOWTO(R_PCRWORD, 0, 1, 16, true, 0, complain_overflow_signed, 0, "DISP16", true, 0x0000ffff,0x0000ffff, false), + HOWTO(R_PCRLONG, 0, 2, 32, true, 0, complain_overflow_signed, 0, "DISP32", true, 0xffffffff,0xffffffff, false), +}; + +/* Turn a howto into a reloc nunmber */ + +#define SELECT_RELOC(x,howto) { x.r_type = howto->type; } +#define BADMAG(x) WE32KBADMAG(x) +#define WE32K 1 + +#define RTYPE2HOWTO(cache_ptr, dst) \ + cache_ptr->howto = howto_table + (dst)->r_type; + +#include "coffcode.h" + +#define coff_write_armap bsd_write_armap + +bfd_target we32kcoff_vec = +{ + "coff-we32k", /* name */ + bfd_target_coff_flavour, + true, /* data byte order is big */ + true, /* header byte order is big */ + + (HAS_RELOC | EXEC_P | /* object flags */ + HAS_LINENO | HAS_DEBUG | + HAS_SYMS | HAS_LOCALS | WP_TEXT), + + (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */ + 0, /* leading underscore */ + '/', /* ar_pad_char */ + 15, /* ar_max_namelen */ + + 3, /* minimum alignment power */ + bfd_getb64, bfd_getb_signed_64, bfd_putb64, + bfd_getb32, bfd_getb_signed_32, bfd_putb32, + bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */ + bfd_getb64, bfd_getb_signed_64, bfd_putb64, + bfd_getb32, bfd_getb_signed_32, bfd_putb32, + bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* hdrs */ + + {_bfd_dummy_target, coff_object_p, /* bfd_check_format */ + bfd_generic_archive_p, _bfd_dummy_target}, + {bfd_false, coff_mkobject, _bfd_generic_mkarchive, /* bfd_set_format */ + bfd_false}, + {bfd_false, coff_write_object_contents, /* bfd_write_contents */ + _bfd_write_archive_contents, bfd_false}, + + BFD_JUMP_TABLE_GENERIC (coff), + BFD_JUMP_TABLE_COPY (coff), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff), + BFD_JUMP_TABLE_SYMBOLS (coff), + BFD_JUMP_TABLE_RELOCS (coff), + BFD_JUMP_TABLE_WRITE (coff), + BFD_JUMP_TABLE_LINK (coff), + + COFF_SWAP_TABLE, +}; diff --git a/bfd/coff-z8k.c b/bfd/coff-z8k.c index 59ea5e2..4681dd4 100644 --- a/bfd/coff-z8k.c +++ b/bfd/coff-z8k.c @@ -1,5 +1,5 @@ /* BFD back-end for Zilog Z800n COFF binaries. - Copyright 1992, 1993 Free Software Foundation, Inc. + Copyright 1992, 1993, 1994 Free Software Foundation, Inc. Contributed by Cygnus Support. Written by Steve Chamberlain, <sac@cygnus.com>. @@ -60,7 +60,7 @@ coff_z8k_select_reloc (howto) return howto->type; } -#define SELECT_RELOC(x,howto) x= coff_z8k_select_reloc(howto) +#define SELECT_RELOC(x,howto) x.r_type = coff_z8k_select_reloc(howto) #define BADMAG(x) Z8KBADMAG(x) @@ -80,9 +80,9 @@ coff_z8k_select_reloc (howto) */ static void -DEFUN (rtype2howto, (internal, dst), - arelent * internal AND - struct internal_reloc *dst) +rtype2howto (internal, dst) + arelent * internal; + struct internal_reloc *dst; { switch (dst->r_type) { @@ -120,12 +120,12 @@ DEFUN (rtype2howto, (internal, dst), reloc_processing(relent, reloc, symbols, abfd, section) static void -DEFUN (reloc_processing, (relent, reloc, symbols, abfd, section), - arelent * relent AND - struct internal_reloc *reloc AND - asymbol ** symbols AND - bfd * abfd AND - asection * section) +reloc_processing (relent, reloc, symbols, abfd, section) + arelent * relent; + struct internal_reloc *reloc; + asymbol ** symbols; + bfd * abfd; + asection * section; { relent->address = reloc->r_vaddr; rtype2howto (relent, reloc); @@ -265,6 +265,14 @@ bfd_target z8kcoff_vec = {bfd_false, coff_write_object_contents, /* bfd_write_contents */ _bfd_write_archive_contents, bfd_false}, - JUMP_TABLE (coff), + BFD_JUMP_TABLE_GENERIC (coff), + BFD_JUMP_TABLE_COPY (coff), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff), + BFD_JUMP_TABLE_SYMBOLS (coff), + BFD_JUMP_TABLE_RELOCS (coff), + BFD_JUMP_TABLE_WRITE (coff), + BFD_JUMP_TABLE_LINK (coff), + COFF_SWAP_TABLE, }; diff --git a/bfd/coffcode.h b/bfd/coffcode.h index 3b75ef4..af015bb 100644 --- a/bfd/coffcode.h +++ b/bfd/coffcode.h @@ -2497,40 +2497,27 @@ static CONST bfd_coff_backend_data bfd_coff_std_swap_table = coff_reloc16_extra_cases, coff_reloc16_estimate }; -#define coff_core_file_failing_command _bfd_dummy_core_file_failing_command -#define coff_core_file_failing_signal _bfd_dummy_core_file_failing_signal -#define coff_core_file_matches_executable_p _bfd_dummy_core_file_matches_executable_p -#define coff_slurp_armap bfd_slurp_coff_armap -#define coff_slurp_extended_name_table _bfd_slurp_extended_name_table -#define coff_truncate_arname bfd_dont_truncate_arname -#define coff_openr_next_archived_file bfd_generic_openr_next_archived_file -#define coff_generic_stat_arch_elt bfd_generic_stat_arch_elt -#define coff_get_section_contents bfd_generic_get_section_contents -#define coff_close_and_cleanup bfd_generic_close_and_cleanup - -#define coff_bfd_debug_info_start bfd_void -#define coff_bfd_debug_info_end bfd_void -#define coff_bfd_debug_info_accumulate \ - (void (*) PARAMS ((bfd *, struct sec *))) bfd_void -#define coff_bfd_get_relocated_section_contents bfd_generic_get_relocated_section_contents -#define coff_bfd_relax_section bfd_generic_relax_section -#ifndef coff_bfd_reloc_type_lookup -#define coff_bfd_reloc_type_lookup \ - ((CONST struct reloc_howto_struct *(*) PARAMS ((bfd *, bfd_reloc_code_real_type))) bfd_nullvoidptr) -#endif -#define coff_bfd_link_hash_table_create _bfd_generic_link_hash_table_create -#define coff_bfd_link_add_symbols _bfd_generic_link_add_symbols -#define coff_bfd_final_link _bfd_generic_final_link +#define coff_close_and_cleanup _bfd_generic_close_and_cleanup +#define coff_bfd_free_cached_info _bfd_generic_bfd_free_cached_info +#define coff_get_section_contents _bfd_generic_get_section_contents -#ifndef coff_bfd_copy_private_section_data #define coff_bfd_copy_private_section_data \ - ((boolean (*) PARAMS ((bfd *, asection *, bfd *, asection *))) bfd_true) -#endif -#ifndef coff_bfd_copy_private_bfd_data -#define coff_bfd_copy_private_bfd_data \ - ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_true) -#endif + _bfd_generic_bfd_copy_private_section_data +#define coff_bfd_copy_private_bfd_data _bfd_generic_bfd_copy_private_bfd_data + #ifndef coff_bfd_is_local_label #define coff_bfd_is_local_label bfd_generic_is_local_label #endif -#define coff_bfd_free_cached_info bfd_true + +/* The reloc lookup routine must be supplied by each individual COFF + backend. */ +#ifndef coff_bfd_reloc_type_lookup +#define coff_bfd_reloc_type_lookup _bfd_norelocs_bfd_reloc_type_lookup +#endif + +#define coff_bfd_get_relocated_section_contents \ + bfd_generic_get_relocated_section_contents +#define coff_bfd_relax_section bfd_generic_relax_section +#define coff_bfd_link_hash_table_create _bfd_generic_link_hash_table_create +#define coff_bfd_link_add_symbols _bfd_generic_link_add_symbols +#define coff_bfd_final_link _bfd_generic_final_link diff --git a/bfd/ecoff.c b/bfd/ecoff.c index 6183305..a58d207 100644 --- a/bfd/ecoff.c +++ b/bfd/ecoff.c @@ -2185,7 +2185,7 @@ ecoff_get_section_contents (abfd, section, location, offset, count) int i; if (strcmp (section->name, REGINFO) != 0) - return bfd_generic_get_section_contents (abfd, section, location, + return _bfd_generic_get_section_contents (abfd, section, location, offset, count); s.gp_value = tdata->gp; diff --git a/bfd/elf32-hppa.c b/bfd/elf32-hppa.c index 5874aab..7a0f37d 100644 --- a/bfd/elf32-hppa.c +++ b/bfd/elf32-hppa.c @@ -3055,8 +3055,8 @@ hppa_elf_get_section_contents (abfd, section, location, offset, count) if (section->output_section == NULL && abfd->direction == read_direction) { - return bfd_generic_get_section_contents (abfd, section, location, - offset, count); + return _bfd_generic_get_section_contents (abfd, section, location, + offset, count); } /* If this is the first time through, and there are output sections, @@ -3098,8 +3098,8 @@ hppa_elf_get_section_contents (abfd, section, location, offset, count) else /* It's not the symbol extension or linker stub sections, use the generic routines. */ - return bfd_generic_get_section_contents (abfd, section, location, - offset, count); + return _bfd_generic_get_section_contents (abfd, section, location, + offset, count); } /* Translate from an elf into field into a howto relocation pointer. */ @@ -3396,7 +3396,7 @@ elf32_hppa_backend_section_from_bfd_section (abfd, hdr, asect, ignored) #define elf_backend_symbol_processing elf32_hppa_backend_symbol_processing #define elf_backend_symbol_table_processing elf32_hppa_backend_symbol_table_processing -#define bfd_generic_get_section_contents hppa_elf_get_section_contents +#define bfd_elf32_get_section_contents hppa_elf_get_section_contents #define bfd_elf32_set_section_contents hppa_elf_set_section_contents #define bfd_elf32_bfd_is_local_label hppa_elf_is_local_label diff --git a/bfd/elf32-target.h b/bfd/elf32-target.h index 951913c..ca4db21 100644 --- a/bfd/elf32-target.h +++ b/bfd/elf32-target.h @@ -25,25 +25,12 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ There are two such structures here: one for big-endian machines and one for little-endian machines. */ -/* Archives are generic or unimplemented. */ -#ifndef bfd_elf32_slurp_armap -#define bfd_elf32_slurp_armap bfd_slurp_coff_armap +#define bfd_elf32_close_and_cleanup _bfd_generic_close_and_cleanup +#define bfd_elf32_bfd_free_cached_info _bfd_generic_bfd_free_cached_info +#ifndef bfd_elf32_get_section_contents +#define bfd_elf32_get_section_contents _bfd_generic_get_section_contents #endif -#define bfd_elf32_slurp_extended_name_table _bfd_slurp_extended_name_table -#define bfd_elf32_truncate_arname bfd_dont_truncate_arname -#define bfd_elf32_openr_next_archived_file bfd_generic_openr_next_archived_file -#define bfd_elf32_generic_stat_arch_elt bfd_generic_stat_arch_elt -#ifndef bfd_elf32_write_armap -#define bfd_elf32_write_armap coff_write_armap -#endif - -/* Ordinary section reading and writing */ -#define bfd_elf32_get_section_contents bfd_generic_get_section_contents -#define bfd_elf32_close_and_cleanup bfd_generic_close_and_cleanup -#define bfd_elf32_bfd_debug_info_start bfd_void -#define bfd_elf32_bfd_debug_info_end bfd_void -#define bfd_elf32_bfd_debug_info_accumulate (PROTO(void,(*),(bfd*, struct sec *))) bfd_void #define bfd_elf32_bfd_get_relocated_section_contents \ bfd_generic_get_relocated_section_contents #define bfd_elf32_bfd_relax_section bfd_generic_relax_section @@ -71,9 +58,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef bfd_elf32_bfd_is_local_label #define bfd_elf32_bfd_is_local_label bfd_generic_is_local_label #endif -#ifndef bfd_elf32_bfd_free_cached_info -#define bfd_elf32_bfd_free_cached_info bfd_true -#endif #ifndef elf_info_to_howto_rel #define elf_info_to_howto_rel 0 @@ -212,9 +196,14 @@ bfd_target TARGET_BIG_SYM = bfd_false }, - /* Initialize a jump table with the standard macro. All names start with - "elf" */ - JUMP_TABLE(bfd_elf32), + BFD_JUMP_TABLE_GENERIC (bfd_elf32), + BFD_JUMP_TABLE_COPY (bfd_elf32), + BFD_JUMP_TABLE_CORE (bfd_elf32), + BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff), + BFD_JUMP_TABLE_SYMBOLS (bfd_elf32), + BFD_JUMP_TABLE_RELOCS (bfd_elf32), + BFD_JUMP_TABLE_WRITE (bfd_elf32), + BFD_JUMP_TABLE_LINK (bfd_elf32), /* backend_data: */ (PTR) &elf32_bed, @@ -294,9 +283,14 @@ bfd_target TARGET_LITTLE_SYM = bfd_false }, - /* Initialize a jump table with the standard macro. All names start with - "elf" */ - JUMP_TABLE(bfd_elf32), + BFD_JUMP_TABLE_GENERIC (bfd_elf32), + BFD_JUMP_TABLE_COPY (bfd_elf32), + BFD_JUMP_TABLE_CORE (bfd_elf32), + BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff), + BFD_JUMP_TABLE_SYMBOLS (bfd_elf32), + BFD_JUMP_TABLE_RELOCS (bfd_elf32), + BFD_JUMP_TABLE_WRITE (bfd_elf32), + BFD_JUMP_TABLE_LINK (bfd_elf32), /* backend_data: */ (PTR) &elf32_bed, diff --git a/bfd/elf64-target.h b/bfd/elf64-target.h index 454f0d5..a7b1b27 100644 --- a/bfd/elf64-target.h +++ b/bfd/elf64-target.h @@ -25,21 +25,11 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ There are two such structures here: one for big-endian machines and one for little-endian machines. */ -/* Archives are generic or unimplemented. */ -#ifndef bfd_elf64_slurp_armap -#define bfd_elf64_slurp_armap bfd_slurp_coff_armap +#define bfd_elf64_close_and_cleanup _bfd_generic_close_and_cleanup +#define bfd_elf64_bfd_free_cached_info _bfd_generic_bfd_free_cached_info +#ifndef bfd_elf64_get_section_contents +#define bfd_elf64_get_section_contents _bfd_generic_get_section_contents #endif -#define bfd_elf64_slurp_extended_name_table _bfd_slurp_extended_name_table -#define bfd_elf64_truncate_arname bfd_dont_truncate_arname -#define bfd_elf64_openr_next_archived_file bfd_generic_openr_next_archived_file -#define bfd_elf64_generic_stat_arch_elt bfd_generic_stat_arch_elt -#ifndef bfd_elf64_write_armap -#define bfd_elf64_write_armap coff_write_armap -#endif - -/* Ordinary section reading and writing */ -#define bfd_elf64_get_section_contents bfd_generic_get_section_contents -#define bfd_elf64_close_and_cleanup bfd_generic_close_and_cleanup #define bfd_elf64_bfd_debug_info_start bfd_void #define bfd_elf64_bfd_debug_info_end bfd_void @@ -71,9 +61,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef bfd_elf64_bfd_is_local_label #define bfd_elf64_bfd_is_local_label bfd_generic_is_local_label #endif -#ifndef bfd_elf64_bfd_free_cached_info -#define bfd_elf64_bfd_free_cached_info bfd_true -#endif #ifndef elf_info_to_howto_rel #define elf_info_to_howto_rel 0 @@ -211,9 +198,14 @@ bfd_target TARGET_BIG_SYM = bfd_false }, - /* Initialize a jump table with the standard macro. All names start with - "elf" */ - JUMP_TABLE(bfd_elf64), + BFD_JUMP_TABLE_GENERIC (bfd_elf64), + BFD_JUMP_TABLE_COPY (bfd_elf64), + BFD_JUMP_TABLE_CORE (bfd_elf64), + BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff), + BFD_JUMP_TABLE_SYMBOLS (bfd_elf64), + BFD_JUMP_TABLE_RELOCS (bfd_elf64), + BFD_JUMP_TABLE_WRITE (bfd_elf64), + BFD_JUMP_TABLE_LINK (bfd_elf64), /* backend_data: */ (PTR) &elf64_bed, @@ -293,9 +285,14 @@ bfd_target TARGET_LITTLE_SYM = bfd_false }, - /* Initialize a jump table with the standard macro. All names start with - "elf" */ - JUMP_TABLE(bfd_elf64), + BFD_JUMP_TABLE_GENERIC (bfd_elf64), + BFD_JUMP_TABLE_COPY (bfd_elf64), + BFD_JUMP_TABLE_CORE (bfd_elf64), + BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff), + BFD_JUMP_TABLE_SYMBOLS (bfd_elf64), + BFD_JUMP_TABLE_RELOCS (bfd_elf64), + BFD_JUMP_TABLE_WRITE (bfd_elf64), + BFD_JUMP_TABLE_LINK (bfd_elf64), /* backend_data: */ (PTR) &elf64_bed, diff --git a/bfd/hppabsd-core.c b/bfd/hppabsd-core.c index bc99ff5..34ca1ed 100644 --- a/bfd/hppabsd-core.c +++ b/bfd/hppabsd-core.c @@ -227,72 +227,15 @@ hppabsd_core_core_file_matches_executable_p (core_bfd, exec_bfd) } -/* No archive file support via this BFD */ -#define hppabsd_core_openr_next_archived_file \ - bfd_generic_openr_next_archived_file -#define hppabsd_core_generic_stat_arch_elt bfd_generic_stat_arch_elt -#define hppabsd_core_slurp_armap bfd_false -#define hppabsd_core_slurp_extended_name_table bfd_true -#define hppabsd_core_write_armap (boolean (*) PARAMS \ - ((bfd *arch, unsigned int elength, struct orl *map, \ - unsigned int orl_count, int stridx))) bfd_false -#define hppabsd_core_truncate_arname bfd_dont_truncate_arname - -#define hppabsd_core_close_and_cleanup bfd_generic_close_and_cleanup -#define hppabsd_core_set_section_contents (boolean (*) PARAMS \ - ((bfd *abfd, asection *section, PTR data, file_ptr offset, \ - bfd_size_type count))) bfd_generic_set_section_contents -#define hppabsd_core_get_section_contents \ - bfd_generic_get_section_contents -#define hppabsd_core_new_section_hook (boolean (*) PARAMS \ - ((bfd *, sec_ptr))) bfd_true -#define hppabsd_core_get_symtab_upper_bound bfd_0l -#define hppabsd_core_get_symtab (long (*) PARAMS \ - ((bfd *, struct symbol_cache_entry **))) bfd_0l -#define hppabsd_core_get_reloc_upper_bound (long (*) PARAMS \ - ((bfd *, sec_ptr))) bfd_0l -#define hppabsd_core_canonicalize_reloc (long (*) PARAMS \ - ((bfd *, sec_ptr, arelent **, struct symbol_cache_entry**))) bfd_0l -#define hppabsd_core_print_symbol (void (*) PARAMS \ - ((bfd *, PTR, struct symbol_cache_entry *, \ - bfd_print_symbol_type))) bfd_false -#define hppabsd_core_get_symbol_info (void (*) PARAMS \ - ((bfd *, struct symbol_cache_entry *, \ - symbol_info *))) bfd_false -#define hppabsd_core_get_lineno (alent * (*) PARAMS \ - ((bfd *, struct symbol_cache_entry *))) bfd_nullvoidptr -#define hppabsd_core_set_arch_mach (boolean (*) PARAMS \ - ((bfd *, enum bfd_architecture, unsigned long))) bfd_false -#define hppabsd_core_find_nearest_line (boolean (*) PARAMS \ - ((bfd *abfd, struct sec *section, \ - struct symbol_cache_entry **symbols,bfd_vma offset, \ - CONST char **file, CONST char **func, unsigned int *line))) bfd_false -#define hppabsd_core_sizeof_headers (int (*) PARAMS \ - ((bfd *, boolean))) bfd_0 - -#define hppabsd_core_bfd_debug_info_start bfd_void -#define hppabsd_core_bfd_debug_info_end bfd_void -#define hppabsd_core_bfd_debug_info_accumulate (void (*) PARAMS \ - ((bfd *, struct sec *))) bfd_void -#define hppabsd_core_bfd_get_relocated_section_contents bfd_generic_get_relocated_section_contents -#define hppabsd_core_bfd_relax_section bfd_generic_relax_section -#define hppabsd_core_bfd_reloc_type_lookup \ - ((CONST struct reloc_howto_struct *(*) PARAMS ((bfd *, bfd_reloc_code_real_type))) bfd_nullvoidptr) -#define hppabsd_core_bfd_make_debug_symbol \ - ((asymbol *(*) PARAMS ((bfd *, void *, unsigned long))) bfd_nullvoidptr) -#define hppabsd_core_bfd_link_hash_table_create \ - ((struct bfd_link_hash_table *(*) PARAMS ((bfd *))) bfd_nullvoidptr) -#define hppabsd_core_bfd_link_add_symbols \ - ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false) -#define hppabsd_core_bfd_final_link \ - ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false) -#define hppabsd_core_bfd_copy_private_section_data \ - ((boolean (*) PARAMS ((bfd *, asection *, bfd *, asection *))) bfd_false) -#define hppabsd_core_bfd_copy_private_bfd_data \ - ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_false) -#define hppabsd_core_bfd_is_local_label \ - ((boolean (*) PARAMS ((bfd *, asymbol *))) bfd_false) -#define hppabsd_core_bfd_free_cached_info bfd_true +#define hppabsd_core_get_symtab_upper_bound \ + _bfd_nosymbols_get_symtab_upper_bound +#define hppabsd_core_get_symtab _bfd_nosymbols_get_symtab +#define hppabsd_core_print_symbol _bfd_nosymbols_print_symbol +#define hppabsd_core_get_symbol_info _bfd_nosymbols_get_symbol_info +#define hppabsd_core_bfd_is_local_label _bfd_nosymbols_bfd_is_local_label +#define hppabsd_core_get_lineno _bfd_nosymbols_get_lineno +#define hppabsd_core_find_nearest_line _bfd_nosymbols_find_nearest_line +#define hppabsd_core_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol /* If somebody calls any byte-swapping routines, shoot them. */ static void @@ -343,7 +286,15 @@ bfd_target hppabsd_core_vec = bfd_false, bfd_false }, - JUMP_TABLE(hppabsd_core), + BFD_JUMP_TABLE_GENERIC (_bfd_generic), + BFD_JUMP_TABLE_COPY (_bfd_generic), + BFD_JUMP_TABLE_CORE (hppabsd_core), + BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive), + BFD_JUMP_TABLE_SYMBOLS (hppabsd_core), + BFD_JUMP_TABLE_RELOCS (_bfd_norelocs), + BFD_JUMP_TABLE_WRITE (_bfd_generic), + BFD_JUMP_TABLE_LINK (_bfd_nolink), + (PTR) 0 /* backend_data */ }; #endif diff --git a/bfd/hpux-core.c b/bfd/hpux-core.c index 81b0e53..7653b85 100644 --- a/bfd/hpux-core.c +++ b/bfd/hpux-core.c @@ -214,70 +214,14 @@ hpux_core_core_file_matches_executable_p (core_bfd, exec_bfd) return true; /* FIXME, We have no way of telling at this point */ } -/* No archive file support via this BFD */ -#define hpux_core_openr_next_archived_file bfd_generic_openr_next_archived_file -#define hpux_core_generic_stat_arch_elt bfd_generic_stat_arch_elt -#define hpux_core_slurp_armap bfd_false -#define hpux_core_slurp_extended_name_table bfd_true -#define hpux_core_write_armap (boolean (*) PARAMS \ - ((bfd *arch, unsigned int elength, struct orl *map, \ - unsigned int orl_count, int stridx))) bfd_false -#define hpux_core_truncate_arname bfd_dont_truncate_arname - -#define hpux_core_close_and_cleanup bfd_generic_close_and_cleanup -#define hpux_core_set_section_contents (boolean (*) PARAMS \ - ((bfd *abfd, asection *section, PTR data, file_ptr offset, \ - bfd_size_type count))) bfd_generic_set_section_contents -#define hpux_core_get_section_contents bfd_generic_get_section_contents -#define hpux_core_new_section_hook (boolean (*) PARAMS \ - ((bfd *, sec_ptr))) bfd_true -#define hpux_core_get_symtab_upper_bound bfd_0l -#define hpux_core_get_symtab (long (*) PARAMS \ - ((bfd *, struct symbol_cache_entry **))) bfd_0l -#define hpux_core_get_reloc_upper_bound (long (*) PARAMS \ - ((bfd *, sec_ptr))) bfd_0l -#define hpux_core_canonicalize_reloc (long (*) PARAMS \ - ((bfd *, sec_ptr, arelent **, struct symbol_cache_entry**))) bfd_0l -#define hpux_core_print_symbol (void (*) PARAMS \ - ((bfd *, PTR, struct symbol_cache_entry *, \ - bfd_print_symbol_type))) bfd_false -#define hpux_core_get_symbol_info (void (*) PARAMS \ - ((bfd *, struct symbol_cache_entry *, \ - symbol_info *))) bfd_false -#define hpux_core_get_lineno (alent * (*) PARAMS \ - ((bfd *, struct symbol_cache_entry *))) bfd_nullvoidptr -#define hpux_core_set_arch_mach (boolean (*) PARAMS \ - ((bfd *, enum bfd_architecture, unsigned long))) bfd_false -#define hpux_core_find_nearest_line (boolean (*) PARAMS \ - ((bfd *abfd, struct sec *section, \ - struct symbol_cache_entry **symbols,bfd_vma offset, \ - CONST char **file, CONST char **func, unsigned int *line))) bfd_false -#define hpux_core_sizeof_headers (int (*) PARAMS \ - ((bfd *, boolean))) bfd_0 - -#define hpux_core_bfd_debug_info_start bfd_void -#define hpux_core_bfd_debug_info_end bfd_void -#define hpux_core_bfd_debug_info_accumulate (void (*) PARAMS \ - ((bfd *, struct sec *))) bfd_void -#define hpux_core_bfd_get_relocated_section_contents bfd_generic_get_relocated_section_contents -#define hpux_core_bfd_relax_section bfd_generic_relax_section -#define hpux_core_bfd_reloc_type_lookup \ - ((CONST struct reloc_howto_struct *(*) PARAMS ((bfd *, bfd_reloc_code_real_type))) bfd_nullvoidptr) -#define hpux_core_bfd_make_debug_symbol \ - ((asymbol *(*) PARAMS ((bfd *, void *, unsigned long))) bfd_nullvoidptr) -#define hpux_core_bfd_link_hash_table_create \ - ((struct bfd_link_hash_table *(*) PARAMS ((bfd *))) bfd_nullvoidptr) -#define hpux_core_bfd_link_add_symbols \ - ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false) -#define hpux_core_bfd_final_link \ - ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false) -#define hpux_core_bfd_copy_private_section_data \ - ((boolean (*) PARAMS ((bfd *, asection *, bfd *, asection *))) bfd_false) -#define hpux_core_bfd_copy_private_bfd_data \ - ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_false) -#define hpux_core_bfd_is_local_label \ - ((boolean (*) PARAMS ((bfd *, asymbol *))) bfd_false) -#define hpux_core_bfd_free_cached_info bfd_true +#define hpux_core_get_symtab_upper_bound _bfd_nosymbols_get_symtab_upper_bound +#define hpux_core_get_symtab _bfd_nosymbols_get_symtab +#define hpux_core_print_symbol _bfd_nosymbols_print_symbol +#define hpux_core_get_symbol_info _bfd_nosymbols_get_symbol_info +#define hpux_core_bfd_is_local_label _bfd_nosymbols_bfd_is_local_label +#define hpux_core_get_lineno _bfd_nosymbols_get_lineno +#define hpux_core_find_nearest_line _bfd_nosymbols_find_nearest_line +#define hpux_core_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol /* If somebody calls any byte-swapping routines, shoot them. */ void @@ -326,6 +270,14 @@ bfd_target hpux_core_vec = bfd_false, bfd_false }, - JUMP_TABLE(hpux_core), + BFD_JUMP_TABLE_GENERIC (_bfd_generic), + BFD_JUMP_TABLE_COPY (_bfd_generic), + BFD_JUMP_TABLE_CORE (hpux_core), + BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive), + BFD_JUMP_TABLE_SYMBOLS (hpux_core), + BFD_JUMP_TABLE_RELOCS (_bfd_norelocs), + BFD_JUMP_TABLE_WRITE (_bfd_generic), + BFD_JUMP_TABLE_LINK (_bfd_nolink), + (PTR) 0 /* backend_data */ }; diff --git a/bfd/i386os9k.c b/bfd/i386os9k.c index 69a0f2d..2d5cd15 100644 --- a/bfd/i386os9k.c +++ b/bfd/i386os9k.c @@ -323,43 +323,19 @@ os9k_sizeof_headers (ignore_abfd, ignore) /***********************************************************************/ -/* We don't have core files. */ -#define aout_32_core_file_failing_command _bfd_dummy_core_file_failing_command -#define aout_32_core_file_failing_signal _bfd_dummy_core_file_failing_signal -#define aout_32_core_file_matches_executable_p \ - _bfd_dummy_core_file_matches_executable_p - -/* We use BSD-Unix generic archive files. */ -#define aout_32_openr_next_archived_file bfd_generic_openr_next_archived_file -#define aout_32_generic_stat_arch_elt bfd_generic_stat_arch_elt -#define aout_32_slurp_armap bfd_slurp_bsd_armap -#define aout_32_slurp_extended_name_table _bfd_slurp_extended_name_table -#define aout_32_write_armap bsd_write_armap -#define aout_32_truncate_arname bfd_bsd_truncate_arname - -/* We override these routines from the usual a.out file routines. */ -#define aout_32_canonicalize_reloc bfd_canonicalize_reloc -#define aout_32_get_reloc_upper_bound bfd_get_reloc_upper_bound -#define aout_32_set_section_contents bfd_set_section_contents -#define aout_32_set_arch_mach bfd_default_set_arch_mach -#define aout_32_sizeof_headers os9k_sizeof_headers - -#define aout_32_bfd_debug_info_start bfd_void -#define aout_32_bfd_debug_info_end bfd_void -#define aout_32_bfd_debug_info_accumulate (PROTO(void,(*),(bfd*, struct sec *))) bfd_void - -#define aout_32_bfd_make_debug_symbol \ - ((asymbol *(*) PARAMS ((bfd *, void *, unsigned long))) bfd_nullvoidptr) -#define aout_32_bfd_link_hash_table_create _bfd_generic_link_hash_table_create -#define aout_32_bfd_link_add_symbols _bfd_generic_link_add_symbols -#define aout_32_bfd_final_link _bfd_generic_final_link -#define aout_32_bfd_get_relocated_section_contents bfd_generic_get_relocated_section_contents -#define aout_32_bfd_relax_section bfd_generic_relax_section -#define aout_32_bfd_reloc_type_lookup \ - ((CONST struct reloc_howto_struct *(*) PARAMS \ -((bfd *, bfd_reloc_code_real_type))) bfd_nullvoidptr) #define aout_32_close_and_cleanup aout_32_bfd_free_cached_info +#define aout_32_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol + +#define aout_32_bfd_reloc_type_lookup _bfd_norelocs_bfd_reloc_type_lookup + +#define os9k_bfd_get_relocated_section_contents \ + bfd_generic_get_relocated_section_contents +#define os9k_bfd_relax_section bfd_generic_relax_section +#define os9k_bfd_link_hash_table_create _bfd_generic_link_hash_table_create +#define os9k_bfd_link_add_symbols _bfd_generic_link_add_symbols +#define os9k_bfd_final_link _bfd_generic_final_link + bfd_target i386os9k_vec = { "i386os9k", /* name */ @@ -386,6 +362,14 @@ bfd_target i386os9k_vec = {bfd_false, bfd_false, /* bfd_write_contents */ _bfd_write_archive_contents, bfd_false}, - JUMP_TABLE (aout_32), + BFD_JUMP_TABLE_GENERIC (aout_32), + BFD_JUMP_TABLE_COPY (_bfd_generic), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_bsd), + BFD_JUMP_TABLE_SYMBOLS (aout_32), + BFD_JUMP_TABLE_RELOCS (aout_32), + BFD_JUMP_TABLE_WRITE (aout_32), + BFD_JUMP_TABLE_LINK (os9k), + (PTR) 0, }; @@ -3275,6 +3275,9 @@ ieee_sizeof_headers (abfd, x) } +/* The debug info routines are never used. */ +#if 0 + static void ieee_bfd_debug_info_start (abfd) bfd *abfd; @@ -3337,33 +3340,33 @@ ieee_bfd_debug_info_accumulate (abfd, section) } } +#endif + +#define ieee_close_and_cleanup _bfd_generic_close_and_cleanup +#define ieee_bfd_free_cached_info _bfd_generic_bfd_free_cached_info -#define FOO PROTO -#define ieee_core_file_failing_command (char *(*)())(bfd_nullvoidptr) -#define ieee_core_file_failing_signal (int (*)())bfd_0 -#define ieee_core_file_matches_executable_p ( FOO(boolean, (*),(bfd *, bfd *)))bfd_false #define ieee_slurp_armap bfd_true #define ieee_slurp_extended_name_table bfd_true -#define ieee_truncate_arname (void (*)())bfd_nullvoidptr -#define ieee_write_armap (FOO( boolean, (*),(bfd *, unsigned int, struct orl *, unsigned int, int))) bfd_nullvoidptr -#define ieee_get_lineno (struct lineno_cache_entry *(*)())bfd_nullvoidptr -#define ieee_close_and_cleanup bfd_generic_close_and_cleanup -#define ieee_set_arch_mach bfd_default_set_arch_mach -#define ieee_bfd_get_relocated_section_contents bfd_generic_get_relocated_section_contents +#define ieee_truncate_arname bfd_dont_truncate_arname +#define ieee_write_armap \ + ((boolean (*) \ + PARAMS ((bfd *, unsigned int, struct orl *, unsigned int, int))) \ + bfd_true) + +#define ieee_bfd_is_local_label bfd_generic_is_local_label +#define ieee_get_lineno _bfd_nosymbols_get_lineno +#define ieee_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol + +#define ieee_bfd_reloc_type_lookup _bfd_norelocs_bfd_reloc_type_lookup + +#define ieee_set_arch_mach _bfd_generic_set_arch_mach + +#define ieee_bfd_get_relocated_section_contents \ + bfd_generic_get_relocated_section_contents #define ieee_bfd_relax_section bfd_generic_relax_section -#define ieee_bfd_reloc_type_lookup \ - ((CONST struct reloc_howto_struct *(*) PARAMS ((bfd *, bfd_reloc_code_real_type))) bfd_nullvoidptr) -#define ieee_bfd_make_debug_symbol \ - ((asymbol *(*) PARAMS ((bfd *, void *, unsigned long))) bfd_nullvoidptr) #define ieee_bfd_link_hash_table_create _bfd_generic_link_hash_table_create #define ieee_bfd_link_add_symbols _bfd_generic_link_add_symbols #define ieee_bfd_final_link _bfd_generic_final_link -#define ieee_bfd_copy_private_section_data \ - ((boolean (*) PARAMS ((bfd *, asection *, bfd *, asection *))) bfd_true) -#define ieee_bfd_copy_private_bfd_data \ - ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_true) -#define ieee_bfd_is_local_label bfd_generic_is_local_label -#define ieee_bfd_free_cached_info bfd_true /*SUPPRESS 460 */ bfd_target ieee_vec = @@ -3405,6 +3408,15 @@ bfd_target ieee_vec = _bfd_write_archive_contents, bfd_false, }, - JUMP_TABLE (ieee), + + BFD_JUMP_TABLE_GENERIC (ieee), + BFD_JUMP_TABLE_COPY (_bfd_generic), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (ieee), + BFD_JUMP_TABLE_SYMBOLS (ieee), + BFD_JUMP_TABLE_RELOCS (ieee), + BFD_JUMP_TABLE_WRITE (ieee), + BFD_JUMP_TABLE_LINK (ieee), + (PTR) 0 }; diff --git a/bfd/irix-core.c b/bfd/irix-core.c index 0a578cf..ff7e56b 100644 --- a/bfd/irix-core.c +++ b/bfd/irix-core.c @@ -189,70 +189,14 @@ irix_core_make_empty_symbol (abfd) return new; } -#define irix_core_openr_next_archived_file bfd_generic_openr_next_archived_file -#define irix_core_generic_stat_arch_elt bfd_generic_stat_arch_elt -#define irix_core_slurp_armap bfd_false -#define irix_core_slurp_extended_name_table bfd_true -#define irix_core_write_armap (boolean (*) PARAMS \ - ((bfd *arch, unsigned int elength, struct orl *map, \ - unsigned int orl_count, int stridx))) bfd_false -#define irix_core_truncate_arname bfd_dont_truncate_arname - -#define irix_core_close_and_cleanup bfd_generic_close_and_cleanup -#define irix_core_set_section_contents (boolean (*) PARAMS \ - ((bfd *abfd, asection *section, PTR data, file_ptr offset, \ - bfd_size_type count))) bfd_generic_set_section_contents -#define irix_core_get_section_contents bfd_generic_get_section_contents -#define irix_core_new_section_hook (boolean (*) PARAMS \ - ((bfd *, sec_ptr))) bfd_true -#define irix_core_get_symtab_upper_bound bfd_0l -#define irix_core_get_symtab (long (*) PARAMS \ - ((bfd *, struct symbol_cache_entry **))) bfd_0l -#define irix_core_get_reloc_upper_bound (long (*) PARAMS \ - ((bfd *, sec_ptr))) bfd_0l -#define irix_core_canonicalize_reloc (long (*) PARAMS \ - ((bfd *, sec_ptr, arelent **, struct symbol_cache_entry**))) bfd_0l -#define irix_core_print_symbol (void (*) PARAMS \ - ((bfd *, PTR, struct symbol_cache_entry *, \ - bfd_print_symbol_type))) bfd_false -#define irix_core_get_symbol_info (void (*) PARAMS \ - ((bfd *, struct symbol_cache_entry *, \ - symbol_info *))) bfd_false -#define irix_core_get_lineno (alent * (*) PARAMS \ - ((bfd *, struct symbol_cache_entry *))) bfd_nullvoidptr -#define irix_core_set_arch_mach (boolean (*) PARAMS \ - ((bfd *, enum bfd_architecture, unsigned long))) bfd_false -#define irix_core_find_nearest_line (boolean (*) PARAMS \ - ((bfd *abfd, struct sec *section, \ - struct symbol_cache_entry **symbols,bfd_vma offset, \ - CONST char **file, CONST char **func, unsigned int *line))) bfd_false -#define irix_core_sizeof_headers (int (*) PARAMS \ - ((bfd *, boolean))) bfd_0 - -#define irix_core_bfd_debug_info_start bfd_void -#define irix_core_bfd_debug_info_end bfd_void -#define irix_core_bfd_debug_info_accumulate (void (*) PARAMS \ - ((bfd *, struct sec *))) bfd_void -#define irix_core_bfd_get_relocated_section_contents bfd_generic_get_relocated_section_contents -#define irix_core_bfd_relax_section bfd_generic_relax_section -#define irix_core_bfd_reloc_type_lookup \ - ((CONST struct reloc_howto_struct *(*) PARAMS ((bfd *, bfd_reloc_code_real_type))) bfd_nullvoidptr) -#define irix_core_bfd_make_debug_symbol \ - ((asymbol *(*) PARAMS ((bfd *, void *, unsigned long))) bfd_nullvoidptr) -#define irix_core_bfd_link_hash_table_create \ - ((struct bfd_link_hash_table *(*) PARAMS ((bfd *))) bfd_nullvoidptr) -#define irix_core_bfd_link_add_symbols \ - ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false) -#define irix_core_bfd_final_link \ - ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false) - -#define irix_core_bfd_copy_private_section_data \ - ((boolean (*) PARAMS ((bfd *, asection *, bfd *, asection *))) bfd_false) -#define irix_core_bfd_copy_private_bfd_data \ - ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_false) -#define irix_core_bfd_is_local_label \ - ((boolean (*) PARAMS ((bfd *, asymbol *))) bfd_false) -#define irix_core_bfd_free_cached_info bfd_true +#define irix_core_get_symtab_upper_bound _bfd_nosymbols_get_symtab_upper_bound +#define irix_core_get_symtab _bfd_nosymbols_get_symtab +#define irix_core_print_symbol _bfd_nosymbols_print_symbol +#define irix_core_get_symbol_info _bfd_nosymbols_get_symbol_info +#define irix_core_bfd_is_local_label _bfd_nosymbols_bfd_is_local_label +#define irix_core_get_lineno _bfd_nosymbols_get_lineno +#define irix_core_find_nearest_line _bfd_nosymbols_find_nearest_line +#define irix_core_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol /* If somebody calls any byte-swapping routines, shoot them. */ void @@ -301,7 +245,15 @@ bfd_target irix_core_vec = bfd_false, bfd_false }, - JUMP_TABLE(irix_core), + BFD_JUMP_TABLE_GENERIC (_bfd_generic), + BFD_JUMP_TABLE_COPY (_bfd_generic), + BFD_JUMP_TABLE_CORE (irix_core), + BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive), + BFD_JUMP_TABLE_SYMBOLS (irix_core), + BFD_JUMP_TABLE_RELOCS (_bfd_norelocs), + BFD_JUMP_TABLE_WRITE (_bfd_generic), + BFD_JUMP_TABLE_LINK (_bfd_nolink), + (PTR) 0 /* backend_data */ }; diff --git a/bfd/libaout.h b/bfd/libaout.h index 9a3cecc..0348463 100644 --- a/bfd/libaout.h +++ b/bfd/libaout.h @@ -398,21 +398,13 @@ aout_stab_name PARAMS ((int code)); /* A.out uses the generic versions of these routines... */ -#define aout_32_get_section_contents bfd_generic_get_section_contents +#define aout_32_get_section_contents _bfd_generic_get_section_contents -#define aout_64_get_section_contents bfd_generic_get_section_contents +#define aout_64_get_section_contents _bfd_generic_get_section_contents #ifndef NO_WRITE_HEADER_KLUDGE #define NO_WRITE_HEADER_KLUDGE 0 #endif -#ifndef aout_32_bfd_copy_private_section_data -#define aout_32_bfd_copy_private_section_data \ - ((boolean (*) PARAMS ((bfd *, asection *, bfd *, asection *))) bfd_true) -#endif -#ifndef aout_32_bfd_copy_private_bfd_data -#define aout_32_bfd_copy_private_bfd_data \ - ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_true) -#endif #ifndef aout_32_bfd_is_local_label #define aout_32_bfd_is_local_label bfd_generic_is_local_label #endif diff --git a/bfd/libbfd-in.h b/bfd/libbfd-in.h index b0a0f5f..a4712c9 100644 --- a/bfd/libbfd-in.h +++ b/bfd/libbfd-in.h @@ -118,14 +118,10 @@ PTR bfd_nullvoidptr PARAMS ((bfd *ignore)); int bfd_0 PARAMS ((bfd *ignore)); unsigned int bfd_0u PARAMS ((bfd *ignore)); long bfd_0l PARAMS ((bfd *ignore)); +long _bfd_n1 PARAMS ((bfd *ignore)); void bfd_void PARAMS ((bfd *ignore)); bfd * _bfd_new_bfd_contained_in PARAMS ((bfd *)); -boolean _bfd_dummy_new_section_hook PARAMS ((bfd *ignore, asection *newsect)); -char * _bfd_dummy_core_file_failing_command PARAMS ((bfd *abfd)); -int _bfd_dummy_core_file_failing_signal PARAMS ((bfd *abfd)); -boolean _bfd_dummy_core_file_matches_executable_p PARAMS ((bfd *core_bfd, - bfd *exec_bfd)); bfd_target * _bfd_dummy_target PARAMS ((bfd *abfd)); void bfd_dont_truncate_arname PARAMS ((bfd *abfd, CONST char *filename, @@ -146,13 +142,146 @@ bfd * bfd_generic_openr_next_archived_file PARAMS ((bfd *archive, int bfd_generic_stat_arch_elt PARAMS ((bfd *, struct stat *)); -boolean bfd_generic_get_section_contents PARAMS ((bfd *abfd, sec_ptr section, - PTR location, file_ptr offset, - bfd_size_type count)); - -boolean bfd_generic_set_section_contents PARAMS ((bfd *abfd, sec_ptr section, - PTR location, file_ptr offset, - bfd_size_type count)); + +/* Generic routines to use for BFD_JUMP_TABLE_GENERIC. Use + BFD_JUMP_TABLE_GENERIC (_bfd_generic). */ + +#define _bfd_generic_close_and_cleanup bfd_true +#define _bfd_generic_bfd_free_cached_info bfd_true +#define _bfd_generic_new_section_hook \ + ((boolean (*) PARAMS ((bfd *, asection *))) bfd_true) +extern boolean _bfd_generic_get_section_contents + PARAMS ((bfd *, asection *, PTR location, file_ptr offset, + bfd_size_type count)); + +/* Generic routines to use for BFD_JUMP_TABLE_COPY. Use + BFD_JUMP_TABLE_COPY (_bfd_generic). */ + +#define _bfd_generic_bfd_copy_private_bfd_data \ + ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_true) +#define _bfd_generic_bfd_copy_private_section_data \ + ((boolean (*) PARAMS ((bfd *, asection *, bfd *, asection *))) bfd_true) + +/* Routines to use for BFD_JUMP_TABLE_CORE when there is no core file + support. Use BFD_JUMP_TABLE_CORE (_bfd_nocore). */ + +extern char *_bfd_nocore_core_file_failing_command PARAMS ((bfd *)); +extern int _bfd_nocore_core_file_failing_signal PARAMS ((bfd *)); +extern boolean _bfd_nocore_core_file_matches_executable_p + PARAMS ((bfd *, bfd *)); + +/* Routines to use for BFD_JUMP_TABLE_ARCHIVE when there is no archive + file support. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive). */ + +#define _bfd_noarchive_slurp_armap bfd_false +#define _bfd_noarchive_slurp_extended_name_table bfd_false +#define _bfd_noarchive_truncate_arname \ + ((void (*) PARAMS ((bfd *, const char *, char *))) bfd_void) +#define _bfd_noarchive_write_armap \ + ((boolean (*) \ + PARAMS ((bfd *, unsigned int, struct orl *, unsigned int, int))) \ + bfd_false) +#define _bfd_noarchive_openr_next_archived_file \ + ((bfd *(*) PARAMS ((bfd *, bfd *))) bfd_nullvoidptr) +#define _bfd_noarchive_generic_stat_arch_elt bfd_generic_stat_arch_elt + +/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get BSD style + archives. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_bsd). */ + +#define _bfd_archive_bsd_slurp_armap bfd_slurp_bsd_armap +#define _bfd_archive_bsd_slurp_extended_name_table \ + _bfd_slurp_extended_name_table +#define _bfd_archive_bsd_truncate_arname bfd_bsd_truncate_arname +#define _bfd_archive_bsd_write_armap bsd_write_armap +#define _bfd_archive_bsd_openr_next_archived_file \ + bfd_generic_openr_next_archived_file +#define _bfd_archive_bsd_generic_stat_arch_elt \ + bfd_generic_stat_arch_elt + +/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get COFF style + archives. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff). */ + +#define _bfd_archive_coff_slurp_armap bfd_slurp_coff_armap +#define _bfd_archive_coff_slurp_extended_name_table \ + _bfd_slurp_extended_name_table +#define _bfd_archive_coff_truncate_arname bfd_dont_truncate_arname +#define _bfd_archive_coff_write_armap coff_write_armap +#define _bfd_archive_coff_openr_next_archived_file \ + bfd_generic_openr_next_archived_file +#define _bfd_archive_coff_generic_stat_arch_elt \ + bfd_generic_stat_arch_elt + +/* Routines to use for BFD_JUMP_TABLE_SYMBOLS where there is no symbol + support. Use BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols). */ + +#define _bfd_nosymbols_get_symtab_upper_bound _bfd_n1 +#define _bfd_nosymbols_get_symtab \ + ((long (*) PARAMS ((bfd *, asymbol **))) _bfd_n1) +#define _bfd_nosymbols_make_empty_symbol \ + ((asymbol *(*) PARAMS ((bfd *))) bfd_nullvoidptr) +#define _bfd_nosymbols_print_symbol \ + ((void (*) PARAMS ((bfd *, PTR, asymbol *, bfd_print_symbol_type))) bfd_void) +#define _bfd_nosymbols_get_symbol_info \ + ((void (*) PARAMS ((bfd *, asymbol *, symbol_info *))) bfd_void) +#define _bfd_nosymbols_bfd_is_local_label \ + ((boolean (*) PARAMS ((bfd *, asymbol *))) bfd_false) +#define _bfd_nosymbols_get_lineno \ + ((alent *(*) PARAMS ((bfd *, asymbol *))) bfd_nullvoidptr) +#define _bfd_nosymbols_find_nearest_line \ + ((boolean (*) \ + PARAMS ((bfd *, asection *, asymbol **, bfd_vma, const char **, \ + const char **, unsigned int *))) \ + bfd_false) +#define _bfd_nosymbols_bfd_make_debug_symbol \ + ((asymbol *(*) PARAMS ((bfd *, PTR, unsigned long))) bfd_nullvoidptr) + +/* Routines to use for BFD_JUMP_TABLE_RELOCS when there is no reloc + support. Use BFD_JUMP_TABLE_RELOCS (_bfd_norelocs). */ + +#define _bfd_norelocs_get_reloc_upper_bound \ + ((long (*) PARAMS ((bfd *, asection *))) _bfd_n1) +#define _bfd_norelocs_canonicalize_reloc \ + ((long (*) PARAMS ((bfd *, asection *, arelent **, asymbol **))) _bfd_n1) +#define _bfd_norelocs_bfd_reloc_type_lookup \ + ((const reloc_howto_type *(*) PARAMS ((bfd *, bfd_reloc_code_real_type))) \ + bfd_nullvoidptr) + +/* Routines to use for BFD_JUMP_TABLE_WRITE for targets which may not + be written. Use BFD_JUMP_TABLE_WRITE (_bfd_nowrite). */ + +#define _bfd_nowrite_set_arch_mach \ + ((boolean (*) PARAMS ((bfd *, enum bfd_architecture, unsigned long))) \ + bfd_false) +#define _bfd_nowrite_set_section_contents \ + ((boolean (*) PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type))) \ + bfd_false) + +/* Generic routines to use for BFD_JUMP_TABLE_WRITE. Use + BFD_JUMP_TABLE_WRITE (_bfd_generic). */ + +#define _bfd_generic_set_arch_mach bfd_default_set_arch_mach +extern boolean _bfd_generic_set_section_contents + PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type)); + +/* Routines to use for BFD_JUMP_TABLE_LINK for targets which do not + support linking. Use BFD_JUMP_TABLE_LINK (_bfd_nolink). */ + +#define _bfd_nolink_sizeof_headers ((int (*) PARAMS ((bfd *, boolean))) bfd_0) +#define _bfd_nolink_bfd_get_relocated_section_contents \ + ((bfd_byte *(*) \ + PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_order *, \ + bfd_byte *, boolean, asymbol **))) \ + bfd_nullvoidptr) +#define _bfd_nolink_bfd_relax_section \ + ((boolean (*) \ + PARAMS ((bfd *, asection *, struct bfd_link_info *, boolean *))) \ + bfd_false) +#define _bfd_nolink_bfd_link_hash_table_create \ + ((struct bfd_link_hash_table *(*) PARAMS ((bfd *))) bfd_nullvoidptr) +#define _bfd_nolink_bfd_link_add_symbols \ + ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false) +#define _bfd_nolink_bfd_final_link \ + ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false) /* Generic routine to determine of the given symbol is a local label. */ @@ -259,9 +388,6 @@ extern bfd *bfd_last_cache; #define stoi(x) ((int)(x)) #endif -/* Generic routine for close_and_cleanup is really just bfd_true. */ -#define bfd_generic_close_and_cleanup bfd_true - /* List of supported target vectors, and the default vector (if bfd_default_vector[0] is NULL, there is no default). */ extern bfd_target *bfd_target_vector[]; diff --git a/bfd/libbfd.c b/bfd/libbfd.c index 93522d9..2925754 100644 --- a/bfd/libbfd.c +++ b/bfd/libbfd.c @@ -32,23 +32,21 @@ DESCRIPTION completeness. */ -/*ARGSUSED*/ -boolean -_bfd_dummy_new_section_hook (ignore, ignore_newsect) - bfd *ignore; - asection *ignore_newsect; -{ - return true; -} +/* A routine which is used in target vectors for unsupported + operations. */ /*ARGSUSED*/ boolean bfd_false (ignore) bfd *ignore; { + bfd_set_error (bfd_error_invalid_operation); return false; } +/* A routine which is used in target vectors for supported operations + which do not actually do anything. */ + /*ARGSUSED*/ boolean bfd_true (ignore) @@ -57,12 +55,16 @@ bfd_true (ignore) return true; } +/* A routine which is used in target vectors for unsupported + operations which return a pointer value. */ + /*ARGSUSED*/ PTR bfd_nullvoidptr (ignore) bfd *ignore; { - return (PTR)NULL; + bfd_set_error (bfd_error_invalid_operation); + return NULL; } /*ARGSUSED*/ @@ -89,6 +91,18 @@ bfd_0l (ignore) return 0; } +/* A routine which is used in target vectors for unsupported + operations which return -1 on error. */ + +/*ARGSUSED*/ +long +_bfd_n1 (ignore_abfd) + bfd *ignore_abfd; +{ + bfd_set_error (bfd_error_invalid_operation); + return -1; +} + /*ARGSUSED*/ void bfd_void (ignore) @@ -98,7 +112,7 @@ bfd_void (ignore) /*ARGSUSED*/ boolean -_bfd_dummy_core_file_matches_executable_p (ignore_core_bfd, ignore_exec_bfd) +_bfd_nocore_core_file_matches_executable_p (ignore_core_bfd, ignore_exec_bfd) bfd *ignore_core_bfd; bfd *ignore_exec_bfd; { @@ -106,21 +120,27 @@ _bfd_dummy_core_file_matches_executable_p (ignore_core_bfd, ignore_exec_bfd) return false; } -/* of course you can't initialize a function to be the same as another, grr */ +/* Routine to handle core_file_failing_command entry point for targets + without core file support. */ /*ARGSUSED*/ char * -_bfd_dummy_core_file_failing_command (ignore_abfd) +_bfd_nocore_core_file_failing_command (ignore_abfd) bfd *ignore_abfd; { + bfd_set_error (bfd_error_invalid_operation); return (char *)NULL; } +/* Routine to handle core_file_failing_signal entry point for targets + without core file support. */ + /*ARGSUSED*/ int -_bfd_dummy_core_file_failing_signal (ignore_abfd) +_bfd_nocore_core_file_failing_signal (ignore_abfd) bfd *ignore_abfd; { + bfd_set_error (bfd_error_invalid_operation); return 0; } @@ -787,7 +807,7 @@ bfd_putl64 (data, addr) /* Default implementation */ boolean -bfd_generic_get_section_contents (abfd, section, location, offset, count) +_bfd_generic_get_section_contents (abfd, section, location, offset, count) bfd *abfd; sec_ptr section; PTR location; @@ -808,7 +828,7 @@ bfd_generic_get_section_contents (abfd, section, location, offset, count) in read-write files, though. See other set_section_contents functions to see why it doesn't work for new sections. */ boolean -bfd_generic_set_section_contents (abfd, section, location, offset, count) +_bfd_generic_set_section_contents (abfd, section, location, offset, count) bfd *abfd; sec_ptr section; PTR location; diff --git a/bfd/libbfd.h b/bfd/libbfd.h index a31db2e..2c2ab36 100644 --- a/bfd/libbfd.h +++ b/bfd/libbfd.h @@ -118,14 +118,10 @@ PTR bfd_nullvoidptr PARAMS ((bfd *ignore)); int bfd_0 PARAMS ((bfd *ignore)); unsigned int bfd_0u PARAMS ((bfd *ignore)); long bfd_0l PARAMS ((bfd *ignore)); +long _bfd_n1 PARAMS ((bfd *ignore)); void bfd_void PARAMS ((bfd *ignore)); bfd * _bfd_new_bfd_contained_in PARAMS ((bfd *)); -boolean _bfd_dummy_new_section_hook PARAMS ((bfd *ignore, asection *newsect)); -char * _bfd_dummy_core_file_failing_command PARAMS ((bfd *abfd)); -int _bfd_dummy_core_file_failing_signal PARAMS ((bfd *abfd)); -boolean _bfd_dummy_core_file_matches_executable_p PARAMS ((bfd *core_bfd, - bfd *exec_bfd)); bfd_target * _bfd_dummy_target PARAMS ((bfd *abfd)); void bfd_dont_truncate_arname PARAMS ((bfd *abfd, CONST char *filename, @@ -146,13 +142,146 @@ bfd * bfd_generic_openr_next_archived_file PARAMS ((bfd *archive, int bfd_generic_stat_arch_elt PARAMS ((bfd *, struct stat *)); -boolean bfd_generic_get_section_contents PARAMS ((bfd *abfd, sec_ptr section, - PTR location, file_ptr offset, - bfd_size_type count)); - -boolean bfd_generic_set_section_contents PARAMS ((bfd *abfd, sec_ptr section, - PTR location, file_ptr offset, - bfd_size_type count)); + +/* Generic routines to use for BFD_JUMP_TABLE_GENERIC. Use + BFD_JUMP_TABLE_GENERIC (_bfd_generic). */ + +#define _bfd_generic_close_and_cleanup bfd_true +#define _bfd_generic_bfd_free_cached_info bfd_true +#define _bfd_generic_new_section_hook \ + ((boolean (*) PARAMS ((bfd *, asection *))) bfd_true) +extern boolean _bfd_generic_get_section_contents + PARAMS ((bfd *, asection *, PTR location, file_ptr offset, + bfd_size_type count)); + +/* Generic routines to use for BFD_JUMP_TABLE_COPY. Use + BFD_JUMP_TABLE_COPY (_bfd_generic). */ + +#define _bfd_generic_bfd_copy_private_bfd_data \ + ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_true) +#define _bfd_generic_bfd_copy_private_section_data \ + ((boolean (*) PARAMS ((bfd *, asection *, bfd *, asection *))) bfd_true) + +/* Routines to use for BFD_JUMP_TABLE_CORE when there is no core file + support. Use BFD_JUMP_TABLE_CORE (_bfd_nocore). */ + +extern char *_bfd_nocore_core_file_failing_command PARAMS ((bfd *)); +extern int _bfd_nocore_core_file_failing_signal PARAMS ((bfd *)); +extern boolean _bfd_nocore_core_file_matches_executable_p + PARAMS ((bfd *, bfd *)); + +/* Routines to use for BFD_JUMP_TABLE_ARCHIVE when there is no archive + file support. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive). */ + +#define _bfd_noarchive_slurp_armap bfd_false +#define _bfd_noarchive_slurp_extended_name_table bfd_false +#define _bfd_noarchive_truncate_arname \ + ((void (*) PARAMS ((bfd *, const char *, char *))) bfd_void) +#define _bfd_noarchive_write_armap \ + ((boolean (*) \ + PARAMS ((bfd *, unsigned int, struct orl *, unsigned int, int))) \ + bfd_false) +#define _bfd_noarchive_openr_next_archived_file \ + ((bfd *(*) PARAMS ((bfd *, bfd *))) bfd_nullvoidptr) +#define _bfd_noarchive_generic_stat_arch_elt bfd_generic_stat_arch_elt + +/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get BSD style + archives. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_bsd). */ + +#define _bfd_archive_bsd_slurp_armap bfd_slurp_bsd_armap +#define _bfd_archive_bsd_slurp_extended_name_table \ + _bfd_slurp_extended_name_table +#define _bfd_archive_bsd_truncate_arname bfd_bsd_truncate_arname +#define _bfd_archive_bsd_write_armap bsd_write_armap +#define _bfd_archive_bsd_openr_next_archived_file \ + bfd_generic_openr_next_archived_file +#define _bfd_archive_bsd_generic_stat_arch_elt \ + bfd_generic_stat_arch_elt + +/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get COFF style + archives. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff). */ + +#define _bfd_archive_coff_slurp_armap bfd_slurp_coff_armap +#define _bfd_archive_coff_slurp_extended_name_table \ + _bfd_slurp_extended_name_table +#define _bfd_archive_coff_truncate_arname bfd_dont_truncate_arname +#define _bfd_archive_coff_write_armap coff_write_armap +#define _bfd_archive_coff_openr_next_archived_file \ + bfd_generic_openr_next_archived_file +#define _bfd_archive_coff_generic_stat_arch_elt \ + bfd_generic_stat_arch_elt + +/* Routines to use for BFD_JUMP_TABLE_SYMBOLS where there is no symbol + support. Use BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols). */ + +#define _bfd_nosymbols_get_symtab_upper_bound _bfd_n1 +#define _bfd_nosymbols_get_symtab \ + ((long (*) PARAMS ((bfd *, asymbol **))) _bfd_n1) +#define _bfd_nosymbols_make_empty_symbol \ + ((asymbol *(*) PARAMS ((bfd *))) bfd_nullvoidptr) +#define _bfd_nosymbols_print_symbol \ + ((void (*) PARAMS ((bfd *, PTR, asymbol *, bfd_print_symbol_type))) bfd_void) +#define _bfd_nosymbols_get_symbol_info \ + ((void (*) PARAMS ((bfd *, asymbol *, symbol_info *))) bfd_void) +#define _bfd_nosymbols_bfd_is_local_label \ + ((boolean (*) PARAMS ((bfd *, asymbol *))) bfd_false) +#define _bfd_nosymbols_get_lineno \ + ((alent *(*) PARAMS ((bfd *, asymbol *))) bfd_nullvoidptr) +#define _bfd_nosymbols_find_nearest_line \ + ((boolean (*) \ + PARAMS ((bfd *, asection *, asymbol **, bfd_vma, const char **, \ + const char **, unsigned int *))) \ + bfd_false) +#define _bfd_nosymbols_bfd_make_debug_symbol \ + ((asymbol *(*) PARAMS ((bfd *, PTR, unsigned long))) bfd_nullvoidptr) + +/* Routines to use for BFD_JUMP_TABLE_RELOCS when there is no reloc + support. Use BFD_JUMP_TABLE_RELOCS (_bfd_norelocs). */ + +#define _bfd_norelocs_get_reloc_upper_bound \ + ((long (*) PARAMS ((bfd *, asection *))) _bfd_n1) +#define _bfd_norelocs_canonicalize_reloc \ + ((long (*) PARAMS ((bfd *, asection *, arelent **, asymbol **))) _bfd_n1) +#define _bfd_norelocs_bfd_reloc_type_lookup \ + ((const reloc_howto_type *(*) PARAMS ((bfd *, bfd_reloc_code_real_type))) \ + bfd_nullvoidptr) + +/* Routines to use for BFD_JUMP_TABLE_WRITE for targets which may not + be written. Use BFD_JUMP_TABLE_WRITE (_bfd_nowrite). */ + +#define _bfd_nowrite_set_arch_mach \ + ((boolean (*) PARAMS ((bfd *, enum bfd_architecture, unsigned long))) \ + bfd_false) +#define _bfd_nowrite_set_section_contents \ + ((boolean (*) PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type))) \ + bfd_false) + +/* Generic routines to use for BFD_JUMP_TABLE_WRITE. Use + BFD_JUMP_TABLE_WRITE (_bfd_generic). */ + +#define _bfd_generic_set_arch_mach bfd_default_set_arch_mach +extern boolean _bfd_generic_set_section_contents + PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type)); + +/* Routines to use for BFD_JUMP_TABLE_LINK for targets which do not + support linking. Use BFD_JUMP_TABLE_LINK (_bfd_nolink). */ + +#define _bfd_nolink_sizeof_headers ((int (*) PARAMS ((bfd *, boolean))) bfd_0) +#define _bfd_nolink_bfd_get_relocated_section_contents \ + ((bfd_byte *(*) \ + PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_order *, \ + bfd_byte *, boolean, asymbol **))) \ + bfd_nullvoidptr) +#define _bfd_nolink_bfd_relax_section \ + ((boolean (*) \ + PARAMS ((bfd *, asection *, struct bfd_link_info *, boolean *))) \ + bfd_false) +#define _bfd_nolink_bfd_link_hash_table_create \ + ((struct bfd_link_hash_table *(*) PARAMS ((bfd *))) bfd_nullvoidptr) +#define _bfd_nolink_bfd_link_add_symbols \ + ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false) +#define _bfd_nolink_bfd_final_link \ + ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false) /* Generic routine to determine of the given symbol is a local label. */ @@ -259,9 +388,6 @@ extern bfd *bfd_last_cache; #define stoi(x) ((int)(x)) #endif -/* Generic routine for close_and_cleanup is really just bfd_true. */ -#define bfd_generic_close_and_cleanup bfd_true - /* List of supported target vectors, and the default vector (if bfd_default_vector[0] is NULL, there is no default). */ extern bfd_target *bfd_target_vector[]; diff --git a/bfd/libecoff.h b/bfd/libecoff.h index cbd9347..f4b8f5e 100644 --- a/bfd/libecoff.h +++ b/bfd/libecoff.h @@ -216,19 +216,45 @@ extern boolean ecoff_mkobject PARAMS ((bfd *)); extern boolean ecoff_slurp_symbolic_info PARAMS ((bfd *)); /* Generic ECOFF BFD backend vectors. */ -extern asymbol *ecoff_make_empty_symbol PARAMS ((bfd *abfd)); + +extern boolean ecoff_write_object_contents PARAMS ((bfd *abfd)); +extern bfd_target *ecoff_archive_p PARAMS ((bfd *abfd)); + +#define ecoff_close_and_cleanup _bfd_generic_close_and_cleanup +#define ecoff_bfd_free_cached_info _bfd_generic_bfd_free_cached_info +extern boolean ecoff_new_section_hook PARAMS ((bfd *abfd, + asection *section)); +extern boolean ecoff_get_section_contents PARAMS ((bfd *abfd, + asection *section, + PTR location, + file_ptr offset, + bfd_size_type count)); + +#define ecoff_bfd_copy_private_bfd_data _bfd_generic_bfd_copy_private_bfd_data +#define ecoff_bfd_copy_private_section_data \ + _bfd_generic_bfd_copy_private_section_data + +extern boolean ecoff_slurp_armap PARAMS ((bfd *abfd)); +#define ecoff_slurp_extended_name_table _bfd_slurp_extended_name_table +#define ecoff_truncate_arname bfd_dont_truncate_arname +extern boolean ecoff_write_armap PARAMS ((bfd *abfd, unsigned int elength, + struct orl *map, + unsigned int orl_count, + int stridx)); +#define ecoff_openr_next_archived_file bfd_generic_openr_next_archived_file +#define ecoff_generic_stat_arch_elt bfd_generic_stat_arch_elt + extern long ecoff_get_symtab_upper_bound PARAMS ((bfd *abfd)); extern long ecoff_get_symtab PARAMS ((bfd *abfd, asymbol **alocation)); -extern void ecoff_get_symbol_info PARAMS ((bfd *abfd, - asymbol *symbol, - symbol_info *ret)); +extern asymbol *ecoff_make_empty_symbol PARAMS ((bfd *abfd)); extern void ecoff_print_symbol PARAMS ((bfd *abfd, PTR filep, asymbol *symbol, bfd_print_symbol_type how)); -extern long ecoff_canonicalize_reloc PARAMS ((bfd *abfd, - asection *section, - arelent **relptr, - asymbol **symbols)); +extern void ecoff_get_symbol_info PARAMS ((bfd *abfd, + asymbol *symbol, + symbol_info *ret)); +#define ecoff_bfd_is_local_label bfd_generic_is_local_label +#define ecoff_get_lineno _bfd_nosymbols_get_lineno extern boolean ecoff_find_nearest_line PARAMS ((bfd *abfd, asection *section, asymbol **symbols, @@ -236,58 +262,37 @@ extern boolean ecoff_find_nearest_line PARAMS ((bfd *abfd, CONST char **filename_ptr, CONST char **fnname_ptr, unsigned int *retline_ptr)); +#define ecoff_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol + +#define ecoff_get_reloc_upper_bound coff_get_reloc_upper_bound +extern long ecoff_canonicalize_reloc PARAMS ((bfd *abfd, + asection *section, + arelent **relptr, + asymbol **symbols)); +/* ecoff_bfd_reloc_type_lookup defined by backend. */ + extern boolean ecoff_set_arch_mach PARAMS ((bfd *abfd, enum bfd_architecture arch, unsigned long machine)); -extern int ecoff_sizeof_headers PARAMS ((bfd *abfd, boolean reloc)); extern boolean ecoff_set_section_contents PARAMS ((bfd *abfd, asection *section, PTR location, file_ptr offset, bfd_size_type count)); -extern boolean ecoff_get_section_contents PARAMS ((bfd *abfd, - asection *section, - PTR location, - file_ptr offset, - bfd_size_type count)); -extern boolean ecoff_write_object_contents PARAMS ((bfd *abfd)); -extern boolean ecoff_slurp_armap PARAMS ((bfd *abfd)); -extern boolean ecoff_write_armap PARAMS ((bfd *abfd, unsigned int elength, - struct orl *map, - unsigned int orl_count, - int stridx)); -#define ecoff_slurp_extended_name_table _bfd_slurp_extended_name_table -extern bfd_target *ecoff_archive_p PARAMS ((bfd *abfd)); -#define ecoff_get_lineno \ - ((alent *(*) PARAMS ((bfd *, asymbol *))) bfd_nullvoidptr) -#define ecoff_truncate_arname bfd_dont_truncate_arname -#define ecoff_openr_next_archived_file bfd_generic_openr_next_archived_file -#define ecoff_generic_stat_arch_elt bfd_generic_stat_arch_elt -#define ecoff_get_reloc_upper_bound coff_get_reloc_upper_bound -#define ecoff_close_and_cleanup bfd_generic_close_and_cleanup -#define ecoff_bfd_debug_info_start bfd_void -#define ecoff_bfd_debug_info_end bfd_void -#define ecoff_bfd_debug_info_accumulate \ - ((void (*) PARAMS ((bfd *, struct sec *))) bfd_void) -#define ecoff_bfd_make_debug_symbol \ - ((asymbol *(*) PARAMS ((bfd *, void *, unsigned long))) bfd_nullvoidptr) + +extern int ecoff_sizeof_headers PARAMS ((bfd *abfd, boolean reloc)); +/* ecoff_bfd_get_relocated_section_contents defined by backend. */ +/* ecoff_bfd_relax_section defined by backend. */ extern struct bfd_link_hash_table *ecoff_bfd_link_hash_table_create PARAMS ((bfd *)); extern boolean ecoff_bfd_link_add_symbols PARAMS ((bfd *, struct bfd_link_info *)); extern boolean ecoff_bfd_final_link PARAMS ((bfd *, struct bfd_link_info *)); -#define ecoff_bfd_copy_private_section_data \ - ((boolean (*) PARAMS ((bfd *, asection *, bfd *, asection *))) bfd_true) -#define ecoff_bfd_copy_private_bfd_data \ - ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_true) -#define ecoff_bfd_is_local_label bfd_generic_is_local_label -#define ecoff_bfd_free_cached_info bfd_true /* Hook functions for the generic COFF section reading code. */ + extern PTR ecoff_mkobject_hook PARAMS ((bfd *, PTR filehdr, PTR aouthdr)); extern asection *ecoff_make_section_hook PARAMS ((bfd *abfd, char *name)); -extern boolean ecoff_new_section_hook PARAMS ((bfd *abfd, - asection *section)); #define ecoff_set_alignment_hook \ ((void (*) PARAMS ((bfd *, asection *, PTR))) bfd_void) extern boolean ecoff_set_arch_mach_hook PARAMS ((bfd *abfd, PTR filehdr)); diff --git a/bfd/mipsbsd.c b/bfd/mipsbsd.c index 0b6424d..72261fb 100644 --- a/bfd/mipsbsd.c +++ b/bfd/mipsbsd.c @@ -350,7 +350,16 @@ bfd_target aout_mips_little_vec = _bfd_generic_mkarchive, bfd_false}, {bfd_false, MY_write_object_contents, /* bfd_write_contents */ _bfd_write_archive_contents, bfd_false}, - JUMP_TABLE (MY), + + BFD_JUMP_TABLE_GENERIC (MY), + BFD_JUMP_TABLE_COPY (MY), + BFD_JUMP_TABLE_CORE (MY), + BFD_JUMP_TABLE_ARCHIVE (MY), + BFD_JUMP_TABLE_SYMBOLS (MY), + BFD_JUMP_TABLE_RELOCS (MY), + BFD_JUMP_TABLE_WRITE (MY), + BFD_JUMP_TABLE_LINK (MY), + (PTR) MY_backend_data, }; @@ -380,6 +389,15 @@ bfd_target aout_mips_big_vec = _bfd_generic_mkarchive, bfd_false}, {bfd_false, MY_write_object_contents, /* bfd_write_contents */ _bfd_write_archive_contents, bfd_false}, - JUMP_TABLE (MY), + + BFD_JUMP_TABLE_GENERIC (MY), + BFD_JUMP_TABLE_COPY (MY), + BFD_JUMP_TABLE_CORE (MY), + BFD_JUMP_TABLE_ARCHIVE (MY), + BFD_JUMP_TABLE_SYMBOLS (MY), + BFD_JUMP_TABLE_RELOCS (MY), + BFD_JUMP_TABLE_WRITE (MY), + BFD_JUMP_TABLE_LINK (MY), + (PTR) MY_backend_data, }; diff --git a/bfd/nlm-target.h b/bfd/nlm-target.h index 4cbc8a7..7b4b893 100644 --- a/bfd/nlm-target.h +++ b/bfd/nlm-target.h @@ -20,79 +20,30 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #define nlm_core_file_p \ ((bfd_target *(*) PARAMS ((bfd *))) bfd_nullvoidptr) -/* The JUMP_TABLE macro is used in the target structure to get names - for all the functions. We use JUMP_TABLE(nlm) to get a prefix of - nlm for all the functions. Here we redefine those names. Many of - the functions are the same for any NLM target. The others are - defined in terms of the nlmNAME macro. */ - -#define nlm_core_file_failing_command \ - _bfd_dummy_core_file_failing_command -#define nlm_core_file_failing_signal \ - _bfd_dummy_core_file_failing_signal -#define nlm_core_file_matches_executable_p \ - _bfd_dummy_core_file_matches_executable_p -#define nlm_slurp_armap bfd_slurp_coff_armap -#define nlm_slurp_extended_name_table \ - _bfd_slurp_extended_name_table -#define nlm_truncate_arname bfd_dont_truncate_arname -#define nlm_write_armap coff_write_armap -#define nlm_close_and_cleanup bfd_generic_close_and_cleanup -#define nlm_set_section_contents \ - nlmNAME(set_section_contents) -#define nlm_get_section_contents \ - bfd_generic_get_section_contents -#define nlm_new_section_hook _bfd_dummy_new_section_hook -#define nlm_get_symtab_upper_bound \ - nlmNAME(get_symtab_upper_bound) -#define nlm_get_symtab nlmNAME(get_symtab) -#define nlm_get_reloc_upper_bound \ - nlmNAME(get_reloc_upper_bound) -#define nlm_canonicalize_reloc nlmNAME(canonicalize_reloc) -#define nlm_make_empty_symbol nlmNAME(make_empty_symbol) -#define nlm_print_symbol nlmNAME(print_symbol) -#define nlm_get_symbol_info nlmNAME(get_symbol_info) -#define nlm_get_lineno ((alent * (*) PARAMS ((bfd *, asymbol *))) \ - bfd_false) -/* We use the generic function nlm_set_arch_mach. */ -#define nlm_openr_next_archived_file \ - bfd_generic_openr_next_archived_file -#define nlm_find_nearest_line \ - ((boolean (*) PARAMS ((bfd *, asection *, \ - asymbol **, bfd_vma, \ - CONST char **, \ - CONST char **, \ - unsigned int *))) \ - bfd_false) -#define nlm_generic_stat_arch_elt \ - bfd_generic_stat_arch_elt -#define nlm_sizeof_headers ((int (*) PARAMS ((bfd *, boolean))) bfd_0u) -#define nlm_bfd_debug_info_start \ - bfd_void -#define nlm_bfd_debug_info_end bfd_void -#define nlm_bfd_debug_info_accumulate \ - ((void (*) PARAMS ((bfd*, struct sec *))) \ - bfd_void) +#define nlm_get_symtab_upper_bound nlmNAME(get_symtab_upper_bound) +#define nlm_get_symtab nlmNAME(get_symtab) +#define nlm_make_empty_symbol nlmNAME(make_empty_symbol) +#define nlm_print_symbol nlmNAME(print_symbol) +#define nlm_get_symbol_info nlmNAME(get_symbol_info) +#define nlm_bfd_is_local_label bfd_generic_is_local_label +#define nlm_get_lineno _bfd_nosymbols_get_lineno +#define nlm_find_nearest_line _bfd_nosymbols_find_nearest_line +#define nlm_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol + +#define nlm_get_reloc_upper_bound nlmNAME(get_reloc_upper_bound) +#define nlm_canonicalize_reloc nlmNAME(canonicalize_reloc) +#define nlm_bfd_reloc_type_lookup bfd_default_reloc_type_lookup + +#define nlm_set_section_contents nlmNAME(set_section_contents) + +#define nlm_sizeof_headers _bfd_nolink_sizeof_headers #define nlm_bfd_get_relocated_section_contents \ - bfd_generic_get_relocated_section_contents -#define nlm_bfd_relax_section bfd_generic_relax_section -#define nlm_bfd_reloc_type_lookup \ - bfd_default_reloc_type_lookup -#define nlm_bfd_make_debug_symbol \ - ((asymbol *(*) PARAMS ((bfd *, void *, \ - unsigned long))) \ - bfd_nullvoidptr) + bfd_generic_get_relocated_section_contents +#define nlm_bfd_relax_section bfd_generic_relax_section #define nlm_bfd_link_hash_table_create _bfd_generic_link_hash_table_create #define nlm_bfd_link_add_symbols _bfd_generic_link_add_symbols #define nlm_bfd_final_link _bfd_generic_final_link -#define nlm_bfd_copy_private_section_data \ - ((boolean (*) PARAMS ((bfd *, asection *, bfd *, asection *))) bfd_true) -#define nlm_bfd_copy_private_bfd_data \ - ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_true) -#define nlm_bfd_is_local_label bfd_generic_is_local_label -#define nlm_bfd_free_cached_info bfd_true - /* This structure contains everything that BFD knows about a target. It includes things like its byte order, name, what routines to call to do various operations, etc. Every BFD points to a target structure @@ -177,7 +128,14 @@ bfd_target TARGET_BIG_SYM = /* Initialize a jump table with the standard macro. All names start with "nlm" */ - JUMP_TABLE(nlm), + BFD_JUMP_TABLE_GENERIC (_bfd_generic), + BFD_JUMP_TABLE_COPY (_bfd_generic), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive), + BFD_JUMP_TABLE_SYMBOLS (nlm), + BFD_JUMP_TABLE_RELOCS (nlm), + BFD_JUMP_TABLE_WRITE (nlm), + BFD_JUMP_TABLE_LINK (nlm), /* backend_data: */ (PTR) TARGET_BACKEND_DATA @@ -259,7 +217,14 @@ bfd_target TARGET_LITTLE_SYM = /* Initialize a jump table with the standard macro. All names start with "nlm" */ - JUMP_TABLE(nlm), + BFD_JUMP_TABLE_GENERIC (_bfd_generic), + BFD_JUMP_TABLE_COPY (_bfd_generic), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive), + BFD_JUMP_TABLE_SYMBOLS (nlm), + BFD_JUMP_TABLE_RELOCS (nlm), + BFD_JUMP_TABLE_WRITE (nlm), + BFD_JUMP_TABLE_LINK (nlm), /* backend_data: */ (PTR) TARGET_BACKEND_DATA diff --git a/bfd/oasys.c b/bfd/oasys.c index a094543..e0dfd29 100644 --- a/bfd/oasys.c +++ b/bfd/oasys.c @@ -1469,35 +1469,32 @@ oasys_sizeof_headers (abfd, exec) { return 0; } -#define FOO PROTO -#define oasys_core_file_failing_command (char *(*)())(bfd_nullvoidptr) -#define oasys_core_file_failing_signal (int (*)())bfd_0 -#define oasys_core_file_matches_executable_p 0 + +#define oasys_close_and_cleanup _bfd_generic_close_and_cleanup +#define oasys_bfd_free_cached_info _bfd_generic_bfd_free_cached_info + #define oasys_slurp_armap bfd_true #define oasys_slurp_extended_name_table bfd_true -#define oasys_truncate_arname (void (*)())bfd_nullvoidptr -#define oasys_write_armap 0 -#define oasys_get_lineno (struct lineno_cache_entry *(*)())bfd_nullvoidptr -#define oasys_close_and_cleanup bfd_generic_close_and_cleanup +#define oasys_truncate_arname bfd_dont_truncate_arname +#define oasys_write_armap \ + ((boolean (*) \ + PARAMS ((bfd *, unsigned int, struct orl *, unsigned int, int))) \ + bfd_true) + +#define oasys_bfd_is_local_label bfd_generic_is_local_label +#define oasys_get_lineno _bfd_nosymbols_get_lineno +#define oasys_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol + +#define oasys_bfd_reloc_type_lookup _bfd_norelocs_bfd_reloc_type_lookup + #define oasys_set_arch_mach bfd_default_set_arch_mach -#define oasys_bfd_debug_info_start bfd_void -#define oasys_bfd_debug_info_end bfd_void -#define oasys_bfd_debug_info_accumulate (FOO(void, (*), (bfd *, asection *)))bfd_void -#define oasys_bfd_get_relocated_section_contents bfd_generic_get_relocated_section_contents + +#define oasys_bfd_get_relocated_section_contents \ + bfd_generic_get_relocated_section_contents #define oasys_bfd_relax_section bfd_generic_relax_section -#define oasys_bfd_reloc_type_lookup \ - ((CONST struct reloc_howto_struct *(*) PARAMS ((bfd *, bfd_reloc_code_real_type))) bfd_nullvoidptr) -#define oasys_bfd_make_debug_symbol \ - ((asymbol *(*) PARAMS ((bfd *, void *, unsigned long))) bfd_nullvoidptr) #define oasys_bfd_link_hash_table_create _bfd_generic_link_hash_table_create #define oasys_bfd_link_add_symbols _bfd_generic_link_add_symbols #define oasys_bfd_final_link _bfd_generic_final_link -#define oasys_bfd_copy_private_section_data \ - ((boolean (*) PARAMS ((bfd *, asection *, bfd *, asection *))) bfd_true) -#define oasys_bfd_copy_private_bfd_data \ - ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_true) -#define oasys_bfd_is_local_label bfd_generic_is_local_label -#define oasys_bfd_free_cached_info bfd_true /*SUPPRESS 460 */ bfd_target oasys_vec = @@ -1539,6 +1536,15 @@ bfd_target oasys_vec = _bfd_write_archive_contents, bfd_false, }, - JUMP_TABLE (oasys), + + BFD_JUMP_TABLE_GENERIC (oasys), + BFD_JUMP_TABLE_COPY (_bfd_generic), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (oasys), + BFD_JUMP_TABLE_SYMBOLS (oasys), + BFD_JUMP_TABLE_RELOCS (oasys), + BFD_JUMP_TABLE_WRITE (oasys), + BFD_JUMP_TABLE_LINK (oasys), + (PTR) 0 }; diff --git a/bfd/osf-core.c b/bfd/osf-core.c index 28693db..915e485 100644 --- a/bfd/osf-core.c +++ b/bfd/osf-core.c @@ -195,70 +195,14 @@ osf_core_core_file_matches_executable_p (core_bfd, exec_bfd) return true; /* FIXME, We have no way of telling at this point */ } -/* No archive file support via this BFD */ -#define osf_core_openr_next_archived_file bfd_generic_openr_next_archived_file -#define osf_core_generic_stat_arch_elt bfd_generic_stat_arch_elt -#define osf_core_slurp_armap bfd_false -#define osf_core_slurp_extended_name_table bfd_true -#define osf_core_write_armap (boolean (*) PARAMS \ - ((bfd *arch, unsigned int elength, struct orl *map, \ - unsigned int orl_count, int stridx))) bfd_false -#define osf_core_truncate_arname bfd_dont_truncate_arname - -#define osf_core_close_and_cleanup bfd_generic_close_and_cleanup -#define osf_core_set_section_contents (boolean (*) PARAMS \ - ((bfd *abfd, asection *section, PTR data, file_ptr offset, \ - bfd_size_type count))) bfd_generic_set_section_contents -#define osf_core_get_section_contents bfd_generic_get_section_contents -#define osf_core_new_section_hook (boolean (*) PARAMS \ - ((bfd *, sec_ptr))) bfd_true -#define osf_core_get_symtab_upper_bound bfd_0l -#define osf_core_get_symtab (long (*) PARAMS \ - ((bfd *, struct symbol_cache_entry **))) bfd_0l -#define osf_core_get_reloc_upper_bound (long (*) PARAMS \ - ((bfd *, sec_ptr))) bfd_0l -#define osf_core_canonicalize_reloc (long (*) PARAMS \ - ((bfd *, sec_ptr, arelent **, struct symbol_cache_entry**))) bfd_0l -#define osf_core_print_symbol (void (*) PARAMS \ - ((bfd *, PTR, struct symbol_cache_entry *, \ - bfd_print_symbol_type))) bfd_false -#define osf_core_get_symbol_info (void (*) PARAMS \ - ((bfd *, struct symbol_cache_entry *, \ - symbol_info *))) bfd_false -#define osf_core_get_lineno (alent * (*) PARAMS \ - ((bfd *, struct symbol_cache_entry *))) bfd_nullvoidptr -#define osf_core_set_arch_mach (boolean (*) PARAMS \ - ((bfd *, enum bfd_architecture, unsigned long))) bfd_false -#define osf_core_find_nearest_line (boolean (*) PARAMS \ - ((bfd *abfd, struct sec *section, \ - struct symbol_cache_entry **symbols,bfd_vma offset, \ - CONST char **file, CONST char **func, unsigned int *line))) bfd_false -#define osf_core_sizeof_headers (int (*) PARAMS \ - ((bfd *, boolean))) bfd_0 - -#define osf_core_bfd_debug_info_start bfd_void -#define osf_core_bfd_debug_info_end bfd_void -#define osf_core_bfd_debug_info_accumulate (void (*) PARAMS \ - ((bfd *, struct sec *))) bfd_void -#define osf_core_bfd_get_relocated_section_contents bfd_generic_get_relocated_section_contents -#define osf_core_bfd_relax_section bfd_generic_relax_section -#define osf_core_bfd_reloc_type_lookup \ - ((CONST struct reloc_howto_struct *(*) PARAMS ((bfd *, bfd_reloc_code_real_type))) bfd_nullvoidptr) -#define osf_core_bfd_make_debug_symbol \ - ((asymbol *(*) PARAMS ((bfd *, void *, unsigned long))) bfd_nullvoidptr) -#define osf_core_bfd_link_hash_table_create \ - ((struct bfd_link_hash_table *(*) PARAMS ((bfd *))) bfd_nullvoidptr) -#define osf_core_bfd_link_add_symbols \ - ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false) -#define osf_core_bfd_final_link \ - ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false) -#define osf_core_bfd_copy_private_section_data \ - ((boolean (*) PARAMS ((bfd *, asection *, bfd *, asection *))) bfd_false) -#define osf_core_bfd_copy_private_bfd_data \ - ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_false) -#define osf_core_bfd_is_local_label \ - ((boolean (*) PARAMS ((bfd *, asymbol *))) bfd_false) -#define osf_core_bfd_free_cached_info bfd_true +#define osf_core_get_symtab_upper_bound _bfd_nosymbols_get_symtab_upper_bound +#define osf_core_get_symtab _bfd_nosymbols_get_symtab +#define osf_core_print_symbol _bfd_nosymbols_print_symbol +#define osf_core_get_symbol_info _bfd_nosymbols_get_symbol_info +#define osf_core_bfd_is_local_label _bfd_nosymbols_bfd_is_local_label +#define osf_core_get_lineno _bfd_nosymbols_get_lineno +#define osf_core_find_nearest_line _bfd_nosymbols_find_nearest_line +#define osf_core_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol /* If somebody calls any byte-swapping routines, shoot them. */ static void @@ -307,6 +251,14 @@ bfd_target osf_core_vec = bfd_false, bfd_false }, - JUMP_TABLE(osf_core), + BFD_JUMP_TABLE_GENERIC (_bfd_generic), + BFD_JUMP_TABLE_COPY (_bfd_generic), + BFD_JUMP_TABLE_CORE (osf_core), + BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive), + BFD_JUMP_TABLE_SYMBOLS (osf_core), + BFD_JUMP_TABLE_RELOCS (_bfd_norelocs), + BFD_JUMP_TABLE_WRITE (_bfd_generic), + BFD_JUMP_TABLE_LINK (_bfd_nolink), + (PTR) 0 /* backend_data */ }; diff --git a/bfd/ptrace-core.c b/bfd/ptrace-core.c index a712032..e0b2473 100644 --- a/bfd/ptrace-core.c +++ b/bfd/ptrace-core.c @@ -189,74 +189,6 @@ ptrace_unix_core_file_matches_executable_p (core_bfd, exec_bfd) return true; } -/* No archive file support via this BFD */ -#define ptrace_unix_openr_next_archived_file bfd_generic_openr_next_archived_file -#define ptrace_unix_generic_stat_arch_elt bfd_generic_stat_arch_elt -#define ptrace_unix_slurp_armap bfd_false -#define ptrace_unix_slurp_extended_name_table bfd_true -#define ptrace_unix_write_armap (boolean (*) PARAMS \ - ((bfd *arch, unsigned int elength, struct orl *map, \ - unsigned int orl_count, int stridx))) bfd_false -#define ptrace_unix_truncate_arname bfd_dont_truncate_arname -#define aout_32_openr_next_archived_file bfd_generic_openr_next_archived_file - -#define ptrace_unix_close_and_cleanup bfd_generic_close_and_cleanup -#define ptrace_unix_set_section_contents (boolean (*) PARAMS \ - ((bfd *abfd, asection *section, PTR data, file_ptr offset, \ - bfd_size_type count))) bfd_generic_set_section_contents -#define ptrace_unix_get_section_contents bfd_generic_get_section_contents -#define ptrace_unix_new_section_hook (boolean (*) PARAMS \ - ((bfd *, sec_ptr))) bfd_true -#define ptrace_unix_get_symtab_upper_bound bfd_0l -#define ptrace_unix_get_symtab (long (*) PARAMS \ - ((bfd *, struct symbol_cache_entry **))) bfd_0l -#define ptrace_unix_get_reloc_upper_bound (long (*) PARAMS \ - ((bfd *, sec_ptr))) bfd_0l -#define ptrace_unix_canonicalize_reloc (long (*) PARAMS \ - ((bfd *, sec_ptr, arelent **, struct symbol_cache_entry**))) bfd_0l -#define ptrace_unix_make_empty_symbol (struct symbol_cache_entry * \ - (*) PARAMS ((bfd *))) bfd_false -#define ptrace_unix_print_symbol (void (*) PARAMS \ - ((bfd *, PTR, struct symbol_cache_entry *, \ - bfd_print_symbol_type))) bfd_false -#define ptrace_unix_get_symbol_info (void (*) PARAMS \ - ((bfd *, struct symbol_cache_entry *, \ - symbol_info *))) bfd_false -#define ptrace_unix_get_lineno (alent * (*) PARAMS \ - ((bfd *, struct symbol_cache_entry *))) bfd_nullvoidptr -#define ptrace_unix_set_arch_mach (boolean (*) PARAMS \ - ((bfd *, enum bfd_architecture, unsigned long))) bfd_false -#define ptrace_unix_find_nearest_line (boolean (*) PARAMS \ - ((bfd *abfd, struct sec *section, \ - struct symbol_cache_entry **symbols,bfd_vma offset, \ - CONST char **file, CONST char **func, unsigned int *line))) bfd_false -#define ptrace_unix_sizeof_headers (int (*) PARAMS \ - ((bfd *, boolean))) bfd_0 - -#define ptrace_unix_bfd_debug_info_start bfd_void -#define ptrace_unix_bfd_debug_info_end bfd_void -#define ptrace_unix_bfd_debug_info_accumulate (void (*) PARAMS \ - ((bfd *, struct sec *))) bfd_void -#define ptrace_unix_bfd_get_relocated_section_contents bfd_generic_get_relocated_section_contents -#define ptrace_unix_bfd_relax_section bfd_generic_relax_section -#define ptrace_unix_bfd_reloc_type_lookup \ - ((CONST struct reloc_howto_struct *(*) PARAMS ((bfd *, bfd_reloc_code_real_type))) bfd_nullvoidptr) -#define ptrace_unix_bfd_make_debug_symbol \ - ((asymbol *(*) PARAMS ((bfd *, void *, unsigned long))) bfd_nullvoidptr) -#define ptrace_unix_bfd_link_hash_table_create \ - ((struct bfd_link_hash_table *(*) PARAMS ((bfd *))) bfd_nullvoidptr) -#define ptrace_unix_bfd_link_add_symbols \ - ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false) -#define ptrace_unix_bfd_final_link \ - ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false) -#define ptrace_unix_bfd_copy_private_section_data \ - ((boolean (*) PARAMS ((bfd *, asection *, bfd *, asection *))) bfd_false) -#define ptrace_unix_bfd_copy_private_bfd_data \ - ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_false) -#define ptrace_unix_bfd_is_local_label \ - ((boolean (*) PARAMS ((bfd *, asymbol *))) bfd_false) -#define ptrace_unix_bfd_free_cached_info bfd_true - /* If somebody calls any byte-swapping routines, shoot them. */ void swap_abort() @@ -304,7 +236,15 @@ bfd_target ptrace_core_vec = bfd_false, bfd_false }, - JUMP_TABLE(ptrace_unix), + BFD_JUMP_TABLE_GENERIC (_bfd_generic), + BFD_JUMP_TABLE_COPY (_bfd_generic), + BFD_JUMP_TABLE_CORE (ptrace_unix), + BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive), + BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols), + BFD_JUMP_TABLE_RELOCS (_bfd_norelocs), + BFD_JUMP_TABLE_WRITE (_bfd_generic), + BFD_JUMP_TABLE_LINK (_bfd_nolink), + (PTR) 0 /* backend_data */ }; @@ -5493,32 +5493,23 @@ som_bfd_free_cached_info (abfd) /* End of miscellaneous support functions. */ -#define som_bfd_debug_info_start bfd_void -#define som_bfd_debug_info_end bfd_void -#define som_bfd_debug_info_accumulate (PROTO(void,(*),(bfd*, struct sec *))) bfd_void +#define som_close_and_cleanup som_bfd_free_cached_info #define som_openr_next_archived_file bfd_generic_openr_next_archived_file #define som_generic_stat_arch_elt bfd_generic_stat_arch_elt #define som_truncate_arname bfd_bsd_truncate_arname #define som_slurp_extended_name_table _bfd_slurp_extended_name_table -#define som_get_lineno (struct lineno_cache_entry *(*)())bfd_nullvoidptr -#define som_close_and_cleanup som_bfd_free_cached_info +#define som_get_lineno _bfd_nosymbols_get_lineno +#define som_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol #define som_bfd_get_relocated_section_contents \ bfd_generic_get_relocated_section_contents #define som_bfd_relax_section bfd_generic_relax_section -#define som_bfd_make_debug_symbol \ - ((asymbol *(*) PARAMS ((bfd *, void *, unsigned long))) bfd_nullvoidptr) #define som_bfd_link_hash_table_create _bfd_generic_link_hash_table_create #define som_bfd_link_add_symbols _bfd_generic_link_add_symbols #define som_bfd_final_link _bfd_generic_final_link -/* Core file support is in the hpux-core backend. */ -#define som_core_file_failing_command _bfd_dummy_core_file_failing_command -#define som_core_file_failing_signal _bfd_dummy_core_file_failing_signal -#define som_core_file_matches_executable_p _bfd_dummy_core_file_matches_executable_p - bfd_target som_vec = { "som", /* name */ @@ -5561,7 +5552,16 @@ bfd_target som_vec = bfd_false, }, #undef som - JUMP_TABLE (som), + + BFD_JUMP_TABLE_GENERIC (som), + BFD_JUMP_TABLE_COPY (som), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (som), + BFD_JUMP_TABLE_SYMBOLS (som), + BFD_JUMP_TABLE_RELOCS (som), + BFD_JUMP_TABLE_WRITE (som), + BFD_JUMP_TABLE_LINK (som), + (PTR) 0 }; @@ -946,48 +946,22 @@ srec_print_symbol (ignore_abfd, afile, symbol, how) } } -#define FOO PROTO -#define srec_new_section_hook (FOO(boolean, (*), (bfd *, asection *)))bfd_true - -#define srec_get_reloc_upper_bound (FOO(long, (*),(bfd*, asection *)))bfd_0l -#define srec_canonicalize_reloc (FOO(long, (*),(bfd*,asection *, arelent **, asymbol **))) bfd_0l - - - -#define srec_openr_next_archived_file (FOO(bfd *, (*), (bfd*,bfd*))) bfd_nullvoidptr -#define srec_find_nearest_line (FOO(boolean, (*),(bfd*,asection*,asymbol**,bfd_vma, CONST char**, CONST char**, unsigned int *))) bfd_false -#define srec_generic_stat_arch_elt (FOO(int, (*), (bfd *,struct stat *))) bfd_0 +#define srec_close_and_cleanup _bfd_generic_close_and_cleanup +#define srec_bfd_free_cached_info _bfd_generic_bfd_free_cached_info +#define srec_new_section_hook _bfd_generic_new_section_hook +#define srec_bfd_is_local_label bfd_generic_is_local_label +#define srec_get_lineno _bfd_nosymbols_get_lineno +#define srec_find_nearest_line _bfd_nosymbols_find_nearest_line +#define srec_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol -#define srec_core_file_failing_command (char *(*)())(bfd_nullvoidptr) -#define srec_core_file_failing_signal (int (*)())bfd_0 -#define srec_core_file_matches_executable_p (FOO(boolean, (*),(bfd*, bfd*)))bfd_false -#define srec_slurp_armap bfd_true -#define srec_slurp_extended_name_table bfd_true -#define srec_truncate_arname (void (*)())bfd_nullvoidptr -#define srec_write_armap (FOO( boolean, (*),(bfd *, unsigned int, struct orl *, unsigned int, int))) bfd_nullvoidptr -#define srec_get_lineno (struct lineno_cache_entry *(*)())bfd_nullvoidptr -#define srec_close_and_cleanup bfd_generic_close_and_cleanup -#define srec_bfd_debug_info_start bfd_void -#define srec_bfd_debug_info_end bfd_void -#define srec_bfd_debug_info_accumulate (FOO(void, (*), (bfd *, asection *))) bfd_void -#define srec_bfd_get_relocated_section_contents bfd_generic_get_relocated_section_contents +#define srec_bfd_get_relocated_section_contents \ + bfd_generic_get_relocated_section_contents #define srec_bfd_relax_section bfd_generic_relax_section -#define srec_bfd_reloc_type_lookup \ - ((CONST struct reloc_howto_struct *(*) PARAMS ((bfd *, bfd_reloc_code_real_type))) bfd_nullvoidptr) -#define srec_bfd_make_debug_symbol \ - ((asymbol *(*) PARAMS ((bfd *, void *, unsigned long))) bfd_nullvoidptr) #define srec_bfd_link_hash_table_create _bfd_generic_link_hash_table_create #define srec_bfd_link_add_symbols _bfd_generic_link_add_symbols #define srec_bfd_final_link _bfd_generic_final_link -#define srec_bfd_copy_private_section_data \ - ((boolean (*) PARAMS ((bfd *, asection *, bfd *, asection *))) bfd_true) -#define srec_bfd_copy_private_bfd_data \ - ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_true) -#define srec_bfd_is_local_label bfd_generic_is_local_label -#define srec_bfd_free_cached_info bfd_true - bfd_target srec_vec = { "srec", /* name */ @@ -1028,7 +1002,17 @@ bfd_target srec_vec = _bfd_write_archive_contents, bfd_false, }, - JUMP_TABLE (srec) + + BFD_JUMP_TABLE_GENERIC (srec), + BFD_JUMP_TABLE_COPY (_bfd_generic), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive), + BFD_JUMP_TABLE_SYMBOLS (srec), + BFD_JUMP_TABLE_RELOCS (_bfd_norelocs), + BFD_JUMP_TABLE_WRITE (srec), + BFD_JUMP_TABLE_LINK (srec), + + (PTR) 0 }; @@ -1073,6 +1057,15 @@ bfd_target symbolsrec_vec = _bfd_write_archive_contents, bfd_false, }, - JUMP_TABLE (srec), + + BFD_JUMP_TABLE_GENERIC (srec), + BFD_JUMP_TABLE_COPY (_bfd_generic), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive), + BFD_JUMP_TABLE_SYMBOLS (srec), + BFD_JUMP_TABLE_RELOCS (_bfd_norelocs), + BFD_JUMP_TABLE_WRITE (srec), + BFD_JUMP_TABLE_LINK (srec), + (PTR) 0 }; diff --git a/bfd/targets.c b/bfd/targets.c index c034c15..80d2f21 100644 --- a/bfd/targets.c +++ b/bfd/targets.c @@ -239,19 +239,54 @@ Write cached information into a file being written, at <<bfd_close>>. . boolean (*_bfd_write_contents[bfd_type_end]) PARAMS ((bfd *)); -The following functions are defined in <<JUMP_TABLE>>. The idea is -that the back end writer of <<foo>> names all the routines -<<foo_>>@var{entry_point}; <<JUMP_TABLE>> will build the entries -in this structure in the right order. - -Core file entry points. +The general target vector. +. +. {* Generic entry points. *} +.#define BFD_JUMP_TABLE_GENERIC(NAME)\ +.CAT(NAME,_close_and_cleanup),\ +.CAT(NAME,_bfd_free_cached_info),\ +.CAT(NAME,_new_section_hook),\ +.CAT(NAME,_get_section_contents) +. {* Called when the BFD is being closed to do any necessary cleanup. *} +. boolean (*_close_and_cleanup) PARAMS ((bfd *)); +. {* Ask the BFD to free all cached information. *} +. boolean (*_bfd_free_cached_info) PARAMS ((bfd *)); +. {* Called when a new section is created. *} +. boolean (*_new_section_hook) PARAMS ((bfd *, sec_ptr)); +. {* Read the contents of a section. *} +. boolean (*_bfd_get_section_contents) PARAMS ((bfd *, sec_ptr, PTR, +. file_ptr, bfd_size_type)); +. +. {* Entry points to copy private data. *} +.#define BFD_JUMP_TABLE_COPY(NAME)\ +.CAT(NAME,_bfd_copy_private_bfd_data),\ +.CAT(NAME,_bfd_copy_private_section_data) +. {* Called to copy BFD general private data from one object file +. to another. *} +. boolean (*_bfd_copy_private_bfd_data) PARAMS ((bfd *, bfd *)); +. {* Called to copy BFD private section data from one object file +. to another. *} +. boolean (*_bfd_copy_private_section_data) PARAMS ((bfd *, sec_ptr, +. bfd *, sec_ptr)); +. +. {* Core file entry points. *} +.#define BFD_JUMP_TABLE_CORE(NAME)\ +.CAT(NAME,_core_file_failing_command),\ +.CAT(NAME,_core_file_failing_signal),\ +.CAT(NAME,_core_file_matches_executable_p) . char * (*_core_file_failing_command) PARAMS ((bfd *)); . int (*_core_file_failing_signal) PARAMS ((bfd *)); . boolean (*_core_file_matches_executable_p) PARAMS ((bfd *, bfd *)); - -Archive entry points. - +. +. {* Archive entry points. *} +.#define BFD_JUMP_TABLE_ARCHIVE(NAME)\ +.CAT(NAME,_slurp_armap),\ +.CAT(NAME,_slurp_extended_name_table),\ +.CAT(NAME,_truncate_arname),\ +.CAT(NAME,_write_armap),\ +.CAT(NAME,_openr_next_archived_file),\ +.CAT(NAME,_generic_stat_arch_elt) . boolean (*_bfd_slurp_armap) PARAMS ((bfd *)); . boolean (*_bfd_slurp_extended_name_table) PARAMS ((bfd *)); . void (*_bfd_truncate_arname) PARAMS ((bfd *, CONST char *, char *)); @@ -260,27 +295,23 @@ Archive entry points. . struct orl *map, . unsigned int orl_count, . int stridx)); - -Standard stuff. - -. boolean (*_close_and_cleanup) PARAMS ((bfd *)); -. boolean (*_bfd_set_section_contents) PARAMS ((bfd *, sec_ptr, PTR, -. file_ptr, bfd_size_type)); -. boolean (*_bfd_get_section_contents) PARAMS ((bfd *, sec_ptr, PTR, -. file_ptr, bfd_size_type)); -. boolean (*_new_section_hook) PARAMS ((bfd *, sec_ptr)); -. boolean (*_bfd_copy_private_section_data) PARAMS ((bfd *, sec_ptr, -. bfd *, sec_ptr)); -. boolean (*_bfd_copy_private_bfd_data) PARAMS ((bfd *, bfd *)); - -Symbols and relocations. - +. bfd * (*openr_next_archived_file) PARAMS ((bfd *arch, bfd *prev)); +. int (*_bfd_stat_arch_elt) PARAMS ((bfd *, struct stat *)); +. +. {* Entry points used for symbols. *} +.#define BFD_JUMP_TABLE_SYMBOLS(NAME)\ +.CAT(NAME,_get_symtab_upper_bound),\ +.CAT(NAME,_get_symtab),\ +.CAT(NAME,_make_empty_symbol),\ +.CAT(NAME,_print_symbol),\ +.CAT(NAME,_get_symbol_info),\ +.CAT(NAME,_bfd_is_local_label),\ +.CAT(NAME,_get_lineno),\ +.CAT(NAME,_find_nearest_line),\ +.CAT(NAME,_bfd_make_debug_symbol) . long (*_bfd_get_symtab_upper_bound) PARAMS ((bfd *)); . long (*_bfd_canonicalize_symtab) PARAMS ((bfd *, . struct symbol_cache_entry **)); -. long (*_get_reloc_upper_bound) PARAMS ((bfd *, sec_ptr)); -. long (*_bfd_canonicalize_reloc) PARAMS ((bfd *, sec_ptr, arelent **, -. struct symbol_cache_entry **)); . struct symbol_cache_entry * . (*_bfd_make_empty_symbol) PARAMS ((bfd *)); . void (*_bfd_print_symbol) PARAMS ((bfd *, PTR, @@ -292,27 +323,51 @@ Symbols and relocations. . symbol_info *)); .#define bfd_get_symbol_info(b,p,e) BFD_SEND(b, _bfd_get_symbol_info, (b,p,e)) . boolean (*_bfd_is_local_label) PARAMS ((bfd *, asymbol *)); - -. alent * (*_get_lineno) PARAMS ((bfd *, struct symbol_cache_entry *)); -. -. boolean (*_bfd_set_arch_mach) PARAMS ((bfd *, enum bfd_architecture, -. unsigned long)); . -. bfd * (*openr_next_archived_file) PARAMS ((bfd *arch, bfd *prev)); -. +. alent * (*_get_lineno) PARAMS ((bfd *, struct symbol_cache_entry *)); . boolean (*_bfd_find_nearest_line) PARAMS ((bfd *abfd, . struct sec *section, struct symbol_cache_entry **symbols, . bfd_vma offset, CONST char **file, CONST char **func, . unsigned int *line)); -. -. int (*_bfd_stat_arch_elt) PARAMS ((bfd *, struct stat *)); +. {* Back-door to allow format-aware applications to create debug symbols +. while using BFD for everything else. Currently used by the assembler +. when creating COFF files. *} +. asymbol * (*_bfd_make_debug_symbol) PARAMS (( +. bfd *abfd, +. void *ptr, +. unsigned long size)); . -. int (*_bfd_sizeof_headers) PARAMS ((bfd *, boolean)); +. {* Routines for relocs. *} +.#define BFD_JUMP_TABLE_RELOCS(NAME)\ +.CAT(NAME,_get_reloc_upper_bound),\ +.CAT(NAME,_canonicalize_reloc),\ +.CAT(NAME,_bfd_reloc_type_lookup) +. long (*_get_reloc_upper_bound) PARAMS ((bfd *, sec_ptr)); +. long (*_bfd_canonicalize_reloc) PARAMS ((bfd *, sec_ptr, arelent **, +. struct symbol_cache_entry **)); +. {* See documentation on reloc types. *} +. CONST struct reloc_howto_struct * +. (*reloc_type_lookup) PARAMS ((bfd *abfd, +. bfd_reloc_code_real_type code)); . -. void (*_bfd_debug_info_start) PARAMS ((bfd *)); -. void (*_bfd_debug_info_end) PARAMS ((bfd *)); -. void (*_bfd_debug_info_accumulate) PARAMS ((bfd *, struct sec *)); +. {* Routines used when writing an object file. *} +.#define BFD_JUMP_TABLE_WRITE(NAME)\ +.CAT(NAME,_set_arch_mach),\ +.CAT(NAME,_set_section_contents) +. boolean (*_bfd_set_arch_mach) PARAMS ((bfd *, enum bfd_architecture, +. unsigned long)); +. boolean (*_bfd_set_section_contents) PARAMS ((bfd *, sec_ptr, PTR, +. file_ptr, bfd_size_type)); . +. {* Routines used by the linker. *} +.#define BFD_JUMP_TABLE_LINK(NAME)\ +.CAT(NAME,_sizeof_headers),\ +.CAT(NAME,_bfd_get_relocated_section_contents),\ +.CAT(NAME,_bfd_relax_section),\ +.CAT(NAME,_bfd_link_hash_table_create),\ +.CAT(NAME,_bfd_link_add_symbols),\ +.CAT(NAME,_bfd_final_link) +. int (*_bfd_sizeof_headers) PARAMS ((bfd *, boolean)); . bfd_byte * (*_bfd_get_relocated_section_contents) PARAMS ((bfd *, . struct bfd_link_info *, struct bfd_link_order *, . bfd_byte *data, boolean relocateable, @@ -321,19 +376,6 @@ Symbols and relocations. . boolean (*_bfd_relax_section) PARAMS ((bfd *, struct sec *, . struct bfd_link_info *, boolean *again)); . -. {* See documentation on reloc types. *} -. CONST struct reloc_howto_struct * -. (*reloc_type_lookup) PARAMS ((bfd *abfd, -. bfd_reloc_code_real_type code)); -. -. {* Back-door to allow format-aware applications to create debug symbols -. while using BFD for everything else. Currently used by the assembler -. when creating COFF files. *} -. asymbol * (*_bfd_make_debug_symbol) PARAMS (( -. bfd *abfd, -. void *ptr, -. unsigned long size)); -. . {* Create a hash table for the linker. Different backends store . different information in this table. *} . struct bfd_link_hash_table *(*_bfd_link_hash_table_create) PARAMS ((bfd *)); @@ -345,9 +387,6 @@ Symbols and relocations. . section of the BFD. *} . boolean (*_bfd_final_link) PARAMS ((bfd *, struct bfd_link_info *)); . -. {* Ask the BFD to free all cached information. *} -. boolean (*_bfd_free_cached_info) PARAMS ((bfd *)); -. Data for use by back-end routines, which isn't generic enough to belong in this structure. diff --git a/bfd/tekhex.c b/bfd/tekhex.c index ad83c0a..507fb54 100644 --- a/bfd/tekhex.c +++ b/bfd/tekhex.c @@ -999,42 +999,21 @@ tekhex_print_symbol (ignore_abfd, filep, symbol, how) } } -#define FOO PROTO -#define tekhex_new_section_hook (FOO(boolean, (*), (bfd *, asection *)))bfd_true -#define tekhex_get_reloc_upper_bound (FOO(long, (*),(bfd*, asection *)))bfd_0l -#define tekhex_canonicalize_reloc (FOO(long, (*),(bfd*,asection *, arelent **, asymbol **))) bfd_0l - -#define tekhex_openr_next_archived_file (FOO(bfd *, (*), (bfd*,bfd*))) bfd_nullvoidptr -#define tekhex_find_nearest_line (FOO(boolean, (*),(bfd*,asection*,asymbol**,bfd_vma, CONST char**, CONST char**, unsigned int *))) bfd_false -#define tekhex_generic_stat_arch_elt (FOO(int, (*), (bfd *,struct stat *))) bfd_0 - -#define tekhex_core_file_failing_command (char *(*)())(bfd_nullvoidptr) -#define tekhex_core_file_failing_signal (int (*)())bfd_0 -#define tekhex_core_file_matches_executable_p (FOO(boolean, (*),(bfd*, bfd*)))bfd_false -#define tekhex_slurp_armap bfd_true -#define tekhex_slurp_extended_name_table bfd_true -#define tekhex_truncate_arname (void (*)())bfd_nullvoidptr -#define tekhex_write_armap (FOO( boolean, (*),(bfd *, unsigned int, struct orl *, unsigned int, int))) bfd_nullvoidptr -#define tekhex_get_lineno (struct lineno_cache_entry *(*)())bfd_nullvoidptr -#define tekhex_close_and_cleanup bfd_generic_close_and_cleanup -#define tekhex_bfd_debug_info_start bfd_void -#define tekhex_bfd_debug_info_end bfd_void -#define tekhex_bfd_debug_info_accumulate (FOO(void, (*), (bfd *, asection *))) bfd_void -#define tekhex_bfd_get_relocated_section_contents bfd_generic_get_relocated_section_contents +#define tekhex_close_and_cleanup _bfd_generic_close_and_cleanup +#define tekhex_bfd_free_cached_info _bfd_generic_bfd_free_cached_info +#define tekhex_new_section_hook _bfd_generic_new_section_hook + +#define tekhex_bfd_is_local_label bfd_generic_is_local_label +#define tekhex_get_lineno _bfd_nosymbols_get_lineno +#define tekhex_find_nearest_line _bfd_nosymbols_find_nearest_line +#define tekhex_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol + +#define tekhex_bfd_get_relocated_section_contents \ + bfd_generic_get_relocated_section_contents #define tekhex_bfd_relax_section bfd_generic_relax_section -#define tekhex_bfd_reloc_type_lookup \ - ((CONST struct reloc_howto_struct *(*) PARAMS ((bfd *, bfd_reloc_code_real_type))) bfd_nullvoidptr) -#define tekhex_bfd_make_debug_symbol \ - ((asymbol *(*) PARAMS ((bfd *, void *, unsigned long))) bfd_nullvoidptr) #define tekhex_bfd_link_hash_table_create _bfd_generic_link_hash_table_create #define tekhex_bfd_link_add_symbols _bfd_generic_link_add_symbols #define tekhex_bfd_final_link _bfd_generic_final_link -#define tekhex_bfd_copy_private_section_data \ - ((boolean (*) PARAMS ((bfd *, asection *, bfd *, asection *))) bfd_true) -#define tekhex_bfd_copy_private_bfd_data \ - ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_true) -#define tekhex_bfd_is_local_label bfd_generic_is_local_label -#define tekhex_bfd_free_cached_info bfd_true bfd_target tekhex_vec = { @@ -1076,6 +1055,15 @@ bfd_target tekhex_vec = _bfd_write_archive_contents, bfd_false, }, - JUMP_TABLE (tekhex), + + BFD_JUMP_TABLE_GENERIC (tekhex), + BFD_JUMP_TABLE_COPY (_bfd_generic), + BFD_JUMP_TABLE_CORE (_bfd_nocore), + BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive), + BFD_JUMP_TABLE_SYMBOLS (tekhex), + BFD_JUMP_TABLE_RELOCS (_bfd_norelocs), + BFD_JUMP_TABLE_WRITE (tekhex), + BFD_JUMP_TABLE_LINK (tekhex), + (PTR) 0 }; diff --git a/bfd/trad-core.c b/bfd/trad-core.c index 9e04863..9c16bd7 100644 --- a/bfd/trad-core.c +++ b/bfd/trad-core.c @@ -279,74 +279,6 @@ trad_unix_core_file_matches_executable_p (core_bfd, exec_bfd) return true; /* FIXME, We have no way of telling at this point */ } -/* No archive file support via this BFD */ -#define trad_unix_openr_next_archived_file bfd_generic_openr_next_archived_file -#define trad_unix_generic_stat_arch_elt bfd_generic_stat_arch_elt -#define trad_unix_slurp_armap bfd_false -#define trad_unix_slurp_extended_name_table bfd_true -#define trad_unix_write_armap (boolean (*) PARAMS \ - ((bfd *arch, unsigned int elength, struct orl *map, \ - unsigned int orl_count, int stridx))) bfd_false -#define trad_unix_truncate_arname bfd_dont_truncate_arname -#define aout_32_openr_next_archived_file bfd_generic_openr_next_archived_file - -#define trad_unix_close_and_cleanup bfd_generic_close_and_cleanup -#define trad_unix_set_section_contents (boolean (*) PARAMS \ - ((bfd *abfd, asection *section, PTR data, file_ptr offset, \ - bfd_size_type count))) bfd_generic_set_section_contents -#define trad_unix_get_section_contents bfd_generic_get_section_contents -#define trad_unix_new_section_hook (boolean (*) PARAMS \ - ((bfd *, sec_ptr))) bfd_true -#define trad_unix_get_symtab_upper_bound bfd_0l -#define trad_unix_get_symtab (long (*) PARAMS \ - ((bfd *, struct symbol_cache_entry **))) bfd_0l -#define trad_unix_get_reloc_upper_bound (long (*) PARAMS \ - ((bfd *, sec_ptr))) bfd_0l -#define trad_unix_canonicalize_reloc (long (*) PARAMS \ - ((bfd *, sec_ptr, arelent **, struct symbol_cache_entry**))) bfd_0l -#define trad_unix_make_empty_symbol (struct symbol_cache_entry * \ - (*) PARAMS ((bfd *))) bfd_false -#define trad_unix_print_symbol (void (*) PARAMS \ - ((bfd *, PTR, struct symbol_cache_entry *, \ - bfd_print_symbol_type))) bfd_false -#define trad_unix_get_symbol_info (void (*) PARAMS \ - ((bfd *, struct symbol_cache_entry *, \ - symbol_info *))) bfd_false -#define trad_unix_get_lineno (alent * (*) PARAMS \ - ((bfd *, struct symbol_cache_entry *))) bfd_nullvoidptr -#define trad_unix_set_arch_mach (boolean (*) PARAMS \ - ((bfd *, enum bfd_architecture, unsigned long))) bfd_false -#define trad_unix_find_nearest_line (boolean (*) PARAMS \ - ((bfd *abfd, struct sec *section, \ - struct symbol_cache_entry **symbols,bfd_vma offset, \ - CONST char **file, CONST char **func, unsigned int *line))) bfd_false -#define trad_unix_sizeof_headers (int (*) PARAMS \ - ((bfd *, boolean))) bfd_0 - -#define trad_unix_bfd_debug_info_start bfd_void -#define trad_unix_bfd_debug_info_end bfd_void -#define trad_unix_bfd_debug_info_accumulate (void (*) PARAMS \ - ((bfd *, struct sec *))) bfd_void -#define trad_unix_bfd_get_relocated_section_contents bfd_generic_get_relocated_section_contents -#define trad_unix_bfd_relax_section bfd_generic_relax_section -#define trad_unix_bfd_reloc_type_lookup \ - ((CONST struct reloc_howto_struct *(*) PARAMS ((bfd *, bfd_reloc_code_real_type))) bfd_nullvoidptr) -#define trad_unix_bfd_make_debug_symbol \ - ((asymbol *(*) PARAMS ((bfd *, void *, unsigned long))) bfd_nullvoidptr) -#define trad_unix_bfd_link_hash_table_create \ - ((struct bfd_link_hash_table *(*) PARAMS ((bfd *))) bfd_nullvoidptr) -#define trad_unix_bfd_link_add_symbols \ - ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false) -#define trad_unix_bfd_final_link \ - ((boolean (*) PARAMS ((bfd *, struct bfd_link_info *))) bfd_false) -#define trad_unix_bfd_copy_private_section_data \ - ((boolean (*) PARAMS ((bfd *, asection *, bfd *, asection *))) bfd_false) -#define trad_unix_bfd_copy_private_bfd_data \ - ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_false) -#define trad_unix_bfd_is_local_label \ - ((boolean (*) PARAMS ((bfd *, asymbol *))) bfd_false) -#define trad_unix_bfd_free_cached_info bfd_true - /* If somebody calls any byte-swapping routines, shoot them. */ void swap_abort() @@ -394,6 +326,14 @@ bfd_target trad_core_vec = bfd_false, bfd_false }, - JUMP_TABLE(trad_unix), + BFD_JUMP_TABLE_GENERIC (_bfd_generic), + BFD_JUMP_TABLE_COPY (_bfd_generic), + BFD_JUMP_TABLE_CORE (trad_unix), + BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive), + BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols), + BFD_JUMP_TABLE_RELOCS (_bfd_norelocs), + BFD_JUMP_TABLE_WRITE (_bfd_generic), + BFD_JUMP_TABLE_LINK (_bfd_nolink), + (PTR) 0 /* backend_data */ }; |