mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-11-24 12:39:59 +00:00
* bfd-in2.h: Regenerate.
* bfd-in.h (bfd_arm_vfp11_fix): New enum. Specify how VFP11 instruction scanning should be done. (bfd_elf32_arm_init_maps, bfd_elf32_arm_vfp11_erratum_scan) (bfd_elf32_arm_vfp11_fix_veneer_locations): Add prototypes. (bfd_elf32_arm_set_target_relocs): Add vfp11 fix type argument to prototype. * elf-bfd.h (elf_backend_write_section): Add struct bfd_link_info argument. * elf32-arm.c (VFP11_ERRATUM_VENEER_SECTION_NAME) (VFP11_ERRATUM_VENEER_ENTRY_NAME): Define macros. (elf32_vfp11_erratum_type): New enum. (elf32_vfp11_erratum_list): New struct. List of veneers or jumps to veneers. (_arm_elf_section_data): Add mapsize, erratumcount, erratumlist. (elf32_arm_link_hash_table): Add vfp11_erratum_glue_size, vfp11_fix and num_vfp11_fixes fields. (elf32_arm_link_hash_table_create): Initialise vfp11_fix, vfp11_erratum_glue_size, num_vfp11_fixes fields. (VFP11_ERRATUM_VENEER_SIZE): Define. Size of an (ARM) veneer. (bfd_elf32_arm_allocate_interworking_sections): Initialise erratum glue section. (elf32_arm_section_map_add): Add an code/data mapping symbol entry to a section's map. (record_vfp11_erratum_veneer): Create a single veneer, and its associated symbols. (bfd_elf32_arm_add_glue_sections_to_bfd): Add vfp11 erratum glue. (bfd_elf32_arm_init_maps): Initialise mapping symbol table for input BFDs. (bfd_elf32_arm_set_vfp11_fix): Set the type of erratum workaround required. (bfd_arm_vfp11_pipe): Define VFP11 instruction pipes. (bfd_arm_vfp11_regno): Recode a register number from a VFP11 insn. (bfd_arm_vfp11_write_mask): Update write mask according to coded register number. (bfd_arm_vfp11_antidependency): New function. (bfd_arm_vfp11_insn_decode): Decode a VFP11 insn. (elf32_arm_compare_mapping): Declare. (bfd_elf32_arm_vfp11_erratum_scan): Scan the sections of an input BFD for potential erratum-triggering insns. Record results. (bfd_elf32_arm_vfp11_fix_veneer_locations): Find out where veneers and branches to veneers have been placed in virtual memory after layout. (bfd_elf32_arm_set_target_relocs): Set vfp11_fix field in global hash table. (elf32_arm_output_symbol_hook): Remove. (elf32_arm_write_section): Output veneers, and branches to veneers. Use maps from input sections, not output sections, for code byte-swapping. * elf32-ppc.c (ppc_elf_write_section): Add dummy link_info argument. * elf32-score.c (_bfd_score_elf_write_section): Likewise. * elfxx-mips.c (_bfd_mips_elf_write_section): Likewise. * elfxx-mips.h (_bfd_mips_elf_write_section): Likewise.
This commit is contained in:
parent
c6dd86c695
commit
c7b8f16e18
@ -1,4 +1,60 @@
|
||||
2076-01-27 H.J. Lu <hongjiu.lu@intel.com>
|
||||
2007-01-29 Julian Brown <julian@codesourcery.com>
|
||||
|
||||
* bfd-in2.h: Regenerate.
|
||||
* bfd-in.h (bfd_arm_vfp11_fix): New enum. Specify how VFP11
|
||||
instruction scanning should be done.
|
||||
(bfd_elf32_arm_init_maps, bfd_elf32_arm_vfp11_erratum_scan)
|
||||
(bfd_elf32_arm_vfp11_fix_veneer_locations): Add prototypes.
|
||||
(bfd_elf32_arm_set_target_relocs): Add vfp11 fix type argument to
|
||||
prototype.
|
||||
* elf-bfd.h (elf_backend_write_section): Add struct bfd_link_info
|
||||
argument.
|
||||
* elf32-arm.c (VFP11_ERRATUM_VENEER_SECTION_NAME)
|
||||
(VFP11_ERRATUM_VENEER_ENTRY_NAME): Define macros.
|
||||
(elf32_vfp11_erratum_type): New enum.
|
||||
(elf32_vfp11_erratum_list): New struct. List of veneers or jumps to
|
||||
veneers.
|
||||
(_arm_elf_section_data): Add mapsize, erratumcount, erratumlist.
|
||||
(elf32_arm_link_hash_table): Add vfp11_erratum_glue_size,
|
||||
vfp11_fix and num_vfp11_fixes fields.
|
||||
(elf32_arm_link_hash_table_create): Initialise vfp11_fix,
|
||||
vfp11_erratum_glue_size, num_vfp11_fixes fields.
|
||||
(VFP11_ERRATUM_VENEER_SIZE): Define. Size of an (ARM) veneer.
|
||||
(bfd_elf32_arm_allocate_interworking_sections): Initialise erratum
|
||||
glue section.
|
||||
(elf32_arm_section_map_add): Add an code/data mapping symbol entry
|
||||
to a section's map.
|
||||
(record_vfp11_erratum_veneer): Create a single veneer, and its
|
||||
associated symbols.
|
||||
(bfd_elf32_arm_add_glue_sections_to_bfd): Add vfp11 erratum glue.
|
||||
(bfd_elf32_arm_init_maps): Initialise mapping symbol table for input
|
||||
BFDs.
|
||||
(bfd_elf32_arm_set_vfp11_fix): Set the type of erratum workaround
|
||||
required.
|
||||
(bfd_arm_vfp11_pipe): Define VFP11 instruction pipes.
|
||||
(bfd_arm_vfp11_regno): Recode a register number from a VFP11 insn.
|
||||
(bfd_arm_vfp11_write_mask): Update write mask according to coded
|
||||
register number.
|
||||
(bfd_arm_vfp11_antidependency): New function.
|
||||
(bfd_arm_vfp11_insn_decode): Decode a VFP11 insn.
|
||||
(elf32_arm_compare_mapping): Declare.
|
||||
(bfd_elf32_arm_vfp11_erratum_scan): Scan the sections of an input
|
||||
BFD for potential erratum-triggering insns. Record results.
|
||||
(bfd_elf32_arm_vfp11_fix_veneer_locations): Find out where veneers
|
||||
and branches to veneers have been placed in virtual memory after
|
||||
layout.
|
||||
(bfd_elf32_arm_set_target_relocs): Set vfp11_fix field in global
|
||||
hash table.
|
||||
(elf32_arm_output_symbol_hook): Remove.
|
||||
(elf32_arm_write_section): Output veneers, and branches to veneers.
|
||||
Use maps from input sections, not output sections, for code
|
||||
byte-swapping.
|
||||
* elf32-ppc.c (ppc_elf_write_section): Add dummy link_info argument.
|
||||
* elf32-score.c (_bfd_score_elf_write_section): Likewise.
|
||||
* elfxx-mips.c (_bfd_mips_elf_write_section): Likewise.
|
||||
* elfxx-mips.h (_bfd_mips_elf_write_section): Likewise.
|
||||
|
||||
2007-01-27 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* elf64-hppa.c (elf64_bed): Defined for HPUX and Linux.
|
||||
(INCLUDED_TARGET_FILE): Removed.
|
||||
|
23
bfd/bfd-in.h
23
bfd/bfd-in.h
@ -846,6 +846,27 @@ extern bfd_boolean bfd_coff_set_symbol_class
|
||||
extern bfd_boolean bfd_m68k_coff_create_embedded_relocs
|
||||
(bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
|
||||
|
||||
/* ARM VFP11 erratum workaround support. */
|
||||
typedef enum
|
||||
{
|
||||
BFD_ARM_VFP11_FIX_DEFAULT,
|
||||
BFD_ARM_VFP11_FIX_NONE,
|
||||
BFD_ARM_VFP11_FIX_SCALAR,
|
||||
BFD_ARM_VFP11_FIX_VECTOR
|
||||
} bfd_arm_vfp11_fix;
|
||||
|
||||
extern void bfd_elf32_arm_init_maps
|
||||
(bfd *);
|
||||
|
||||
extern void bfd_elf32_arm_set_vfp11_fix
|
||||
(bfd *, struct bfd_link_info *);
|
||||
|
||||
extern bfd_boolean bfd_elf32_arm_vfp11_erratum_scan
|
||||
(bfd *, struct bfd_link_info *);
|
||||
|
||||
extern void bfd_elf32_arm_vfp11_fix_veneer_locations
|
||||
(bfd *, struct bfd_link_info *);
|
||||
|
||||
/* ARM Interworking support. Called from linker. */
|
||||
extern bfd_boolean bfd_arm_allocate_interworking_sections
|
||||
(struct bfd_link_info *);
|
||||
@ -874,7 +895,7 @@ extern bfd_boolean bfd_elf32_arm_process_before_allocation
|
||||
(bfd *, struct bfd_link_info *);
|
||||
|
||||
void bfd_elf32_arm_set_target_relocs
|
||||
(struct bfd_link_info *, int, char *, int, int);
|
||||
(struct bfd_link_info *, int, char *, int, int, bfd_arm_vfp11_fix);
|
||||
|
||||
extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking
|
||||
(bfd *, struct bfd_link_info *);
|
||||
|
@ -853,6 +853,27 @@ extern bfd_boolean bfd_coff_set_symbol_class
|
||||
extern bfd_boolean bfd_m68k_coff_create_embedded_relocs
|
||||
(bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
|
||||
|
||||
/* ARM VFP11 erratum workaround support. */
|
||||
typedef enum
|
||||
{
|
||||
BFD_ARM_VFP11_FIX_DEFAULT,
|
||||
BFD_ARM_VFP11_FIX_NONE,
|
||||
BFD_ARM_VFP11_FIX_SCALAR,
|
||||
BFD_ARM_VFP11_FIX_VECTOR
|
||||
} bfd_arm_vfp11_fix;
|
||||
|
||||
extern void bfd_elf32_arm_init_maps
|
||||
(bfd *);
|
||||
|
||||
extern void bfd_elf32_arm_set_vfp11_fix
|
||||
(bfd *, struct bfd_link_info *);
|
||||
|
||||
extern bfd_boolean bfd_elf32_arm_vfp11_erratum_scan
|
||||
(bfd *, struct bfd_link_info *);
|
||||
|
||||
extern void bfd_elf32_arm_vfp11_fix_veneer_locations
|
||||
(bfd *, struct bfd_link_info *);
|
||||
|
||||
/* ARM Interworking support. Called from linker. */
|
||||
extern bfd_boolean bfd_arm_allocate_interworking_sections
|
||||
(struct bfd_link_info *);
|
||||
@ -881,7 +902,7 @@ extern bfd_boolean bfd_elf32_arm_process_before_allocation
|
||||
(bfd *, struct bfd_link_info *);
|
||||
|
||||
void bfd_elf32_arm_set_target_relocs
|
||||
(struct bfd_link_info *, int, char *, int, int);
|
||||
(struct bfd_link_info *, int, char *, int, int, bfd_arm_vfp11_fix);
|
||||
|
||||
extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking
|
||||
(bfd *, struct bfd_link_info *);
|
||||
|
@ -985,7 +985,7 @@ struct elf_backend_data
|
||||
/* This function, if defined, may write out the given section.
|
||||
Returns TRUE if it did so and FALSE if the caller should. */
|
||||
bfd_boolean (*elf_backend_write_section)
|
||||
(bfd *, asection *, bfd_byte *);
|
||||
(bfd *, struct bfd_link_info *, asection *, bfd_byte *);
|
||||
|
||||
/* The level of IRIX compatibility we're striving for.
|
||||
MIPS ELF specific function. */
|
||||
|
1031
bfd/elf32-arm.c
1031
bfd/elf32-arm.c
File diff suppressed because it is too large
Load Diff
@ -2151,6 +2151,7 @@ ppc_elf_begin_write_processing (bfd *abfd, struct bfd_link_info *link_info)
|
||||
|
||||
static bfd_boolean
|
||||
ppc_elf_write_section (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
struct bfd_link_info *link_info ATTRIBUTE_UNUSED,
|
||||
asection *asec,
|
||||
bfd_byte *contents ATTRIBUTE_UNUSED)
|
||||
{
|
||||
|
@ -3489,7 +3489,9 @@ _bfd_score_elf_section_processing (bfd *abfd ATTRIBUTE_UNUSED, Elf_Internal_Shdr
|
||||
}
|
||||
|
||||
static bfd_boolean
|
||||
_bfd_score_elf_write_section (bfd *output_bfd, asection *sec, bfd_byte *contents)
|
||||
_bfd_score_elf_write_section (bfd *output_bfd,
|
||||
struct bfd_link_info *link_info ATTRIBUTE_UNUSED,
|
||||
asection *sec, bfd_byte *contents)
|
||||
{
|
||||
bfd_byte *to, *from, *end;
|
||||
int i;
|
||||
|
@ -7954,7 +7954,8 @@ elf_link_input_bfd (struct elf_final_link_info *finfo, bfd *input_bfd)
|
||||
|
||||
/* Write out the modified section contents. */
|
||||
if (bed->elf_backend_write_section
|
||||
&& (*bed->elf_backend_write_section) (output_bfd, o, contents))
|
||||
&& (*bed->elf_backend_write_section) (output_bfd, finfo->info, o,
|
||||
contents))
|
||||
{
|
||||
/* Section written out. */
|
||||
}
|
||||
|
@ -9758,8 +9758,9 @@ _bfd_mips_elf_ignore_discarded_relocs (asection *sec)
|
||||
}
|
||||
|
||||
bfd_boolean
|
||||
_bfd_mips_elf_write_section (bfd *output_bfd, asection *sec,
|
||||
bfd_byte *contents)
|
||||
_bfd_mips_elf_write_section (bfd *output_bfd,
|
||||
struct bfd_link_info *link_info ATTRIBUTE_UNUSED,
|
||||
asection *sec, bfd_byte *contents)
|
||||
{
|
||||
bfd_byte *to, *from, *end;
|
||||
int i;
|
||||
|
@ -109,7 +109,7 @@ extern bfd_boolean _bfd_mips_elf_print_private_bfd_data
|
||||
extern bfd_boolean _bfd_mips_elf_discard_info
|
||||
(bfd *, struct elf_reloc_cookie *, struct bfd_link_info *);
|
||||
extern bfd_boolean _bfd_mips_elf_write_section
|
||||
(bfd *, asection *, bfd_byte *);
|
||||
(bfd *, struct bfd_link_info *, asection *, bfd_byte *);
|
||||
|
||||
extern bfd_boolean _bfd_mips_elf_read_ecoff_info
|
||||
(bfd *, asection *, struct ecoff_debug_info *);
|
||||
|
Loading…
Reference in New Issue
Block a user