bfd/
* aout-adobe.c (aout_32_bfd_define_common_symbol): Define. * aout-target.h (MY_bfd_define_common_symbol): Likewise. * aout-tic30.c (MY_bfd_define_common_symbol): Likewise. * binary.c (binary_bfd_define_common_symbol): Likewise. * bout.c (b_out_bfd_define_common_symbol): Likewise. * coff-alpha.c (_bfd_ecoff_bfd_define_common_symbol): Likewise. * coff-mips.c (_bfd_ecoff_bfd_define_common_symbol): Likewise. * coffcode.h (coff_bfd_define_common_symbol): Likewise. * elfxx-target.h (bfd_elfNN_bfd_define_common_symbol): Likewise. * i386msdos.c (msdos_bfd_define_common_symbol): Likewise. * i386os9k.c (os9k_bfd_define_common_symbol): Likewise. * ieee.c (ieee_bfd_define_common_symbol): Likewise. * ihex.c (ihex_bfd_define_common_symbol): Likewise. * libbfd-in.h (_bfd_nolink_bfd_define_common_symbol): Likewise. * mach-o.c (bfd_mach_o_bfd_define_common_symbol): Likewise. * mmo.c (mmo_bfd_define_common_symbol): Likewise. * nlm-target.h (nlm_bfd_define_common_symbol): Likewise. * oasys.c (oasys_bfd_define_common_symbol): Likewise. * pef.c (bfd_pef_bfd_define_common_symbol): Likewise. * ppcboot.c (ppcboot_bfd_define_common_symbol): Likewise. * som.c (som_bfd_define_common_symbol): Likewise. * srec.c (srec_bfd_define_common_symbol): Likewise. * tekhex.c (tekhex_bfd_define_common_symbol): Likewise. * versados.c (versados_bfd_define_common_symbol): Likewise. * vms.c (vms_bfd_define_common_symbol): Likewise. * xcoff-target.h (_bfd_xcoff_bfd_define_common_symbol): Likewise. * xsym.c (bfd_sym_bfd_define_common_symbol): Likewise. * coff-rs6000.c (rs6000coff_vec): Add _bfd_xcoff_define_common_symbol. (pmac_xcoff_vec): Likewise. * coff64-rs6000.c (rs6000coff64_vec): Likewise. (aix5coff64_vec): Likewise. * linker.c (bfd_generic_define_common_symbol): New function. * targets.c (BFD_JUMP_TABLE_LINK): Add NAME##_bfd_define_common_symbol. (_bfd_define_common_symbol): New field. * libcoff-in.h (_bfd_xcoff_define_common_symbol): Declare. * xcofflink.c (_bfd_xcoff_define_common_symbol): New function. (xcoff_build_ldsyms): Don't set XCOFF_DEF_REGULAR for common symbols here. * bfd-in2.h: Regenerate. * libbfd.h: Likewise. * libcoff.h: Likewise. ld/ * ldlang.c (lang_one_common): Use bfd_define_common_symbol. ld/testsuite/ * ld-powerpc/aix-export-2.s, ld-powerpc/aix-export-2.nd: New test. * ld-powerpc/aix52.exp: Run it.
This commit is contained in:
parent
1554e9be88
commit
3023e3f66a
@ -1,3 +1,47 @@
|
|||||||
|
2009-04-16 Richard Sandiford <r.sandiford@uk.ibm.com>
|
||||||
|
|
||||||
|
* aout-adobe.c (aout_32_bfd_define_common_symbol): Define.
|
||||||
|
* aout-target.h (MY_bfd_define_common_symbol): Likewise.
|
||||||
|
* aout-tic30.c (MY_bfd_define_common_symbol): Likewise.
|
||||||
|
* binary.c (binary_bfd_define_common_symbol): Likewise.
|
||||||
|
* bout.c (b_out_bfd_define_common_symbol): Likewise.
|
||||||
|
* coff-alpha.c (_bfd_ecoff_bfd_define_common_symbol): Likewise.
|
||||||
|
* coff-mips.c (_bfd_ecoff_bfd_define_common_symbol): Likewise.
|
||||||
|
* coffcode.h (coff_bfd_define_common_symbol): Likewise.
|
||||||
|
* elfxx-target.h (bfd_elfNN_bfd_define_common_symbol): Likewise.
|
||||||
|
* i386msdos.c (msdos_bfd_define_common_symbol): Likewise.
|
||||||
|
* i386os9k.c (os9k_bfd_define_common_symbol): Likewise.
|
||||||
|
* ieee.c (ieee_bfd_define_common_symbol): Likewise.
|
||||||
|
* ihex.c (ihex_bfd_define_common_symbol): Likewise.
|
||||||
|
* libbfd-in.h (_bfd_nolink_bfd_define_common_symbol): Likewise.
|
||||||
|
* mach-o.c (bfd_mach_o_bfd_define_common_symbol): Likewise.
|
||||||
|
* mmo.c (mmo_bfd_define_common_symbol): Likewise.
|
||||||
|
* nlm-target.h (nlm_bfd_define_common_symbol): Likewise.
|
||||||
|
* oasys.c (oasys_bfd_define_common_symbol): Likewise.
|
||||||
|
* pef.c (bfd_pef_bfd_define_common_symbol): Likewise.
|
||||||
|
* ppcboot.c (ppcboot_bfd_define_common_symbol): Likewise.
|
||||||
|
* som.c (som_bfd_define_common_symbol): Likewise.
|
||||||
|
* srec.c (srec_bfd_define_common_symbol): Likewise.
|
||||||
|
* tekhex.c (tekhex_bfd_define_common_symbol): Likewise.
|
||||||
|
* versados.c (versados_bfd_define_common_symbol): Likewise.
|
||||||
|
* vms.c (vms_bfd_define_common_symbol): Likewise.
|
||||||
|
* xcoff-target.h (_bfd_xcoff_bfd_define_common_symbol): Likewise.
|
||||||
|
* xsym.c (bfd_sym_bfd_define_common_symbol): Likewise.
|
||||||
|
* coff-rs6000.c (rs6000coff_vec): Add _bfd_xcoff_define_common_symbol.
|
||||||
|
(pmac_xcoff_vec): Likewise.
|
||||||
|
* coff64-rs6000.c (rs6000coff64_vec): Likewise.
|
||||||
|
(aix5coff64_vec): Likewise.
|
||||||
|
* linker.c (bfd_generic_define_common_symbol): New function.
|
||||||
|
* targets.c (BFD_JUMP_TABLE_LINK): Add NAME##_bfd_define_common_symbol.
|
||||||
|
(_bfd_define_common_symbol): New field.
|
||||||
|
* libcoff-in.h (_bfd_xcoff_define_common_symbol): Declare.
|
||||||
|
* xcofflink.c (_bfd_xcoff_define_common_symbol): New function.
|
||||||
|
(xcoff_build_ldsyms): Don't set XCOFF_DEF_REGULAR for common
|
||||||
|
symbols here.
|
||||||
|
* bfd-in2.h: Regenerate.
|
||||||
|
* libbfd.h: Likewise.
|
||||||
|
* libcoff.h: Likewise.
|
||||||
|
|
||||||
2009-04-15 Anthony Green <green@moxielogic.com>
|
2009-04-15 Anthony Green <green@moxielogic.com>
|
||||||
|
|
||||||
* targets.c: Add moxie support.
|
* targets.c: Add moxie support.
|
||||||
|
@ -463,6 +463,7 @@ aout_adobe_sizeof_headers (bfd *ignore_abfd ATTRIBUTE_UNUSED,
|
|||||||
#define aout_32_bfd_is_group_section bfd_generic_is_group_section
|
#define aout_32_bfd_is_group_section bfd_generic_is_group_section
|
||||||
#define aout_32_bfd_discard_group bfd_generic_discard_group
|
#define aout_32_bfd_discard_group bfd_generic_discard_group
|
||||||
#define aout_32_section_already_linked _bfd_generic_section_already_linked
|
#define aout_32_section_already_linked _bfd_generic_section_already_linked
|
||||||
|
#define aout_32_bfd_define_common_symbol bfd_generic_define_common_symbol
|
||||||
#define aout_32_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
|
#define aout_32_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
|
||||||
#define aout_32_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
#define aout_32_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
||||||
#define aout_32_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
#define aout_32_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
||||||
|
@ -493,6 +493,9 @@ MY_bfd_final_link (bfd *abfd, struct bfd_link_info *info)
|
|||||||
#define MY_section_already_linked \
|
#define MY_section_already_linked \
|
||||||
_bfd_generic_section_already_linked
|
_bfd_generic_section_already_linked
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef MY_bfd_define_common_symbol
|
||||||
|
#define MY_bfd_define_common_symbol bfd_generic_define_common_symbol
|
||||||
|
#endif
|
||||||
#ifndef MY_bfd_reloc_type_lookup
|
#ifndef MY_bfd_reloc_type_lookup
|
||||||
#define MY_bfd_reloc_type_lookup NAME (aout, reloc_type_lookup)
|
#define MY_bfd_reloc_type_lookup NAME (aout, reloc_type_lookup)
|
||||||
#endif
|
#endif
|
||||||
|
@ -950,6 +950,9 @@ tic30_aout_set_arch_mach (bfd *abfd,
|
|||||||
#define MY_section_already_linked \
|
#define MY_section_already_linked \
|
||||||
_bfd_generic_section_already_linked
|
_bfd_generic_section_already_linked
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef MY_bfd_define_common_symbol
|
||||||
|
#define MY_bfd_define_common_symbol bfd_generic_define_common_symbol
|
||||||
|
#endif
|
||||||
#ifndef MY_bfd_reloc_type_lookup
|
#ifndef MY_bfd_reloc_type_lookup
|
||||||
#define MY_bfd_reloc_type_lookup tic30_aout_reloc_type_lookup
|
#define MY_bfd_reloc_type_lookup tic30_aout_reloc_type_lookup
|
||||||
#endif
|
#endif
|
||||||
|
@ -5458,7 +5458,8 @@ typedef struct bfd_target
|
|||||||
NAME##_bfd_merge_sections, \
|
NAME##_bfd_merge_sections, \
|
||||||
NAME##_bfd_is_group_section, \
|
NAME##_bfd_is_group_section, \
|
||||||
NAME##_bfd_discard_group, \
|
NAME##_bfd_discard_group, \
|
||||||
NAME##_section_already_linked \
|
NAME##_section_already_linked, \
|
||||||
|
NAME##_bfd_define_common_symbol
|
||||||
|
|
||||||
int (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
|
int (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
|
||||||
bfd_byte * (*_bfd_get_relocated_section_contents)
|
bfd_byte * (*_bfd_get_relocated_section_contents)
|
||||||
@ -5506,6 +5507,10 @@ typedef struct bfd_target
|
|||||||
void (*_section_already_linked) (bfd *, struct bfd_section *,
|
void (*_section_already_linked) (bfd *, struct bfd_section *,
|
||||||
struct bfd_link_info *);
|
struct bfd_link_info *);
|
||||||
|
|
||||||
|
/* Define a common symbol. */
|
||||||
|
bfd_boolean (*_bfd_define_common_symbol) (bfd *, struct bfd_link_info *,
|
||||||
|
struct bfd_link_hash_entry *);
|
||||||
|
|
||||||
/* Routines to handle dynamic symbols and relocs. */
|
/* Routines to handle dynamic symbols and relocs. */
|
||||||
#define BFD_JUMP_TABLE_DYNAMIC(NAME) \
|
#define BFD_JUMP_TABLE_DYNAMIC(NAME) \
|
||||||
NAME##_get_dynamic_symtab_upper_bound, \
|
NAME##_get_dynamic_symtab_upper_bound, \
|
||||||
@ -5570,6 +5575,13 @@ void bfd_section_already_linked (bfd *abfd, asection *sec,
|
|||||||
#define bfd_section_already_linked(abfd, sec, info) \
|
#define bfd_section_already_linked(abfd, sec, info) \
|
||||||
BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
|
BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
|
||||||
|
|
||||||
|
bfd_boolean bfd_generic_define_common_symbol
|
||||||
|
(bfd *output_bfd, struct bfd_link_info *info,
|
||||||
|
struct bfd_link_hash_entry *h);
|
||||||
|
|
||||||
|
#define bfd_define_common_symbol(output_bfd, info, h) \
|
||||||
|
BFD_SEND (output_bfd, _bfd_define_common_symbol, (output_bfd, info, h))
|
||||||
|
|
||||||
/* Extracted from simple.c. */
|
/* Extracted from simple.c. */
|
||||||
bfd_byte *bfd_simple_get_relocated_section_contents
|
bfd_byte *bfd_simple_get_relocated_section_contents
|
||||||
(bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table);
|
(bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table);
|
||||||
|
@ -316,6 +316,7 @@ binary_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED,
|
|||||||
#define binary_bfd_is_group_section bfd_generic_is_group_section
|
#define binary_bfd_is_group_section bfd_generic_is_group_section
|
||||||
#define binary_bfd_discard_group bfd_generic_discard_group
|
#define binary_bfd_discard_group bfd_generic_discard_group
|
||||||
#define binary_section_already_linked _bfd_generic_section_already_linked
|
#define binary_section_already_linked _bfd_generic_section_already_linked
|
||||||
|
#define binary_bfd_define_common_symbol bfd_generic_define_common_symbol
|
||||||
#define binary_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
|
#define binary_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
|
||||||
#define binary_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
#define binary_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
||||||
#define binary_bfd_link_just_syms _bfd_generic_link_just_syms
|
#define binary_bfd_link_just_syms _bfd_generic_link_just_syms
|
||||||
|
@ -1389,6 +1389,7 @@ b_out_bfd_get_relocated_section_contents (bfd *output_bfd,
|
|||||||
#define b_out_bfd_is_group_section bfd_generic_is_group_section
|
#define b_out_bfd_is_group_section bfd_generic_is_group_section
|
||||||
#define b_out_bfd_discard_group bfd_generic_discard_group
|
#define b_out_bfd_discard_group bfd_generic_discard_group
|
||||||
#define b_out_section_already_linked _bfd_generic_section_already_linked
|
#define b_out_section_already_linked _bfd_generic_section_already_linked
|
||||||
|
#define b_out_bfd_define_common_symbol bfd_generic_define_common_symbol
|
||||||
#define aout_32_get_section_contents_in_window _bfd_generic_get_section_contents_in_window
|
#define aout_32_get_section_contents_in_window _bfd_generic_get_section_contents_in_window
|
||||||
|
|
||||||
extern const bfd_target b_out_vec_little_host;
|
extern const bfd_target b_out_vec_little_host;
|
||||||
|
@ -2398,6 +2398,7 @@ static const struct ecoff_backend_data alpha_ecoff_backend_data =
|
|||||||
#define _bfd_ecoff_bfd_discard_group bfd_generic_discard_group
|
#define _bfd_ecoff_bfd_discard_group bfd_generic_discard_group
|
||||||
#define _bfd_ecoff_section_already_linked \
|
#define _bfd_ecoff_section_already_linked \
|
||||||
_bfd_generic_section_already_linked
|
_bfd_generic_section_already_linked
|
||||||
|
#define _bfd_ecoff_bfd_define_common_symbol bfd_generic_define_common_symbol
|
||||||
|
|
||||||
const bfd_target ecoffalpha_little_vec =
|
const bfd_target ecoffalpha_little_vec =
|
||||||
{
|
{
|
||||||
|
@ -1417,6 +1417,7 @@ static const struct ecoff_backend_data mips_ecoff_backend_data =
|
|||||||
#define _bfd_ecoff_bfd_discard_group bfd_generic_discard_group
|
#define _bfd_ecoff_bfd_discard_group bfd_generic_discard_group
|
||||||
#define _bfd_ecoff_section_already_linked \
|
#define _bfd_ecoff_section_already_linked \
|
||||||
_bfd_generic_section_already_linked
|
_bfd_generic_section_already_linked
|
||||||
|
#define _bfd_ecoff_bfd_define_common_symbol bfd_generic_define_common_symbol
|
||||||
|
|
||||||
extern const bfd_target ecoff_big_vec;
|
extern const bfd_target ecoff_big_vec;
|
||||||
|
|
||||||
|
@ -4233,6 +4233,7 @@ const bfd_target rs6000coff_vec =
|
|||||||
bfd_generic_is_group_section,
|
bfd_generic_is_group_section,
|
||||||
bfd_generic_discard_group,
|
bfd_generic_discard_group,
|
||||||
_bfd_generic_section_already_linked,
|
_bfd_generic_section_already_linked,
|
||||||
|
_bfd_xcoff_define_common_symbol,
|
||||||
|
|
||||||
/* Dynamic */
|
/* Dynamic */
|
||||||
_bfd_xcoff_get_dynamic_symtab_upper_bound,
|
_bfd_xcoff_get_dynamic_symtab_upper_bound,
|
||||||
@ -4485,6 +4486,7 @@ const bfd_target pmac_xcoff_vec =
|
|||||||
bfd_generic_is_group_section,
|
bfd_generic_is_group_section,
|
||||||
bfd_generic_discard_group,
|
bfd_generic_discard_group,
|
||||||
_bfd_generic_section_already_linked,
|
_bfd_generic_section_already_linked,
|
||||||
|
_bfd_xcoff_define_common_symbol,
|
||||||
|
|
||||||
/* Dynamic */
|
/* Dynamic */
|
||||||
_bfd_xcoff_get_dynamic_symtab_upper_bound,
|
_bfd_xcoff_get_dynamic_symtab_upper_bound,
|
||||||
|
@ -2805,6 +2805,7 @@ const bfd_target rs6000coff64_vec =
|
|||||||
bfd_generic_is_group_section,
|
bfd_generic_is_group_section,
|
||||||
bfd_generic_discard_group,
|
bfd_generic_discard_group,
|
||||||
_bfd_generic_section_already_linked,
|
_bfd_generic_section_already_linked,
|
||||||
|
_bfd_xcoff_define_common_symbol,
|
||||||
|
|
||||||
/* Dynamic */
|
/* Dynamic */
|
||||||
_bfd_xcoff_get_dynamic_symtab_upper_bound,
|
_bfd_xcoff_get_dynamic_symtab_upper_bound,
|
||||||
@ -3058,6 +3059,7 @@ const bfd_target aix5coff64_vec =
|
|||||||
bfd_generic_is_group_section,
|
bfd_generic_is_group_section,
|
||||||
bfd_generic_discard_group,
|
bfd_generic_discard_group,
|
||||||
_bfd_generic_section_already_linked,
|
_bfd_generic_section_already_linked,
|
||||||
|
_bfd_xcoff_define_common_symbol,
|
||||||
|
|
||||||
/* Dynamic */
|
/* Dynamic */
|
||||||
_bfd_xcoff_get_dynamic_symtab_upper_bound,
|
_bfd_xcoff_get_dynamic_symtab_upper_bound,
|
||||||
|
@ -5600,6 +5600,10 @@ static bfd_coff_backend_data ticoff1_swap_table =
|
|||||||
_bfd_generic_section_already_linked
|
_bfd_generic_section_already_linked
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef coff_bfd_define_common_symbol
|
||||||
|
#define coff_bfd_define_common_symbol bfd_generic_define_common_symbol
|
||||||
|
#endif
|
||||||
|
|
||||||
#define CREATE_BIG_COFF_TARGET_VEC(VAR, NAME, EXTRA_O_FLAGS, EXTRA_S_FLAGS, UNDER, ALTERNATIVE, SWAP_TABLE) \
|
#define CREATE_BIG_COFF_TARGET_VEC(VAR, NAME, EXTRA_O_FLAGS, EXTRA_S_FLAGS, UNDER, ALTERNATIVE, SWAP_TABLE) \
|
||||||
const bfd_target VAR = \
|
const bfd_target VAR = \
|
||||||
{ \
|
{ \
|
||||||
|
@ -169,6 +169,10 @@
|
|||||||
_bfd_elf_section_already_linked
|
_bfd_elf_section_already_linked
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef bfd_elfNN_bfd_define_common_symbol
|
||||||
|
#define bfd_elfNN_bfd_define_common_symbol bfd_generic_define_common_symbol
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef bfd_elfNN_bfd_make_debug_symbol
|
#ifndef bfd_elfNN_bfd_make_debug_symbol
|
||||||
#define bfd_elfNN_bfd_make_debug_symbol \
|
#define bfd_elfNN_bfd_make_debug_symbol \
|
||||||
((asymbol * (*) (bfd *, void *, unsigned long)) bfd_nullvoidptr)
|
((asymbol * (*) (bfd *, void *, unsigned long)) bfd_nullvoidptr)
|
||||||
|
@ -148,6 +148,7 @@ msdos_set_section_contents (bfd *abfd,
|
|||||||
#define msdos_bfd_discard_group bfd_generic_discard_group
|
#define msdos_bfd_discard_group bfd_generic_discard_group
|
||||||
#define msdos_section_already_linked \
|
#define msdos_section_already_linked \
|
||||||
_bfd_generic_section_already_linked
|
_bfd_generic_section_already_linked
|
||||||
|
#define msdos_bfd_define_common_symbol bfd_generic_define_common_symbol
|
||||||
#define msdos_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
|
#define msdos_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
|
||||||
#define msdos_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
#define msdos_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
||||||
#define msdos_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
#define msdos_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
||||||
|
@ -172,6 +172,7 @@ os9k_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED,
|
|||||||
#define os9k_bfd_discard_group bfd_generic_discard_group
|
#define os9k_bfd_discard_group bfd_generic_discard_group
|
||||||
#define os9k_section_already_linked \
|
#define os9k_section_already_linked \
|
||||||
_bfd_generic_section_already_linked
|
_bfd_generic_section_already_linked
|
||||||
|
#define os9k_bfd_define_common_symbol bfd_generic_define_common_symbol
|
||||||
#define os9k_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
|
#define os9k_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
|
||||||
#define os9k_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
#define os9k_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
||||||
#define os9k_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
#define os9k_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
||||||
|
@ -3770,6 +3770,7 @@ ieee_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED,
|
|||||||
#define ieee_bfd_discard_group bfd_generic_discard_group
|
#define ieee_bfd_discard_group bfd_generic_discard_group
|
||||||
#define ieee_section_already_linked \
|
#define ieee_section_already_linked \
|
||||||
_bfd_generic_section_already_linked
|
_bfd_generic_section_already_linked
|
||||||
|
#define ieee_bfd_define_common_symbol bfd_generic_define_common_symbol
|
||||||
#define ieee_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
|
#define ieee_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
|
||||||
#define ieee_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
#define ieee_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
||||||
#define ieee_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
#define ieee_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
||||||
|
@ -933,6 +933,7 @@ ihex_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED,
|
|||||||
#define ihex_bfd_is_group_section bfd_generic_is_group_section
|
#define ihex_bfd_is_group_section bfd_generic_is_group_section
|
||||||
#define ihex_bfd_discard_group bfd_generic_discard_group
|
#define ihex_bfd_discard_group bfd_generic_discard_group
|
||||||
#define ihex_section_already_linked _bfd_generic_section_already_linked
|
#define ihex_section_already_linked _bfd_generic_section_already_linked
|
||||||
|
#define ihex_bfd_define_common_symbol bfd_generic_define_common_symbol
|
||||||
#define ihex_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
|
#define ihex_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
|
||||||
#define ihex_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
#define ihex_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
||||||
#define ihex_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
#define ihex_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
||||||
|
@ -416,6 +416,9 @@ extern bfd_boolean _bfd_generic_set_section_contents
|
|||||||
((bfd_boolean (*) (bfd *, struct bfd_section *)) bfd_false)
|
((bfd_boolean (*) (bfd *, struct bfd_section *)) bfd_false)
|
||||||
#define _bfd_nolink_section_already_linked \
|
#define _bfd_nolink_section_already_linked \
|
||||||
((void (*) (bfd *, struct bfd_section *, struct bfd_link_info *)) bfd_void)
|
((void (*) (bfd *, struct bfd_section *, struct bfd_link_info *)) bfd_void)
|
||||||
|
#define _bfd_nolink_bfd_define_common_symbol \
|
||||||
|
((bfd_boolean (*) (bfd *, struct bfd_link_info *, \
|
||||||
|
struct bfd_link_hash_entry *)) bfd_false)
|
||||||
|
|
||||||
/* Routines to use for BFD_JUMP_TABLE_DYNAMIC for targets which do not
|
/* Routines to use for BFD_JUMP_TABLE_DYNAMIC for targets which do not
|
||||||
have dynamic symbols or relocs. Use BFD_JUMP_TABLE_DYNAMIC
|
have dynamic symbols or relocs. Use BFD_JUMP_TABLE_DYNAMIC
|
||||||
|
@ -421,6 +421,9 @@ extern bfd_boolean _bfd_generic_set_section_contents
|
|||||||
((bfd_boolean (*) (bfd *, struct bfd_section *)) bfd_false)
|
((bfd_boolean (*) (bfd *, struct bfd_section *)) bfd_false)
|
||||||
#define _bfd_nolink_section_already_linked \
|
#define _bfd_nolink_section_already_linked \
|
||||||
((void (*) (bfd *, struct bfd_section *, struct bfd_link_info *)) bfd_void)
|
((void (*) (bfd *, struct bfd_section *, struct bfd_link_info *)) bfd_void)
|
||||||
|
#define _bfd_nolink_bfd_define_common_symbol \
|
||||||
|
((bfd_boolean (*) (bfd *, struct bfd_link_info *, \
|
||||||
|
struct bfd_link_hash_entry *)) bfd_false)
|
||||||
|
|
||||||
/* Routines to use for BFD_JUMP_TABLE_DYNAMIC for targets which do not
|
/* Routines to use for BFD_JUMP_TABLE_DYNAMIC for targets which do not
|
||||||
have dynamic symbols or relocs. Use BFD_JUMP_TABLE_DYNAMIC
|
have dynamic symbols or relocs. Use BFD_JUMP_TABLE_DYNAMIC
|
||||||
|
@ -589,6 +589,8 @@ extern bfd_boolean _bfd_xcoff_bfd_link_add_symbols
|
|||||||
(bfd *, struct bfd_link_info *);
|
(bfd *, struct bfd_link_info *);
|
||||||
extern bfd_boolean _bfd_xcoff_bfd_final_link
|
extern bfd_boolean _bfd_xcoff_bfd_final_link
|
||||||
(bfd *, struct bfd_link_info *);
|
(bfd *, struct bfd_link_info *);
|
||||||
|
extern bfd_boolean _bfd_xcoff_define_common_symbol
|
||||||
|
(bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
|
||||||
extern bfd_boolean _bfd_ppc_xcoff_relocate_section
|
extern bfd_boolean _bfd_ppc_xcoff_relocate_section
|
||||||
(bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
|
(bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
|
||||||
struct internal_reloc *, struct internal_syment *, asection **);
|
struct internal_reloc *, struct internal_syment *, asection **);
|
||||||
|
@ -593,6 +593,8 @@ extern bfd_boolean _bfd_xcoff_bfd_link_add_symbols
|
|||||||
(bfd *, struct bfd_link_info *);
|
(bfd *, struct bfd_link_info *);
|
||||||
extern bfd_boolean _bfd_xcoff_bfd_final_link
|
extern bfd_boolean _bfd_xcoff_bfd_final_link
|
||||||
(bfd *, struct bfd_link_info *);
|
(bfd *, struct bfd_link_info *);
|
||||||
|
extern bfd_boolean _bfd_xcoff_define_common_symbol
|
||||||
|
(bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
|
||||||
extern bfd_boolean _bfd_ppc_xcoff_relocate_section
|
extern bfd_boolean _bfd_ppc_xcoff_relocate_section
|
||||||
(bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
|
(bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
|
||||||
struct internal_reloc *, struct internal_syment *, asection **);
|
struct internal_reloc *, struct internal_syment *, asection **);
|
||||||
|
59
bfd/linker.c
59
bfd/linker.c
@ -3186,3 +3186,62 @@ _bfd_fix_excluded_sec_syms (bfd *obfd, struct bfd_link_info *info)
|
|||||||
{
|
{
|
||||||
bfd_link_hash_traverse (info->hash, fix_syms, obfd);
|
bfd_link_hash_traverse (info->hash, fix_syms, obfd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
FUNCTION
|
||||||
|
bfd_generic_define_common_symbol
|
||||||
|
|
||||||
|
SYNOPSIS
|
||||||
|
bfd_boolean bfd_generic_define_common_symbol
|
||||||
|
(bfd *output_bfd, struct bfd_link_info *info,
|
||||||
|
struct bfd_link_hash_entry *h);
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
Convert common symbol @var{h} into a defined symbol.
|
||||||
|
Return TRUE on success and FALSE on failure.
|
||||||
|
|
||||||
|
.#define bfd_define_common_symbol(output_bfd, info, h) \
|
||||||
|
. BFD_SEND (output_bfd, _bfd_define_common_symbol, (output_bfd, info, h))
|
||||||
|
.
|
||||||
|
*/
|
||||||
|
|
||||||
|
bfd_boolean
|
||||||
|
bfd_generic_define_common_symbol (bfd *output_bfd,
|
||||||
|
struct bfd_link_info *info ATTRIBUTE_UNUSED,
|
||||||
|
struct bfd_link_hash_entry *h)
|
||||||
|
{
|
||||||
|
unsigned int power_of_two;
|
||||||
|
bfd_vma alignment, size;
|
||||||
|
asection *section;
|
||||||
|
|
||||||
|
BFD_ASSERT (h != NULL && h->type == bfd_link_hash_common);
|
||||||
|
|
||||||
|
size = h->u.c.size;
|
||||||
|
power_of_two = h->u.c.p->alignment_power;
|
||||||
|
section = h->u.c.p->section;
|
||||||
|
|
||||||
|
/* Increase the size of the section to align the common symbol.
|
||||||
|
The alignment must be a power of two. */
|
||||||
|
alignment = bfd_octets_per_byte (output_bfd) << power_of_two;
|
||||||
|
BFD_ASSERT (alignment != 0 && (alignment & -alignment) == alignment);
|
||||||
|
section->size += alignment - 1;
|
||||||
|
section->size &= -alignment;
|
||||||
|
|
||||||
|
/* Adjust the section's overall alignment if necessary. */
|
||||||
|
if (power_of_two > section->alignment_power)
|
||||||
|
section->alignment_power = power_of_two;
|
||||||
|
|
||||||
|
/* Change the symbol from common to defined. */
|
||||||
|
h->type = bfd_link_hash_defined;
|
||||||
|
h->u.def.section = section;
|
||||||
|
h->u.def.value = section->size;
|
||||||
|
|
||||||
|
/* Increase the size of the section. */
|
||||||
|
section->size += size;
|
||||||
|
|
||||||
|
/* Make sure the section is allocated in memory, and make sure that
|
||||||
|
it is no longer a common section. */
|
||||||
|
section->flags |= SEC_ALLOC;
|
||||||
|
section->flags &= ~SEC_IS_COMMON;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
@ -72,6 +72,7 @@
|
|||||||
#define bfd_mach_o_bfd_is_group_section bfd_generic_is_group_section
|
#define bfd_mach_o_bfd_is_group_section bfd_generic_is_group_section
|
||||||
#define bfd_mach_o_bfd_discard_group bfd_generic_discard_group
|
#define bfd_mach_o_bfd_discard_group bfd_generic_discard_group
|
||||||
#define bfd_mach_o_section_already_linked _bfd_generic_section_already_linked
|
#define bfd_mach_o_section_already_linked _bfd_generic_section_already_linked
|
||||||
|
#define bfd_mach_o_bfd_define_common_symbol bfd_generic_define_common_symbol
|
||||||
#define bfd_mach_o_bfd_copy_private_header_data _bfd_generic_bfd_copy_private_header_data
|
#define bfd_mach_o_bfd_copy_private_header_data _bfd_generic_bfd_copy_private_header_data
|
||||||
#define bfd_mach_o_core_file_matches_executable_p generic_core_file_matches_executable_p
|
#define bfd_mach_o_core_file_matches_executable_p generic_core_file_matches_executable_p
|
||||||
|
|
||||||
|
@ -3211,6 +3211,7 @@ mmo_write_object_contents (bfd *abfd)
|
|||||||
#define mmo_bfd_discard_group bfd_generic_discard_group
|
#define mmo_bfd_discard_group bfd_generic_discard_group
|
||||||
#define mmo_section_already_linked \
|
#define mmo_section_already_linked \
|
||||||
_bfd_generic_section_already_linked
|
_bfd_generic_section_already_linked
|
||||||
|
#define mmo_bfd_define_common_symbol bfd_generic_define_common_symbol
|
||||||
|
|
||||||
/* We want to copy time of creation, otherwise we'd use
|
/* We want to copy time of creation, otherwise we'd use
|
||||||
BFD_JUMP_TABLE_COPY (_bfd_generic). */
|
BFD_JUMP_TABLE_COPY (_bfd_generic). */
|
||||||
|
@ -49,6 +49,7 @@
|
|||||||
#define nlm_bfd_is_group_section bfd_generic_is_group_section
|
#define nlm_bfd_is_group_section bfd_generic_is_group_section
|
||||||
#define nlm_bfd_discard_group bfd_generic_discard_group
|
#define nlm_bfd_discard_group bfd_generic_discard_group
|
||||||
#define nlm_section_already_linked _bfd_generic_section_already_linked
|
#define nlm_section_already_linked _bfd_generic_section_already_linked
|
||||||
|
#define nlm_bfd_define_common_symbol bfd_generic_define_common_symbol
|
||||||
#define nlm_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
|
#define nlm_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
|
||||||
#define nlm_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
#define nlm_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
||||||
#define nlm_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
#define nlm_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
||||||
|
@ -1198,6 +1198,7 @@ oasys_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED,
|
|||||||
#define oasys_bfd_is_group_section bfd_generic_is_group_section
|
#define oasys_bfd_is_group_section bfd_generic_is_group_section
|
||||||
#define oasys_bfd_discard_group bfd_generic_discard_group
|
#define oasys_bfd_discard_group bfd_generic_discard_group
|
||||||
#define oasys_section_already_linked _bfd_generic_section_already_linked
|
#define oasys_section_already_linked _bfd_generic_section_already_linked
|
||||||
|
#define oasys_bfd_define_common_symbol bfd_generic_define_common_symbol
|
||||||
#define oasys_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
|
#define oasys_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
|
||||||
#define oasys_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
#define oasys_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
||||||
#define oasys_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
#define oasys_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
#define bfd_pef_bfd_is_group_section bfd_generic_is_group_section
|
#define bfd_pef_bfd_is_group_section bfd_generic_is_group_section
|
||||||
#define bfd_pef_bfd_discard_group bfd_generic_discard_group
|
#define bfd_pef_bfd_discard_group bfd_generic_discard_group
|
||||||
#define bfd_pef_section_already_linked _bfd_generic_section_already_linked
|
#define bfd_pef_section_already_linked _bfd_generic_section_already_linked
|
||||||
|
#define bfd_pef_bfd_define_common_symbol bfd_generic_define_common_symbol
|
||||||
#define bfd_pef_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
|
#define bfd_pef_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
|
||||||
#define bfd_pef_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
#define bfd_pef_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
||||||
#define bfd_pef_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
#define bfd_pef_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
||||||
|
@ -475,6 +475,7 @@ ppcboot_bfd_print_private_bfd_data (abfd, farg)
|
|||||||
#define ppcboot_bfd_discard_group bfd_generic_discard_group
|
#define ppcboot_bfd_discard_group bfd_generic_discard_group
|
||||||
#define ppcboot_section_already_linked \
|
#define ppcboot_section_already_linked \
|
||||||
_bfd_generic_section_already_linked
|
_bfd_generic_section_already_linked
|
||||||
|
#define ppcboot_bfd_define_common_symbol bfd_generic_define_common_symbol
|
||||||
#define ppcboot_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
|
#define ppcboot_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
|
||||||
#define ppcboot_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
#define ppcboot_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
||||||
#define ppcboot_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
#define ppcboot_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
||||||
|
@ -6349,6 +6349,7 @@ som_bfd_link_split_section (bfd *abfd ATTRIBUTE_UNUSED, asection *sec)
|
|||||||
#define som_bfd_is_group_section bfd_generic_is_group_section
|
#define som_bfd_is_group_section bfd_generic_is_group_section
|
||||||
#define som_bfd_discard_group bfd_generic_discard_group
|
#define som_bfd_discard_group bfd_generic_discard_group
|
||||||
#define som_section_already_linked _bfd_generic_section_already_linked
|
#define som_section_already_linked _bfd_generic_section_already_linked
|
||||||
|
#define som_bfd_define_common_symbol bfd_generic_define_common_symbol
|
||||||
#define som_bfd_merge_private_bfd_data _bfd_generic_bfd_merge_private_bfd_data
|
#define som_bfd_merge_private_bfd_data _bfd_generic_bfd_merge_private_bfd_data
|
||||||
#define som_bfd_copy_private_header_data _bfd_generic_bfd_copy_private_header_data
|
#define som_bfd_copy_private_header_data _bfd_generic_bfd_copy_private_header_data
|
||||||
#define som_bfd_set_private_flags _bfd_generic_bfd_set_private_flags
|
#define som_bfd_set_private_flags _bfd_generic_bfd_set_private_flags
|
||||||
|
@ -1255,6 +1255,7 @@ srec_print_symbol (bfd *abfd,
|
|||||||
#define srec_bfd_is_group_section bfd_generic_is_group_section
|
#define srec_bfd_is_group_section bfd_generic_is_group_section
|
||||||
#define srec_bfd_discard_group bfd_generic_discard_group
|
#define srec_bfd_discard_group bfd_generic_discard_group
|
||||||
#define srec_section_already_linked _bfd_generic_section_already_linked
|
#define srec_section_already_linked _bfd_generic_section_already_linked
|
||||||
|
#define srec_bfd_define_common_symbol bfd_generic_define_common_symbol
|
||||||
#define srec_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
|
#define srec_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
|
||||||
#define srec_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
#define srec_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
||||||
#define srec_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
#define srec_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
||||||
|
@ -441,7 +441,8 @@ BFD_JUMP_TABLE macros.
|
|||||||
. NAME##_bfd_merge_sections, \
|
. NAME##_bfd_merge_sections, \
|
||||||
. NAME##_bfd_is_group_section, \
|
. NAME##_bfd_is_group_section, \
|
||||||
. NAME##_bfd_discard_group, \
|
. NAME##_bfd_discard_group, \
|
||||||
. NAME##_section_already_linked \
|
. NAME##_section_already_linked, \
|
||||||
|
. NAME##_bfd_define_common_symbol
|
||||||
.
|
.
|
||||||
. int (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
|
. int (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
|
||||||
. bfd_byte * (*_bfd_get_relocated_section_contents)
|
. bfd_byte * (*_bfd_get_relocated_section_contents)
|
||||||
@ -489,6 +490,10 @@ BFD_JUMP_TABLE macros.
|
|||||||
. void (*_section_already_linked) (bfd *, struct bfd_section *,
|
. void (*_section_already_linked) (bfd *, struct bfd_section *,
|
||||||
. struct bfd_link_info *);
|
. struct bfd_link_info *);
|
||||||
.
|
.
|
||||||
|
. {* Define a common symbol. *}
|
||||||
|
. bfd_boolean (*_bfd_define_common_symbol) (bfd *, struct bfd_link_info *,
|
||||||
|
. struct bfd_link_hash_entry *);
|
||||||
|
.
|
||||||
. {* Routines to handle dynamic symbols and relocs. *}
|
. {* Routines to handle dynamic symbols and relocs. *}
|
||||||
.#define BFD_JUMP_TABLE_DYNAMIC(NAME) \
|
.#define BFD_JUMP_TABLE_DYNAMIC(NAME) \
|
||||||
. NAME##_get_dynamic_symtab_upper_bound, \
|
. NAME##_get_dynamic_symtab_upper_bound, \
|
||||||
|
@ -943,6 +943,7 @@ tekhex_print_symbol (bfd *abfd,
|
|||||||
#define tekhex_bfd_is_group_section bfd_generic_is_group_section
|
#define tekhex_bfd_is_group_section bfd_generic_is_group_section
|
||||||
#define tekhex_bfd_discard_group bfd_generic_discard_group
|
#define tekhex_bfd_discard_group bfd_generic_discard_group
|
||||||
#define tekhex_section_already_linked _bfd_generic_section_already_linked
|
#define tekhex_section_already_linked _bfd_generic_section_already_linked
|
||||||
|
#define tekhex_bfd_define_common_symbol bfd_generic_define_common_symbol
|
||||||
#define tekhex_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
|
#define tekhex_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
|
||||||
#define tekhex_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
#define tekhex_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
||||||
#define tekhex_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
#define tekhex_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
||||||
|
@ -808,6 +808,7 @@ versados_canonicalize_reloc (bfd *abfd,
|
|||||||
#define versados_bfd_is_group_section bfd_generic_is_group_section
|
#define versados_bfd_is_group_section bfd_generic_is_group_section
|
||||||
#define versados_bfd_discard_group bfd_generic_discard_group
|
#define versados_bfd_discard_group bfd_generic_discard_group
|
||||||
#define versados_section_already_linked _bfd_generic_section_already_linked
|
#define versados_section_already_linked _bfd_generic_section_already_linked
|
||||||
|
#define versados_bfd_define_common_symbol bfd_generic_define_common_symbol
|
||||||
#define versados_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
|
#define versados_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
|
||||||
#define versados_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
#define versados_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
||||||
#define versados_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
#define versados_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
||||||
|
@ -144,6 +144,7 @@ static bfd_boolean vms_bfd_set_private_flags (bfd *abfd, flagword flags);
|
|||||||
#define vms_bfd_is_group_section bfd_generic_is_group_section
|
#define vms_bfd_is_group_section bfd_generic_is_group_section
|
||||||
#define vms_bfd_discard_group bfd_generic_discard_group
|
#define vms_bfd_discard_group bfd_generic_discard_group
|
||||||
#define vms_section_already_linked _bfd_generic_section_already_linked
|
#define vms_section_already_linked _bfd_generic_section_already_linked
|
||||||
|
#define vms_bfd_define_common_symbol bfd_generic_define_common_symbol
|
||||||
#define vms_bfd_copy_private_header_data _bfd_generic_bfd_copy_private_header_data
|
#define vms_bfd_copy_private_header_data _bfd_generic_bfd_copy_private_header_data
|
||||||
#define vms_get_synthetic_symtab _bfd_nodynamic_get_synthetic_symtab
|
#define vms_get_synthetic_symtab _bfd_nodynamic_get_synthetic_symtab
|
||||||
|
|
||||||
|
@ -57,6 +57,7 @@
|
|||||||
#define _bfd_xcoff_bfd_merge_sections coff_bfd_merge_sections
|
#define _bfd_xcoff_bfd_merge_sections coff_bfd_merge_sections
|
||||||
#define _bfd_xcoff_bfd_discard_group bfd_generic_discard_group
|
#define _bfd_xcoff_bfd_discard_group bfd_generic_discard_group
|
||||||
#define _bfd_xcoff_section_already_linked _bfd_generic_section_already_linked
|
#define _bfd_xcoff_section_already_linked _bfd_generic_section_already_linked
|
||||||
|
#define _bfd_xcoff_bfd_define_common_symbol _bfd_xcoff_define_common_symbol
|
||||||
#define _bfd_xcoff_bfd_link_split_section coff_bfd_link_split_section
|
#define _bfd_xcoff_bfd_link_split_section coff_bfd_link_split_section
|
||||||
|
|
||||||
#define CORE_FILE_P _bfd_dummy_target
|
#define CORE_FILE_P _bfd_dummy_target
|
||||||
|
@ -2471,6 +2471,21 @@ _bfd_xcoff_bfd_link_add_symbols (bfd *abfd, struct bfd_link_info *info)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bfd_boolean
|
||||||
|
_bfd_xcoff_define_common_symbol (bfd *output_bfd ATTRIBUTE_UNUSED,
|
||||||
|
struct bfd_link_info *info ATTRIBUTE_UNUSED,
|
||||||
|
struct bfd_link_hash_entry *harg)
|
||||||
|
{
|
||||||
|
struct xcoff_link_hash_entry *h;
|
||||||
|
|
||||||
|
if (!bfd_generic_define_common_symbol (output_bfd, info, harg))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
h = (struct xcoff_link_hash_entry *) harg;
|
||||||
|
h->flags |= XCOFF_DEF_REGULAR;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
/* If symbol H has not been interpreted as a function descriptor,
|
/* If symbol H has not been interpreted as a function descriptor,
|
||||||
see whether it should be. Set up its descriptor information if so. */
|
see whether it should be. Set up its descriptor information if so. */
|
||||||
|
|
||||||
@ -3330,19 +3345,6 @@ xcoff_post_gc_symbol (struct xcoff_link_hash_entry *h, void * p)
|
|||||||
if (h->flags & XCOFF_RTINIT)
|
if (h->flags & XCOFF_RTINIT)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
/* If this is a final link, and the symbol was defined as a common
|
|
||||||
symbol in a regular object file, and there was no definition in
|
|
||||||
any dynamic object, then the linker will have allocated space for
|
|
||||||
the symbol in a common section but the XCOFF_DEF_REGULAR flag
|
|
||||||
will not have been set. */
|
|
||||||
if (h->root.type == bfd_link_hash_defined
|
|
||||||
&& (h->flags & XCOFF_DEF_REGULAR) == 0
|
|
||||||
&& (h->flags & XCOFF_REF_REGULAR) != 0
|
|
||||||
&& (h->flags & XCOFF_DEF_DYNAMIC) == 0
|
|
||||||
&& (bfd_is_abs_section (h->root.u.def.section)
|
|
||||||
|| (h->root.u.def.section->owner->flags & DYNAMIC) == 0))
|
|
||||||
h->flags |= XCOFF_DEF_REGULAR;
|
|
||||||
|
|
||||||
/* We don't want to garbage collect symbols which are not defined in
|
/* We don't want to garbage collect symbols which are not defined in
|
||||||
XCOFF files. This is a convenient place to mark them. */
|
XCOFF files. This is a convenient place to mark them. */
|
||||||
if (xcoff_hash_table (ldinfo->info)->gc
|
if (xcoff_hash_table (ldinfo->info)->gc
|
||||||
|
@ -46,6 +46,7 @@
|
|||||||
#define bfd_sym_bfd_is_group_section bfd_generic_is_group_section
|
#define bfd_sym_bfd_is_group_section bfd_generic_is_group_section
|
||||||
#define bfd_sym_bfd_discard_group bfd_generic_discard_group
|
#define bfd_sym_bfd_discard_group bfd_generic_discard_group
|
||||||
#define bfd_sym_section_already_linked _bfd_generic_section_already_linked
|
#define bfd_sym_section_already_linked _bfd_generic_section_already_linked
|
||||||
|
#define bfd_sym_bfd_define_common_symbol bfd_generic_define_common_symbol
|
||||||
#define bfd_sym_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
|
#define bfd_sym_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
|
||||||
#define bfd_sym_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
#define bfd_sym_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
||||||
#define bfd_sym_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
#define bfd_sym_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
2009-04-16 Richard Sandiford <r.sandiford@uk.ibm.com>
|
||||||
|
|
||||||
|
* ldlang.c (lang_one_common): Use bfd_define_common_symbol.
|
||||||
|
|
||||||
2009-04-15 Anthony Green <green@moxielogic.com>
|
2009-04-15 Anthony Green <green@moxielogic.com>
|
||||||
|
|
||||||
* configure.tgt: Add moxie support.
|
* configure.tgt: Add moxie support.
|
||||||
|
24
ld/ldlang.c
24
ld/ldlang.c
@ -5639,27 +5639,9 @@ lang_one_common (struct bfd_link_hash_entry *h, void *info)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
section = h->u.c.p->section;
|
section = h->u.c.p->section;
|
||||||
|
if (!bfd_define_common_symbol (link_info.output_bfd, &link_info, h))
|
||||||
/* Increase the size of the section to align the common sym. */
|
einfo (_("%P%F: Could not define common symbol `%T': %E\n"),
|
||||||
section->size += ((bfd_vma) 1 << (power_of_two + opb_shift)) - 1;
|
h->root.string);
|
||||||
section->size &= (- (bfd_vma) 1 << (power_of_two + opb_shift));
|
|
||||||
|
|
||||||
/* Adjust the alignment if necessary. */
|
|
||||||
if (power_of_two > section->alignment_power)
|
|
||||||
section->alignment_power = power_of_two;
|
|
||||||
|
|
||||||
/* Change the symbol from common to defined. */
|
|
||||||
h->type = bfd_link_hash_defined;
|
|
||||||
h->u.def.section = section;
|
|
||||||
h->u.def.value = section->size;
|
|
||||||
|
|
||||||
/* Increase the size of the section. */
|
|
||||||
section->size += size;
|
|
||||||
|
|
||||||
/* Make sure the section is allocated in memory, and make sure that
|
|
||||||
it is no longer a common section. */
|
|
||||||
section->flags |= SEC_ALLOC;
|
|
||||||
section->flags &= ~SEC_IS_COMMON;
|
|
||||||
|
|
||||||
if (config.map_file != NULL)
|
if (config.map_file != NULL)
|
||||||
{
|
{
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2009-04-16 Richard Sandiford <r.sandiford@uk.ibm.com>
|
||||||
|
|
||||||
|
* ld-powerpc/aix-export-2.s, ld-powerpc/aix-export-2.nd: New test.
|
||||||
|
* ld-powerpc/aix52.exp: Run it.
|
||||||
|
|
||||||
2009-04-16 Alan Modra <amodra@bigpond.net.au>
|
2009-04-16 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
* ld-libs/lib-1.s: Use "==" instead of ".set".
|
* ld-libs/lib-1.s: Use "==" instead of ".set".
|
||||||
|
1
ld/testsuite/ld-powerpc/aix-export-2.nd
Normal file
1
ld/testsuite/ld-powerpc/aix-export-2.nd
Normal file
@ -0,0 +1 @@
|
|||||||
|
0*10000000 B x
|
1
ld/testsuite/ld-powerpc/aix-export-2.s
Normal file
1
ld/testsuite/ld-powerpc/aix-export-2.s
Normal file
@ -0,0 +1 @@
|
|||||||
|
.comm x,4
|
@ -128,6 +128,10 @@ set aix52tests {
|
|||||||
{{objdump -dj.data aix-export-1-full.dd}}
|
{{objdump -dj.data aix-export-1-full.dd}}
|
||||||
"aix-export-1-full.so"}
|
"aix-export-1-full.so"}
|
||||||
|
|
||||||
|
{"Export test 2" "-shared -bexpall"
|
||||||
|
{} {aix-export-2.s}
|
||||||
|
{{nm -D aix-export-2.nd}} "aix-export-2.so"}
|
||||||
|
|
||||||
{"Garbage collection test 1"
|
{"Garbage collection test 1"
|
||||||
"-shared -binitfini:init_function:fini_function -bE:aix-gc-1.ex"
|
"-shared -binitfini:init_function:fini_function -bE:aix-gc-1.ex"
|
||||||
"" {aix-gc-1.s}
|
"" {aix-gc-1.s}
|
||||||
|
Loading…
Reference in New Issue
Block a user