mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-21 01:12:32 +08:00
2009-11-23 Paul Brook <paul@codesourcery.com>
ld/ * ldexp.c: Copy symbol type for simple assignments. bfd/ * libbfd-in.h (_bfd_generic_copy_link_hash_symbol_type): Add prototype. * elf-bfd.h (_bfd_elf_copy_link_hash_symbol_type): Add prototype. * linker.c (_bfd_generic_copy_link_hash_symbol_type): New function. * elflink.c (_bfd_elf_copy_link_hash_symbol_type): New function. * targets.c (BFD_JUMP_TABLE_LINK, struct bfd_target): Add _copy_link_hash_symbol_type. * bfd/coff64-rs6000.c (rs6000coff64_vec, aix5coff64_vec): Add _bfd_generic_copy_link_hash_symbol_type. * bfd/coff-rs6000.c (rs6000coff_vec, pmac_xcoff_vec): Add _bfd_generic_copy_link_hash_symbol_type. * aout-adobe.c (aout_32_bfd_copy_link_hash_symbol_type): Define. * aout-target.h (MY_bfd_copy_link_hash_symbol_type): Define. * aout-tic30.c (MY_bfd_copy_link_hash_symbol_type): Define. * binary.c (binary_bfd_copy_link_hash_symbol_type): Define. * bout.c (b_out_bfd_copy_link_hash_symbol_type): Define. * coffcode.h (coff_bfd_copy_link_hash_symbol_type): Define. * elfxx-target.h (bfd_elfNN_bfd_copy_link_hash_symbol_type): Define. * i386msdos.c (msdos_bfd_copy_link_hash_symbol_type): Define. * i386os9k.c (os9k_bfd_copy_link_hash_symbol_type): Define. * ieee.c (ieee_bfd_copy_link_hash_symbol_type): Define. * ihex.c (ihex_bfd_copy_link_hash_symbol_type): Define. * libecoff.h (_bfd_ecoff_bfd_copy_link_hash_symbol_type): Define. * mach-o.c (bfd_mach_o_bfd_copy_link_hash_symbol_type): Define. * mmo.c (mmo_bfd_copy_link_hash_symbol_type): Define. * nlm-target.h (nlm_bfd_copy_link_hash_symbol_type): Define. * oasys.c (oasys_bfd_copy_link_hash_symbol_type): Define. * pef.c (bfd_pef_bfd_copy_link_hash_symbol_type): Define. * ppcboot.c (ppcboot_bfd_copy_link_hash_symbol_type): Define. * som.c (som_bfd_copy_link_hash_symbol_type): Define. * srec.c (srec_bfd_copy_link_hash_symbol_type): Define. * tekhex.c (tekhex_bfd_copy_link_hash_symbol_type): Define. * versados.c (versados_bfd_copy_link_hash_symbol_type): Define. * vms.c (vms_bfd_copy_link_hash_symbol_type): Define. * xsym.c (bfd_sym_bfd_copy_link_hash_symbol_type): Define. * bfd-in2.h: Regenerate. * libbfd.h: Regenerate. ld/testsuite * ld-arm/script-type.sym: New test. * ld-arm/script-type.s: New test. * ld-arm/script-type.s: New test.
This commit is contained in:
parent
62836bf48e
commit
1338dd10ef
@ -1,3 +1,43 @@
|
||||
2009-11-23 Paul Brook <paul@codesourcery.com>
|
||||
|
||||
* libbfd-in.h (_bfd_generic_copy_link_hash_symbol_type): Add
|
||||
prototype.
|
||||
* elf-bfd.h (_bfd_elf_copy_link_hash_symbol_type): Add prototype.
|
||||
* linker.c (_bfd_generic_copy_link_hash_symbol_type): New function.
|
||||
* elflink.c (_bfd_elf_copy_link_hash_symbol_type): New function.
|
||||
* targets.c (BFD_JUMP_TABLE_LINK, struct bfd_target): Add
|
||||
_copy_link_hash_symbol_type.
|
||||
* bfd/coff64-rs6000.c (rs6000coff64_vec, aix5coff64_vec): Add
|
||||
_bfd_generic_copy_link_hash_symbol_type.
|
||||
* bfd/coff-rs6000.c (rs6000coff_vec, pmac_xcoff_vec): Add
|
||||
_bfd_generic_copy_link_hash_symbol_type.
|
||||
* aout-adobe.c (aout_32_bfd_copy_link_hash_symbol_type): Define.
|
||||
* aout-target.h (MY_bfd_copy_link_hash_symbol_type): Define.
|
||||
* aout-tic30.c (MY_bfd_copy_link_hash_symbol_type): Define.
|
||||
* binary.c (binary_bfd_copy_link_hash_symbol_type): Define.
|
||||
* bout.c (b_out_bfd_copy_link_hash_symbol_type): Define.
|
||||
* coffcode.h (coff_bfd_copy_link_hash_symbol_type): Define.
|
||||
* elfxx-target.h (bfd_elfNN_bfd_copy_link_hash_symbol_type): Define.
|
||||
* i386msdos.c (msdos_bfd_copy_link_hash_symbol_type): Define.
|
||||
* i386os9k.c (os9k_bfd_copy_link_hash_symbol_type): Define.
|
||||
* ieee.c (ieee_bfd_copy_link_hash_symbol_type): Define.
|
||||
* ihex.c (ihex_bfd_copy_link_hash_symbol_type): Define.
|
||||
* libecoff.h (_bfd_ecoff_bfd_copy_link_hash_symbol_type): Define.
|
||||
* mach-o.c (bfd_mach_o_bfd_copy_link_hash_symbol_type): Define.
|
||||
* mmo.c (mmo_bfd_copy_link_hash_symbol_type): Define.
|
||||
* nlm-target.h (nlm_bfd_copy_link_hash_symbol_type): Define.
|
||||
* oasys.c (oasys_bfd_copy_link_hash_symbol_type): Define.
|
||||
* pef.c (bfd_pef_bfd_copy_link_hash_symbol_type): Define.
|
||||
* ppcboot.c (ppcboot_bfd_copy_link_hash_symbol_type): Define.
|
||||
* som.c (som_bfd_copy_link_hash_symbol_type): Define.
|
||||
* srec.c (srec_bfd_copy_link_hash_symbol_type): Define.
|
||||
* tekhex.c (tekhex_bfd_copy_link_hash_symbol_type): Define.
|
||||
* versados.c (versados_bfd_copy_link_hash_symbol_type): Define.
|
||||
* vms.c (vms_bfd_copy_link_hash_symbol_type): Define.
|
||||
* xsym.c (bfd_sym_bfd_copy_link_hash_symbol_type): Define.
|
||||
* bfd-in2.h: Regenerate.
|
||||
* libbfd.h: Regenerate.
|
||||
|
||||
2009-11-19 Tristan Gingold <gingold@adacore.com>
|
||||
|
||||
* coff-rs6000.c (rs6000coff_vec): Use generic routines instead of
|
||||
|
@ -468,6 +468,8 @@ aout_adobe_sizeof_headers (bfd *ignore_abfd ATTRIBUTE_UNUSED,
|
||||
#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_just_syms _bfd_generic_link_just_syms
|
||||
#define aout_32_bfd_copy_link_hash_symbol_type \
|
||||
_bfd_generic_copy_link_hash_symbol_type
|
||||
#define aout_32_bfd_final_link _bfd_generic_final_link
|
||||
#define aout_32_bfd_link_split_section _bfd_generic_link_split_section
|
||||
|
||||
|
@ -523,6 +523,10 @@ MY_bfd_final_link (bfd *abfd, struct bfd_link_info *info)
|
||||
#ifndef MY_bfd_link_just_syms
|
||||
#define MY_bfd_link_just_syms _bfd_generic_link_just_syms
|
||||
#endif
|
||||
#ifndef MY_bfd_copy_link_hash_symbol_type
|
||||
#define MY_bfd_copy_link_hash_symbol_type \
|
||||
_bfd_generic_copy_link_hash_symbol_type
|
||||
#endif
|
||||
#ifndef MY_bfd_link_split_section
|
||||
#define MY_bfd_link_split_section _bfd_generic_link_split_section
|
||||
#endif
|
||||
|
@ -980,6 +980,10 @@ tic30_aout_set_arch_mach (bfd *abfd,
|
||||
#ifndef MY_bfd_link_just_syms
|
||||
#define MY_bfd_link_just_syms _bfd_generic_link_just_syms
|
||||
#endif
|
||||
#ifndef MY_bfd_copy_link_hash_symbol_type
|
||||
#define MY_bfd_copy_link_hash_symbol_type \
|
||||
_bfd_generic_copy_link_hash_symbol_type
|
||||
#endif
|
||||
#ifndef MY_bfd_link_split_section
|
||||
#define MY_bfd_link_split_section _bfd_generic_link_split_section
|
||||
#endif
|
||||
|
@ -5601,6 +5601,7 @@ typedef struct bfd_target
|
||||
NAME##_bfd_link_hash_table_free, \
|
||||
NAME##_bfd_link_add_symbols, \
|
||||
NAME##_bfd_link_just_syms, \
|
||||
NAME##_bfd_copy_link_hash_symbol_type, \
|
||||
NAME##_bfd_final_link, \
|
||||
NAME##_bfd_link_split_section, \
|
||||
NAME##_bfd_gc_sections, \
|
||||
@ -5632,6 +5633,12 @@ typedef struct bfd_target
|
||||
/* Indicate that we are only retrieving symbol values from this section. */
|
||||
void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
|
||||
|
||||
/* Copy the symbol type of a linker hash table entry. */
|
||||
#define bfd_copy_link_hash_symbol_type(b, t, f) \
|
||||
BFD_SEND (b, _bfd_copy_link_hash_symbol_type, (b, t, f))
|
||||
void (*_bfd_copy_link_hash_symbol_type)
|
||||
(bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *);
|
||||
|
||||
/* Do a link based on the link_order structures attached to each
|
||||
section of the BFD. */
|
||||
bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
|
||||
|
@ -307,6 +307,8 @@ binary_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
#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_just_syms _bfd_generic_link_just_syms
|
||||
#define binary_bfd_copy_link_hash_symbol_type \
|
||||
_bfd_generic_copy_link_hash_symbol_type
|
||||
#define binary_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
||||
#define binary_bfd_final_link _bfd_generic_final_link
|
||||
#define binary_bfd_link_split_section _bfd_generic_link_split_section
|
||||
|
@ -1386,6 +1386,8 @@ b_out_bfd_get_relocated_section_contents (bfd *output_bfd,
|
||||
#define b_out_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
||||
#define b_out_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
||||
#define b_out_bfd_link_just_syms _bfd_generic_link_just_syms
|
||||
#define b_out_bfd_copy_link_hash_symbol_type \
|
||||
_bfd_generic_copy_link_hash_symbol_type
|
||||
#define b_out_bfd_final_link _bfd_generic_final_link
|
||||
#define b_out_bfd_link_split_section _bfd_generic_link_split_section
|
||||
#define b_out_bfd_gc_sections bfd_generic_gc_sections
|
||||
|
@ -4230,6 +4230,7 @@ const bfd_target rs6000coff_vec =
|
||||
_bfd_generic_link_hash_table_free,
|
||||
_bfd_xcoff_bfd_link_add_symbols,
|
||||
_bfd_generic_link_just_syms,
|
||||
_bfd_generic_copy_link_hash_symbol_type,
|
||||
_bfd_xcoff_bfd_final_link,
|
||||
_bfd_generic_link_split_section,
|
||||
bfd_generic_gc_sections,
|
||||
@ -4483,6 +4484,7 @@ const bfd_target pmac_xcoff_vec =
|
||||
_bfd_generic_link_hash_table_free,
|
||||
_bfd_xcoff_bfd_link_add_symbols,
|
||||
_bfd_generic_link_just_syms,
|
||||
_bfd_generic_copy_link_hash_symbol_type,
|
||||
_bfd_xcoff_bfd_final_link,
|
||||
_bfd_generic_link_split_section,
|
||||
bfd_generic_gc_sections,
|
||||
|
@ -2800,6 +2800,7 @@ const bfd_target rs6000coff64_vec =
|
||||
_bfd_generic_link_hash_table_free,
|
||||
_bfd_xcoff_bfd_link_add_symbols,
|
||||
_bfd_generic_link_just_syms,
|
||||
_bfd_generic_copy_link_hash_symbol_type,
|
||||
_bfd_xcoff_bfd_final_link,
|
||||
_bfd_generic_link_split_section,
|
||||
bfd_generic_gc_sections,
|
||||
@ -3054,6 +3055,7 @@ const bfd_target aix5coff64_vec =
|
||||
_bfd_generic_link_hash_table_free,
|
||||
_bfd_xcoff_bfd_link_add_symbols,
|
||||
_bfd_generic_link_just_syms,
|
||||
_bfd_generic_copy_link_hash_symbol_type,
|
||||
_bfd_xcoff_bfd_final_link,
|
||||
_bfd_generic_link_split_section,
|
||||
bfd_generic_gc_sections,
|
||||
|
@ -5328,6 +5328,8 @@ dummy_reloc16_extra_cases (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
#endif /* ! defined (coff_relocate_section) */
|
||||
|
||||
#define coff_bfd_link_just_syms _bfd_generic_link_just_syms
|
||||
#define coff_bfd_copy_link_hash_symbol_type \
|
||||
_bfd_generic_copy_link_hash_symbol_type
|
||||
#define coff_bfd_link_split_section _bfd_generic_link_split_section
|
||||
|
||||
#ifndef coff_start_final_link
|
||||
|
@ -1751,6 +1751,8 @@ extern asection *_bfd_elf_check_kept_section
|
||||
(asection *, struct bfd_link_info *);
|
||||
extern void _bfd_elf_link_just_syms
|
||||
(asection *, struct bfd_link_info *);
|
||||
extern void _bfd_elf_copy_link_hash_symbol_type
|
||||
(bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *);
|
||||
extern bfd_boolean _bfd_elf_copy_private_header_data
|
||||
(bfd *, bfd *);
|
||||
extern bfd_boolean _bfd_elf_copy_private_symbol_data
|
||||
|
@ -12596,3 +12596,15 @@ _bfd_elf_make_dynamic_reloc_section (asection * sec,
|
||||
|
||||
return reloc_sec;
|
||||
}
|
||||
|
||||
/* Copy the ELF symbol type associated with a linker hash entry. */
|
||||
void
|
||||
_bfd_elf_copy_link_hash_symbol_type (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
struct bfd_link_hash_entry * hdest,
|
||||
struct bfd_link_hash_entry * hsrc)
|
||||
{
|
||||
struct elf_link_hash_entry *ehdest = (struct elf_link_hash_entry *)hdest;
|
||||
struct elf_link_hash_entry *ehsrc = (struct elf_link_hash_entry *)hsrc;
|
||||
|
||||
ehdest->type = ehsrc->type;
|
||||
}
|
||||
|
@ -260,6 +260,11 @@
|
||||
#define bfd_elfNN_bfd_link_just_syms _bfd_elf_link_just_syms
|
||||
#endif
|
||||
|
||||
#ifndef bfd_elfNN_bfd_copy_link_hash_symbol_type
|
||||
#define bfd_elfNN_bfd_copy_link_hash_symbol_type \
|
||||
_bfd_elf_copy_link_hash_symbol_type
|
||||
#endif
|
||||
|
||||
#ifndef bfd_elfNN_bfd_link_split_section
|
||||
#define bfd_elfNN_bfd_link_split_section _bfd_generic_link_split_section
|
||||
#endif
|
||||
|
@ -153,6 +153,8 @@ msdos_set_section_contents (bfd *abfd,
|
||||
#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_just_syms _bfd_generic_link_just_syms
|
||||
#define msdos_bfd_copy_link_hash_symbol_type \
|
||||
_bfd_generic_copy_link_hash_symbol_type
|
||||
#define msdos_bfd_final_link _bfd_generic_final_link
|
||||
#define msdos_bfd_link_split_section _bfd_generic_link_split_section
|
||||
#define msdos_set_arch_mach _bfd_generic_set_arch_mach
|
||||
|
@ -177,6 +177,8 @@ os9k_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
#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_just_syms _bfd_generic_link_just_syms
|
||||
#define os9k_bfd_copy_link_hash_symbol_type \
|
||||
_bfd_generic_copy_link_hash_symbol_type
|
||||
#define os9k_bfd_final_link _bfd_generic_final_link
|
||||
#define os9k_bfd_link_split_section _bfd_generic_link_split_section
|
||||
|
||||
|
@ -3775,6 +3775,8 @@ ieee_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
#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_just_syms _bfd_generic_link_just_syms
|
||||
#define ieee_bfd_copy_link_hash_symbol_type \
|
||||
_bfd_generic_copy_link_hash_symbol_type
|
||||
#define ieee_bfd_final_link _bfd_generic_final_link
|
||||
#define ieee_bfd_link_split_section _bfd_generic_link_split_section
|
||||
|
||||
|
@ -939,6 +939,8 @@ ihex_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
#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_just_syms _bfd_generic_link_just_syms
|
||||
#define ihex_bfd_copy_link_hash_symbol_type \
|
||||
_bfd_generic_copy_link_hash_symbol_type
|
||||
#define ihex_bfd_final_link _bfd_generic_final_link
|
||||
#define ihex_bfd_link_split_section _bfd_generic_link_split_section
|
||||
|
||||
|
@ -410,6 +410,9 @@ extern bfd_boolean _bfd_generic_set_section_contents
|
||||
((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_false)
|
||||
#define _bfd_nolink_bfd_link_just_syms \
|
||||
((void (*) (asection *, struct bfd_link_info *)) bfd_void)
|
||||
#define _bfd_nolink_bfd_copy_link_hash_symbol_type \
|
||||
((void (*) (bfd *, struct bfd_link_hash_entry *, \
|
||||
struct bfd_link_hash_entry *)) bfd_void)
|
||||
#define _bfd_nolink_bfd_final_link \
|
||||
((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_false)
|
||||
#define _bfd_nolink_bfd_link_split_section \
|
||||
@ -524,6 +527,10 @@ extern bfd_boolean _bfd_generic_link_add_one_symbol
|
||||
extern void _bfd_generic_link_just_syms
|
||||
(asection *, struct bfd_link_info *);
|
||||
|
||||
/* Generic routine that does nothing. */
|
||||
extern void _bfd_generic_copy_link_hash_symbol_type
|
||||
(bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *);
|
||||
|
||||
/* Generic link routine. */
|
||||
extern bfd_boolean _bfd_generic_final_link
|
||||
(bfd *, struct bfd_link_info *);
|
||||
|
@ -415,6 +415,9 @@ extern bfd_boolean _bfd_generic_set_section_contents
|
||||
((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_false)
|
||||
#define _bfd_nolink_bfd_link_just_syms \
|
||||
((void (*) (asection *, struct bfd_link_info *)) bfd_void)
|
||||
#define _bfd_nolink_bfd_copy_link_hash_symbol_type \
|
||||
((void (*) (bfd *, struct bfd_link_hash_entry *, \
|
||||
struct bfd_link_hash_entry *)) bfd_void)
|
||||
#define _bfd_nolink_bfd_final_link \
|
||||
((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_false)
|
||||
#define _bfd_nolink_bfd_link_split_section \
|
||||
@ -529,6 +532,10 @@ extern bfd_boolean _bfd_generic_link_add_one_symbol
|
||||
extern void _bfd_generic_link_just_syms
|
||||
(asection *, struct bfd_link_info *);
|
||||
|
||||
/* Generic routine that does nothing. */
|
||||
extern void _bfd_generic_copy_link_hash_symbol_type
|
||||
(bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *);
|
||||
|
||||
/* Generic link routine. */
|
||||
extern bfd_boolean _bfd_generic_final_link
|
||||
(bfd *, struct bfd_link_info *);
|
||||
|
@ -315,6 +315,8 @@ extern struct bfd_link_hash_table *_bfd_ecoff_bfd_link_hash_table_create
|
||||
extern bfd_boolean _bfd_ecoff_bfd_link_add_symbols
|
||||
(bfd *, struct bfd_link_info *);
|
||||
#define _bfd_ecoff_bfd_link_just_syms _bfd_generic_link_just_syms
|
||||
#define _bfd_ecoff_bfd_copy_link_hash_symbol_type \
|
||||
_bfd_generic_copy_link_hash_symbol_type
|
||||
extern bfd_boolean _bfd_ecoff_bfd_final_link
|
||||
(bfd *, struct bfd_link_info *);
|
||||
|
||||
|
11
bfd/linker.c
11
bfd/linker.c
@ -797,6 +797,17 @@ _bfd_generic_link_just_syms (asection *sec,
|
||||
sec->output_offset = sec->vma;
|
||||
}
|
||||
|
||||
/* Copy the type of a symbol assiciated with a linker hast table entry.
|
||||
Override this so that symbols created in linker scripts get their
|
||||
type from the RHS of the assignment.
|
||||
The default implementation does nothing. */
|
||||
void
|
||||
_bfd_generic_copy_link_hash_symbol_type (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
struct bfd_link_hash_entry * hdest ATTRIBUTE_UNUSED,
|
||||
struct bfd_link_hash_entry * hsrc ATTRIBUTE_UNUSED)
|
||||
{
|
||||
}
|
||||
|
||||
/* Add symbols from an object file to the global hash table. */
|
||||
|
||||
static bfd_boolean
|
||||
|
@ -53,6 +53,8 @@
|
||||
#define bfd_mach_o_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
||||
#define bfd_mach_o_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
||||
#define bfd_mach_o_bfd_link_just_syms _bfd_generic_link_just_syms
|
||||
#define bfd_mach_o_bfd_copy_link_hash_symbol_type \
|
||||
_bfd_generic_copy_link_hash_symbol_type
|
||||
#define bfd_mach_o_bfd_final_link _bfd_generic_final_link
|
||||
#define bfd_mach_o_bfd_link_split_section _bfd_generic_link_split_section
|
||||
#define bfd_mach_o_set_arch_mach bfd_default_set_arch_mach
|
||||
|
@ -3199,6 +3199,8 @@ mmo_write_object_contents (bfd *abfd)
|
||||
#define mmo_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
||||
#define mmo_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
||||
#define mmo_bfd_link_just_syms _bfd_generic_link_just_syms
|
||||
#define mmo_bfd_copy_link_hash_symbol_type \
|
||||
_bfd_generic_copy_link_hash_symbol_type
|
||||
#define mmo_bfd_final_link _bfd_generic_final_link
|
||||
#define mmo_bfd_link_split_section _bfd_generic_link_split_section
|
||||
|
||||
|
@ -54,6 +54,8 @@
|
||||
#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_just_syms _bfd_generic_link_just_syms
|
||||
#define nlm_bfd_copy_link_hash_symbol_type \
|
||||
_bfd_generic_copy_link_hash_symbol_type
|
||||
#define nlm_bfd_final_link _bfd_generic_final_link
|
||||
#define nlm_bfd_link_split_section _bfd_generic_link_split_section
|
||||
|
||||
|
@ -1203,6 +1203,8 @@ oasys_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
#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_just_syms _bfd_generic_link_just_syms
|
||||
#define oasys_bfd_copy_link_hash_symbol_type \
|
||||
_bfd_generic_copy_link_hash_symbol_type
|
||||
#define oasys_bfd_final_link _bfd_generic_final_link
|
||||
#define oasys_bfd_link_split_section _bfd_generic_link_split_section
|
||||
|
||||
|
@ -57,6 +57,8 @@
|
||||
#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_just_syms _bfd_generic_link_just_syms
|
||||
#define bfd_pef_bfd_copy_link_hash_symbol_type \
|
||||
_bfd_generic_copy_link_hash_symbol_type
|
||||
#define bfd_pef_bfd_final_link _bfd_generic_final_link
|
||||
#define bfd_pef_bfd_link_split_section _bfd_generic_link_split_section
|
||||
#define bfd_pef_get_section_contents_in_window _bfd_generic_get_section_contents_in_window
|
||||
|
@ -480,6 +480,8 @@ ppcboot_bfd_print_private_bfd_data (abfd, farg)
|
||||
#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_just_syms _bfd_generic_link_just_syms
|
||||
#define ppcboot_bfd_copy_link_hash_symbol_type \
|
||||
_bfd_generic_copy_link_hash_symbol_type
|
||||
#define ppcboot_bfd_final_link _bfd_generic_final_link
|
||||
#define ppcboot_bfd_link_split_section _bfd_generic_link_split_section
|
||||
#define ppcboot_get_section_contents_in_window \
|
||||
|
@ -6343,6 +6343,8 @@ som_bfd_link_split_section (bfd *abfd ATTRIBUTE_UNUSED, asection *sec)
|
||||
#define som_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
|
||||
#define som_bfd_link_add_symbols _bfd_generic_link_add_symbols
|
||||
#define som_bfd_link_just_syms _bfd_generic_link_just_syms
|
||||
#define som_bfd_copy_link_hash_symbol_type \
|
||||
_bfd_generic_copy_link_hash_symbol_type
|
||||
#define som_bfd_final_link _bfd_generic_final_link
|
||||
#define som_bfd_gc_sections bfd_generic_gc_sections
|
||||
#define som_bfd_merge_sections bfd_generic_merge_sections
|
||||
|
@ -1261,6 +1261,8 @@ srec_print_symbol (bfd *abfd,
|
||||
#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_just_syms _bfd_generic_link_just_syms
|
||||
#define srec_bfd_copy_link_hash_symbol_type \
|
||||
_bfd_generic_copy_link_hash_symbol_type
|
||||
#define srec_bfd_final_link _bfd_generic_final_link
|
||||
#define srec_bfd_link_split_section _bfd_generic_link_split_section
|
||||
|
||||
|
@ -436,6 +436,7 @@ BFD_JUMP_TABLE macros.
|
||||
. NAME##_bfd_link_hash_table_free, \
|
||||
. NAME##_bfd_link_add_symbols, \
|
||||
. NAME##_bfd_link_just_syms, \
|
||||
. NAME##_bfd_copy_link_hash_symbol_type, \
|
||||
. NAME##_bfd_final_link, \
|
||||
. NAME##_bfd_link_split_section, \
|
||||
. NAME##_bfd_gc_sections, \
|
||||
@ -467,6 +468,12 @@ BFD_JUMP_TABLE macros.
|
||||
. {* Indicate that we are only retrieving symbol values from this section. *}
|
||||
. void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
|
||||
.
|
||||
. {* Copy the symbol type of a linker hash table entry. *}
|
||||
.#define bfd_copy_link_hash_symbol_type(b, t, f) \
|
||||
. BFD_SEND (b, _bfd_copy_link_hash_symbol_type, (b, t, f))
|
||||
. void (*_bfd_copy_link_hash_symbol_type)
|
||||
. (bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *);
|
||||
.
|
||||
. {* Do a link based on the link_order structures attached to each
|
||||
. section of the BFD. *}
|
||||
. bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
|
||||
|
@ -952,6 +952,8 @@ tekhex_print_symbol (bfd *abfd,
|
||||
#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_just_syms _bfd_generic_link_just_syms
|
||||
#define tekhex_bfd_copy_link_hash_symbol_type \
|
||||
_bfd_generic_copy_link_hash_symbol_type
|
||||
#define tekhex_bfd_final_link _bfd_generic_final_link
|
||||
#define tekhex_bfd_link_split_section _bfd_generic_link_split_section
|
||||
#define tekhex_get_section_contents_in_window _bfd_generic_get_section_contents_in_window
|
||||
|
@ -813,6 +813,8 @@ versados_canonicalize_reloc (bfd *abfd,
|
||||
#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_just_syms _bfd_generic_link_just_syms
|
||||
#define versados_bfd_copy_link_hash_symbol_type \
|
||||
_bfd_generic_copy_link_hash_symbol_type
|
||||
#define versados_bfd_final_link _bfd_generic_final_link
|
||||
#define versados_bfd_link_split_section _bfd_generic_link_split_section
|
||||
|
||||
|
@ -140,6 +140,8 @@ static bfd_boolean vms_bfd_set_private_flags (bfd *abfd, flagword flags);
|
||||
#define vms_bfd_is_target_special_symbol ((bfd_boolean (*) (bfd *, asymbol *)) bfd_false)
|
||||
#define vms_make_empty_symbol _bfd_generic_make_empty_symbol
|
||||
#define vms_bfd_link_just_syms _bfd_generic_link_just_syms
|
||||
#define vms_bfd_copy_link_hash_symbol_type \
|
||||
_bfd_generic_copy_link_hash_symbol_type
|
||||
#define vms_bfd_is_group_section bfd_generic_is_group_section
|
||||
#define vms_bfd_discard_group bfd_generic_discard_group
|
||||
#define vms_section_already_linked _bfd_generic_section_already_linked
|
||||
|
@ -51,6 +51,8 @@
|
||||
#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_just_syms _bfd_generic_link_just_syms
|
||||
#define bfd_sym_bfd_copy_link_hash_symbol_type \
|
||||
_bfd_generic_copy_link_hash_symbol_type
|
||||
#define bfd_sym_bfd_final_link _bfd_generic_final_link
|
||||
#define bfd_sym_bfd_link_split_section _bfd_generic_link_split_section
|
||||
#define bfd_sym_get_section_contents_in_window _bfd_generic_get_section_contents_in_window
|
||||
|
@ -1,3 +1,7 @@
|
||||
2009-11-23 Paul Brook <paul@codesourcery.com>
|
||||
|
||||
* ldexp.c: Copy symbol type for simple assignments.
|
||||
|
||||
2009-11-20 Thomas Schwinge <thomas@codesourcery.com>
|
||||
|
||||
* emulparams/armelf.sh (OTHER_READONLY_SECTIONS)
|
||||
|
14
ld/ldexp.c
14
ld/ldexp.c
@ -815,6 +815,20 @@ exp_fold_tree_1 (etree_type *tree)
|
||||
h->u.def.section = expld.result.section;
|
||||
if (tree->type.node_class == etree_provide)
|
||||
tree->type.node_class = etree_provided;
|
||||
|
||||
/* Copy the symbol type if this is a simple assignment of
|
||||
one symbol to annother. */
|
||||
if (tree->assign.src->type.node_class == etree_name)
|
||||
{
|
||||
struct bfd_link_hash_entry *hsrc;
|
||||
|
||||
hsrc = bfd_link_hash_lookup (link_info.hash,
|
||||
tree->assign.src->name.name,
|
||||
FALSE, FALSE, TRUE);
|
||||
if (hsrc)
|
||||
bfd_copy_link_hash_symbol_type (link_info.output_bfd, h,
|
||||
hsrc);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -1,3 +1,9 @@
|
||||
2009-11-23 Paul Brook <paul@codesourcery.com>
|
||||
|
||||
* ld-arm/script-type.sym: New test.
|
||||
* ld-arm/script-type.s: New test.
|
||||
* ld-arm/script-type.s: New test.
|
||||
|
||||
2009-11-20 Thomas Schwinge <thomas@codesourcery.com>
|
||||
|
||||
* ld-arm/arm-dyn.ld: Adapt to main linker script changes.
|
||||
|
@ -227,6 +227,9 @@ set armelftests {
|
||||
{"jump19" "-static -T arm.ld" "" {jump19.s}
|
||||
{{objdump -dr jump19.d}}
|
||||
"jump19"}
|
||||
{"script-type" "-static -T script-type.ld" "" {script-type.s}
|
||||
{{readelf -s script-type.sym}}
|
||||
"script-type"}
|
||||
{"callweak" "-static -T arm.ld" "" {callweak.s}
|
||||
{{objdump -dr callweak.d}}
|
||||
"callweak"}
|
||||
|
7
ld/testsuite/ld-arm/script-type.ld
Normal file
7
ld/testsuite/ld-arm/script-type.ld
Normal file
@ -0,0 +1,7 @@
|
||||
SECTIONS {
|
||||
foo_a = bar_a;
|
||||
foo_t = bar_t;
|
||||
foo_o = bar_o;
|
||||
.text : { *(.text) }
|
||||
.ARM.attribues 0 : { *(.ARM.attributes) }
|
||||
}
|
20
ld/testsuite/ld-arm/script-type.s
Normal file
20
ld/testsuite/ld-arm/script-type.s
Normal file
@ -0,0 +1,20 @@
|
||||
.syntax unified
|
||||
.text
|
||||
.global bar_a
|
||||
.type bar_a %function
|
||||
bar_a:
|
||||
bx lr
|
||||
|
||||
.p2align 4
|
||||
.global bar_o
|
||||
.type bar_o %object
|
||||
bar_o:
|
||||
.word 0
|
||||
|
||||
.p2align 4
|
||||
.thumb
|
||||
.global bar_t
|
||||
.type bar_t %function
|
||||
bar_t:
|
||||
bx lr
|
||||
|
15
ld/testsuite/ld-arm/script-type.sym
Normal file
15
ld/testsuite/ld-arm/script-type.sym
Normal file
@ -0,0 +1,15 @@
|
||||
|
||||
Symbol table '.symtab' contains 12 entries:
|
||||
Num: Value Size Type Bind Vis Ndx Name
|
||||
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
|
||||
1: 00000000 0 SECTION LOCAL DEFAULT 1
|
||||
2: 00000000 0 SECTION LOCAL DEFAULT 2
|
||||
3: 00000000 0 NOTYPE LOCAL DEFAULT 1 \$a
|
||||
4: 00000010 0 NOTYPE LOCAL DEFAULT 1 \$d
|
||||
5: 00000020 0 NOTYPE LOCAL DEFAULT 1 \$t
|
||||
6: 00000010 0 OBJECT GLOBAL DEFAULT 1 bar_o
|
||||
7: 00000021 0 FUNC GLOBAL DEFAULT 1 bar_t
|
||||
8: 00000000 0 FUNC GLOBAL DEFAULT 1 foo_a
|
||||
9: 00000021 0 FUNC GLOBAL DEFAULT 1 foo_t
|
||||
10: 00000010 0 OBJECT GLOBAL DEFAULT 1 foo_o
|
||||
11: 00000000 0 FUNC GLOBAL DEFAULT 1 bar_a
|
Loading…
Reference in New Issue
Block a user