From: Ian Lance Taylor Date: Fri, 1 Apr 1994 17:55:47 +0000 (+0000) Subject: * targets.c (bfd_target): Add _bfd_free_cached_info field. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9deaaaf1b35a54f776957492c4300ea993a3961c;p=binutils-gdb.git * targets.c (bfd_target): Add _bfd_free_cached_info field. * bfd.c (bfd_free_cached_info): Define. * bfd-in.h (JUMP_TABLE): Add _bfd_free_cached_info. * bfd-in2.h: Rebuilt. * All backends: Initialize bfd_free_cached_info entry point to bfd_true. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index e6793660808..4f25e82fb2e 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,20 @@ +Fri Apr 1 12:40:58 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) + + * targets.c (bfd_target): Add _bfd_free_cached_info field. + * bfd.c (bfd_free_cached_info): Define. + * bfd-in.h (JUMP_TABLE): Add _bfd_free_cached_info. + * bfd-in2.h: Rebuilt. + * All backends: Initialize bfd_free_cached_info entry point to + bfd_true. + + * elf32-hppa.c (elf_hppa_reloc_type_lookup): Correct type of + first, unused, argument. + (hppa_elf_is_local_label): Declare instead of + som_bfd_is_local_label. + + * coff-a29k.c (a29k_reloc): Add reloc_entry->address to value of + absolute R_IREL reloc. + Thu Mar 31 11:52:15 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) Added some support for Irix 4 shared libraries. diff --git a/bfd/aix386-core.c b/bfd/aix386-core.c index bf9c1af9825..d56654650e6 100644 --- a/bfd/aix386-core.c +++ b/bfd/aix386-core.c @@ -309,6 +309,7 @@ aix386_core_file_matches_executable_p (core_bfd, exec_bfd) ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_false) #define aix386_bfd_is_local_label \ ((boolean (*) PARAMS ((bfd *, asection *))) bfd_false) +#define aix386_bfd_free_cached_info bfd_true /* If somebody calls any byte-swapping routines, shoot them. */ void diff --git a/bfd/aout-adobe.c b/bfd/aout-adobe.c index 96c48ec10d2..3de6af60a45 100644 --- a/bfd/aout-adobe.c +++ b/bfd/aout-adobe.c @@ -32,7 +32,7 @@ extern bfd_target a_out_adobe_vec; /* Forward decl */ PROTO (static bfd_target *, aout_adobe_callback, (bfd *)); PROTO (boolean, aout_32_slurp_symbol_table, (bfd *abfd)); -PROTO (void , aout_32_write_syms, ()); +PROTO (boolean , aout_32_write_syms, ()); PROTO (static void, aout_adobe_write_section, (bfd *abfd, sec_ptr sect)); /* Swaps the information in an executable header taken from a raw byte @@ -44,10 +44,10 @@ PROTO(void, aout_adobe_swap_exec_header_in, struct internal_exec *execp)); void -DEFUN(aout_adobe_swap_exec_header_in,(abfd, raw_bytes, execp), - bfd *abfd AND - struct external_exec *raw_bytes AND - struct internal_exec *execp) +aout_adobe_swap_exec_header_in (abfd, raw_bytes, execp) + bfd *abfd; + struct external_exec *raw_bytes; + struct internal_exec *execp; { struct external_exec *bytes = (struct external_exec *)raw_bytes; @@ -70,10 +70,10 @@ PROTO(void, aout_adobe_swap_exec_header_out, struct internal_exec *execp, struct external_exec *raw_bytes)); void -DEFUN(aout_adobe_swap_exec_header_out,(abfd, execp, raw_bytes), - bfd *abfd AND - struct internal_exec *execp AND - struct external_exec *raw_bytes) +aout_adobe_swap_exec_header_out (abfd, execp, raw_bytes) + bfd *abfd; + struct internal_exec *execp; + struct external_exec *raw_bytes; { struct external_exec *bytes = (struct external_exec *)raw_bytes; @@ -99,7 +99,7 @@ aout_adobe_object_p (abfd) if (bfd_read ((PTR) &exec_bytes, 1, EXEC_BYTES_SIZE, abfd) != EXEC_BYTES_SIZE) { - bfd_error = wrong_format; + bfd_set_error (bfd_error_wrong_format); return 0; } @@ -119,7 +119,7 @@ aout_adobe_object_p (abfd) ; /* Just continue anyway, if specifically set to this format */ else { - bfd_error = wrong_format; + bfd_set_error (bfd_error_wrong_format); return 0; } } @@ -156,7 +156,7 @@ aout_adobe_callback (abfd) for (;;) { if (bfd_read ((PTR) ext, 1, sizeof (*ext), abfd) != sizeof (*ext)) { - bfd_error = wrong_format; + bfd_set_error (bfd_error_wrong_format); return 0; } switch (ext->e_type[0]) { @@ -187,11 +187,11 @@ aout_adobe_callback (abfd) /* First one is called ".text" or whatever; subsequent ones are ".text1", ".text2", ... */ - bfd_error = no_error; + bfd_set_error (bfd_error_no_error); sect = bfd_make_section (abfd, section_name); trynum = 0; while (!sect) { - if (bfd_error != no_error) + if (bfd_get_error () != bfd_error_no_error) return 0; /* Some other error -- slide into the sunset */ sprintf (try_again, "%s%d", section_name, ++trynum); sect = bfd_make_section (abfd, try_again); @@ -201,7 +201,7 @@ aout_adobe_callback (abfd) if (sect->name == try_again) { newname = (char *) bfd_zalloc(abfd, strlen (sect->name)); if (newname == NULL) { - bfd_error = no_memory; + bfd_set_error (bfd_error_no_memory); return 0; } strcpy (newname, sect->name); @@ -255,7 +255,7 @@ aout_adobe_mkobject (abfd) rawptr = (struct bout_data_struct *) bfd_zalloc (abfd, sizeof (struct bout_data_struct)); if (rawptr == NULL) { - bfd_error = no_memory; + bfd_set_error (bfd_error_no_memory); return false; } @@ -340,7 +340,8 @@ aout_adobe_write_object_contents (abfd) { bfd_seek (abfd, (file_ptr)(N_SYMOFF(*exec_hdr(abfd))), SEEK_SET); - aout_32_write_syms (abfd); + if (! aout_32_write_syms (abfd)) + return false; bfd_seek (abfd, (file_ptr)(N_TRELOFF(*exec_hdr(abfd))), SEEK_SET); @@ -439,9 +440,9 @@ aout_adobe_set_arch_mach (abfd, arch, machine) } static int -DEFUN(aout_adobe_sizeof_headers,(ignore_abfd, ignore), - bfd *ignore_abfd AND - boolean ignore) +aout_adobe_sizeof_headers (ignore_abfd, ignore) + bfd *ignore_abfd; + boolean ignore; { return sizeof(struct internal_exec); } @@ -476,11 +477,14 @@ DEFUN(aout_adobe_sizeof_headers,(ignore_abfd, ignore), #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_seclet_link bfd_generic_seclet_link #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_bfd_free_cached_info bfd_true bfd_target a_out_adobe_vec = { @@ -490,7 +494,7 @@ bfd_target a_out_adobe_vec = true, /* hdr byte order is big */ (HAS_RELOC | EXEC_P | /* object flags */ HAS_LINENO | HAS_DEBUG | - HAS_SYMS | HAS_LOCALS | DYNAMIC | WP_TEXT ), + HAS_SYMS | HAS_LOCALS | WP_TEXT ), /* section flags */ (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_CODE | SEC_DATA | SEC_RELOC), '_', /* symbol leading char */ @@ -498,8 +502,12 @@ bfd_target a_out_adobe_vec = 16, /* ar_max_namelen */ 2, /* minumum alignment power */ - _do_getb64, _do_putb64, _do_getb32, _do_putb32, _do_getb16, _do_putb16, /* data */ - _do_getb64, _do_putb64, _do_getb32, _do_putb32, _do_getb16, _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, aout_adobe_object_p, /* bfd_check_format */ bfd_generic_archive_p, _bfd_dummy_target}, {bfd_false, aout_adobe_mkobject, /* bfd_set_format */ diff --git a/bfd/aout-target.h b/bfd/aout-target.h index 906f5f116db..dc59e27389a 100644 --- a/bfd/aout-target.h +++ b/bfd/aout-target.h @@ -387,6 +387,23 @@ MY_bfd_final_link (abfd, info) #define MY_bfd_link_add_symbols NAME(aout,link_add_symbols) #endif +#ifndef MY_bfd_copy_private_section_data +#define MY_bfd_copy_private_section_data \ + ((boolean (*) PARAMS ((bfd *, asection *, bfd *, asection *))) bfd_true) +#endif +#ifndef MY_bfd_copy_private_bfd_data +#define MY_bfd_copy_private_bfd_data \ + ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_true) +#endif + +#ifndef MY_bfd_is_local_label +#define MY_bfd_is_local_label bfd_generic_is_local_label +#endif + +#ifndef MY_bfd_free_cached_info +#define MY_bfd_free_cached_info bfd_true +#endif + /* Aout symbols normally have leading underscores */ #ifndef MY_symbol_leading_char #define MY_symbol_leading_char '_' diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h index 6b0bc8c291a..d42d2c5d43d 100644 --- a/bfd/bfd-in.h +++ b/bfd/bfd-in.h @@ -47,8 +47,8 @@ here. */ #include "ansidecl.h" #include "obstack.h" -#define BFD_VERSION "2.2" - +/* These two lines get substitutions done by commands in Makefile.in. */ +#define BFD_VERSION "@VERSION@" #define BFD_ARCH_SIZE @WORDSIZE@ #if BFD_ARCH_SIZE >= 64 @@ -100,9 +100,9 @@ typedef enum bfd_boolean {bfd_false, bfd_true} boolean; typedef long int file_ptr; /* Support for different sizes of target format ints and addresses. If the - host implements 64-bit values, it defines HOST_64_BIT to be the appropriate + host implements 64-bit values, it defines BFD_HOST_64_BIT to be the appropriate type. Otherwise, this code will fall back on gcc's "long long" type if gcc - is being used. HOST_64_BIT must be defined in such a way as to be a valid + is being used. BFD_HOST_64_BIT must be defined in such a way as to be a valid type name by itself or with "unsigned" prefixed. It should be a signed type by itself. @@ -111,10 +111,10 @@ typedef long int file_ptr; #ifdef BFD64 -#if defined (__GNUC__) && !defined (HOST_64_BIT) -#define HOST_64_BIT long long -typedef HOST_64_BIT int64_type; -typedef unsigned HOST_64_BIT uint64_type; +#if defined (__GNUC__) && !defined (BFD_HOST_64_BIT) +#define BFD_HOST_64_BIT long long +typedef BFD_HOST_64_BIT int64_type; +typedef unsigned BFD_HOST_64_BIT uint64_type; #endif #if !defined (uint64_type) && defined (__GNUC__) @@ -126,10 +126,10 @@ typedef unsigned HOST_64_BIT uint64_type; #define uint64_typeHIGH(x) ((unsigned long)(((x) >> 32) & 0xffffffff)) #endif -typedef unsigned HOST_64_BIT bfd_vma; -typedef HOST_64_BIT bfd_signed_vma; -typedef unsigned HOST_64_BIT bfd_size_type; -typedef unsigned HOST_64_BIT symvalue; +typedef unsigned BFD_HOST_64_BIT bfd_vma; +typedef BFD_HOST_64_BIT bfd_signed_vma; +typedef unsigned BFD_HOST_64_BIT bfd_size_type; +typedef unsigned BFD_HOST_64_BIT symvalue; #ifndef fprintf_vma #define fprintf_vma(s,x) \ fprintf(s,"%08lx%08lx", uint64_typeHIGH(x), uint64_typeLOW(x)) @@ -431,6 +431,8 @@ 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),\ @@ -438,6 +440,7 @@ 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),\ @@ -453,7 +456,8 @@ 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_final_link),\ +CAT(NAME,_bfd_free_cached_info) #define COFF_SWAP_TABLE (PTR) &bfd_coff_std_swap_table diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index 25adc054985..248c04fcbcc 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -456,7 +456,8 @@ 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_final_link),\ +CAT(NAME,_bfd_free_cached_info) #define COFF_SWAP_TABLE (PTR) &bfd_coff_std_swap_table @@ -1929,6 +1930,9 @@ bfd_copy_private_bfd_data PARAMS ((bfd *ibfd, bfd *obfd)); #define bfd_final_link(abfd, info) \ BFD_SEND (abfd, _bfd_final_link, (abfd, info)) +#define bfd_free_cached_info(abfd) \ + BFD_SEND (abfd, _bfd_free_cached_info, (abfd)) + symindex bfd_get_next_mapent PARAMS ((bfd *abfd, symindex previous, carsym **sym)); @@ -2110,6 +2114,9 @@ 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 * diff --git a/bfd/bfd.c b/bfd/bfd.c index d772e5ed26b..91bac07b381 100644 --- a/bfd/bfd.c +++ b/bfd/bfd.c @@ -806,5 +806,8 @@ DESCRIPTION .#define bfd_final_link(abfd, info) \ . BFD_SEND (abfd, _bfd_final_link, (abfd, info)) . +.#define bfd_free_cached_info(abfd) \ +. BFD_SEND (abfd, _bfd_free_cached_info, (abfd)) +. */ diff --git a/bfd/bout.c b/bfd/bout.c index 5dcc29d83da..971247c0a4d 100644 --- a/bfd/bout.c +++ b/bfd/bout.c @@ -1379,6 +1379,7 @@ b_out_get_relocated_section_contents (in_abfd, link_info, link_order, data, #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_free_cached_info bfd_true bfd_target b_out_vec_big_host = { diff --git a/bfd/cisco-core.c b/bfd/cisco-core.c index dc9775f8f50..2a916bfe1e9 100644 --- a/bfd/cisco-core.c +++ b/bfd/cisco-core.c @@ -339,6 +339,7 @@ cisco_core_file_matches_executable_p (core_bfd, exec_bfd) ((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 = { diff --git a/bfd/coffcode.h b/bfd/coffcode.h index 66e5ce5be32..f3204508314 100644 --- a/bfd/coffcode.h +++ b/bfd/coffcode.h @@ -2526,3 +2526,4 @@ static CONST bfd_coff_backend_data bfd_coff_std_swap_table = #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 diff --git a/bfd/elf32-target.h b/bfd/elf32-target.h index 79bacb61609..951913c99f0 100644 --- a/bfd/elf32-target.h +++ b/bfd/elf32-target.h @@ -71,6 +71,9 @@ 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 diff --git a/bfd/elf64-target.h b/bfd/elf64-target.h index 75ba99850f9..454f0d50a12 100644 --- a/bfd/elf64-target.h +++ b/bfd/elf64-target.h @@ -68,10 +68,12 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #define bfd_elf64_bfd_copy_private_bfd_data \ ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_true) #endif - #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 diff --git a/bfd/hppabsd-core.c b/bfd/hppabsd-core.c index 70270aee6d6..96b82d04874 100644 --- a/bfd/hppabsd-core.c +++ b/bfd/hppabsd-core.c @@ -291,6 +291,7 @@ hppabsd_core_core_file_matches_executable_p (core_bfd, exec_bfd) ((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 /* If somebody calls any byte-swapping routines, shoot them. */ static void diff --git a/bfd/hpux-core.c b/bfd/hpux-core.c index 86555de7940..ef9f32dea66 100644 --- a/bfd/hpux-core.c +++ b/bfd/hpux-core.c @@ -273,6 +273,7 @@ hpux_core_core_file_matches_executable_p (core_bfd, exec_bfd) ((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 /* If somebody calls any byte-swapping routines, shoot them. */ void diff --git a/bfd/i386os9k.c b/bfd/i386os9k.c index 14e83669712..c6955fe22ba 100644 --- a/bfd/i386os9k.c +++ b/bfd/i386os9k.c @@ -31,33 +31,33 @@ static bfd_target *os9k_callback PARAMS ((bfd *)); /* Swaps the information in an executable header taken from a raw byte stream memory image, into the internal exec_header structure. */ void -DEFUN(os9k_swap_exec_header_in,(abfd, raw_bytes, execp), - bfd *abfd AND - mh_com *raw_bytes AND - struct internal_exec *execp) +os9k_swap_exec_header_in (abfd, raw_bytes, execp) + bfd *abfd; + mh_com *raw_bytes; + struct internal_exec *execp; { - mh_com *bytes = (mh_com *)raw_bytes; + mh_com *bytes = (mh_com *) raw_bytes; unsigned int dload, dmemsize, dmemstart; /* Now fill in fields in the execp, from the bytes in the raw data. */ - execp->a_info = bfd_h_get_16 (abfd, bytes->m_sync); - execp->a_syms = 0; - execp->a_entry = bfd_h_get_32 (abfd, bytes->m_exec); + execp->a_info = bfd_h_get_16 (abfd, bytes->m_sync); + execp->a_syms = 0; + execp->a_entry = bfd_h_get_32 (abfd, bytes->m_exec); execp->a_talign = 2; execp->a_dalign = 2; execp->a_balign = 2; - dload = bfd_h_get_32 (abfd, bytes->m_idata); + dload = bfd_h_get_32 (abfd, bytes->m_idata); execp->a_data = dload + 8; - bfd_seek(abfd, (file_ptr)dload, SEEK_SET); - bfd_read(&dmemstart, sizeof(dmemstart), 1, abfd); - bfd_read(&dmemsize, sizeof(dmemsize), 1, abfd); + bfd_seek (abfd, (file_ptr) dload, SEEK_SET); + bfd_read (&dmemstart, sizeof (dmemstart), 1, abfd); + bfd_read (&dmemsize, sizeof (dmemsize), 1, abfd); - execp->a_tload = 0; - execp->a_dload = bfd_h_get_32 (abfd, (unsigned char *)&dmemstart); + execp->a_tload = 0; + execp->a_dload = bfd_h_get_32 (abfd, (unsigned char *) &dmemstart); execp->a_text = dload - execp->a_tload; - execp->a_data = bfd_h_get_32 (abfd, (unsigned char *)&dmemsize); + execp->a_data = bfd_h_get_32 (abfd, (unsigned char *) &dmemsize); execp->a_bss = bfd_h_get_32 (abfd, bytes->m_data) - execp->a_data; execp->a_trsize = 0; @@ -68,35 +68,36 @@ DEFUN(os9k_swap_exec_header_in,(abfd, raw_bytes, execp), /* Swaps the information in an internal exec header structure into the supplied buffer ready for writing to disk. */ -PROTO(void, os9k_swap_exec_header_out, - (bfd *abfd, - struct internal_exec *execp, - struct mh_com *raw_bytes)); +PROTO (void, os9k_swap_exec_header_out, + (bfd * abfd, + struct internal_exec * execp, + struct mh_com * raw_bytes)); void -DEFUN(os9k_swap_exec_header_out,(abfd, execp, raw_bytes), - bfd *abfd AND - struct internal_exec *execp AND - mh_com *raw_bytes) +os9k_swap_exec_header_out (abfd, execp, raw_bytes) + bfd *abfd; + struct internal_exec *execp; + mh_com *raw_bytes; { - mh_com *bytes = (mh_com *)raw_bytes; + mh_com *bytes = (mh_com *) raw_bytes; /* Now fill in fields in the raw data, from the fields in the exec struct. */ - bfd_h_put_32 (abfd, execp->a_info , bytes->e_info); - bfd_h_put_32 (abfd, execp->a_text , bytes->e_text); - bfd_h_put_32 (abfd, execp->a_data , bytes->e_data); - bfd_h_put_32 (abfd, execp->a_bss , bytes->e_bss); - bfd_h_put_32 (abfd, execp->a_syms , bytes->e_syms); - bfd_h_put_32 (abfd, execp->a_entry , bytes->e_entry); + bfd_h_put_32 (abfd, execp->a_info, bytes->e_info); + bfd_h_put_32 (abfd, execp->a_text, bytes->e_text); + bfd_h_put_32 (abfd, execp->a_data, bytes->e_data); + bfd_h_put_32 (abfd, execp->a_bss, bytes->e_bss); + bfd_h_put_32 (abfd, execp->a_syms, bytes->e_syms); + bfd_h_put_32 (abfd, execp->a_entry, bytes->e_entry); bfd_h_put_32 (abfd, execp->a_trsize, bytes->e_trsize); bfd_h_put_32 (abfd, execp->a_drsize, bytes->e_drsize); - bfd_h_put_32 (abfd, execp->a_tload , bytes->e_tload); - bfd_h_put_32 (abfd, execp->a_dload , bytes->e_dload); + bfd_h_put_32 (abfd, execp->a_tload, bytes->e_tload); + bfd_h_put_32 (abfd, execp->a_dload, bytes->e_dload); bytes->e_talign[0] = execp->a_talign; bytes->e_dalign[0] = execp->a_dalign; bytes->e_balign[0] = execp->a_balign; bytes->e_relaxable[0] = execp->a_relaxable; } -#endif 0 + +#endif /* 0 */ static bfd_target * os9k_object_p (abfd) @@ -105,17 +106,19 @@ os9k_object_p (abfd) struct internal_exec anexec; mh_com exec_bytes; - if (bfd_read ((PTR) &exec_bytes, MHCOM_BYTES_SIZE, 1, abfd) - != MHCOM_BYTES_SIZE) { - bfd_set_error (bfd_error_wrong_format); - return 0; - } + if (bfd_read ((PTR) & exec_bytes, MHCOM_BYTES_SIZE, 1, abfd) + != MHCOM_BYTES_SIZE) + { + bfd_set_error (bfd_error_wrong_format); + return 0; + } anexec.a_info = bfd_h_get_16 (abfd, exec_bytes.m_sync); - if (N_BADMAG (anexec)) { - bfd_set_error (bfd_error_wrong_format); - return 0; - } + if (N_BADMAG (anexec)) + { + bfd_set_error (bfd_error_wrong_format); + return 0; + } os9k_swap_exec_header_in (abfd, &exec_bytes, &anexec); return aout_32_some_aout_object_p (abfd, &anexec, os9k_callback); @@ -133,7 +136,7 @@ os9k_callback (abfd) unsigned long bss_start; /* Architecture and machine type */ - bfd_set_arch_mach(abfd, bfd_arch_i386, 0); + bfd_set_arch_mach (abfd, bfd_arch_i386, 0); /* The positions of the string table and symbol table. */ obj_str_filepos (abfd) = 0; @@ -142,7 +145,7 @@ os9k_callback (abfd) /* The alignments of the sections */ obj_textsec (abfd)->alignment_power = execp->a_talign; obj_datasec (abfd)->alignment_power = execp->a_dalign; - obj_bsssec (abfd)->alignment_power = execp->a_balign; + obj_bsssec (abfd)->alignment_power = execp->a_balign; /* The starting addresses of the sections. */ obj_textsec (abfd)->vma = execp->a_tload; @@ -151,7 +154,7 @@ os9k_callback (abfd) /* And reload the sizes, since the aout module zaps them */ obj_textsec (abfd)->_raw_size = execp->a_text; - bss_start = execp->a_dload + execp->a_data; /* BSS = end of data section */ + bss_start = execp->a_dload + execp->a_data; /* BSS = end of data section */ obj_bsssec (abfd)->vma = align_power (bss_start, execp->a_balign); /* The file positions of the sections */ @@ -163,17 +166,18 @@ os9k_callback (abfd) obj_datasec (abfd)->rel_filepos = N_DROFF(*execp); */ - adata(abfd).page_size = 1; /* Not applicable. */ - adata(abfd).segment_size = 1; /* Not applicable. */ - adata(abfd).exec_bytes_size = MHCOM_BYTES_SIZE; + adata (abfd).page_size = 1; /* Not applicable. */ + adata (abfd).segment_size = 1;/* Not applicable. */ + adata (abfd).exec_bytes_size = MHCOM_BYTES_SIZE; return abfd->xvec; } #if 0 -struct bout_data_struct { - struct aoutdata a; - struct internal_exec e; +struct bout_data_struct +{ + struct aoutdata a; + struct internal_exec e; }; static boolean @@ -183,7 +187,8 @@ os9k_mkobject (abfd) struct bout_data_struct *rawptr; rawptr = (struct bout_data_struct *) bfd_zalloc (abfd, sizeof (struct bout_data_struct)); - if (rawptr == NULL) { + if (rawptr == NULL) + { bfd_set_error (bfd_error_no_memory); return false; } @@ -192,9 +197,9 @@ os9k_mkobject (abfd) exec_hdr (abfd) = &rawptr->e; /* For simplicity's sake we just make all the sections right here. */ - obj_textsec (abfd) = (asection *)NULL; - obj_datasec (abfd) = (asection *)NULL; - obj_bsssec (abfd) = (asection *)NULL; + obj_textsec (abfd) = (asection *) NULL; + obj_datasec (abfd) = (asection *) NULL; + obj_bsssec (abfd) = (asection *) NULL; bfd_make_section (abfd, ".text"); bfd_make_section (abfd, ".data"); @@ -217,9 +222,9 @@ os9k_write_object_contents (abfd) exec_hdr (abfd)->a_syms = bfd_get_symcount (abfd) * sizeof (struct nlist); exec_hdr (abfd)->a_entry = bfd_get_start_address (abfd); exec_hdr (abfd)->a_trsize = ((obj_textsec (abfd)->reloc_count) * - sizeof (struct relocation_info)); + sizeof (struct relocation_info)); exec_hdr (abfd)->a_drsize = ((obj_datasec (abfd)->reloc_count) * - sizeof (struct relocation_info)); + sizeof (struct relocation_info)); exec_hdr (abfd)->a_talign = obj_textsec (abfd)->alignment_power; exec_hdr (abfd)->a_dalign = obj_datasec (abfd)->alignment_power; @@ -231,22 +236,24 @@ os9k_write_object_contents (abfd) bout_swap_exec_header_out (abfd, exec_hdr (abfd), &swapped_hdr); bfd_seek (abfd, (file_ptr) 0, SEEK_SET); - bfd_write ((PTR) &swapped_hdr, 1, EXEC_BYTES_SIZE, abfd); + bfd_write ((PTR) & swapped_hdr, 1, EXEC_BYTES_SIZE, abfd); /* Now write out reloc info, followed by syms and strings */ - if (bfd_get_symcount (abfd) != 0) + if (bfd_get_symcount (abfd) != 0) { - bfd_seek (abfd, (file_ptr)(N_SYMOFF(*exec_hdr(abfd))), SEEK_SET); + bfd_seek (abfd, (file_ptr) (N_SYMOFF (*exec_hdr (abfd))), SEEK_SET); - if (! aout_32_write_syms (abfd)) + if (!aout_32_write_syms (abfd)) return false; - bfd_seek (abfd, (file_ptr)(N_TROFF(*exec_hdr(abfd))), SEEK_SET); + bfd_seek (abfd, (file_ptr) (N_TROFF (*exec_hdr (abfd))), SEEK_SET); - if (!b_out_squirt_out_relocs (abfd, obj_textsec (abfd))) return false; - bfd_seek (abfd, (file_ptr)(N_DROFF(*exec_hdr(abfd))), SEEK_SET); + if (!b_out_squirt_out_relocs (abfd, obj_textsec (abfd))) + return false; + bfd_seek (abfd, (file_ptr) (N_DROFF (*exec_hdr (abfd))), SEEK_SET); - if (!b_out_squirt_out_relocs (abfd, obj_datasec (abfd))) return false; + if (!b_out_squirt_out_relocs (abfd, obj_datasec (abfd))) + return false; } return true; } @@ -257,37 +264,40 @@ os9k_set_section_contents (abfd, section, location, offset, count) sec_ptr section; unsigned char *location; file_ptr offset; - int count; + int count; { - if (abfd->output_has_begun == false) { /* set by bfd.c handler */ - if ((obj_textsec (abfd) == NULL) || (obj_datasec (abfd) == NULL) /*|| - (obj_textsec (abfd)->_cooked_size == 0) || (obj_datasec (abfd)->_cooked_size == 0)*/) { - bfd_set_error (bfd_error_invalid_operation); - return false; - } + if (abfd->output_has_begun == false) + { /* set by bfd.c handler */ + if ((obj_textsec (abfd) == NULL) || (obj_datasec (abfd) == NULL) /*|| + (obj_textsec (abfd)->_cooked_size == 0) || (obj_datasec (abfd)->_cooked_size == 0)*/ ) + { + bfd_set_error (bfd_error_invalid_operation); + return false; + } - obj_textsec (abfd)->filepos = sizeof(struct internal_exec); - obj_datasec(abfd)->filepos = obj_textsec(abfd)->filepos - + obj_textsec (abfd)->_raw_size; + obj_textsec (abfd)->filepos = sizeof (struct internal_exec); + obj_datasec (abfd)->filepos = obj_textsec (abfd)->filepos + + obj_textsec (abfd)->_raw_size; - } + } /* regardless, once we know what we're doing, we might as well get going */ bfd_seek (abfd, section->filepos + offset, SEEK_SET); - if (count != 0) { - return (bfd_write ((PTR)location, 1, count, abfd) == count) ?true:false; - } + if (count != 0) + { + return (bfd_write ((PTR) location, 1, count, abfd) == count) ? true : false; + } return true; } -#endif 0 +#endif /* 0 */ -static int -DEFUN(os9k_sizeof_headers,(ignore_abfd, ignore), - bfd *ignore_abfd AND - boolean ignore) +static int +os9k_sizeof_headers (ignore_abfd, ignore) + bfd *ignore_abfd; + boolean ignore; { - return sizeof(struct internal_exec); + return sizeof (struct internal_exec); } @@ -328,34 +338,34 @@ DEFUN(os9k_sizeof_headers,(ignore_abfd, ignore), #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_free_cached_info bfd_true bfd_target i386os9k_vec = { - "i386os9k", /* name */ + "i386os9k", /* name */ bfd_target_os9k_flavour, - false, /* data byte order is little */ - false, /* hdr byte order is big */ + false, /* data byte order is little */ + false, /* hdr byte order is big */ (HAS_RELOC | EXEC_P | WP_TEXT), /* object flags */ - (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD ), /* section flags */ - 0, /* symbol leading char */ - ' ', /* ar_pad_char */ - 16, /* ar_max_namelen */ - 2, /* minumum alignment power */ + (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD), /* section flags */ + 0, /* symbol leading char */ + ' ', /* ar_pad_char */ + 16, /* ar_max_namelen */ + 2, /* minumum 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_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, os9k_object_p, /* bfd_check_format */ + bfd_getl32, bfd_getl_signed_32, bfd_putl32, + bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* hdrs */ + {_bfd_dummy_target, os9k_object_p, /* bfd_check_format */ bfd_generic_archive_p, _bfd_dummy_target}, - {bfd_false, bfd_false, /* bfd_set_format */ + {bfd_false, bfd_false, /* bfd_set_format */ _bfd_generic_mkarchive, bfd_false}, - {bfd_false, bfd_false, /* bfd_write_contents */ + {bfd_false, bfd_false, /* bfd_write_contents */ _bfd_write_archive_contents, bfd_false}, - JUMP_TABLE(aout_32), + JUMP_TABLE (aout_32), (PTR) 0, }; - diff --git a/bfd/ieee.c b/bfd/ieee.c index 24b394ef5ab..45c76e193c7 100644 --- a/bfd/ieee.c +++ b/bfd/ieee.c @@ -3325,6 +3325,7 @@ ieee_bfd_debug_info_accumulate (abfd, section) #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 = diff --git a/bfd/irix-core.c b/bfd/irix-core.c index 08f2a12145d..279fb4a8ed5 100644 --- a/bfd/irix-core.c +++ b/bfd/irix-core.c @@ -246,6 +246,7 @@ irix_core_make_empty_symbol (abfd) ((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 /* If somebody calls any byte-swapping routines, shoot them. */ void diff --git a/bfd/libecoff.h b/bfd/libecoff.h index f413837df0c..cbd9347cc7f 100644 --- a/bfd/libecoff.h +++ b/bfd/libecoff.h @@ -276,18 +276,12 @@ extern struct bfd_link_hash_table *ecoff_bfd_link_hash_table_create 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 *)); - -#ifndef ecoff_bfd_copy_private_section_data #define ecoff_bfd_copy_private_section_data \ ((boolean (*) PARAMS ((bfd *, asection *, bfd *, asection *))) bfd_true) -#endif -#ifndef ecoff_bfd_copy_private_bfd_data #define ecoff_bfd_copy_private_bfd_data \ ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_true) -#endif -#ifndef ecoff_bfd_is_local_label #define ecoff_bfd_is_local_label bfd_generic_is_local_label -#endif +#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)); diff --git a/bfd/nlm-target.h b/bfd/nlm-target.h index 147e4d4dfa5..4cbc8a72a91 100644 --- a/bfd/nlm-target.h +++ b/bfd/nlm-target.h @@ -17,6 +17,82 @@ 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 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_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) +#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 @@ -42,8 +118,8 @@ bfd_target TARGET_BIG_SYM = true, /* object_flags: mask of all file flags */ - (HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS | - DYNAMIC | WP_TEXT), + (HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS + | WP_TEXT), /* section_flags: mask of all section flags */ (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_READONLY | @@ -69,20 +145,20 @@ bfd_target TARGET_BIG_SYM = 3, /* Routines to byte-swap various sized integers from the data sections */ - _do_getb64, _do_getb_signed_64, _do_putb64, - _do_getb32, _do_getb_signed_32, _do_putb32, - _do_getb16, _do_getb_signed_16, _do_putb16, + bfd_getb64, bfd_getb_signed_64, bfd_putb64, + bfd_getb32, bfd_getb_signed_32, bfd_putb32, + bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* Routines to byte-swap various sized integers from the file headers */ - _do_getb64, _do_getb_signed_64, _do_putb64, - _do_getb32, _do_getb_signed_32, _do_putb32, - _do_getb16, _do_getb_signed_16, _do_putb16, + bfd_getb64, bfd_getb_signed_64, bfd_putb64, + bfd_getb32, bfd_getb_signed_32, bfd_putb32, + bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* bfd_check_format: check the format of a file being read */ { _bfd_dummy_target, /* unknown format */ nlmNAME(object_p), /* assembler/linker output (object file) */ bfd_generic_archive_p, /* an archive */ - nlmNAME(core_file_p) /* a core file */ + nlm_core_file_p /* a core file */ }, /* bfd_set_format: set the format of a file being written */ @@ -101,10 +177,10 @@ bfd_target TARGET_BIG_SYM = /* Initialize a jump table with the standard macro. All names start with "nlm" */ - JUMP_TABLE(JUMP_TABLE_PREFIX), + JUMP_TABLE(nlm), /* backend_data: */ - (PTR) NULL, + (PTR) TARGET_BACKEND_DATA }; #endif @@ -124,8 +200,8 @@ bfd_target TARGET_LITTLE_SYM = false, /* Nope -- this one's little endian */ /* object_flags: mask of all file flags */ - (HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS | - DYNAMIC | WP_TEXT), + (HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS + | WP_TEXT), /* section_flags: mask of all section flags */ (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_READONLY | @@ -151,20 +227,20 @@ bfd_target TARGET_LITTLE_SYM = 3, /* Routines to byte-swap various sized integers from the data sections */ - _do_getl64, _do_getl_signed_64, _do_putl64, - _do_getl32, _do_getl_signed_32, _do_putl32, - _do_getl16, _do_getl_signed_16, _do_putl16, + bfd_getl64, bfd_getl_signed_64, bfd_putl64, + bfd_getl32, bfd_getl_signed_32, bfd_putl32, + bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* Routines to byte-swap various sized integers from the file headers */ - _do_getl64, _do_getl_signed_64, _do_putl64, - _do_getl32, _do_getl_signed_32, _do_putl32, - _do_getl16, _do_getl_signed_16, _do_putl16, + bfd_getl64, bfd_getl_signed_64, bfd_putl64, + bfd_getl32, bfd_getl_signed_32, bfd_putl32, + bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* bfd_check_format: check the format of a file being read */ { _bfd_dummy_target, /* unknown format */ nlmNAME(object_p), /* assembler/linker output (object file) */ bfd_generic_archive_p, /* an archive */ - nlmNAME(core_file_p) /* a core file */ + nlm_core_file_p /* a core file */ }, /* bfd_set_format: set the format of a file being written */ @@ -183,9 +259,9 @@ bfd_target TARGET_LITTLE_SYM = /* Initialize a jump table with the standard macro. All names start with "nlm" */ - JUMP_TABLE(JUMP_TABLE_PREFIX), + JUMP_TABLE(nlm), /* backend_data: */ - (PTR) NULL, + (PTR) TARGET_BACKEND_DATA }; #endif diff --git a/bfd/oasys.c b/bfd/oasys.c index a8f3bb891db..e5388610ea3 100644 --- a/bfd/oasys.c +++ b/bfd/oasys.c @@ -1442,6 +1442,7 @@ oasys_sizeof_headers (abfd, exec) #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 = diff --git a/bfd/osf-core.c b/bfd/osf-core.c index 33e4d4a2540..28693dbc726 100644 --- a/bfd/osf-core.c +++ b/bfd/osf-core.c @@ -258,6 +258,7 @@ osf_core_core_file_matches_executable_p (core_bfd, exec_bfd) ((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 /* If somebody calls any byte-swapping routines, shoot them. */ static void diff --git a/bfd/ptrace-core.c b/bfd/ptrace-core.c index bfc97e5f3c3..ba9a54ac560 100644 --- a/bfd/ptrace-core.c +++ b/bfd/ptrace-core.c @@ -255,6 +255,7 @@ ptrace_unix_core_file_matches_executable_p (core_bfd, exec_bfd) ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_false) #define ptrace_unix_bfd_is_local_label \ ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_false) +#define ptrace_unix_bfd_free_cached_info bfd_true /* If somebody calls any byte-swapping routines, shoot them. */ void diff --git a/bfd/som.c b/bfd/som.c index 98991e1bc2f..ac7057daf24 100644 --- a/bfd/som.c +++ b/bfd/som.c @@ -5464,6 +5464,7 @@ som_write_armap (abfd) #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 +#define som_bfd_free_cached_info bfd_true /* Core file support is in the hpux-core backend. */ #define som_core_file_failing_command _bfd_dummy_core_file_failing_command diff --git a/bfd/srec.c b/bfd/srec.c index 1f4a8bef72a..e79460cf636 100644 --- a/bfd/srec.c +++ b/bfd/srec.c @@ -957,6 +957,7 @@ srec_print_symbol (ignore_abfd, afile, symbol, how) #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 = { diff --git a/bfd/targets.c b/bfd/targets.c index 0b45534aa77..c034c15632f 100644 --- a/bfd/targets.c +++ b/bfd/targets.c @@ -345,6 +345,9 @@ 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 874a87e8a37..cf9af54c51d 100644 --- a/bfd/tekhex.c +++ b/bfd/tekhex.c @@ -1028,6 +1028,7 @@ tekhex_print_symbol (ignore_abfd, filep, symbol, how) #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 = { diff --git a/bfd/trad-core.c b/bfd/trad-core.c index 6d57bbb9bda..1dbd88112a3 100644 --- a/bfd/trad-core.c +++ b/bfd/trad-core.c @@ -345,6 +345,7 @@ trad_unix_core_file_matches_executable_p (core_bfd, exec_bfd) ((boolean (*) PARAMS ((bfd *, bfd *))) bfd_false) #define trad_unix_bfd_is_local_label \ ((boolean (*) PARAMS ((bfd *, asection *))) bfd_false) +#define trad_unix_bfd_free_cached_info bfd_true /* If somebody calls any byte-swapping routines, shoot them. */ void