]> sourceware.org Git - newlib-cygwin.git/commitdiff
include/elf/
authorRichard Sandiford <rdsandiford@googlemail.com>
Mon, 14 Mar 2011 15:54:57 +0000 (15:54 +0000)
committerRichard Sandiford <rdsandiford@googlemail.com>
Mon, 14 Mar 2011 15:54:57 +0000 (15:54 +0000)
* internal.h (elf_internal_sym): Add st_target_internal.
* arm.h (arm_st_branch_type): New enum.
(ARM_SYM_BRANCH_TYPE): New macro.

bfd/
* elf-bfd.h (elf_link_hash_entry): Add target_internal.
* elf.c (swap_out_syms): Set st_target_internal for each
Elf_Internal_Sym.
* elfcode.h (elf_swap_symbol_in): Likewise.
* elf32-i370.c (i370_elf_finish_dynamic_sections): Likewise.
* elf32-sh-symbian.c (sh_symbian_relocate_section): Likewise.
* elf64-sparc.c (elf64_sparc_output_arch_syms): Likewise.
* elfxx-sparc.c (_bfd_sparc_elf_size_dynamic_sections): Likewise.
* elflink.c (elf_link_output_extsym): Likewise.
(bfd_elf_final_link): Likewise.
(elf_link_add_object_symbols): Copy st_target_internal
to the hash table if we see a definition.
(_bfd_elf_copy_link_hash_symbol_type): Copy target_internal.
* elf32-arm.c (elf32_arm_stub_hash_entry): Replace st_type with
a branch_type field.
(a8_erratum_fix, a8_erratum_reloc): Likewise.
(arm_type_of_stub): Replace actual_st_type with an
actual_branch_type parameter.
(arm_build_one_stub): Use branch types rather than st_types to
determine the type of branch.
(cortex_a8_erratum_scan): Likewise.
(elf32_arm_size_stubs): Likewise.
(bfd_elf32_arm_process_before_allocation): Likewise.
(allocate_dynrelocs_for_symbol): Likewise.
(elf32_arm_finish_dynamic_sections): Likewise.
(elf32_arm_final_link_relocate): Replace sym_flags parameter with
a branch_type parameter.
(elf32_arm_relocate_section): Update call accordingly.
(elf32_arm_adjust_dynamic_symbol): Don't check STT_ARM_TFUNC.
(elf32_arm_output_map_sym): Initialize st_target_internal.
(elf32_arm_output_stub_sym): Likewise.
(elf32_arm_symbol_processing): Delete.
(elf32_arm_swap_symbol_in): Convert STT_ARM_TFUNCs into STT_FUNCs.
Use st_target_internal to record the branch type.
(elf32_arm_swap_symbol_out): Use st_target_internal to test for
Thumb functions.
(elf32_arm_is_function_type): Delete.
(elf_backend_symbol_processing): Likewise.
(elf_backend_is_function_type): Likewise.

gas/
* config/tc-arm.c (arm_adjust_symtab): Set the branch type
for Thumb symbols.

ld/
* emultempl/armelf.em (gld${EMULATION_NAME}_finish): Check
eh->target_internal.

opcodes/
* arm-dis.c (get_sym_code_type): Don't check for STT_ARM_TFUNC.
Use branch types instead.
(print_insn): Likewise.

include/elf/ChangeLog
include/elf/arm.h
include/elf/internal.h

index ee88a5c1078b79fc4508a50e39580814b62b01f9..8fd7c5ec289a820d4ffc96a335c297e3d1b34e3d 100644 (file)
@@ -1,3 +1,9 @@
+2011-03-14  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       * internal.h (elf_internal_sym): Add st_target_internal.
+       * arm.h (arm_st_branch_type): New enum.
+       (ARM_SYM_BRANCH_TYPE): New macro.
+
 2011-03-10  Nick Clifton  <nickc@redhat.com>
 
        * common.h (EM_V850): V850s now supplied by Renesas.
index 18aa5592e6aedaae01c2e516f839531bd8cdc3d0..e3df27f969b3ea56e83b21d11f3f07929489c350 100644 (file)
@@ -323,4 +323,13 @@ enum
 #define ELF_STRING_ARM_unwind_once      ".gnu.linkonce.armexidx."
 #define ELF_STRING_ARM_unwind_info_once ".gnu.linkonce.armextab."
 
+enum arm_st_branch_type {
+  ST_BRANCH_TO_ARM,
+  ST_BRANCH_TO_THUMB,
+  ST_BRANCH_LONG
+};
+
+#define ARM_SYM_BRANCH_TYPE(SYM) \
+  ((enum arm_st_branch_type) (SYM)->st_target_internal)
+
 #endif /* _ELF_ARM_H */
index c6e57218e0bfffc5d72220b2343b89cce7e1fa27..461503783040f252da0713129f8f5b3686d04fe6 100644 (file)
@@ -124,6 +124,7 @@ struct elf_internal_sym {
   unsigned long        st_name;                /* Symbol name, index in string tbl */
   unsigned char        st_info;                /* Type and binding attributes */
   unsigned char        st_other;               /* Visibilty, and target specific */
+  unsigned char st_target_internal;    /* Internal-only information */
   unsigned int  st_shndx;              /* Associated section index */
 };
 
This page took 0.035414 seconds and 5 git commands to generate.