From 6167a840e59a21b814d8f14a2c2aebcb5fe52cda Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Sat, 10 Jun 1995 00:05:51 +0000 Subject: [PATCH] * targets.c: Add copy_private_symbol_data and link_split_section to the target vector. * libbfd-in.h (_bfd_generic_bfd_copy_private_symbol_data): Define. (_bfd_nolink_bfd_link_split_section): Likewise. (bfd_generic_link_split_section): Declare. * syms.c (bfd_copy_private_symbol_data): Define. * linker.c (bf_link_split_section): Likewise. * som.c (som_bfd_copy_private_symbol_data): New function (som_bfd_link_split_section): Likewise. * All other targets updated with default versions of new routines. * Take out my braindamaged bfd_true/bfd_false changes from earlier today. Replace with just: * bfd-in.h: (TRUE_FALSE_ALREADY_DEFINED): Define this if compiling with g++-2.6 or later. * bfd-in2.h: Rebuilt. --- bfd/ChangeLog | 22 +++++++++++++--------- bfd/bfd-in.h | 10 ++++------ bfd/bfd-in2.h | 27 ++++++++++++++++++++------- bfd/elf32-target.h | 8 ++++++++ bfd/elf64-target.h | 7 +++++++ 5 files changed, 52 insertions(+), 22 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 162bb7f955..c2cff076e2 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -4,17 +4,21 @@ Fri Jun 9 12:20:28 1995 Steve Chamberlain Fri Jun 9 12:49:00 1995 Jeff Law (law@snake.cs.utah.edu) - * bfd-in.h (bfd_true, bfd_false): Define these to true and false - if TRUE_FALSE_ALREADY_DEFINED is not defined. - * bfd-in2.h: Rebuilt. - + * targets.c: Add copy_private_symbol_data and link_split_section + to the target vector. + * libbfd-in.h (_bfd_generic_bfd_copy_private_symbol_data): Define. + (_bfd_nolink_bfd_link_split_section): Likewise. + (bfd_generic_link_split_section): Declare. + * syms.c (bfd_copy_private_symbol_data): Define. + * linker.c (bf_link_split_section): Likewise. + * som.c (som_bfd_copy_private_symbol_data): New function + (som_bfd_link_split_section): Likewise. + * All other targets updated with default versions of new routines. + + * Take out my braindamaged bfd_true/bfd_false changes from earlier + today. Replace with just: * bfd-in.h: (TRUE_FALSE_ALREADY_DEFINED): Define this if compiling with g++-2.6 or later. - (bfd_set_section_vma): Use bfd_true and bfd_false rather than - true and false. - (bfd_set_section_alignment): Likewise. - (bfd_set_section_userdata): Likewise. - (bfd_set_cacheable): Likewise. * bfd-in2.h: Rebuilt. Fri Jun 9 07:54:29 1995 Steve Chamberlain diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h index bdc4ed0f39..2c333c9c9f 100644 --- a/bfd/bfd-in.h +++ b/bfd/bfd-in.h @@ -89,8 +89,6 @@ typedef struct _bfd bfd; #ifndef TRUE_FALSE_ALREADY_DEFINED typedef enum bfd_boolean {false, true} boolean; #define BFD_TRUE_FALSE -#define bfd_false false -#define bfd_true true #else typedef enum bfd_boolean {bfd_false, bfd_true} boolean; #endif @@ -299,9 +297,9 @@ typedef struct sec *sec_ptr; #define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0) -#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma= (val)), ((ptr)->user_set_vma = bfd_true), bfd_true) -#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),bfd_true) -#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),bfd_true) +#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma= (val)), ((ptr)->user_set_vma = true), true) +#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),true) +#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),true) typedef struct stat stat_type; @@ -506,7 +504,7 @@ typedef struct _bfd_link_stack_heap bfd_link_stack_heap; #define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char) -#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = (bool)), bfd_true) +#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = (bool)), true) /* Byte swapping routines. */ diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index 42146ce5fb..a0708f7217 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -89,8 +89,6 @@ typedef struct _bfd bfd; #ifndef TRUE_FALSE_ALREADY_DEFINED typedef enum bfd_boolean {false, true} boolean; #define BFD_TRUE_FALSE -#define bfd_false false -#define bfd_true true #else typedef enum bfd_boolean {bfd_false, bfd_true} boolean; #endif @@ -299,9 +297,9 @@ typedef struct sec *sec_ptr; #define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0) -#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma= (val)), ((ptr)->user_set_vma = bfd_true), bfd_true) -#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),bfd_true) -#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),bfd_true) +#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma= (val)), ((ptr)->user_set_vma = true), true) +#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),true) +#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),true) typedef struct stat stat_type; @@ -506,7 +504,7 @@ typedef struct _bfd_link_stack_heap bfd_link_stack_heap; #define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char) -#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = (bool)), bfd_true) +#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = (bool)), true) /* Byte swapping routines. */ @@ -1762,6 +1760,12 @@ bfd_decode_symclass PARAMS ((asymbol *symbol)); void bfd_symbol_info PARAMS ((asymbol *symbol, symbol_info *ret)); +boolean +bfd_copy_private_symbol_data PARAMS ((bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym)); + +#define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \ + BFD_SEND (ibfd, _bfd_copy_private_symbol_data, \ + (ibfd, isymbol, obfd, osymbol)) struct _bfd { /* The filename the application opened the BFD with. */ @@ -2181,6 +2185,7 @@ CAT(NAME,_get_section_contents) CAT(NAME,_bfd_copy_private_bfd_data),\ CAT(NAME,_bfd_merge_private_bfd_data),\ CAT(NAME,_bfd_copy_private_section_data),\ +CAT(NAME,_bfd_copy_private_symbol_data),\ CAT(NAME,_bfd_set_private_flags) /* Called to copy BFD general private data from one object file to another. */ @@ -2192,6 +2197,10 @@ CAT(NAME,_bfd_set_private_flags) to another. */ boolean (*_bfd_copy_private_section_data) PARAMS ((bfd *, sec_ptr, bfd *, sec_ptr)); + /* Called to copy BFD private symbol data from one symbol + to another. */ + boolean (*_bfd_copy_private_symbol_data) PARAMS ((bfd *, asymbol *, + bfd *, asymbol *)); /* Called to set private backend flags */ boolean (*_bfd_set_private_flags) PARAMS ((bfd *, flagword)); @@ -2296,7 +2305,8 @@ 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) +CAT(NAME,_bfd_final_link),\ +CAT(NAME,_bfd_link_split_section) int (*_bfd_sizeof_headers) PARAMS ((bfd *, boolean)); bfd_byte * (*_bfd_get_relocated_section_contents) PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_order *, @@ -2317,6 +2327,9 @@ CAT(NAME,_bfd_final_link) section of the BFD. */ boolean (*_bfd_final_link) PARAMS ((bfd *, struct bfd_link_info *)); + /* Should this section be split up into smaller pieces during linking. */ + boolean (*_bfd_link_split_section) PARAMS ((bfd *, struct sec *)); + /* Routines to handle dynamic symbols and relocs. */ #define BFD_JUMP_TABLE_DYNAMIC(NAME)\ CAT(NAME,_get_dynamic_symtab_upper_bound),\ diff --git a/bfd/elf32-target.h b/bfd/elf32-target.h index eb3ce76973..01236fef80 100644 --- a/bfd/elf32-target.h +++ b/bfd/elf32-target.h @@ -39,6 +39,10 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #define bfd_elf32_bfd_make_debug_symbol \ ((asymbol *(*) PARAMS ((bfd *, void *, unsigned long))) bfd_nullvoidptr) +#ifndef bfd_elf32_bfd_copy_private_symbol_data +#define bfd_elf32_bfd_copy_private_symbol_data \ + ((boolean (*) PARAMS ((bfd *, asymbol *, bfd *, asymbol *))) bfd_true) +#endif #ifndef bfd_elf32_bfd_copy_private_section_data #define bfd_elf32_bfd_copy_private_section_data \ ((boolean (*) PARAMS ((bfd *, asection *, bfd *, asection *))) bfd_true) @@ -85,6 +89,10 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #define bfd_elf32_bfd_final_link _bfd_generic_final_link #endif #endif /* ! defined (elf_backend_relocate_section) */ +#ifndef bfd_elf32_bfd_link_split_section +#define bfd_elf32_bfd_link_split_section _bfd_generic_link_split_section +#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 b5fbce0079..e7177f2a62 100644 --- a/bfd/elf64-target.h +++ b/bfd/elf64-target.h @@ -40,6 +40,10 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #define bfd_elf64_bfd_make_debug_symbol \ ((asymbol *(*) PARAMS ((bfd *, void *, unsigned long))) bfd_nullvoidptr) +#ifndef bfd_elf64_bfd_copy_private_symbol_data +#define bfd_elf64_bfd_copy_private_symbol_data \ + ((boolean (*) PARAMS ((bfd *, asymbol *, bfd *, asymbol *))) bfd_true) +#endif #ifndef bfd_elf64_bfd_copy_private_section_data #define bfd_elf64_bfd_copy_private_section_data \ ((boolean (*) PARAMS ((bfd *, asection *, bfd *, asection *))) bfd_true) @@ -86,6 +90,9 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #define bfd_elf64_bfd_final_link _bfd_generic_final_link #endif #endif /* ! defined (elf_backend_relocate_section) */ +#ifndef bfd_elf64_bfd_link_split_section +#define bfd_elf64_bfd_link_split_section _bfd_generic_link_split_section +#endif #ifndef elf_info_to_howto_rel #define elf_info_to_howto_rel 0 -- 2.34.1