diff options
Diffstat (limited to 'src/backends')
104 files changed, 0 insertions, 14056 deletions
diff --git a/src/backends/ChangeLog b/src/backends/ChangeLog deleted file mode 100644 index e800d16b..00000000 --- a/src/backends/ChangeLog +++ /dev/null @@ -1,790 +0,0 @@ -2014-12-18 Ulrich Drepper <drepper@gmail.com> - - * Makefile.am: Suppress output of textrel_check command. - -2014-11-22 Mark Wielaard <mjw@redhat.com> - - * ppc64_symbol.c (ppc64_bss_plt_p): Remove ehdr argument. - * ppc_symbol.c (find_dyn_got): Likewise. Use elf_getphdrnum. - (ppc_check_special_symbol): Call find_dyn_got without ehdr. - (ppc_bss_plt_p): Remove ehdr argument. - -2014-11-17 Mark Wielaard <mjw@redhat.com> - - * ppc64_init.c (ppc64_init): Check section name is not NULL. - -2014-10-06 Mark Wielaard <mjw@redhat.com> - - * libebl_CPU.h (dwarf_peel_type): Removed. - (dwarf_peeled_die_type): Use libdw dwarf_peel_type. - -2014-07-18 Kyle McMartin <kyle@redhat.com> - Mark Wielaard <mjw@redhat.com> - - * aarch64_initreg.c: Check HAVE_SYS_USER_REGS. - (aarch64_set_initial_registers_tid): Use user_regs_struct and - user_fpsimd_struct. - * arm_initreg.c: Check HAVE_SYS_USER_REGS. - (arm_set_initial_registers_tid): Use user_regs_struct in compat mode. - -2014-07-04 Menanteau Guy <menantea@linux.vnet.ibm.com> - Mark Wielaard <mjw@redhat.com> - - * ppc64_init.c (ppc64_init): Hook check_st_other_bits. - * ppc64_reloc.def: TLSGD, TLSLD, TOCSAVE, ADDR16_HIGH, ADDR16_HIGHA, - TPREL16_HIGH, TPREL16_HIGHA, DTPREL16_HIGH, DTPREL16_HIGHA, JMP_IREL, - IRELATIVE, REL16, REL16_LO, REL16_HI and REL16_HA. - * ppc64_symbol.c (ppc64_dynamic_tag_name): Recognize DT_PPC64_OPT. - (ppc64_dynamic_tag_check): Likewise. - (ppc64_check_st_other_bits): New function. - -2014-07-04 Mark Wielaard <mjw@redhat.com> - - * aarch64_retval.c (aarch64_return_value_location): Handle - DW_ATE_boolean. - -2014-06-18 Mark Wielaard <mjw@redhat.com> - - * libebl_CPU.h (dwarf_peel_type): Remove DW_TAG_mutable_type - handling. - -2014-06-17 Mark Wielaard <mjw@redhat.com> - - * arm_init.c (arm_init): Set func_addr_mask. - -2014-06-20 Petr Machata <pmachata@redhat.com> - - * alpha_retval.c (alpha_return_value_location): Call - dwarf_peeled_die_type instead of inlining equivalent code. - * arm_retval.c (arm_return_value_location): Likewise. - * i386_retval.c (i386_return_value_location): Likewise. - * ia64_retval.c (ia64_return_value_location): Likewise. - * ppc64_retval.c (ppc64_return_value_location): Likewise. - * ppc_retval.c (ppc_return_value_location): Likewise. - * s390_retval.c (s390_return_value_location): Likewise. - * sh_retval.c (sh_return_value_location): Likewise. - * sparc_retval.c (sparc_return_value_location): Likewise. - * tilegx_retval.c (tilegx_return_value_location): Likewise. - * x86_64_retval.c (x86_64_return_value_location): Likewise. - -2014-05-19 Mark Wielaard <mjw@redhat.com> - - * arm_init.c (arm_init): Hook check_reloc_target_type. - * arm_symbol.c (arm_check_reloc_target_type): New function. - * ia64_init.c (ia64_init): Hook check_reloc_target_type. - * ia64_symbol.c (ia64_check_reloc_target_type): New function. - -2014-04-22 Kurt Roeckx <kurt@roeckx.be> - - * i386_initreg.c: Make Linux only. - * x86_64_initreg.c: Make Linux only. - -2014-04-13 Mark Wielaard <mjw@redhat.com> - - * Makefile.am: Remove libelf and libdw definitions when MUDFLAP - is defined. Remove libmudflap from LINK line. - -2014-04-09 Mark Wielaard <mjw@redhat.com> - - * Makefile.am (aarch64_SRCS): Add aarch64_initreg.c. - * aarch64_corenote.c (prstatus_regs): Mark pc_register. - * aarch64_init.c: Assign frame_nregs. Hook set_initial_registers_tid. - * aarch64_initreg: New file. - -2014-03-28 Jean Pihet <jean.pihet@linaro.org> - - * arm_initreg.c (arm_set_initial_registers_tid): Handle compat mode. - ARM compatible code running on AARCH64. - -2014-03-19 Mark Wielaard <mjw@redhat.com> - - * aarch64_reloc.def: AARCH64_ABS32 and AARCH64_ABS64 are also valid - in ET_REL. - -2014-01-30 Petr Machata <pmachata@redhat.com> - - * aarch64_regs.c (aarch64_register_info.regtype): Make this - variadic printf-like function. Call one vsnprintf instead of two - snprintf's. - (regtyper, regtypen): Drop. - (aarch64_register_info): Adjust callers. - -2014-01-26 Mark Wielaard <mjw@redhat.com> - - * Makefile.am (arm_SRCS): Add arm_initreg.c. - * arm_init.c (arm_init): Define frame_nregs and hook - set_initial_registers_tid. - * arm_initreg.c: New file. - -2014-01-25 Mark Wielaard <mjw@redhat.com> - - * arm_cfi.c (arm_abi_cfi): Restore SP (r13) from CFA. - -2014-01-24 Mark Wielaard <mjw@redhat.com> - - * arm_reloc.def: Update list. - -2014-01-22 Mark Wielaard <mjw@redhat.com> - - * Makefile.am (aarch64_regs_no_Wformat): Removed. - * aarch64_regs.c (regtype): Add bool nr argument. snprintf arg - when nr is true. - (regtyper): New function. - (regtypen): Likewise. - (aarch64_register_info): Call either regtyper or regtypen not - regtype directly. - -2014-01-14 Mark Wielaard <mjw@redhat.com> - - * aarch64_symbol.c (aarch64_check_special_symbol): Check shdr is - not NULL before usage. - -2014-01-04 Mark Wielaard <mjw@redhat.com> - - * ppc64_symbol.c (ppc64_machine_flag_check): New function. - * ppc64_init.c (ppc64_init): Hook machine_flag_check. - -2014-01-03 Mark Wielaard <mjw@redhat.com> - - * Makefile.am (aarch64_SRCS): Add aarch64_cfi.c. - * aarch64_cfi.c: New file. - * aarch64_init.c (aarch64_init): Hook abi_cfi. - * aarch64_regs.c (aarch64_register_info): Set *prefix to "". - -2013-12-19 Mark Wielaard <mjw@redhat.com> - - * aarch64_init.c (aarch64_init): Hook check_special_symbol. - * aarch64_symbol.c (aarch64_check_special_symbol): New function. - -2013-12-18 Mark Wielaard <mjw@redhat.com> - - * Makefile.am (ppc64_SRCS): Add ppc64_resolve_sym.c. - * ppc64_resolve_sym.c: New file. - * ppc64_init.c: Hook resolve_sym_value and find function descriptor - table. - -2013-12-18 Mark Wielaard <mjw@redhat.com> - - * s390_initreg.c (s390_set_initial_registers_tid): Use union - to avoid type-punning when assigning a double to a Dwarf_Word. - -2013-12-18 Jan Kratochvil <jan.kratochvil@redhat.com> - - unwinder: s390 and s390x - * Makefile.am (s390_SRCS): Add s390_initreg.c and s390_unwind.c. - * s390_corenote.c (prstatus_regs): Set PC_REGISTER. Reindent all the - entries. - * s390_init.c (s390_init): Initialize frame_nregs, - set_initial_registers_tid, normalize_pc and unwind. - * s390_initreg.c: New file. - * s390_unwind.c: New file. - -2013-12-15 Jan Kratochvil <jan.kratochvil@redhat.com> - - unwinder: ppc and ppc64 - * Makefile.am (ppc_SRCS, ppc64_SRCS): Add ppc_initreg.c. - * ppc64_init.c (ppc64_init): Initialize also frame_nregs, - set_initial_registers_tid and dwarf_to_regno. - * ppc_corenote.c (PRSTATUS_REGSET_ITEMS) <nip>: Set PC_REGISTER. - * ppc_init.c (ppc64_init): Initialize also frame_nregs, - set_initial_registers_tid and dwarf_to_regno. - * ppc_initreg.c: New file. - -2013-11-25 Petr Machata <pmachata@redhat.com> - - * Makefile.am (modules): Add aarch64. - (libebl_pic): Add libebl_aarch64_pic.a. - (aarch64_SRCS): New variable. - (libebl_aarch64_pic_a_SOURCES): Likewise. - (am_libebl_aarch64_pic_a_OBJECTS): Likewise. - (aarch64_regs_no_Wformat): Likewise. - * aarch64_corenote.c, aarch64_init.c: New files. - * aarch64_regs.c, aarch64_reloc.def: Likewise. - * aarch64_retval.c, aarch64_symbol.c: Likewise. - * libebl_CPU.h (dwarf_peel_type): New function. - (dwarf_peeled_die_type): Likewise. - -2013-11-07 Jan Kratochvil <jan.kratochvil@redhat.com> - Mark Wielaard <mjw@redhat.com> - - * Makefile.am (i386_SRCS): Add i386_initreg.c. - (x86_64_SRCS): Add x86_64_initreg.c. - * i386_initreg.c: New file. - * i386_init.c (i386_init): Initialize frame_nregs and - set_initial_registers_tid. - * x86_64_initreg.c: New file. - * x86_64_init.c (x86_64_init): Initialize frame_nregs and - set_initial_registers_tid. - -2013-10-06 Mark Wielaard <mjw@redhat.com> - - * ppc_cfi.c (ppc_abi_cfi): Use DW_CFA_val_offset for reg1, not - DW_CFA_val_expression. - -2013-08-29 Mark Wielaard <mjw@redhat.com> - - * Makefile.am (arm_SRCS): Add arm_cfi.c. - * arm_cfi.c: New file. - * arm_init.c (arm_init): Initialize abi_cfi. - -2013-08-27 Jan Kratochvil <jan.kratochvil@redhat.com> - - * Makefile.am (ppc_SRCS, ppc64_SRCS): Add ppc_cfi.c. - (s390_SRCS): Add s390_cfi.c. - * ppc64_init.c (ppc64_init): Initialize abi_cfi. - * ppc_cfi.c: New file. - * ppc_init.c (ppc_init): Initialize abi_cfi. - * s390_cfi.c: New file. - * s390_init.c (s390_init): Initialize abi_cfi. - -2013-08-28 Mark Wielaard <mjw@redhat.com> - - * arm_regs.c (arm_register_info): Set *prefix to "". - * ppc_regs.c (ppc_register_info): Likewise. - * sh_regs.c (sh_register_info): Likewise. - -2013-04-24 Mark Wielaard <mjw@redhat.com> - - * Makefile.am: Use AM_CPPFLAGS instead of INCLUDES. - -2013-02-06 Mark Wielaard <mjw@redhat.com> - - * libebl_CPU.h (DWARF_TAG_OR_RETURN): New macro. - * backends/alpha_retval.c (alpha_return_value_location): Use new - DWARF_TAG_OR_RETURN macro instead of dwarf_tag (). - * backends/arm_retval.c (arm_return_value_location): Likewise. - * backends/i386_retval.c (i386_return_value_location): Likewise. - * backends/ia64_retval.c (hfa_type): Likewise. - (ia64_return_value_location): Likewise. - * backends/ppc64_retval.c (ppc64_return_value_location): Likewise. - * backends/ppc_retval.c (ppc_return_value_location): Likewise. - * backends/s390_retval.c (s390_return_value_location): Likewise. - * backends/sh_retval.c (sh_return_value_location): Likewise. - * backends/sparc_retval.c (sparc_return_value_location): Likewise. - * backends/tilegx_retval.c (tilegx_return_value_location): Likewise. - * backends/x86_64_retval.c (x86_64_return_value_location): Likewise. - -2013-01-29 Jan Kratochvil <jan.kratochvil@redhat.com> - Roland McGrath <roland@hack.frob.com> - - * Makefile.am (s390_SRCS): Add s390_corenote.c and s390x_corenote.c. - * linux-core-note.c (ALIGN_PR_REG): New definitions. - (struct EBLHOOK(prstatus)): Change field pr_reg to anonymous struct with - ALIGN_PR_REG. - (EXTRA_ITEMS): New macro. - * s390_corenote.c: New file. - * s390_init.c (s390x_core_note): New declaration. - (s390_init): Install s390x_core_note and s390_core_note. - * s390x_corenote.c: New file. - -2013-01-30 Jan Kratochvil <jan.kratochvil@redhat.com> - - * arm_corenote.c (vfp_items): Remove zero COUNT initializer. - -2012-10-12 Jan Kratochvil <jan.kratochvil@redhat.com> - - * linux-core-note.c (prstatus_items): Rename groups of sigpend and - sighold to signal2 and signal3. - -2012-09-24 Petr Machata <pmachata@redhat.com> - - * arm_corenote.c (vfp_items, vfp_regs): New const variables. - (EXTRA_NOTES): Use it for NT_ARM_VFP. - * linux-core-note.c (EXTRA_REGSET_ITEMS): New macro. - -2012-09-17 Petr Machata <pmachata@redhat.com> - - * arm_corenote.c (FPREGSET_SIZE): Change to 116. - -2012-08-22 Jeff Kenton <jkenton@tilera.com> - - * Makefile.am (modules): Add tilegx. - (libebl_pic): Add libebl_tilegx_pic.a. - (tilegx_SRCS): New variable. - (libebl_tilegx_pic_a_SOURCES): Likewise. - (am_libebl_tilegx_pic_a_OBJECTS): Likewise. - * tilegx_corenote.c: New file. - * tilegx_regs.c: New file. - * tilegx_reloc.def: New file. - * tilegx_init.c: New file. - * tilegx_retval.c: New file. - * tilegx_symbol.c: New file. - -2011-03-09 Mark Wielaard <mjw@redhat.com> - - * alpha_init.c (alpha_init): Initialize check_st_other_bits hook. - * alpha_symbol.c (alpha_check_st_other_bits): New function. - -2011-03-09 Roland McGrath <roland@redhat.com> - - * alpha_symbol.c (alpha_check_special_symbol): New function. - * alpha_init.c (alpha_init): Initialize hook. - -2010-11-08 Roland McGrath <roland@redhat.com> - - * i386_retval.c (loc_intreg): Typo fix. - Reported by Thorsten Glaser <tg@mirbsd.de>. - -2010-04-10 Matt Fleming <matt@console-pimps.org> - - * sh_corenote.c: New file. - * sh_regs.c: New file. - * sh_retval.c: New file. - * sh_symbol.c (sh_machine_flag_check): New function. - * Makefile.am (sh_SRCS): Add new files. - * sh_init.c (sh_init): Add initializers. - -2010-04-07 Roland McGrath <roland@redhat.com> - - * arm_reloc.def: Accept PC24 and ABS32 in EXEC|DYN too. - -2010-03-04 Ulrich Drepper <drepper@redhat.com> - - * x86_64_reloc.def: Add entries for R_X86_64_SIZE32 and - R_X86_64_SIZE64. - -2010-02-18 Roland McGrath <roland@redhat.com> - - * Makefile.am (libebl_%.so): Use multi-target pattern rule instead of - intermediate dependency file for libebl_%.map, working around apparent - make -j timing-sensitive bugs. - -2010-02-15 Roland McGrath <roland@redhat.com> - - * Makefile.am: Use config/eu.am for common stuff. - -2010-01-05 Roland McGrath <roland@redhat.com> - - * arm_retval.c (arm_return_value_location): Use dwarf_aggregate_size. - * ia64_retval.c (ia64_return_value_location): Likewise. - * ppc_retval.c (ppc_return_value_location): Likewise. - * ppc64_retval.c (ppc64_return_value_location): Likewise. - * sparc_retval.c (sparc_return_value_location): Likewise. - - * ppc64_retval.c (ppc64_return_value_location): - Use vr2 for DW_TAG_array_type with DW_AT_GNU_vector. - * ppc_retval.c (ppc_return_value_location): Likewise. - -2010-01-04 Roland McGrath <roland@redhat.com> - - * linux-core-note.c (vmcoreinfo_items): New static const variable. - (EBLHOOK(core_note)): Update arguments for new protocol. - Validate the name as "CORE" or "LINUX" for known n_type cases. - Handle name "VMCOREINFO" n_type=0 with vmcoreinfo_items. - * i386_corenote.c (EXTRA_NOTES): Update parameter usage. - * x86_corenote.c (EXTRA_NOTES_IOPERM): Likewise. - -2009-09-10 Mark Wielaard <mjw@redhat.com> - - * sparc_retval.c: Fix license header. - -2009-08-07 Roland McGrath <roland@redhat.com> - - * x86_64_reloc.def: Add PC64, GOTOFF64, GOTPC32, GOTPC32_TLSDESC, - TLSDESC_CALL, TLSDESC. - -2009-07-08 Roland McGrath <roland@redhat.com> - - * x86_64_cfi.c (x86_64_abi_cfi): New file. - * Makefile.am (x86_64_SRCS): Add it. - * x86_64_init.c (x86_64_init): Add initializer. - - * i386_cfi.c (i386_abi_cfi): New file. - * Makefile.am (i386_SRCS): Add it. - * i386_init.c (i386_init): Initialize abi_cfi hook. - -2009-06-01 Ulrich Drepper <drepper@redhat.com> - - * i386_reloc.def: Add IRELATIVE entry. - * x86_64_reloc.def: Likewise. - -2009-04-16 Roland McGrath <roland@redhat.com> - - * arm_regs.c (arm_register_info): Handle VFP registers. - - * i386_corenote.c (EXTRA_NOTES): NT_PRXFPREG -> NT_PRXFPREG - -2009-04-14 Roland McGrath <roland@redhat.com> - - * arm_retval.c: New file. - * arm_attrs.c: New file. - * Makefile.am (arm_SRCS): Add them. - * arm_symbol.c (arm_segment_type_name): New function. - (arm_section_type_name): New function. - (arm_machine_flag_check): New function. - * arm_init.c (arm_init): Initialize those hooks. - - * arm_regs.c: New file. - * arm_corenote.c: New file. - * arm_auxv.c: New file. - * Makefile.am (arm_SRCS): Add them. - * arm_init.c (arm_init): Initialize core_note, register_info, - and auxv_info hooks. - - * ia64_symbol.c (ia64_section_type_name): Remove "SHT_" prefixes. - -2009-04-01 Roland McGrath <roland@redhat.com> - - * sparc_reloc.def: Update table. - Data from Dave Miller <davem@davemloft.net>. - -2009-02-15 Roland McGrath <roland@redhat.com> - - * ppc_attrs.c (ppc_check_object_attribute): Handle tag - GNU_Power_ABI_Struct_Return. - -2008-10-04 Ulrich Drepper <drepper@redhat.com> - - * i386_reloc.def: Fix entries for TLS_GOTDESC, TLS_DESC_CALL, and - TLS_DESC. - -2008-08-01 Roland McGrath <roland@redhat.com> - - * x86_corenote.c: New file. - * Makefile.am (noinst_HEADERS): Add it. - * i386_corenote.c: Include it, use EXTRA_NOTES_IOPERM in EXTRA_NOTES. - * x86_64_corenote.c: Likewise. - - * linux-core-note.c (prstatus_items): Use 'B' instead of 'b' - for sigpend and sighold. - -2008-07-04 Roland McGrath <roland@redhat.com> - - * i386_syscall.c: New file. - * x86_64_syscall.c: New file. - * ppc_syscall.c: New file. - * Makefile.am (i386_SRCS, x86_64_SRCS, ppc_SRCS, ppc64_SRCS): Add them. - * i386_init.c (i386_init): Initialize syscall_abi hook. - * x86_64_init.c (x86_64_init): Likewise. - * ppc_init.c (ppc_init): Likewise. - * ppc64_init.c (ppc64_init): Likewise. - - * ppc_corenote.c (PRSTATUS_REGSET_ITEMS): Add nip. - Fix offset calculation for 64-bit case. - -2008-04-04 Roland McGrath <roland@redhat.com> - - * alpha_symbol.c (alpha_check_special_section): New function. - * alpha_init.c (alpha_init): Initialize check_special_section hook. - -2008-03-31 Roland McGrath <roland@redhat.com> - - * sparc_symbol.c (sparc_symbol_type_name): New function. - (sparc_dynamic_tag_name): New function. - (sparc_dynamic_tag_check): New function. - * sparc_init.c (sparc_init): Initialize those hooks. - - * sparc_symbol.c (sparc_check_special_section): New function. - * sparc_init.c (sparc_init): Initialize check_special_section hook. - -2008-02-20 Roland McGrath <roland@redhat.com> - - * ppc_attrs.c: New file. - * Makefile.am (ppc_SRCS, ppc64_SRCS): Add it. - * ppc_init.c (ppc_init): Initialize check_object_attribute hook. - -2008-02-14 Roland McGrath <roland@redhat.com> - - * alpha_auxv.c: New file. - * Makefile.am (alpha_SRCS): Add it. - * alpha_init.c (alpha_init): Initialize auxv_info hook. - -2008-02-08 Roland McGrath <roland@redhat.com> - - * ppc_corenote.c (spe_regs): New const variable. - (EXTRA_NOTES): Use it for NT_PPC_SPE. - -2008-01-02 Roland McGrath <roland@redhat.com> - - * i386_corenote.c (tls_items): New const table. - (tls_info): New function, uses it. - (EXTRA_NOTES): Use it to handle NT_386_TLS. - -2008-01-08 Ulrich Drepper <drepper@redhat.com> - - * Makefile.am: Add x86-64 disassembler. - * x86_64_init.c (x86_64_init): Hook up disassembler. - -2007-12-28 Ulrich Drepper <drepper@redhat.com> - - * Makefile.am: Add x86 disassembler. - * i386_init.c (i386_init): Hook up disassembler. - -2007-12-15 Roland McGrath <roland@redhat.com> - - * ppc_regs.c (ppc_register_info): Return "spefscr", not "spr512". - -2007-10-18 Roland McGrath <roland@redhat.com> - - * ppc_regs.c (ppc_register_info): Assign 67 to "vscr". - Return "vector" and 32 bits for vscr and vrsave. - * ppc_corenote.c (altivec_regs): New variable. - (EXTRA_NOTES): New macro, handle NT_PPC_VMX. - - * linux-core-note.c (EXTRA_REGSET): New macro. - Remove NT_PRXFPREG case. Instead, use EXTRA_NOTES if defined. - * i386_corenote.c (EXTRA_NOTES): Define it. - -2007-10-09 Roland McGrath <roland@redhat.com> - - * sparc_auxv.c: New file. - * Makefile.am (sparc_SRCS): Add it. - * sparc_init.c (sparc_init): Initialize auxv_info hook. - -2007-10-08 Roland McGrath <roland@redhat.com> - - * linux-core-note.c (TIMEVAL_FIELD): New macro. - (prstatus_items): Use it. - * sparc_corenote.c: New file. - * sparc64_corenote.c: New file. - * Makefile.am (sparc_SRCS): Add them. - * sparc_init.c (sparc_init): Initialize core_note hook. - - * sparc_symbol.c (sparc_machine_flag_check): New function. - * sparc_init.c (sparc_init): Use it. - -2007-09-27 Roland McGrath <roland@redhat.com> - - * alpha_retval.c: Use dwarf_attr_integrate and dwarf_hasattr_integrate. - * i386_retval.c: Likewise. - * ia64_retval.c: Likewise. - * ppc64_retval.c: Likewise. - * ppc_retval.c: Likewise. - * s390_retval.c: Likewise. - * sparc_retval.c: Likewise. - * x86_64_retval.c: Likewise. - -2007-10-31 Ulrich Drepper <drepper@redhat.com> - - * Makefile.am: More dependencies for the libebl_* libraries. - -2007-08-23 Roland McGrath <roland@redhat.com> - - * x86_64_regs.c (x86_64_register_info): Put %rflags in "integer" set. - -2007-08-22 Roland McGrath <roland@redhat.com> - - * linux-core-note.c (prstatus_items): Add .group initializers. - (prpsinfo_items): Likewise. - * x86_64_corenote.c (PRSTATUS_REGSET_ITEMS): Likewise. - * i386_corenote.c (PRSTATUS_REGSET_ITEMS): Likewise. - * ppc_corenote.c (PRSTATUS_REGSET_ITEMS): Likewise. - -2007-08-20 Roland McGrath <roland@redhat.com> - - * ppc_symbol.c (ppc_check_special_symbol): For _GLOBAL_OFFSET_TABLE_ - when DT_PPC_GOT is not found, anywhere in the section is valid. - -2007-08-19 Roland McGrath <roland@redhat.com> - - * i386_auxv.c: New file. - * Makefile.am (i386_SRCS, x86_64_SRCS): Add it. - * ppc_auxv.c: New file. - * Makefile.am (ppc_SRCS, ppc64_SRCS): Add it. - * i386_init.c (i386_init): Initialize auxv_info hook. - * x86_64_init.c (x86_64_init): Likewise. - * ppc_init.c (ppc_init): Likewise. - * ppc64_init.c (ppc64_init): Likewise. - - * alpha_corenote.c: New file. - * Makefile.am (alpha_SRCS): Add it. - * alpha_init.c (alpha_init): Initialize core_note hook. - - * ppc_corenote.c: New file. - * ppc64_corenote.c: New file. - * Makefile.am (ppc_SRCS, ppc64_SRCS): Add them. - * ppc_init.c (ppc_init): Initialize core_note hook. - * ppc64_init.c (ppc64_init): Likewise. - - * linux-core-note.c: New file. - * Makefile.am (noinst_HEADERS): Add it. - * i386_corenote.c: Rewritten. - * x86_64_corenote.c: Likewise. - -2007-05-23 Roland McGrath <roland@redhat.com> - - * alpha_regs.c (alpha_register_info): fp -> s6 - -2007-04-26 Roland McGrath <roland@redhat.com> - - * alpha_symbol.c (alpha_machine_section_flag_check): New function. - * alpha_init.c (alpha_init): Initialize hook. - - * alpha_regs.c: New file. - * Makefile.am (alpha_SRCS): Add it. - * alpha_init.c (alpha_init): Initialize register_info hook. - -2007-04-22 Roland McGrath <roland@redhat.com> - - * ppc_regs.c (ppc_register_info): Use some names instead of sprNNN: - mq, xer, lr, ctr, dsisr, dar, dec, vrsave. - Set *BITS to 64 for FPU registers. - - * i386_regs.c (i386_register_info): Set *BITS to 16 for fctrl, fstat. - * x86_64_regs.c (x86_64_register_info): Likewise for fcw, fsw. - -2007-04-01 Roland McGrath <roland@redhat.com> - - * x86_64_regs.c (x86_64_register_info): Add more registers from newer - ABI spec. - -2007-01-11 Roland McGrath <roland@redhat.com> - - * ia64_symbol.c (ia64_machine_section_flag_check): New function. - * ia64_init.c (ia64_init): Use it. - - * ia64_symbol.c (ia64_section_type_name): Typo fix in string. - -2006-10-09 Roland McGrath <roland@redhat.com> - - * ia64_symbol.c (ia64_reloc_simple_type): Treat SECREL types as simple. - -2006-08-29 Roland McGrath <roland@redhat.com> - - * sparc_retval.c: New file. - * Makefile.am (sparc_SRCS): Add it. - * sparc_init.c (sparc_init): Initialize return_value_location hook. - -2006-08-22 Roland McGrath <roland@redhat.com> - - * i386_regs.c (i386_register_name): Renamed i386_register_info. - Take new args, yield more info. - * i386_init.c (i386_init): Update initializer. - * ia64_regs.c (ia64_register_name): Likewise. - * ia64_init.c (ia64_init): Likewise. - * ppc_regs.c (ppc_register_name): Likewise. - * ppc64_init.c (ppc64_init): Likewise. - * ppc_init.c (ppc_init): Likewise. - * s390_regs.c (s390_register_name): Likewise. - * s390_init.c (s390_init): Likewise. - * sparc_regs.c (sparc_register_name): Likewise. - * sparc_init.c (sparc_init): Likewise. - * x86_64_regs.c (x86_64_register_name): Likewise. - * x86_64_init.c (x86_64_init): Likewise. - -2006-08-08 Roland McGrath <roland@redhat.com> - - * Makefile.am (%.os): Don't depend on %.o, since we don't actually - need static object for anything here. This rule is the only source of - .deps/ files. - -2006-06-23 Stepan Kasal <skasal@redhat.com> - - * Makefile.am (PACKAGE_VERSION): Remove superfluous definition. - -2006-08-03 Roland McGrath <roland@redhat.com> - - * sparc_regs.c (sparc_register_name): List 32 FPU regs only for - EM_SPARC. EM_SPARC32PLUS also has 64. - -2006-07-21 Roland McGrath <roland@redhat.com> - - * i386_regs.c (i386_register_name): Fix return value when using stpcpy. - * ppc_regs.c (ppc_register_name): Likewise. - * s390_regs.c (s390_register_name): Likewise. - - * ia64_retval.c: New file. - * Makefile.am (ia64_SRCS): Add it. - * ia64_init.c (ia64_init): Install return_value_location hook. - - * ia64_regs.c: New file. - * Makefile.am (ia64_SRCS): Add it. - * ia64_init.c (ia64_init): Install register_name hook. - -2006-07-05 Ulrich Drepper <drepper@redhat.com> - - * alpha_init.c: Initialize sysvhash_entrysize. - * s390_init.c: Likewise. - -2006-07-04 Ulrich Drepper <drepper@redhat.com> - - * common-reloc.c (relative_reloc_p): New function. - (init_reloc): Hook it up. - * ia64_reloc.def: Define NO_RELATIVE_RELOC. - -2006-06-13 Roland McGrath <roland@redhat.com> - - * ppc64_retval.c: Remove SVR4_STRUCT_RETURN braino. - -2006-06-12 Ulrich Drepper <drepper@redhat.com> - - * common-reloc.c (none_reloc_p): New function. - (init_reloc): Hook it up. - -2006-02-22 Roland McGrath <roland@redhat.com> - - * ppc64_retval.c (SVR4_STRUCT_RETURN): New macro. - (ppc64_return_value_location): Use registers for aggregate conditional - on that. - * ppc_retval.c (SVR4_STRUCT_RETURN): New macro. - (ppc_return_value_location): Use registers for aggregate conditional - on that. - -2006-01-12 Roland McGrath <roland@redhat.com> - - * s390_retval.c: New file. - * Makefile.am (s390_SRCS): Add it. - * s390_init.c (s390_init): Install return_value_location hook. - -2006-01-11 Roland McGrath <roland@redhat.com> - - * s390_regs.c: New file. - * Makefile.am (s390_SRCS): Add it. - * s390_init.c (s390_init): Install register_name hook. - - * s390_reloc.def: Update bits per - Martin Schwidefsky <schwidefsky@de.ibm.com>. - -2005-12-10 Ulrich Drepper - - * common-reloc.c (R_NAME): Generate string correctly. - -2005-12-05 Roland McGrath <roland@redhat.com> - - * i386_regs.c (i386_register_name): Use a table for the first 8 regs. - * x86_64_regs.c (x86_64_register_name): Likewise. - -2005-11-25 Roland McGrath <roland@redhat.com> - - * i386_regs.c (i386_register_name): Return 0, not 1, for gaps. - - * i386_regs.c: New file. - * ppc_regs.c: New file. - * sparc_regs.c: New file. - * x86_64_regs.c: New file. - * Makefile.am - (i386_SRCS, x86_64_SRCS, ppc_SRCS, ppc64_SRCS, sparc_SRCS): Add them. - * i386_init.c: Initialize register_name hook. - * ppc_init.c: Likewise. - * ppc64_init.c: Likewise. - * sparc_init.c: Likewise. - * x86_64_init.c: Likewise. - -2005-11-19 Roland McGrath <roland@redhat.com> - - * ppc64_reloc.def: REL30 -> ADDR30. - -2005-11-18 Roland McGrath <roland@redhat.com> - - * alpha_init.c: Use HOOK macro. - * arm_init.c: Likewise. - * i386_init.c: Likewise. - * ia64_init.c: Likewise. - * ppc64_init.c: Likewise. - * ppc_init.c: Likewise. - * s390_init.c: Likewise. - * sh_init.c: Likewise. - * sparc_init.c: Likewise. - * x86_64_init.c: Likewise. - -2005-11-17 Roland McGrath <roland@redhat.com> - - * Makefile.am (uninstall): Don't try to remove $(pkgincludedir). - (CLEANFILES): Add libebl_$(m).so. - - * ppc_reloc.def: Update bits per Alan Modra <amodra@bigpond.net.au>. - * ppc64_reloc.def: Likewise. - -2005-11-15 Roland McGrath <roland@redhat.com> - - * Contents moved here from ../libebl. diff --git a/src/backends/Makefile b/src/backends/Makefile deleted file mode 100644 index a6152b5a..00000000 --- a/src/backends/Makefile +++ /dev/null @@ -1,914 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# backends/Makefile. Generated from Makefile.in by configure. - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - - - - - -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/elfutils -pkgincludedir = $(includedir)/elfutils -pkglibdir = $(libdir)/elfutils -pkglibexecdir = $(libexecdir)/elfutils -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = x86_64-unknown-linux-gnu -host_triplet = x86_64-unknown-linux-gnu -DIST_COMMON = $(top_srcdir)/config/eu.am $(srcdir)/Makefile.in \ - $(srcdir)/Makefile.am $(top_srcdir)/config/depcomp \ - $(noinst_HEADERS) ChangeLog -subdir = backends -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/biarch.m4 \ - $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/zip.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LIBRARIES = $(noinst_LIBRARIES) -ARFLAGS = cru -AM_V_AR = $(am__v_AR_$(V)) -am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) -am__v_AR_0 = @echo " AR " $@; -am__v_AR_1 = -libebl_aarch64_pic_a_AR = $(AR) $(ARFLAGS) -libebl_aarch64_pic_a_LIBADD = -am__objects_1 = aarch64_init.$(OBJEXT) aarch64_regs.$(OBJEXT) \ - aarch64_symbol.$(OBJEXT) aarch64_corenote.$(OBJEXT) \ - aarch64_retval.$(OBJEXT) aarch64_cfi.$(OBJEXT) \ - aarch64_initreg.$(OBJEXT) -libebl_aarch64_pic_a_OBJECTS = $(am_libebl_aarch64_pic_a_OBJECTS) -libebl_alpha_pic_a_AR = $(AR) $(ARFLAGS) -libebl_alpha_pic_a_LIBADD = -am__objects_2 = alpha_init.$(OBJEXT) alpha_symbol.$(OBJEXT) \ - alpha_retval.$(OBJEXT) alpha_regs.$(OBJEXT) \ - alpha_corenote.$(OBJEXT) alpha_auxv.$(OBJEXT) -libebl_alpha_pic_a_OBJECTS = $(am_libebl_alpha_pic_a_OBJECTS) -libebl_arm_pic_a_AR = $(AR) $(ARFLAGS) -libebl_arm_pic_a_LIBADD = -am__objects_3 = arm_init.$(OBJEXT) arm_symbol.$(OBJEXT) \ - arm_regs.$(OBJEXT) arm_corenote.$(OBJEXT) arm_auxv.$(OBJEXT) \ - arm_attrs.$(OBJEXT) arm_retval.$(OBJEXT) arm_cfi.$(OBJEXT) \ - arm_initreg.$(OBJEXT) -libebl_arm_pic_a_OBJECTS = $(am_libebl_arm_pic_a_OBJECTS) -libebl_i386_pic_a_AR = $(AR) $(ARFLAGS) -libebl_i386_pic_a_LIBADD = -am__objects_4 = i386_init.$(OBJEXT) i386_symbol.$(OBJEXT) \ - i386_corenote.$(OBJEXT) i386_cfi.$(OBJEXT) \ - i386_retval.$(OBJEXT) i386_regs.$(OBJEXT) i386_auxv.$(OBJEXT) \ - i386_syscall.$(OBJEXT) i386_initreg.$(OBJEXT) -libebl_i386_pic_a_OBJECTS = $(am_libebl_i386_pic_a_OBJECTS) -libebl_ia64_pic_a_AR = $(AR) $(ARFLAGS) -libebl_ia64_pic_a_LIBADD = -am__objects_5 = ia64_init.$(OBJEXT) ia64_symbol.$(OBJEXT) \ - ia64_regs.$(OBJEXT) ia64_retval.$(OBJEXT) -libebl_ia64_pic_a_OBJECTS = $(am_libebl_ia64_pic_a_OBJECTS) -libebl_ppc64_pic_a_AR = $(AR) $(ARFLAGS) -libebl_ppc64_pic_a_LIBADD = -am__objects_6 = ppc64_init.$(OBJEXT) ppc64_symbol.$(OBJEXT) \ - ppc64_retval.$(OBJEXT) ppc64_corenote.$(OBJEXT) \ - ppc_regs.$(OBJEXT) ppc_auxv.$(OBJEXT) ppc_attrs.$(OBJEXT) \ - ppc_syscall.$(OBJEXT) ppc_cfi.$(OBJEXT) ppc_initreg.$(OBJEXT) \ - ppc64_resolve_sym.$(OBJEXT) -libebl_ppc64_pic_a_OBJECTS = $(am_libebl_ppc64_pic_a_OBJECTS) -libebl_ppc_pic_a_AR = $(AR) $(ARFLAGS) -libebl_ppc_pic_a_LIBADD = -am__objects_7 = ppc_init.$(OBJEXT) ppc_symbol.$(OBJEXT) \ - ppc_retval.$(OBJEXT) ppc_regs.$(OBJEXT) ppc_corenote.$(OBJEXT) \ - ppc_auxv.$(OBJEXT) ppc_attrs.$(OBJEXT) ppc_syscall.$(OBJEXT) \ - ppc_cfi.$(OBJEXT) ppc_initreg.$(OBJEXT) -libebl_ppc_pic_a_OBJECTS = $(am_libebl_ppc_pic_a_OBJECTS) -libebl_s390_pic_a_AR = $(AR) $(ARFLAGS) -libebl_s390_pic_a_LIBADD = -am__objects_8 = s390_init.$(OBJEXT) s390_symbol.$(OBJEXT) \ - s390_regs.$(OBJEXT) s390_retval.$(OBJEXT) \ - s390_corenote.$(OBJEXT) s390x_corenote.$(OBJEXT) \ - s390_cfi.$(OBJEXT) s390_initreg.$(OBJEXT) \ - s390_unwind.$(OBJEXT) -libebl_s390_pic_a_OBJECTS = $(am_libebl_s390_pic_a_OBJECTS) -libebl_sh_pic_a_AR = $(AR) $(ARFLAGS) -libebl_sh_pic_a_LIBADD = -am__objects_9 = sh_init.$(OBJEXT) sh_symbol.$(OBJEXT) \ - sh_corenote.$(OBJEXT) sh_regs.$(OBJEXT) sh_retval.$(OBJEXT) -libebl_sh_pic_a_OBJECTS = $(am_libebl_sh_pic_a_OBJECTS) -libebl_sparc_pic_a_AR = $(AR) $(ARFLAGS) -libebl_sparc_pic_a_LIBADD = -am__objects_10 = sparc_init.$(OBJEXT) sparc_symbol.$(OBJEXT) \ - sparc_regs.$(OBJEXT) sparc_retval.$(OBJEXT) \ - sparc_corenote.$(OBJEXT) sparc64_corenote.$(OBJEXT) \ - sparc_auxv.$(OBJEXT) -libebl_sparc_pic_a_OBJECTS = $(am_libebl_sparc_pic_a_OBJECTS) -libebl_tilegx_pic_a_AR = $(AR) $(ARFLAGS) -libebl_tilegx_pic_a_LIBADD = -am__objects_11 = tilegx_init.$(OBJEXT) tilegx_symbol.$(OBJEXT) \ - tilegx_regs.$(OBJEXT) tilegx_retval.$(OBJEXT) \ - tilegx_corenote.$(OBJEXT) -libebl_tilegx_pic_a_OBJECTS = $(am_libebl_tilegx_pic_a_OBJECTS) -libebl_x86_64_pic_a_AR = $(AR) $(ARFLAGS) -libebl_x86_64_pic_a_LIBADD = -am__objects_12 = x86_64_init.$(OBJEXT) x86_64_symbol.$(OBJEXT) \ - x86_64_corenote.$(OBJEXT) x86_64_cfi.$(OBJEXT) \ - x86_64_retval.$(OBJEXT) x86_64_regs.$(OBJEXT) \ - i386_auxv.$(OBJEXT) x86_64_syscall.$(OBJEXT) \ - x86_64_initreg.$(OBJEXT) -libebl_x86_64_pic_a_OBJECTS = $(am_libebl_x86_64_pic_a_OBJECTS) -AM_V_P = $(am__v_P_$(V)) -am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_$(V)) -am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_$(V)) -am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I. -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/config/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_$(V)) -am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_$(V)) -am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(libebl_aarch64_pic_a_SOURCES) \ - $(libebl_alpha_pic_a_SOURCES) $(libebl_arm_pic_a_SOURCES) \ - $(libebl_i386_pic_a_SOURCES) $(libebl_ia64_pic_a_SOURCES) \ - $(libebl_ppc64_pic_a_SOURCES) $(libebl_ppc_pic_a_SOURCES) \ - $(libebl_s390_pic_a_SOURCES) $(libebl_sh_pic_a_SOURCES) \ - $(libebl_sparc_pic_a_SOURCES) $(libebl_tilegx_pic_a_SOURCES) \ - $(libebl_x86_64_pic_a_SOURCES) -DIST_SOURCES = $(libebl_aarch64_pic_a_SOURCES) \ - $(libebl_alpha_pic_a_SOURCES) $(libebl_arm_pic_a_SOURCES) \ - $(libebl_i386_pic_a_SOURCES) $(libebl_ia64_pic_a_SOURCES) \ - $(libebl_ppc64_pic_a_SOURCES) $(libebl_ppc_pic_a_SOURCES) \ - $(libebl_s390_pic_a_SOURCES) $(libebl_sh_pic_a_SOURCES) \ - $(libebl_sparc_pic_a_SOURCES) $(libebl_tilegx_pic_a_SOURCES) \ - $(libebl_x86_64_pic_a_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -DATA = $(noinst_DATA) -HEADERS = $(noinst_HEADERS) -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing aclocal-1.14 -AMTAR = $${TAR-tar} -AM_DEFAULT_VERBOSITY = 1 -AR = ar -AUTOCONF = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoconf -AUTOHEADER = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing autoheader -AUTOMAKE = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing automake-1.14 -AWK = gawk -CC = gcc -CCDEPMODE = depmode=gcc3 -CC_BIARCH = gcc -m32 -CFLAGS = -g -O2 -CPP = gcc -E -CPPFLAGS = -CYGPATH_W = echo -DEBUGPRED = 0 -DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DLOCALEDIR='"${localedir}"' -DEPDIR = .deps -ECHO_C = -ECHO_N = -n -ECHO_T = -EGREP = /bin/grep -E -EXEEXT = -GETTEXT_MACRO_VERSION = 0.18 -GMSGFMT = /usr/bin/msgfmt -GMSGFMT_015 = /usr/bin/msgfmt -GREP = /bin/grep -HAVE_VALGRIND = -INSTALL = /usr/bin/install -c -INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_PROGRAM = ${INSTALL} -INSTALL_SCRIPT = ${INSTALL} -INSTALL_STRIP_PROGRAM = $(install_sh) -c -s -LDFLAGS = -LEX = flex -LEXLIB = -lfl -LEX_OUTPUT_ROOT = lex.yy -LIBEBL_SUBDIR = elfutils -LIBOBJS = -LIBS = -LTLIBOBJS = -MAINT = # -MAKEINFO = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/missing makeinfo -MKDIR_P = /bin/mkdir -p -MODVERSION = Build on enh.mtv.corp.google.com 2015-02-18T19:32:04-0800 -MSGFMT = /usr/bin/msgfmt -MSGFMT_015 = /usr/bin/msgfmt -MSGMERGE = /usr/bin/msgmerge -NM = nm -OBJEXT = o -PACKAGE = elfutils -PACKAGE_BUGREPORT = https://bugzilla.redhat.com/ -PACKAGE_NAME = elfutils -PACKAGE_STRING = elfutils 0.161 -PACKAGE_TARNAME = elfutils -PACKAGE_URL = -PACKAGE_VERSION = 0.161 -PATH_SEPARATOR = : -RANLIB = ranlib -READELF = readelf -SET_MAKE = -SHELL = /bin/sh -STRIP = -USE_NLS = yes -VERSION = 0.161 -XGETTEXT = /usr/bin/xgettext -XGETTEXT_015 = /usr/bin/xgettext -XGETTEXT_EXTRA_OPTIONS = -YACC = bison -y -YFLAGS = -abs_builddir = /huge-ssd/aosp-arm64/external/elfutils/src/backends -abs_srcdir = /huge-ssd/aosp-arm64/external/elfutils/src/backends -abs_top_builddir = /huge-ssd/aosp-arm64/external/elfutils/src -abs_top_srcdir = /huge-ssd/aosp-arm64/external/elfutils/src -ac_ct_AR = ar -ac_ct_CC = gcc -am__include = include -am__leading_dot = . -am__quote = -am__tar = $${TAR-tar} chof - "$$tardir" -am__untar = $${TAR-tar} xf - -base_cpu = none -bindir = ${exec_prefix}/bin -build = x86_64-unknown-linux-gnu -build_alias = -build_cpu = x86_64 -build_os = linux-gnu -build_vendor = unknown -builddir = . -datadir = ${datarootdir} -datarootdir = ${prefix}/share -docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} -dvidir = ${docdir} -eu_version = 161 -exec_prefix = ${prefix} -host = x86_64-unknown-linux-gnu -host_alias = -host_cpu = x86_64 -host_os = linux-gnu -host_vendor = unknown -htmldir = ${docdir} -includedir = ${prefix}/include -infodir = ${datarootdir}/info -install_sh = ${SHELL} /huge-ssd/aosp-arm64/external/elfutils/src/config/install-sh -libdir = ${exec_prefix}/lib -libexecdir = ${exec_prefix}/libexec -localedir = ${datarootdir}/locale -localstatedir = ${prefix}/var -mandir = ${datarootdir}/man -mkdir_p = $(MKDIR_P) -oldincludedir = /usr/include -pdfdir = ${docdir} -prefix = /usr/local -program_transform_name = s,x,x, -psdir = ${docdir} -sbindir = ${exec_prefix}/sbin -sharedstatedir = ${prefix}/com -srcdir = . -sysconfdir = ${prefix}/etc -target_alias = -top_build_prefix = ../ -top_builddir = .. -top_srcdir = .. -zip_LIBS = -lz -AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. \ - -I$(top_srcdir)/libebl -I$(top_srcdir)/libasm \ - -I$(top_srcdir)/libelf -I$(top_srcdir)/libdw -AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \ - $(if $($(*F)_no_Werror),,-Werror) \ - $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \ - $($(*F)_CFLAGS) - -COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE)) -CLEANFILES = *.gcno *.gcda $(foreach m,$(modules), libebl_$(m).map \ - libebl_$(m).so $(am_libebl_$(m)_pic_a_OBJECTS)) -textrel_msg = echo "WARNING: TEXTREL found in '$@'" -#textrel_found = $(textrel_msg) -textrel_found = $(textrel_msg); exit 1 -textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then $(textrel_found); fi -modules = i386 sh x86_64 ia64 alpha arm aarch64 sparc ppc ppc64 s390 \ - tilegx - -libebl_pic = libebl_i386_pic.a libebl_sh_pic.a libebl_x86_64_pic.a \ - libebl_ia64_pic.a libebl_alpha_pic.a libebl_arm_pic.a \ - libebl_aarch64_pic.a libebl_sparc_pic.a libebl_ppc_pic.a \ - libebl_ppc64_pic.a libebl_s390_pic.a libebl_tilegx_pic.a - -noinst_LIBRARIES = $(libebl_pic) -noinst_DATA = $(libebl_pic:_pic.a=.so) -libelf = ../libelf/libelf.so -libdw = ../libdw/libdw.so -i386_SRCS = i386_init.c i386_symbol.c i386_corenote.c i386_cfi.c \ - i386_retval.c i386_regs.c i386_auxv.c i386_syscall.c \ - i386_initreg.c - -cpu_i386 = ../libcpu/libcpu_i386.a -libebl_i386_pic_a_SOURCES = $(i386_SRCS) -am_libebl_i386_pic_a_OBJECTS = $(i386_SRCS:.c=.os) -sh_SRCS = sh_init.c sh_symbol.c sh_corenote.c sh_regs.c sh_retval.c -libebl_sh_pic_a_SOURCES = $(sh_SRCS) -am_libebl_sh_pic_a_OBJECTS = $(sh_SRCS:.c=.os) -x86_64_SRCS = x86_64_init.c x86_64_symbol.c x86_64_corenote.c x86_64_cfi.c \ - x86_64_retval.c x86_64_regs.c i386_auxv.c x86_64_syscall.c \ - x86_64_initreg.c - -cpu_x86_64 = ../libcpu/libcpu_x86_64.a -libebl_x86_64_pic_a_SOURCES = $(x86_64_SRCS) -am_libebl_x86_64_pic_a_OBJECTS = $(x86_64_SRCS:.c=.os) -ia64_SRCS = ia64_init.c ia64_symbol.c ia64_regs.c ia64_retval.c -libebl_ia64_pic_a_SOURCES = $(ia64_SRCS) -am_libebl_ia64_pic_a_OBJECTS = $(ia64_SRCS:.c=.os) -alpha_SRCS = alpha_init.c alpha_symbol.c alpha_retval.c alpha_regs.c \ - alpha_corenote.c alpha_auxv.c - -libebl_alpha_pic_a_SOURCES = $(alpha_SRCS) -am_libebl_alpha_pic_a_OBJECTS = $(alpha_SRCS:.c=.os) -arm_SRCS = arm_init.c arm_symbol.c arm_regs.c arm_corenote.c \ - arm_auxv.c arm_attrs.c arm_retval.c arm_cfi.c arm_initreg.c - -libebl_arm_pic_a_SOURCES = $(arm_SRCS) -am_libebl_arm_pic_a_OBJECTS = $(arm_SRCS:.c=.os) -aarch64_SRCS = aarch64_init.c aarch64_regs.c aarch64_symbol.c \ - aarch64_corenote.c aarch64_retval.c aarch64_cfi.c \ - aarch64_initreg.c - -libebl_aarch64_pic_a_SOURCES = $(aarch64_SRCS) -am_libebl_aarch64_pic_a_OBJECTS = $(aarch64_SRCS:.c=.os) -sparc_SRCS = sparc_init.c sparc_symbol.c sparc_regs.c sparc_retval.c \ - sparc_corenote.c sparc64_corenote.c sparc_auxv.c - -libebl_sparc_pic_a_SOURCES = $(sparc_SRCS) -am_libebl_sparc_pic_a_OBJECTS = $(sparc_SRCS:.c=.os) -ppc_SRCS = ppc_init.c ppc_symbol.c ppc_retval.c ppc_regs.c \ - ppc_corenote.c ppc_auxv.c ppc_attrs.c ppc_syscall.c \ - ppc_cfi.c ppc_initreg.c - -libebl_ppc_pic_a_SOURCES = $(ppc_SRCS) -am_libebl_ppc_pic_a_OBJECTS = $(ppc_SRCS:.c=.os) -ppc64_SRCS = ppc64_init.c ppc64_symbol.c ppc64_retval.c \ - ppc64_corenote.c ppc_regs.c ppc_auxv.c ppc_attrs.c ppc_syscall.c \ - ppc_cfi.c ppc_initreg.c ppc64_resolve_sym.c - -libebl_ppc64_pic_a_SOURCES = $(ppc64_SRCS) -am_libebl_ppc64_pic_a_OBJECTS = $(ppc64_SRCS:.c=.os) -s390_SRCS = s390_init.c s390_symbol.c s390_regs.c s390_retval.c \ - s390_corenote.c s390x_corenote.c s390_cfi.c s390_initreg.c \ - s390_unwind.c - -libebl_s390_pic_a_SOURCES = $(s390_SRCS) -am_libebl_s390_pic_a_OBJECTS = $(s390_SRCS:.c=.os) -tilegx_SRCS = tilegx_init.c tilegx_symbol.c tilegx_regs.c \ - tilegx_retval.c tilegx_corenote.c - -libebl_tilegx_pic_a_SOURCES = $(tilegx_SRCS) -am_libebl_tilegx_pic_a_OBJECTS = $(tilegx_SRCS:.c=.os) -noinst_HEADERS = libebl_CPU.h common-reloc.c linux-core-note.c x86_corenote.c -EXTRA_DIST = $(foreach m,$(modules),$($(m)_SRCS)) $(modules:=_reloc.def) -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .o .obj -$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(top_srcdir)/config/eu.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits backends/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnits backends/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; -$(top_srcdir)/config/eu.am: - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: # $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): # $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) - -libebl_aarch64_pic.a: $(libebl_aarch64_pic_a_OBJECTS) $(libebl_aarch64_pic_a_DEPENDENCIES) $(EXTRA_libebl_aarch64_pic_a_DEPENDENCIES) - $(AM_V_at)-rm -f libebl_aarch64_pic.a - $(AM_V_AR)$(libebl_aarch64_pic_a_AR) libebl_aarch64_pic.a $(libebl_aarch64_pic_a_OBJECTS) $(libebl_aarch64_pic_a_LIBADD) - $(AM_V_at)$(RANLIB) libebl_aarch64_pic.a - -libebl_alpha_pic.a: $(libebl_alpha_pic_a_OBJECTS) $(libebl_alpha_pic_a_DEPENDENCIES) $(EXTRA_libebl_alpha_pic_a_DEPENDENCIES) - $(AM_V_at)-rm -f libebl_alpha_pic.a - $(AM_V_AR)$(libebl_alpha_pic_a_AR) libebl_alpha_pic.a $(libebl_alpha_pic_a_OBJECTS) $(libebl_alpha_pic_a_LIBADD) - $(AM_V_at)$(RANLIB) libebl_alpha_pic.a - -libebl_arm_pic.a: $(libebl_arm_pic_a_OBJECTS) $(libebl_arm_pic_a_DEPENDENCIES) $(EXTRA_libebl_arm_pic_a_DEPENDENCIES) - $(AM_V_at)-rm -f libebl_arm_pic.a - $(AM_V_AR)$(libebl_arm_pic_a_AR) libebl_arm_pic.a $(libebl_arm_pic_a_OBJECTS) $(libebl_arm_pic_a_LIBADD) - $(AM_V_at)$(RANLIB) libebl_arm_pic.a - -libebl_i386_pic.a: $(libebl_i386_pic_a_OBJECTS) $(libebl_i386_pic_a_DEPENDENCIES) $(EXTRA_libebl_i386_pic_a_DEPENDENCIES) - $(AM_V_at)-rm -f libebl_i386_pic.a - $(AM_V_AR)$(libebl_i386_pic_a_AR) libebl_i386_pic.a $(libebl_i386_pic_a_OBJECTS) $(libebl_i386_pic_a_LIBADD) - $(AM_V_at)$(RANLIB) libebl_i386_pic.a - -libebl_ia64_pic.a: $(libebl_ia64_pic_a_OBJECTS) $(libebl_ia64_pic_a_DEPENDENCIES) $(EXTRA_libebl_ia64_pic_a_DEPENDENCIES) - $(AM_V_at)-rm -f libebl_ia64_pic.a - $(AM_V_AR)$(libebl_ia64_pic_a_AR) libebl_ia64_pic.a $(libebl_ia64_pic_a_OBJECTS) $(libebl_ia64_pic_a_LIBADD) - $(AM_V_at)$(RANLIB) libebl_ia64_pic.a - -libebl_ppc64_pic.a: $(libebl_ppc64_pic_a_OBJECTS) $(libebl_ppc64_pic_a_DEPENDENCIES) $(EXTRA_libebl_ppc64_pic_a_DEPENDENCIES) - $(AM_V_at)-rm -f libebl_ppc64_pic.a - $(AM_V_AR)$(libebl_ppc64_pic_a_AR) libebl_ppc64_pic.a $(libebl_ppc64_pic_a_OBJECTS) $(libebl_ppc64_pic_a_LIBADD) - $(AM_V_at)$(RANLIB) libebl_ppc64_pic.a - -libebl_ppc_pic.a: $(libebl_ppc_pic_a_OBJECTS) $(libebl_ppc_pic_a_DEPENDENCIES) $(EXTRA_libebl_ppc_pic_a_DEPENDENCIES) - $(AM_V_at)-rm -f libebl_ppc_pic.a - $(AM_V_AR)$(libebl_ppc_pic_a_AR) libebl_ppc_pic.a $(libebl_ppc_pic_a_OBJECTS) $(libebl_ppc_pic_a_LIBADD) - $(AM_V_at)$(RANLIB) libebl_ppc_pic.a - -libebl_s390_pic.a: $(libebl_s390_pic_a_OBJECTS) $(libebl_s390_pic_a_DEPENDENCIES) $(EXTRA_libebl_s390_pic_a_DEPENDENCIES) - $(AM_V_at)-rm -f libebl_s390_pic.a - $(AM_V_AR)$(libebl_s390_pic_a_AR) libebl_s390_pic.a $(libebl_s390_pic_a_OBJECTS) $(libebl_s390_pic_a_LIBADD) - $(AM_V_at)$(RANLIB) libebl_s390_pic.a - -libebl_sh_pic.a: $(libebl_sh_pic_a_OBJECTS) $(libebl_sh_pic_a_DEPENDENCIES) $(EXTRA_libebl_sh_pic_a_DEPENDENCIES) - $(AM_V_at)-rm -f libebl_sh_pic.a - $(AM_V_AR)$(libebl_sh_pic_a_AR) libebl_sh_pic.a $(libebl_sh_pic_a_OBJECTS) $(libebl_sh_pic_a_LIBADD) - $(AM_V_at)$(RANLIB) libebl_sh_pic.a - -libebl_sparc_pic.a: $(libebl_sparc_pic_a_OBJECTS) $(libebl_sparc_pic_a_DEPENDENCIES) $(EXTRA_libebl_sparc_pic_a_DEPENDENCIES) - $(AM_V_at)-rm -f libebl_sparc_pic.a - $(AM_V_AR)$(libebl_sparc_pic_a_AR) libebl_sparc_pic.a $(libebl_sparc_pic_a_OBJECTS) $(libebl_sparc_pic_a_LIBADD) - $(AM_V_at)$(RANLIB) libebl_sparc_pic.a - -libebl_tilegx_pic.a: $(libebl_tilegx_pic_a_OBJECTS) $(libebl_tilegx_pic_a_DEPENDENCIES) $(EXTRA_libebl_tilegx_pic_a_DEPENDENCIES) - $(AM_V_at)-rm -f libebl_tilegx_pic.a - $(AM_V_AR)$(libebl_tilegx_pic_a_AR) libebl_tilegx_pic.a $(libebl_tilegx_pic_a_OBJECTS) $(libebl_tilegx_pic_a_LIBADD) - $(AM_V_at)$(RANLIB) libebl_tilegx_pic.a - -libebl_x86_64_pic.a: $(libebl_x86_64_pic_a_OBJECTS) $(libebl_x86_64_pic_a_DEPENDENCIES) $(EXTRA_libebl_x86_64_pic_a_DEPENDENCIES) - $(AM_V_at)-rm -f libebl_x86_64_pic.a - $(AM_V_AR)$(libebl_x86_64_pic_a_AR) libebl_x86_64_pic.a $(libebl_x86_64_pic_a_OBJECTS) $(libebl_x86_64_pic_a_LIBADD) - $(AM_V_at)$(RANLIB) libebl_x86_64_pic.a - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -include ./$(DEPDIR)/aarch64_cfi.Po -include ./$(DEPDIR)/aarch64_corenote.Po -include ./$(DEPDIR)/aarch64_init.Po -include ./$(DEPDIR)/aarch64_initreg.Po -include ./$(DEPDIR)/aarch64_regs.Po -include ./$(DEPDIR)/aarch64_retval.Po -include ./$(DEPDIR)/aarch64_symbol.Po -include ./$(DEPDIR)/alpha_auxv.Po -include ./$(DEPDIR)/alpha_corenote.Po -include ./$(DEPDIR)/alpha_init.Po -include ./$(DEPDIR)/alpha_regs.Po -include ./$(DEPDIR)/alpha_retval.Po -include ./$(DEPDIR)/alpha_symbol.Po -include ./$(DEPDIR)/arm_attrs.Po -include ./$(DEPDIR)/arm_auxv.Po -include ./$(DEPDIR)/arm_cfi.Po -include ./$(DEPDIR)/arm_corenote.Po -include ./$(DEPDIR)/arm_init.Po -include ./$(DEPDIR)/arm_initreg.Po -include ./$(DEPDIR)/arm_regs.Po -include ./$(DEPDIR)/arm_retval.Po -include ./$(DEPDIR)/arm_symbol.Po -include ./$(DEPDIR)/i386_auxv.Po -include ./$(DEPDIR)/i386_cfi.Po -include ./$(DEPDIR)/i386_corenote.Po -include ./$(DEPDIR)/i386_init.Po -include ./$(DEPDIR)/i386_initreg.Po -include ./$(DEPDIR)/i386_regs.Po -include ./$(DEPDIR)/i386_retval.Po -include ./$(DEPDIR)/i386_symbol.Po -include ./$(DEPDIR)/i386_syscall.Po -include ./$(DEPDIR)/ia64_init.Po -include ./$(DEPDIR)/ia64_regs.Po -include ./$(DEPDIR)/ia64_retval.Po -include ./$(DEPDIR)/ia64_symbol.Po -include ./$(DEPDIR)/ppc64_corenote.Po -include ./$(DEPDIR)/ppc64_init.Po -include ./$(DEPDIR)/ppc64_resolve_sym.Po -include ./$(DEPDIR)/ppc64_retval.Po -include ./$(DEPDIR)/ppc64_symbol.Po -include ./$(DEPDIR)/ppc_attrs.Po -include ./$(DEPDIR)/ppc_auxv.Po -include ./$(DEPDIR)/ppc_cfi.Po -include ./$(DEPDIR)/ppc_corenote.Po -include ./$(DEPDIR)/ppc_init.Po -include ./$(DEPDIR)/ppc_initreg.Po -include ./$(DEPDIR)/ppc_regs.Po -include ./$(DEPDIR)/ppc_retval.Po -include ./$(DEPDIR)/ppc_symbol.Po -include ./$(DEPDIR)/ppc_syscall.Po -include ./$(DEPDIR)/s390_cfi.Po -include ./$(DEPDIR)/s390_corenote.Po -include ./$(DEPDIR)/s390_init.Po -include ./$(DEPDIR)/s390_initreg.Po -include ./$(DEPDIR)/s390_regs.Po -include ./$(DEPDIR)/s390_retval.Po -include ./$(DEPDIR)/s390_symbol.Po -include ./$(DEPDIR)/s390_unwind.Po -include ./$(DEPDIR)/s390x_corenote.Po -include ./$(DEPDIR)/sh_corenote.Po -include ./$(DEPDIR)/sh_init.Po -include ./$(DEPDIR)/sh_regs.Po -include ./$(DEPDIR)/sh_retval.Po -include ./$(DEPDIR)/sh_symbol.Po -include ./$(DEPDIR)/sparc64_corenote.Po -include ./$(DEPDIR)/sparc_auxv.Po -include ./$(DEPDIR)/sparc_corenote.Po -include ./$(DEPDIR)/sparc_init.Po -include ./$(DEPDIR)/sparc_regs.Po -include ./$(DEPDIR)/sparc_retval.Po -include ./$(DEPDIR)/sparc_symbol.Po -include ./$(DEPDIR)/tilegx_corenote.Po -include ./$(DEPDIR)/tilegx_init.Po -include ./$(DEPDIR)/tilegx_regs.Po -include ./$(DEPDIR)/tilegx_retval.Po -include ./$(DEPDIR)/tilegx_symbol.Po -include ./$(DEPDIR)/x86_64_cfi.Po -include ./$(DEPDIR)/x86_64_corenote.Po -include ./$(DEPDIR)/x86_64_init.Po -include ./$(DEPDIR)/x86_64_initreg.Po -include ./$(DEPDIR)/x86_64_regs.Po -include ./$(DEPDIR)/x86_64_retval.Po -include ./$(DEPDIR)/x86_64_symbol.Po -include ./$(DEPDIR)/x86_64_syscall.Po - -.c.o: - $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< - $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -# $(AM_V_CC)source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(AM_V_CC_no)$(COMPILE) -c -o $@ $< - -.c.obj: - $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` - $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -# $(AM_V_CC)source='$<' object='$@' libtool=no \ -# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ -# $(AM_V_CC_no)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LIBRARIES) $(DATA) $(HEADERS) -installdirs: -install-exec: install-exec-am -install-data: install-data-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-noinstLIBRARIES cscopelist-am ctags ctags-am distclean \ - distclean-compile distclean-generic distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ - uninstall-am - - -%.os: %.c %.o - if $(COMPILE.os) -c -o $@ -fpic -DPIC -DSHARED -MT $@ -MD -MP \ - -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \ - then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \ - rm -f "$(DEPDIR)/$*.Tpo"; \ - else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ - fi -# $(COMPILE.os) -c -o $@ -fpic -DPIC -DSHARED $< - -libebl_%.so libebl_%.map: libebl_%_pic.a $(libelf) $(libdw) - @rm -f $(@:.so=.map) - echo 'ELFUTILS_$(PACKAGE_VERSION) { global: $*_init; local: *; };' \ - > $(@:.so=.map) - $(LINK) -shared -o $(@:.map=.so) \ - -Wl,--whole-archive $< $(cpu_$*) -Wl,--no-whole-archive \ - -Wl,--version-script,$(@:.so=.map) \ - -Wl,-z,defs -Wl,--as-needed $(libelf) $(libdw) - @$(textrel_check) - -libebl_i386.so: $(cpu_i386) -libebl_x86_64.so: $(cpu_x86_64) - -install: install-am install-ebl-modules -install-ebl-modules: - $(mkinstalldirs) $(DESTDIR)$(libdir)/$(LIBEBL_SUBDIR) - for m in $(modules); do \ - $(INSTALL_PROGRAM) libebl_$${m}.so $(DESTDIR)$(libdir)/$(LIBEBL_SUBDIR)/libebl_$${m}-$(PACKAGE_VERSION).so; \ - ln -fs libebl_$${m}-$(PACKAGE_VERSION).so $(DESTDIR)$(libdir)/$(LIBEBL_SUBDIR)/libebl_$${m}.so; \ - done - -uninstall: uninstall-am - for m in $(modules); do \ - rm -f $(DESTDIR)$(libdir)/$(LIBEBL_SUBDIR)/libebl_$${m}-$(PACKAGE_VERSION).so; \ - rm -f $(DESTDIR)$(libdir)/$(LIBEBL_SUBDIR)/libebl_$${m}.so; \ - done - rmdir --ignore-fail-on-non-empty $(DESTDIR)$(libdir)/$(LIBEBL_SUBDIR) - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/backends/Makefile.am b/src/backends/Makefile.am deleted file mode 100644 index 687c089d..00000000 --- a/src/backends/Makefile.am +++ /dev/null @@ -1,148 +0,0 @@ -## Process this file with automake to create Makefile.in -## -## Copyright (C) 2000-2010, 2013, 2014 Red Hat, Inc. -## Copyright (C) 2012 Tilera Corporation -## This file is part of elfutils. -## -## This file is free software; you can redistribute it and/or modify -## it under the terms of either -## -## * the GNU Lesser General Public License as published by the Free -## Software Foundation; either version 3 of the License, or (at -## your option) any later version -## -## or -## -## * the GNU General Public License as published by the Free -## Software Foundation; either version 2 of the License, or (at -## your option) any later version -## -## or both in parallel, as here. -## -## elfutils is distributed in the hope that it will be useful, but -## WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## General Public License for more details. -## -## You should have received copies of the GNU General Public License and -## the GNU Lesser General Public License along with this program. If -## not, see <http://www.gnu.org/licenses/>. -include $(top_srcdir)/config/eu.am -AM_CPPFLAGS += -I$(top_srcdir)/libebl -I$(top_srcdir)/libasm \ - -I$(top_srcdir)/libelf -I$(top_srcdir)/libdw - - -modules = i386 sh x86_64 ia64 alpha arm aarch64 sparc ppc ppc64 s390 \ - tilegx -libebl_pic = libebl_i386_pic.a libebl_sh_pic.a libebl_x86_64_pic.a \ - libebl_ia64_pic.a libebl_alpha_pic.a libebl_arm_pic.a \ - libebl_aarch64_pic.a libebl_sparc_pic.a libebl_ppc_pic.a \ - libebl_ppc64_pic.a libebl_s390_pic.a libebl_tilegx_pic.a -noinst_LIBRARIES = $(libebl_pic) -noinst_DATA = $(libebl_pic:_pic.a=.so) - - -libelf = ../libelf/libelf.so -libdw = ../libdw/libdw.so - -i386_SRCS = i386_init.c i386_symbol.c i386_corenote.c i386_cfi.c \ - i386_retval.c i386_regs.c i386_auxv.c i386_syscall.c \ - i386_initreg.c -cpu_i386 = ../libcpu/libcpu_i386.a -libebl_i386_pic_a_SOURCES = $(i386_SRCS) -am_libebl_i386_pic_a_OBJECTS = $(i386_SRCS:.c=.os) - -sh_SRCS = sh_init.c sh_symbol.c sh_corenote.c sh_regs.c sh_retval.c -libebl_sh_pic_a_SOURCES = $(sh_SRCS) -am_libebl_sh_pic_a_OBJECTS = $(sh_SRCS:.c=.os) - -x86_64_SRCS = x86_64_init.c x86_64_symbol.c x86_64_corenote.c x86_64_cfi.c \ - x86_64_retval.c x86_64_regs.c i386_auxv.c x86_64_syscall.c \ - x86_64_initreg.c -cpu_x86_64 = ../libcpu/libcpu_x86_64.a -libebl_x86_64_pic_a_SOURCES = $(x86_64_SRCS) -am_libebl_x86_64_pic_a_OBJECTS = $(x86_64_SRCS:.c=.os) - -ia64_SRCS = ia64_init.c ia64_symbol.c ia64_regs.c ia64_retval.c -libebl_ia64_pic_a_SOURCES = $(ia64_SRCS) -am_libebl_ia64_pic_a_OBJECTS = $(ia64_SRCS:.c=.os) - -alpha_SRCS = alpha_init.c alpha_symbol.c alpha_retval.c alpha_regs.c \ - alpha_corenote.c alpha_auxv.c -libebl_alpha_pic_a_SOURCES = $(alpha_SRCS) -am_libebl_alpha_pic_a_OBJECTS = $(alpha_SRCS:.c=.os) - -arm_SRCS = arm_init.c arm_symbol.c arm_regs.c arm_corenote.c \ - arm_auxv.c arm_attrs.c arm_retval.c arm_cfi.c arm_initreg.c -libebl_arm_pic_a_SOURCES = $(arm_SRCS) -am_libebl_arm_pic_a_OBJECTS = $(arm_SRCS:.c=.os) - -aarch64_SRCS = aarch64_init.c aarch64_regs.c aarch64_symbol.c \ - aarch64_corenote.c aarch64_retval.c aarch64_cfi.c \ - aarch64_initreg.c -libebl_aarch64_pic_a_SOURCES = $(aarch64_SRCS) -am_libebl_aarch64_pic_a_OBJECTS = $(aarch64_SRCS:.c=.os) - -sparc_SRCS = sparc_init.c sparc_symbol.c sparc_regs.c sparc_retval.c \ - sparc_corenote.c sparc64_corenote.c sparc_auxv.c -libebl_sparc_pic_a_SOURCES = $(sparc_SRCS) -am_libebl_sparc_pic_a_OBJECTS = $(sparc_SRCS:.c=.os) - -ppc_SRCS = ppc_init.c ppc_symbol.c ppc_retval.c ppc_regs.c \ - ppc_corenote.c ppc_auxv.c ppc_attrs.c ppc_syscall.c \ - ppc_cfi.c ppc_initreg.c -libebl_ppc_pic_a_SOURCES = $(ppc_SRCS) -am_libebl_ppc_pic_a_OBJECTS = $(ppc_SRCS:.c=.os) - -ppc64_SRCS = ppc64_init.c ppc64_symbol.c ppc64_retval.c \ - ppc64_corenote.c ppc_regs.c ppc_auxv.c ppc_attrs.c ppc_syscall.c \ - ppc_cfi.c ppc_initreg.c ppc64_resolve_sym.c -libebl_ppc64_pic_a_SOURCES = $(ppc64_SRCS) -am_libebl_ppc64_pic_a_OBJECTS = $(ppc64_SRCS:.c=.os) - -s390_SRCS = s390_init.c s390_symbol.c s390_regs.c s390_retval.c \ - s390_corenote.c s390x_corenote.c s390_cfi.c s390_initreg.c \ - s390_unwind.c -libebl_s390_pic_a_SOURCES = $(s390_SRCS) -am_libebl_s390_pic_a_OBJECTS = $(s390_SRCS:.c=.os) - -tilegx_SRCS = tilegx_init.c tilegx_symbol.c tilegx_regs.c \ - tilegx_retval.c tilegx_corenote.c -libebl_tilegx_pic_a_SOURCES = $(tilegx_SRCS) -am_libebl_tilegx_pic_a_OBJECTS = $(tilegx_SRCS:.c=.os) - - -libebl_%.so libebl_%.map: libebl_%_pic.a $(libelf) $(libdw) - @rm -f $(@:.so=.map) - echo 'ELFUTILS_$(PACKAGE_VERSION) { global: $*_init; local: *; };' \ - > $(@:.so=.map) - $(LINK) -shared -o $(@:.map=.so) \ - -Wl,--whole-archive $< $(cpu_$*) -Wl,--no-whole-archive \ - -Wl,--version-script,$(@:.so=.map) \ - -Wl,-z,defs -Wl,--as-needed $(libelf) $(libdw) - @$(textrel_check) - -libebl_i386.so: $(cpu_i386) -libebl_x86_64.so: $(cpu_x86_64) - -install: install-am install-ebl-modules -install-ebl-modules: - $(mkinstalldirs) $(DESTDIR)$(libdir)/$(LIBEBL_SUBDIR) - for m in $(modules); do \ - $(INSTALL_PROGRAM) libebl_$${m}.so $(DESTDIR)$(libdir)/$(LIBEBL_SUBDIR)/libebl_$${m}-$(PACKAGE_VERSION).so; \ - ln -fs libebl_$${m}-$(PACKAGE_VERSION).so $(DESTDIR)$(libdir)/$(LIBEBL_SUBDIR)/libebl_$${m}.so; \ - done - -uninstall: uninstall-am - for m in $(modules); do \ - rm -f $(DESTDIR)$(libdir)/$(LIBEBL_SUBDIR)/libebl_$${m}-$(PACKAGE_VERSION).so; \ - rm -f $(DESTDIR)$(libdir)/$(LIBEBL_SUBDIR)/libebl_$${m}.so; \ - done - rmdir --ignore-fail-on-non-empty $(DESTDIR)$(libdir)/$(LIBEBL_SUBDIR) - -noinst_HEADERS = libebl_CPU.h common-reloc.c linux-core-note.c x86_corenote.c -EXTRA_DIST = $(foreach m,$(modules),$($(m)_SRCS)) $(modules:=_reloc.def) - -CLEANFILES += $(foreach m,$(modules),\ - libebl_$(m).map libebl_$(m).so \ - $(am_libebl_$(m)_pic_a_OBJECTS)) diff --git a/src/backends/Makefile.in b/src/backends/Makefile.in deleted file mode 100644 index d204d036..00000000 --- a/src/backends/Makefile.in +++ /dev/null @@ -1,914 +0,0 @@ -# Makefile.in generated by automake 1.14.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2013 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - - - -VPATH = @srcdir@ -am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -DIST_COMMON = $(top_srcdir)/config/eu.am $(srcdir)/Makefile.in \ - $(srcdir)/Makefile.am $(top_srcdir)/config/depcomp \ - $(noinst_HEADERS) ChangeLog -subdir = backends -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/biarch.m4 \ - $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/zip.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LIBRARIES = $(noinst_LIBRARIES) -ARFLAGS = cru -AM_V_AR = $(am__v_AR_@AM_V@) -am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) -am__v_AR_0 = @echo " AR " $@; -am__v_AR_1 = -libebl_aarch64_pic_a_AR = $(AR) $(ARFLAGS) -libebl_aarch64_pic_a_LIBADD = -am__objects_1 = aarch64_init.$(OBJEXT) aarch64_regs.$(OBJEXT) \ - aarch64_symbol.$(OBJEXT) aarch64_corenote.$(OBJEXT) \ - aarch64_retval.$(OBJEXT) aarch64_cfi.$(OBJEXT) \ - aarch64_initreg.$(OBJEXT) -libebl_aarch64_pic_a_OBJECTS = $(am_libebl_aarch64_pic_a_OBJECTS) -libebl_alpha_pic_a_AR = $(AR) $(ARFLAGS) -libebl_alpha_pic_a_LIBADD = -am__objects_2 = alpha_init.$(OBJEXT) alpha_symbol.$(OBJEXT) \ - alpha_retval.$(OBJEXT) alpha_regs.$(OBJEXT) \ - alpha_corenote.$(OBJEXT) alpha_auxv.$(OBJEXT) -libebl_alpha_pic_a_OBJECTS = $(am_libebl_alpha_pic_a_OBJECTS) -libebl_arm_pic_a_AR = $(AR) $(ARFLAGS) -libebl_arm_pic_a_LIBADD = -am__objects_3 = arm_init.$(OBJEXT) arm_symbol.$(OBJEXT) \ - arm_regs.$(OBJEXT) arm_corenote.$(OBJEXT) arm_auxv.$(OBJEXT) \ - arm_attrs.$(OBJEXT) arm_retval.$(OBJEXT) arm_cfi.$(OBJEXT) \ - arm_initreg.$(OBJEXT) -libebl_arm_pic_a_OBJECTS = $(am_libebl_arm_pic_a_OBJECTS) -libebl_i386_pic_a_AR = $(AR) $(ARFLAGS) -libebl_i386_pic_a_LIBADD = -am__objects_4 = i386_init.$(OBJEXT) i386_symbol.$(OBJEXT) \ - i386_corenote.$(OBJEXT) i386_cfi.$(OBJEXT) \ - i386_retval.$(OBJEXT) i386_regs.$(OBJEXT) i386_auxv.$(OBJEXT) \ - i386_syscall.$(OBJEXT) i386_initreg.$(OBJEXT) -libebl_i386_pic_a_OBJECTS = $(am_libebl_i386_pic_a_OBJECTS) -libebl_ia64_pic_a_AR = $(AR) $(ARFLAGS) -libebl_ia64_pic_a_LIBADD = -am__objects_5 = ia64_init.$(OBJEXT) ia64_symbol.$(OBJEXT) \ - ia64_regs.$(OBJEXT) ia64_retval.$(OBJEXT) -libebl_ia64_pic_a_OBJECTS = $(am_libebl_ia64_pic_a_OBJECTS) -libebl_ppc64_pic_a_AR = $(AR) $(ARFLAGS) -libebl_ppc64_pic_a_LIBADD = -am__objects_6 = ppc64_init.$(OBJEXT) ppc64_symbol.$(OBJEXT) \ - ppc64_retval.$(OBJEXT) ppc64_corenote.$(OBJEXT) \ - ppc_regs.$(OBJEXT) ppc_auxv.$(OBJEXT) ppc_attrs.$(OBJEXT) \ - ppc_syscall.$(OBJEXT) ppc_cfi.$(OBJEXT) ppc_initreg.$(OBJEXT) \ - ppc64_resolve_sym.$(OBJEXT) -libebl_ppc64_pic_a_OBJECTS = $(am_libebl_ppc64_pic_a_OBJECTS) -libebl_ppc_pic_a_AR = $(AR) $(ARFLAGS) -libebl_ppc_pic_a_LIBADD = -am__objects_7 = ppc_init.$(OBJEXT) ppc_symbol.$(OBJEXT) \ - ppc_retval.$(OBJEXT) ppc_regs.$(OBJEXT) ppc_corenote.$(OBJEXT) \ - ppc_auxv.$(OBJEXT) ppc_attrs.$(OBJEXT) ppc_syscall.$(OBJEXT) \ - ppc_cfi.$(OBJEXT) ppc_initreg.$(OBJEXT) -libebl_ppc_pic_a_OBJECTS = $(am_libebl_ppc_pic_a_OBJECTS) -libebl_s390_pic_a_AR = $(AR) $(ARFLAGS) -libebl_s390_pic_a_LIBADD = -am__objects_8 = s390_init.$(OBJEXT) s390_symbol.$(OBJEXT) \ - s390_regs.$(OBJEXT) s390_retval.$(OBJEXT) \ - s390_corenote.$(OBJEXT) s390x_corenote.$(OBJEXT) \ - s390_cfi.$(OBJEXT) s390_initreg.$(OBJEXT) \ - s390_unwind.$(OBJEXT) -libebl_s390_pic_a_OBJECTS = $(am_libebl_s390_pic_a_OBJECTS) -libebl_sh_pic_a_AR = $(AR) $(ARFLAGS) -libebl_sh_pic_a_LIBADD = -am__objects_9 = sh_init.$(OBJEXT) sh_symbol.$(OBJEXT) \ - sh_corenote.$(OBJEXT) sh_regs.$(OBJEXT) sh_retval.$(OBJEXT) -libebl_sh_pic_a_OBJECTS = $(am_libebl_sh_pic_a_OBJECTS) -libebl_sparc_pic_a_AR = $(AR) $(ARFLAGS) -libebl_sparc_pic_a_LIBADD = -am__objects_10 = sparc_init.$(OBJEXT) sparc_symbol.$(OBJEXT) \ - sparc_regs.$(OBJEXT) sparc_retval.$(OBJEXT) \ - sparc_corenote.$(OBJEXT) sparc64_corenote.$(OBJEXT) \ - sparc_auxv.$(OBJEXT) -libebl_sparc_pic_a_OBJECTS = $(am_libebl_sparc_pic_a_OBJECTS) -libebl_tilegx_pic_a_AR = $(AR) $(ARFLAGS) -libebl_tilegx_pic_a_LIBADD = -am__objects_11 = tilegx_init.$(OBJEXT) tilegx_symbol.$(OBJEXT) \ - tilegx_regs.$(OBJEXT) tilegx_retval.$(OBJEXT) \ - tilegx_corenote.$(OBJEXT) -libebl_tilegx_pic_a_OBJECTS = $(am_libebl_tilegx_pic_a_OBJECTS) -libebl_x86_64_pic_a_AR = $(AR) $(ARFLAGS) -libebl_x86_64_pic_a_LIBADD = -am__objects_12 = x86_64_init.$(OBJEXT) x86_64_symbol.$(OBJEXT) \ - x86_64_corenote.$(OBJEXT) x86_64_cfi.$(OBJEXT) \ - x86_64_retval.$(OBJEXT) x86_64_regs.$(OBJEXT) \ - i386_auxv.$(OBJEXT) x86_64_syscall.$(OBJEXT) \ - x86_64_initreg.$(OBJEXT) -libebl_x86_64_pic_a_OBJECTS = $(am_libebl_x86_64_pic_a_OBJECTS) -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/config/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -SOURCES = $(libebl_aarch64_pic_a_SOURCES) \ - $(libebl_alpha_pic_a_SOURCES) $(libebl_arm_pic_a_SOURCES) \ - $(libebl_i386_pic_a_SOURCES) $(libebl_ia64_pic_a_SOURCES) \ - $(libebl_ppc64_pic_a_SOURCES) $(libebl_ppc_pic_a_SOURCES) \ - $(libebl_s390_pic_a_SOURCES) $(libebl_sh_pic_a_SOURCES) \ - $(libebl_sparc_pic_a_SOURCES) $(libebl_tilegx_pic_a_SOURCES) \ - $(libebl_x86_64_pic_a_SOURCES) -DIST_SOURCES = $(libebl_aarch64_pic_a_SOURCES) \ - $(libebl_alpha_pic_a_SOURCES) $(libebl_arm_pic_a_SOURCES) \ - $(libebl_i386_pic_a_SOURCES) $(libebl_ia64_pic_a_SOURCES) \ - $(libebl_ppc64_pic_a_SOURCES) $(libebl_ppc_pic_a_SOURCES) \ - $(libebl_s390_pic_a_SOURCES) $(libebl_sh_pic_a_SOURCES) \ - $(libebl_sparc_pic_a_SOURCES) $(libebl_tilegx_pic_a_SOURCES) \ - $(libebl_x86_64_pic_a_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -DATA = $(noinst_DATA) -HEADERS = $(noinst_HEADERS) -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CC_BIARCH = @CC_BIARCH@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEBUGPRED = @DEBUGPRED@ -DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DLOCALEDIR='"${localedir}"' -DEPDIR = @DEPDIR@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ -GMSGFMT = @GMSGFMT@ -GMSGFMT_015 = @GMSGFMT_015@ -GREP = @GREP@ -HAVE_VALGRIND = @HAVE_VALGRIND@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LDFLAGS = @LDFLAGS@ -LEX = @LEX@ -LEXLIB = @LEXLIB@ -LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ -LIBEBL_SUBDIR = @LIBEBL_SUBDIR@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -MODVERSION = @MODVERSION@ -MSGFMT = @MSGFMT@ -MSGFMT_015 = @MSGFMT_015@ -MSGMERGE = @MSGMERGE@ -NM = @NM@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -READELF = @READELF@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -XGETTEXT = @XGETTEXT@ -XGETTEXT_015 = @XGETTEXT_015@ -XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ -YACC = @YACC@ -YFLAGS = @YFLAGS@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -base_cpu = @base_cpu@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -eu_version = @eu_version@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -zip_LIBS = @zip_LIBS@ -AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. \ - -I$(top_srcdir)/libebl -I$(top_srcdir)/libasm \ - -I$(top_srcdir)/libelf -I$(top_srcdir)/libdw -AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \ - $(if $($(*F)_no_Werror),,-Werror) \ - $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \ - $($(*F)_CFLAGS) - -COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE)) -CLEANFILES = *.gcno *.gcda $(foreach m,$(modules), libebl_$(m).map \ - libebl_$(m).so $(am_libebl_$(m)_pic_a_OBJECTS)) -textrel_msg = echo "WARNING: TEXTREL found in '$@'" -@FATAL_TEXTREL_FALSE@textrel_found = $(textrel_msg) -@FATAL_TEXTREL_TRUE@textrel_found = $(textrel_msg); exit 1 -textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then $(textrel_found); fi -modules = i386 sh x86_64 ia64 alpha arm aarch64 sparc ppc ppc64 s390 \ - tilegx - -libebl_pic = libebl_i386_pic.a libebl_sh_pic.a libebl_x86_64_pic.a \ - libebl_ia64_pic.a libebl_alpha_pic.a libebl_arm_pic.a \ - libebl_aarch64_pic.a libebl_sparc_pic.a libebl_ppc_pic.a \ - libebl_ppc64_pic.a libebl_s390_pic.a libebl_tilegx_pic.a - -noinst_LIBRARIES = $(libebl_pic) -noinst_DATA = $(libebl_pic:_pic.a=.so) -libelf = ../libelf/libelf.so -libdw = ../libdw/libdw.so -i386_SRCS = i386_init.c i386_symbol.c i386_corenote.c i386_cfi.c \ - i386_retval.c i386_regs.c i386_auxv.c i386_syscall.c \ - i386_initreg.c - -cpu_i386 = ../libcpu/libcpu_i386.a -libebl_i386_pic_a_SOURCES = $(i386_SRCS) -am_libebl_i386_pic_a_OBJECTS = $(i386_SRCS:.c=.os) -sh_SRCS = sh_init.c sh_symbol.c sh_corenote.c sh_regs.c sh_retval.c -libebl_sh_pic_a_SOURCES = $(sh_SRCS) -am_libebl_sh_pic_a_OBJECTS = $(sh_SRCS:.c=.os) -x86_64_SRCS = x86_64_init.c x86_64_symbol.c x86_64_corenote.c x86_64_cfi.c \ - x86_64_retval.c x86_64_regs.c i386_auxv.c x86_64_syscall.c \ - x86_64_initreg.c - -cpu_x86_64 = ../libcpu/libcpu_x86_64.a -libebl_x86_64_pic_a_SOURCES = $(x86_64_SRCS) -am_libebl_x86_64_pic_a_OBJECTS = $(x86_64_SRCS:.c=.os) -ia64_SRCS = ia64_init.c ia64_symbol.c ia64_regs.c ia64_retval.c -libebl_ia64_pic_a_SOURCES = $(ia64_SRCS) -am_libebl_ia64_pic_a_OBJECTS = $(ia64_SRCS:.c=.os) -alpha_SRCS = alpha_init.c alpha_symbol.c alpha_retval.c alpha_regs.c \ - alpha_corenote.c alpha_auxv.c - -libebl_alpha_pic_a_SOURCES = $(alpha_SRCS) -am_libebl_alpha_pic_a_OBJECTS = $(alpha_SRCS:.c=.os) -arm_SRCS = arm_init.c arm_symbol.c arm_regs.c arm_corenote.c \ - arm_auxv.c arm_attrs.c arm_retval.c arm_cfi.c arm_initreg.c - -libebl_arm_pic_a_SOURCES = $(arm_SRCS) -am_libebl_arm_pic_a_OBJECTS = $(arm_SRCS:.c=.os) -aarch64_SRCS = aarch64_init.c aarch64_regs.c aarch64_symbol.c \ - aarch64_corenote.c aarch64_retval.c aarch64_cfi.c \ - aarch64_initreg.c - -libebl_aarch64_pic_a_SOURCES = $(aarch64_SRCS) -am_libebl_aarch64_pic_a_OBJECTS = $(aarch64_SRCS:.c=.os) -sparc_SRCS = sparc_init.c sparc_symbol.c sparc_regs.c sparc_retval.c \ - sparc_corenote.c sparc64_corenote.c sparc_auxv.c - -libebl_sparc_pic_a_SOURCES = $(sparc_SRCS) -am_libebl_sparc_pic_a_OBJECTS = $(sparc_SRCS:.c=.os) -ppc_SRCS = ppc_init.c ppc_symbol.c ppc_retval.c ppc_regs.c \ - ppc_corenote.c ppc_auxv.c ppc_attrs.c ppc_syscall.c \ - ppc_cfi.c ppc_initreg.c - -libebl_ppc_pic_a_SOURCES = $(ppc_SRCS) -am_libebl_ppc_pic_a_OBJECTS = $(ppc_SRCS:.c=.os) -ppc64_SRCS = ppc64_init.c ppc64_symbol.c ppc64_retval.c \ - ppc64_corenote.c ppc_regs.c ppc_auxv.c ppc_attrs.c ppc_syscall.c \ - ppc_cfi.c ppc_initreg.c ppc64_resolve_sym.c - -libebl_ppc64_pic_a_SOURCES = $(ppc64_SRCS) -am_libebl_ppc64_pic_a_OBJECTS = $(ppc64_SRCS:.c=.os) -s390_SRCS = s390_init.c s390_symbol.c s390_regs.c s390_retval.c \ - s390_corenote.c s390x_corenote.c s390_cfi.c s390_initreg.c \ - s390_unwind.c - -libebl_s390_pic_a_SOURCES = $(s390_SRCS) -am_libebl_s390_pic_a_OBJECTS = $(s390_SRCS:.c=.os) -tilegx_SRCS = tilegx_init.c tilegx_symbol.c tilegx_regs.c \ - tilegx_retval.c tilegx_corenote.c - -libebl_tilegx_pic_a_SOURCES = $(tilegx_SRCS) -am_libebl_tilegx_pic_a_OBJECTS = $(tilegx_SRCS:.c=.os) -noinst_HEADERS = libebl_CPU.h common-reloc.c linux-core-note.c x86_corenote.c -EXTRA_DIST = $(foreach m,$(modules),$($(m)_SRCS)) $(modules:=_reloc.def) -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/eu.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits backends/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnits backends/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; -$(top_srcdir)/config/eu.am: - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) - -libebl_aarch64_pic.a: $(libebl_aarch64_pic_a_OBJECTS) $(libebl_aarch64_pic_a_DEPENDENCIES) $(EXTRA_libebl_aarch64_pic_a_DEPENDENCIES) - $(AM_V_at)-rm -f libebl_aarch64_pic.a - $(AM_V_AR)$(libebl_aarch64_pic_a_AR) libebl_aarch64_pic.a $(libebl_aarch64_pic_a_OBJECTS) $(libebl_aarch64_pic_a_LIBADD) - $(AM_V_at)$(RANLIB) libebl_aarch64_pic.a - -libebl_alpha_pic.a: $(libebl_alpha_pic_a_OBJECTS) $(libebl_alpha_pic_a_DEPENDENCIES) $(EXTRA_libebl_alpha_pic_a_DEPENDENCIES) - $(AM_V_at)-rm -f libebl_alpha_pic.a - $(AM_V_AR)$(libebl_alpha_pic_a_AR) libebl_alpha_pic.a $(libebl_alpha_pic_a_OBJECTS) $(libebl_alpha_pic_a_LIBADD) - $(AM_V_at)$(RANLIB) libebl_alpha_pic.a - -libebl_arm_pic.a: $(libebl_arm_pic_a_OBJECTS) $(libebl_arm_pic_a_DEPENDENCIES) $(EXTRA_libebl_arm_pic_a_DEPENDENCIES) - $(AM_V_at)-rm -f libebl_arm_pic.a - $(AM_V_AR)$(libebl_arm_pic_a_AR) libebl_arm_pic.a $(libebl_arm_pic_a_OBJECTS) $(libebl_arm_pic_a_LIBADD) - $(AM_V_at)$(RANLIB) libebl_arm_pic.a - -libebl_i386_pic.a: $(libebl_i386_pic_a_OBJECTS) $(libebl_i386_pic_a_DEPENDENCIES) $(EXTRA_libebl_i386_pic_a_DEPENDENCIES) - $(AM_V_at)-rm -f libebl_i386_pic.a - $(AM_V_AR)$(libebl_i386_pic_a_AR) libebl_i386_pic.a $(libebl_i386_pic_a_OBJECTS) $(libebl_i386_pic_a_LIBADD) - $(AM_V_at)$(RANLIB) libebl_i386_pic.a - -libebl_ia64_pic.a: $(libebl_ia64_pic_a_OBJECTS) $(libebl_ia64_pic_a_DEPENDENCIES) $(EXTRA_libebl_ia64_pic_a_DEPENDENCIES) - $(AM_V_at)-rm -f libebl_ia64_pic.a - $(AM_V_AR)$(libebl_ia64_pic_a_AR) libebl_ia64_pic.a $(libebl_ia64_pic_a_OBJECTS) $(libebl_ia64_pic_a_LIBADD) - $(AM_V_at)$(RANLIB) libebl_ia64_pic.a - -libebl_ppc64_pic.a: $(libebl_ppc64_pic_a_OBJECTS) $(libebl_ppc64_pic_a_DEPENDENCIES) $(EXTRA_libebl_ppc64_pic_a_DEPENDENCIES) - $(AM_V_at)-rm -f libebl_ppc64_pic.a - $(AM_V_AR)$(libebl_ppc64_pic_a_AR) libebl_ppc64_pic.a $(libebl_ppc64_pic_a_OBJECTS) $(libebl_ppc64_pic_a_LIBADD) - $(AM_V_at)$(RANLIB) libebl_ppc64_pic.a - -libebl_ppc_pic.a: $(libebl_ppc_pic_a_OBJECTS) $(libebl_ppc_pic_a_DEPENDENCIES) $(EXTRA_libebl_ppc_pic_a_DEPENDENCIES) - $(AM_V_at)-rm -f libebl_ppc_pic.a - $(AM_V_AR)$(libebl_ppc_pic_a_AR) libebl_ppc_pic.a $(libebl_ppc_pic_a_OBJECTS) $(libebl_ppc_pic_a_LIBADD) - $(AM_V_at)$(RANLIB) libebl_ppc_pic.a - -libebl_s390_pic.a: $(libebl_s390_pic_a_OBJECTS) $(libebl_s390_pic_a_DEPENDENCIES) $(EXTRA_libebl_s390_pic_a_DEPENDENCIES) - $(AM_V_at)-rm -f libebl_s390_pic.a - $(AM_V_AR)$(libebl_s390_pic_a_AR) libebl_s390_pic.a $(libebl_s390_pic_a_OBJECTS) $(libebl_s390_pic_a_LIBADD) - $(AM_V_at)$(RANLIB) libebl_s390_pic.a - -libebl_sh_pic.a: $(libebl_sh_pic_a_OBJECTS) $(libebl_sh_pic_a_DEPENDENCIES) $(EXTRA_libebl_sh_pic_a_DEPENDENCIES) - $(AM_V_at)-rm -f libebl_sh_pic.a - $(AM_V_AR)$(libebl_sh_pic_a_AR) libebl_sh_pic.a $(libebl_sh_pic_a_OBJECTS) $(libebl_sh_pic_a_LIBADD) - $(AM_V_at)$(RANLIB) libebl_sh_pic.a - -libebl_sparc_pic.a: $(libebl_sparc_pic_a_OBJECTS) $(libebl_sparc_pic_a_DEPENDENCIES) $(EXTRA_libebl_sparc_pic_a_DEPENDENCIES) - $(AM_V_at)-rm -f libebl_sparc_pic.a - $(AM_V_AR)$(libebl_sparc_pic_a_AR) libebl_sparc_pic.a $(libebl_sparc_pic_a_OBJECTS) $(libebl_sparc_pic_a_LIBADD) - $(AM_V_at)$(RANLIB) libebl_sparc_pic.a - -libebl_tilegx_pic.a: $(libebl_tilegx_pic_a_OBJECTS) $(libebl_tilegx_pic_a_DEPENDENCIES) $(EXTRA_libebl_tilegx_pic_a_DEPENDENCIES) - $(AM_V_at)-rm -f libebl_tilegx_pic.a - $(AM_V_AR)$(libebl_tilegx_pic_a_AR) libebl_tilegx_pic.a $(libebl_tilegx_pic_a_OBJECTS) $(libebl_tilegx_pic_a_LIBADD) - $(AM_V_at)$(RANLIB) libebl_tilegx_pic.a - -libebl_x86_64_pic.a: $(libebl_x86_64_pic_a_OBJECTS) $(libebl_x86_64_pic_a_DEPENDENCIES) $(EXTRA_libebl_x86_64_pic_a_DEPENDENCIES) - $(AM_V_at)-rm -f libebl_x86_64_pic.a - $(AM_V_AR)$(libebl_x86_64_pic_a_AR) libebl_x86_64_pic.a $(libebl_x86_64_pic_a_OBJECTS) $(libebl_x86_64_pic_a_LIBADD) - $(AM_V_at)$(RANLIB) libebl_x86_64_pic.a - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aarch64_cfi.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aarch64_corenote.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aarch64_init.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aarch64_initreg.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aarch64_regs.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aarch64_retval.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aarch64_symbol.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alpha_auxv.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alpha_corenote.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alpha_init.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alpha_regs.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alpha_retval.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alpha_symbol.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arm_attrs.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arm_auxv.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arm_cfi.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arm_corenote.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arm_init.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arm_initreg.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arm_regs.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arm_retval.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arm_symbol.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386_auxv.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386_cfi.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386_corenote.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386_init.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386_initreg.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386_regs.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386_retval.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386_symbol.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386_syscall.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ia64_init.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ia64_regs.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ia64_retval.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ia64_symbol.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc64_corenote.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc64_init.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc64_resolve_sym.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc64_retval.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc64_symbol.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc_attrs.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc_auxv.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc_cfi.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc_corenote.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc_init.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc_initreg.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc_regs.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc_retval.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc_symbol.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppc_syscall.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_cfi.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_corenote.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_init.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_initreg.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_regs.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_retval.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_symbol.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390_unwind.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/s390x_corenote.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sh_corenote.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sh_init.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sh_regs.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sh_retval.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sh_symbol.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sparc64_corenote.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sparc_auxv.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sparc_corenote.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sparc_init.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sparc_regs.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sparc_retval.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sparc_symbol.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tilegx_corenote.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tilegx_init.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tilegx_regs.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tilegx_retval.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tilegx_symbol.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x86_64_cfi.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x86_64_corenote.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x86_64_init.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x86_64_initreg.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x86_64_regs.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x86_64_retval.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x86_64_symbol.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x86_64_syscall.Po@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LIBRARIES) $(DATA) $(HEADERS) -installdirs: -install-exec: install-exec-am -install-data: install-data-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ - clean-noinstLIBRARIES cscopelist-am ctags ctags-am distclean \ - distclean-compile distclean-generic distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ - uninstall-am - - -%.os: %.c %.o -@AMDEP_TRUE@ if $(COMPILE.os) -c -o $@ -fpic -DPIC -DSHARED -MT $@ -MD -MP \ -@AMDEP_TRUE@ -MF "$(DEPDIR)/$*.Tpo" `test -f '$<' || echo '$(srcdir)/'`$<; \ -@AMDEP_TRUE@ then cat "$(DEPDIR)/$*.Tpo" >> "$(DEPDIR)/$*.Po"; \ -@AMDEP_TRUE@ rm -f "$(DEPDIR)/$*.Tpo"; \ -@AMDEP_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ -@AMDEP_TRUE@ fi -@AMDEP_FALSE@ $(COMPILE.os) -c -o $@ -fpic -DPIC -DSHARED $< - -libebl_%.so libebl_%.map: libebl_%_pic.a $(libelf) $(libdw) - @rm -f $(@:.so=.map) - echo 'ELFUTILS_$(PACKAGE_VERSION) { global: $*_init; local: *; };' \ - > $(@:.so=.map) - $(LINK) -shared -o $(@:.map=.so) \ - -Wl,--whole-archive $< $(cpu_$*) -Wl,--no-whole-archive \ - -Wl,--version-script,$(@:.so=.map) \ - -Wl,-z,defs -Wl,--as-needed $(libelf) $(libdw) - @$(textrel_check) - -libebl_i386.so: $(cpu_i386) -libebl_x86_64.so: $(cpu_x86_64) - -install: install-am install-ebl-modules -install-ebl-modules: - $(mkinstalldirs) $(DESTDIR)$(libdir)/$(LIBEBL_SUBDIR) - for m in $(modules); do \ - $(INSTALL_PROGRAM) libebl_$${m}.so $(DESTDIR)$(libdir)/$(LIBEBL_SUBDIR)/libebl_$${m}-$(PACKAGE_VERSION).so; \ - ln -fs libebl_$${m}-$(PACKAGE_VERSION).so $(DESTDIR)$(libdir)/$(LIBEBL_SUBDIR)/libebl_$${m}.so; \ - done - -uninstall: uninstall-am - for m in $(modules); do \ - rm -f $(DESTDIR)$(libdir)/$(LIBEBL_SUBDIR)/libebl_$${m}-$(PACKAGE_VERSION).so; \ - rm -f $(DESTDIR)$(libdir)/$(LIBEBL_SUBDIR)/libebl_$${m}.so; \ - done - rmdir --ignore-fail-on-non-empty $(DESTDIR)$(libdir)/$(LIBEBL_SUBDIR) - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/backends/aarch64_cfi.c b/src/backends/aarch64_cfi.c deleted file mode 100644 index acbb9b69..00000000 --- a/src/backends/aarch64_cfi.c +++ /dev/null @@ -1,82 +0,0 @@ -/* arm ABI-specified defaults for DWARF CFI. - Copyright (C) 2013 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> - -#define BACKEND aarch64_ -#include "libebl_CPU.h" - - -/* ABI-specified state of DWARF CFI based on: - - "DWARF for the ARM 64 bit architecture (AArch64) 1.0" -http://infocenter.arm.com/help/topic/com.arm.doc.ihi0057b/IHI0057B_aadwarf64.pdf - - "Procedure Call Standard for the ARM 64 bit Architecture 1.0" -http://infocenter.arm.com/help/topic/com.arm.doc.ihi0055b/IHI0055B_aapcs64.pdf -*/ - -int -aarch64_abi_cfi (Ebl *ebl __attribute__ ((unused)), Dwarf_CIE *abi_info) -{ - static const uint8_t abi_cfi[] = - { - /* The initial Canonical Frame Address is the value of the - Stack Pointer (r31) as setup in the previous frame. */ - DW_CFA_def_cfa, ULEB128_7 (30), ULEB128_7 (0), - -#define SV(n) DW_CFA_same_value, ULEB128_7 (n) - /* Callee-saved regs r19-r28. */ - SV (19), SV (20), SV (21), SV (22), SV (23), - SV (24), SV (25), SV (26), SV (27), SV (28), - - /* The Frame Pointer (FP, r29) and Link Register (LR, r30). */ - SV (29), SV (30), - - /* Callee-saved fpregs v8-v15. v0 == 64. */ - SV (72), SV (73), SV (74), SV (75), - SV (76), SV (77), SV (78), SV (79), -#undef SV - - /* XXX Note: registers intentionally unused by the program, - for example as a consequence of the procedure call standard - should be initialized as if by DW_CFA_same_value. */ - }; - - abi_info->initial_instructions = abi_cfi; - abi_info->initial_instructions_end = &abi_cfi[sizeof abi_cfi]; - abi_info->data_alignment_factor = -4; - - abi_info->return_address_register = 30; /* lr. */ - - return 0; -} diff --git a/src/backends/aarch64_corenote.c b/src/backends/aarch64_corenote.c deleted file mode 100644 index 9b424859..00000000 --- a/src/backends/aarch64_corenote.c +++ /dev/null @@ -1,163 +0,0 @@ -/* AArch64 specific core note handling. - Copyright (C) 2013 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <elf.h> -#include <inttypes.h> -#include <stddef.h> -#include <stdio.h> -#include <sys/time.h> - -#define BACKEND aarch64_ -#include "libebl_CPU.h" - -#define ULONG uint64_t -#define PID_T int32_t -#define UID_T uint32_t -#define GID_T uint32_t -#define ALIGN_ULONG 8 -#define ALIGN_PID_T 4 -#define ALIGN_UID_T 4 -#define ALIGN_GID_T 4 -#define TYPE_ULONG ELF_T_XWORD -#define TYPE_PID_T ELF_T_SWORD -#define TYPE_UID_T ELF_T_WORD -#define TYPE_GID_T ELF_T_WORD - -#define PRSTATUS_REGS_SIZE (34 * 8) - -static const Ebl_Register_Location prstatus_regs[] = - { - { .offset = 0, .regno = 0, .count = 32, .bits = 64 }, /* x0..x30, sp */ - }; - -#define PRSTATUS_REGSET_ITEMS \ - { \ - .name = "pc", .type = ELF_T_XWORD, .format = 'x', \ - .offset = (offsetof (struct EBLHOOK(prstatus), pr_reg) \ - + PRSTATUS_REGS_SIZE - 16), \ - .group = "register", \ - .pc_register = true \ - }, \ - { \ - .name = "pstate", .type = ELF_T_XWORD, .format = 'x', \ - .offset = (offsetof (struct EBLHOOK(prstatus), pr_reg) \ - + PRSTATUS_REGS_SIZE - 8), \ - .group = "register" \ - } - -static const Ebl_Register_Location aarch64_fpregset_regs[] = - { - { .offset = 0, .regno = 64, .count = 32, .bits = 128 }, /* v0..v31 */ - }; - -static const Ebl_Core_Item aarch64_fpregset_items[] = - { - { - .name = "fpsr", .type = ELF_T_WORD, .format = 'x', - .offset = 512, .group = "register" - }, - { - .name = "fpcr", .type = ELF_T_WORD, .format = 'x', - .offset = 516, .group = "register" - } - }; - -static const Ebl_Core_Item aarch64_tls_items[] = - { - { - .name = "tls", .type = ELF_T_XWORD, .format = 'x', - .offset = 0, .group = "register" - } - }; - -#define AARCH64_HWBP_REG(KIND, N) \ - { \ - .name = "DBG" KIND "VR" #N "_EL1", .type = ELF_T_XWORD, .format = 'x', \ - .offset = 8 + N * 16, .group = "register" \ - }, \ - { \ - .name = "DBG" KIND "CR" #N "_EL1", .type = ELF_T_WORD, .format = 'x', \ - .offset = 16 + N * 16, .group = "register" \ - } - -#define AARCH64_BP_WP_GROUP(KIND, NAME) \ - static const Ebl_Core_Item NAME[] = \ - { \ - { \ - .name = "dbg_info", .type = ELF_T_WORD, .format = 'x', \ - .offset = 0, .group = "control" \ - }, \ - /* N.B.: 4 bytes of padding here. */ \ - \ - AARCH64_HWBP_REG(KIND, 0), \ - AARCH64_HWBP_REG(KIND, 1), \ - AARCH64_HWBP_REG(KIND, 2), \ - AARCH64_HWBP_REG(KIND, 3), \ - AARCH64_HWBP_REG(KIND, 4), \ - AARCH64_HWBP_REG(KIND, 5), \ - AARCH64_HWBP_REG(KIND, 6), \ - AARCH64_HWBP_REG(KIND, 7), \ - AARCH64_HWBP_REG(KIND, 8), \ - AARCH64_HWBP_REG(KIND, 9), \ - AARCH64_HWBP_REG(KIND, 10), \ - AARCH64_HWBP_REG(KIND, 11), \ - AARCH64_HWBP_REG(KIND, 12), \ - AARCH64_HWBP_REG(KIND, 13), \ - AARCH64_HWBP_REG(KIND, 14), \ - AARCH64_HWBP_REG(KIND, 15), \ - \ - /* The DBGBVR+DBGBCR pair only takes 12 bytes. There are 4 bytes \ - of padding at the end of each pair. The item formatter in \ - readelf can skip those, but the missing 4 bytes at the end of \ - the whole block cause it to assume the whole item bunch \ - repeats, so it loops around to read more. Insert an explicit \ - (but invisible) padding word. */ \ - { \ - .name = "", .type = ELF_T_WORD, .format = 'h', \ - .offset = 260, .group = "register" \ - } \ - } - -AARCH64_BP_WP_GROUP ("B", aarch64_hw_bp_items); -AARCH64_BP_WP_GROUP ("W", aarch64_hw_wp_items); - -#undef AARCH64_BP_WP_GROUP -#undef AARCH64_HWBP_REG - -#define EXTRA_NOTES \ - EXTRA_REGSET_ITEMS (NT_FPREGSET, 528, \ - aarch64_fpregset_regs, aarch64_fpregset_items) \ - EXTRA_ITEMS (NT_ARM_TLS, 8, aarch64_tls_items) \ - EXTRA_ITEMS (NT_ARM_HW_BREAK, 264, aarch64_hw_bp_items) \ - EXTRA_ITEMS (NT_ARM_HW_WATCH, 264, aarch64_hw_wp_items) - -#include "linux-core-note.c" diff --git a/src/backends/aarch64_init.c b/src/backends/aarch64_init.c deleted file mode 100644 index b0fd17a7..00000000 --- a/src/backends/aarch64_init.c +++ /dev/null @@ -1,69 +0,0 @@ -/* Initialization of AArch64 specific backend library. - Copyright (C) 2013 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#define BACKEND aarch64_ -#define RELOC_PREFIX R_AARCH64_ -#include "libebl_CPU.h" - -/* This defines the common reloc hooks based on aarch64_reloc.def. */ -#include "common-reloc.c" - - -const char * -aarch64_init (elf, machine, eh, ehlen) - Elf *elf __attribute__ ((unused)); - GElf_Half machine __attribute__ ((unused)); - Ebl *eh; - size_t ehlen; -{ - /* Check whether the Elf_BH object has a sufficent size. */ - if (ehlen < sizeof (Ebl)) - return NULL; - - /* We handle it. */ - eh->name = "AARCH64"; - aarch64_init_reloc (eh); - HOOK (eh, register_info); - HOOK (eh, core_note); - HOOK (eh, reloc_simple_type); - HOOK (eh, return_value_location); - HOOK (eh, check_special_symbol); - HOOK (eh, abi_cfi); - - /* X0-X30 (31 regs) + SP + 1 Reserved + ELR, 30 Reserved regs (34-43) - + V0-V31 (32 regs, least significant 64 bits only) - + ALT_FRAME_RETURN_COLUMN (used when LR isn't used) = 97 DWARF regs. */ - eh->frame_nregs = 97; - HOOK (eh, set_initial_registers_tid); - - return MODVERSION; -} diff --git a/src/backends/aarch64_initreg.c b/src/backends/aarch64_initreg.c deleted file mode 100644 index 9706205e..00000000 --- a/src/backends/aarch64_initreg.c +++ /dev/null @@ -1,92 +0,0 @@ -/* Fetch live process registers from TID. - Copyright (C) 2013, 2014 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "system.h" -#include <assert.h> -#ifdef __aarch64__ -# include <linux/uio.h> -# include <sys/user.h> -# include <sys/ptrace.h> -/* Deal with old glibc defining user_pt_regs instead of user_regs_struct. */ -# ifndef HAVE_SYS_USER_REGS -# define user_regs_struct user_pt_regs -# define user_fpsimd_struct user_fpsimd_state -# endif -#endif - -#define BACKEND aarch64_ -#include "libebl_CPU.h" - -bool -aarch64_set_initial_registers_tid (pid_t tid __attribute__ ((unused)), - ebl_tid_registers_t *setfunc __attribute__ ((unused)), - void *arg __attribute__ ((unused))) -{ -#ifndef __aarch64__ - return false; -#else /* __aarch64__ */ - - /* General registers. */ - struct user_regs_struct gregs; - struct iovec iovec; - iovec.iov_base = &gregs; - iovec.iov_len = sizeof (gregs); - if (ptrace (PTRACE_GETREGSET, tid, NT_PRSTATUS, &iovec) != 0) - return false; - - /* X0..X30 plus SP. */ - if (! setfunc (0, 32, (Dwarf_Word *) &gregs.regs[0], arg)) - return false; - - /* PC. */ - if (! setfunc (-1, 1, (Dwarf_Word *) &gregs.pc, arg)) - return false; - - /* ELR cannot be found. */ - - /* FP registers (only 64bits are used). */ - struct user_fpsimd_struct fregs; - iovec.iov_base = &fregs; - iovec.iov_len = sizeof (fregs); - if (ptrace (PTRACE_GETREGSET, tid, NT_FPREGSET, &iovec) != 0) - return false; - - Dwarf_Word dwarf_fregs[32]; - for (int r = 0; r < 32; r++) - dwarf_fregs[r] = fregs.vregs[r] & 0xFFFFFFFF; - - if (! setfunc (64, 32, dwarf_fregs, arg)) - return false; - - return true; -#endif /* __aarch64__ */ -} diff --git a/src/backends/aarch64_regs.c b/src/backends/aarch64_regs.c deleted file mode 100644 index 7a8a6780..00000000 --- a/src/backends/aarch64_regs.c +++ /dev/null @@ -1,102 +0,0 @@ -/* Register names and numbers for AArch64 DWARF. - Copyright (C) 2013, 2014 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdio.h> -#include <string.h> -#include <dwarf.h> -#include <stdarg.h> - -#define BACKEND aarch64_ -#include "libebl_CPU.h" - -ssize_t -aarch64_register_info (Ebl *ebl __attribute__ ((unused)), - int regno, char *name, size_t namelen, - const char **prefix, const char **setnamep, - int *bits, int *typep) -{ - if (name == NULL) - return 128; - - __attribute__ ((format (printf, 3, 4))) - ssize_t - regtype (const char *setname, int type, const char *fmt, ...) - { - *setnamep = setname; - *typep = type; - - va_list ap; - va_start (ap, fmt); - int s = vsnprintf (name, namelen, fmt, ap); - va_end(ap); - - if (s < 0 || (unsigned) s >= namelen) - return -1; - return s + 1; - } - - *prefix = ""; - *bits = 64; - - switch (regno) - { - case 0 ... 30: - return regtype ("integer", DW_ATE_signed, "x%d", regno); - - case 31: - return regtype ("integer", DW_ATE_address, "sp"); - - case 32: - return 0; - - case 33: - return regtype ("integer", DW_ATE_address, "elr"); - - case 34 ... 63: - return 0; - - case 64 ... 95: - /* FP/SIMD register file supports a variety of data types--it - can be thought of as a register holding a single integer or - floating-point value, or a vector of 8-, 16-, 32- or 64-bit - integers. 128-bit quad-word is the only singular value that - covers the whole register, so mark the register thus. */ - *bits = 128; - return regtype ("FP/SIMD", DW_ATE_unsigned, "v%d", regno - 64); - - case 96 ... 127: - return 0; - - default: - return -1; - } -} diff --git a/src/backends/aarch64_reloc.def b/src/backends/aarch64_reloc.def deleted file mode 100644 index 36d29e65..00000000 --- a/src/backends/aarch64_reloc.def +++ /dev/null @@ -1,157 +0,0 @@ -/* List the relocation types for AArch64. -*- C -*- - Copyright (C) 2013, 2014 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -/* NAME, REL|EXEC|DYN */ - -RELOC_TYPE (ABS64, REL|EXEC|DYN) -RELOC_TYPE (ABS32, REL|EXEC|DYN) -RELOC_TYPE (COPY, EXEC) -RELOC_TYPE (GLOB_DAT, EXEC|DYN) -RELOC_TYPE (JUMP_SLOT, EXEC|DYN) -RELOC_TYPE (RELATIVE, EXEC|DYN) -RELOC_TYPE (TLS_DTPMOD64, EXEC|DYN) -RELOC_TYPE (TLS_DTPREL64, EXEC|DYN) -RELOC_TYPE (TLS_TPREL64, EXEC|DYN) -RELOC_TYPE (TLSDESC, EXEC|DYN) - -/* R_AARCH64_NONE records that the section containing the place to be - relocated depends on the section defining the symbol mentioned in - the relocation directive[.] (ARM IHI 0056B). */ -RELOC_TYPE (NONE, REL) - -RELOC_TYPE (ABS16, REL) -RELOC_TYPE (PREL64, REL) -RELOC_TYPE (PREL32, REL) -RELOC_TYPE (PREL16, REL) -RELOC_TYPE (MOVW_UABS_G0, REL) -RELOC_TYPE (MOVW_UABS_G0_NC, REL) -RELOC_TYPE (MOVW_UABS_G1, REL) -RELOC_TYPE (MOVW_UABS_G1_NC, REL) -RELOC_TYPE (MOVW_UABS_G2, REL) -RELOC_TYPE (MOVW_UABS_G2_NC, REL) -RELOC_TYPE (MOVW_UABS_G3, REL) -RELOC_TYPE (MOVW_SABS_G0, REL) -RELOC_TYPE (MOVW_SABS_G1, REL) -RELOC_TYPE (MOVW_SABS_G2, REL) -RELOC_TYPE (LD_PREL_LO19, REL) -RELOC_TYPE (ADR_PREL_LO21, REL) -RELOC_TYPE (ADR_PREL_PG_HI21, REL) -RELOC_TYPE (ADR_PREL_PG_HI21_NC, REL) -RELOC_TYPE (ADD_ABS_LO12_NC, REL) -RELOC_TYPE (LDST8_ABS_LO12_NC, REL) -RELOC_TYPE (LDST16_ABS_LO12_NC, REL) -RELOC_TYPE (LDST32_ABS_LO12_NC, REL) -RELOC_TYPE (LDST64_ABS_LO12_NC, REL) -RELOC_TYPE (LDST128_ABS_LO12_NC, REL) -RELOC_TYPE (TSTBR14, REL) -RELOC_TYPE (CONDBR19, REL) -RELOC_TYPE (JUMP26, REL) -RELOC_TYPE (CALL26, REL) -RELOC_TYPE (MOVW_PREL_G0, REL) -RELOC_TYPE (MOVW_PREL_G0_NC, REL) -RELOC_TYPE (MOVW_PREL_G1, REL) -RELOC_TYPE (MOVW_PREL_G1_NC, REL) -RELOC_TYPE (MOVW_PREL_G2, REL) -RELOC_TYPE (MOVW_PREL_G2_NC, REL) -RELOC_TYPE (MOVW_PREL_G3, REL) -RELOC_TYPE (MOVW_GOTOFF_G0, REL) -RELOC_TYPE (MOVW_GOTOFF_G0_NC, REL) -RELOC_TYPE (MOVW_GOTOFF_G1, REL) -RELOC_TYPE (MOVW_GOTOFF_G1_NC, REL) -RELOC_TYPE (MOVW_GOTOFF_G2, REL) -RELOC_TYPE (MOVW_GOTOFF_G2_NC, REL) -RELOC_TYPE (MOVW_GOTOFF_G3, REL) -RELOC_TYPE (GOTREL64, REL) -RELOC_TYPE (GOTREL32, REL) -RELOC_TYPE (GOT_LD_PREL19, REL) -RELOC_TYPE (LD64_GOTOFF_LO15, REL) -RELOC_TYPE (ADR_GOT_PAGE, REL) -RELOC_TYPE (LD64_GOT_LO12_NC, REL) -RELOC_TYPE (LD64_GOTPAGE_LO15, REL) -RELOC_TYPE (TLSGD_ADR_PREL21, REL) -RELOC_TYPE (TLSGD_ADR_PAGE21, REL) -RELOC_TYPE (TLSGD_ADD_LO12_NC, REL) -RELOC_TYPE (TLSGD_MOVW_G1, REL) -RELOC_TYPE (TLSGD_MOVW_G0_NC, REL) -RELOC_TYPE (TLSLD_ADR_PREL21, REL) -RELOC_TYPE (TLSLD_ADR_PAGE21, REL) -RELOC_TYPE (TLSLD_ADD_LO12_NC, REL) -RELOC_TYPE (TLSLD_MOVW_G1, REL) -RELOC_TYPE (TLSLD_MOVW_G0_NC, REL) -RELOC_TYPE (TLSLD_LD_PREL19, REL) -RELOC_TYPE (TLSLD_MOVW_DTPREL_G2, REL) -RELOC_TYPE (TLSLD_MOVW_DTPREL_G1, REL) -RELOC_TYPE (TLSLD_MOVW_DTPREL_G1_NC, REL) -RELOC_TYPE (TLSLD_MOVW_DTPREL_G0, REL) -RELOC_TYPE (TLSLD_MOVW_DTPREL_G0_NC, REL) -RELOC_TYPE (TLSLD_ADD_DTPREL_HI12, REL) -RELOC_TYPE (TLSLD_ADD_DTPREL_LO12, REL) -RELOC_TYPE (TLSLD_ADD_DTPREL_LO12_NC, REL) -RELOC_TYPE (TLSLD_LDST8_DTPREL_LO12, REL) -RELOC_TYPE (TLSLD_LDST8_DTPREL_LO12_NC, REL) -RELOC_TYPE (TLSLD_LDST16_DTPREL_LO12, REL) -RELOC_TYPE (TLSLD_LDST16_DTPREL_LO12_NC, REL) -RELOC_TYPE (TLSLD_LDST32_DTPREL_LO12, REL) -RELOC_TYPE (TLSLD_LDST32_DTPREL_LO12_NC, REL) -RELOC_TYPE (TLSLD_LDST64_DTPREL_LO12, REL) -RELOC_TYPE (TLSLD_LDST64_DTPREL_LO12_NC, REL) -RELOC_TYPE (TLSLD_LDST128_DTPREL_LO12, REL) -RELOC_TYPE (TLSLD_LDST128_DTPREL_LO12_NC, REL) -RELOC_TYPE (TLSIE_MOVW_GOTTPREL_G1, REL) -RELOC_TYPE (TLSIE_MOVW_GOTTPREL_G0_NC, REL) -RELOC_TYPE (TLSIE_ADR_GOTTPREL_PAGE21, REL) -RELOC_TYPE (TLSIE_LD64_GOTTPREL_LO12_NC, REL) -RELOC_TYPE (TLSIE_LD_GOTTPREL_PREL19, REL) -RELOC_TYPE (TLSLE_MOVW_TPREL_G2, REL) -RELOC_TYPE (TLSLE_MOVW_TPREL_G1, REL) -RELOC_TYPE (TLSLE_MOVW_TPREL_G1_NC, REL) -RELOC_TYPE (TLSLE_MOVW_TPREL_G0, REL) -RELOC_TYPE (TLSLE_MOVW_TPREL_G0_NC, REL) -RELOC_TYPE (TLSLE_ADD_TPREL_HI12, REL) -RELOC_TYPE (TLSLE_ADD_TPREL_LO12, REL) -RELOC_TYPE (TLSLE_ADD_TPREL_LO12_NC, REL) -RELOC_TYPE (TLSLE_LDST8_TPREL_LO12, REL) -RELOC_TYPE (TLSLE_LDST8_TPREL_LO12_NC, REL) -RELOC_TYPE (TLSLE_LDST16_TPREL_LO12, REL) -RELOC_TYPE (TLSLE_LDST16_TPREL_LO12_NC, REL) -RELOC_TYPE (TLSLE_LDST32_TPREL_LO12, REL) -RELOC_TYPE (TLSLE_LDST32_TPREL_LO12_NC, REL) -RELOC_TYPE (TLSLE_LDST64_TPREL_LO12, REL) -RELOC_TYPE (TLSLE_LDST64_TPREL_LO12_NC, REL) -RELOC_TYPE (TLSLE_LDST128_TPREL_LO12, REL) -RELOC_TYPE (TLSLE_LDST128_TPREL_LO12_NC, REL) -RELOC_TYPE (TLSDESC_LD_PREL19, REL) -RELOC_TYPE (TLSDESC_ADR_PREL21, REL) -RELOC_TYPE (TLSDESC_ADR_PAGE21, REL) -RELOC_TYPE (TLSDESC_LD64_LO12, REL) -RELOC_TYPE (TLSDESC_ADD_LO12, REL) -RELOC_TYPE (TLSDESC_OFF_G1, REL) -RELOC_TYPE (TLSDESC_OFF_G0_NC, REL) -RELOC_TYPE (TLSDESC_LDR, REL) -RELOC_TYPE (TLSDESC_ADD, REL) -RELOC_TYPE (TLSDESC_CALL, REL) diff --git a/src/backends/aarch64_retval.c b/src/backends/aarch64_retval.c deleted file mode 100644 index 68de307e..00000000 --- a/src/backends/aarch64_retval.c +++ /dev/null @@ -1,376 +0,0 @@ -/* Function return value location for Linux/AArch64 ABI. - Copyright (C) 2013 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdio.h> -#include <inttypes.h> - -#include <assert.h> -#include <dwarf.h> - -#define BACKEND aarch64_ -#include "libebl_CPU.h" - -static int -skip_until (Dwarf_Die *child, int tag) -{ - int i; - while (DWARF_TAG_OR_RETURN (child) != tag) - if ((i = dwarf_siblingof (child, child)) != 0) - /* If there are no members, then this is not a HFA. Errors - are propagated. */ - return i; - return 0; -} - -static int -dwarf_bytesize_aux (Dwarf_Die *die, Dwarf_Word *sizep) -{ - int bits; - if (((bits = 8 * dwarf_bytesize (die)) < 0 - && (bits = dwarf_bitsize (die)) < 0) - || bits % 8 != 0) - return -1; - - *sizep = bits / 8; - return 0; -} - -/* HFA (Homogeneous Floating-point Aggregate) is an aggregate type - whose members are all of the same floating-point type, which is - then base type of this HFA. Instead of being floating-point types - directly, members can instead themselves be HFA. Such HFA fields - are handled as if their type were HFA base type. - - This function returns 0 if TYPEDIE is HFA, 1 if it is not, or -1 if - there were errors. In the former case, *SIZEP contains byte size - of the base type (e.g. 8 for IEEE double). *COUNT is set to the - number of leaf members of the HFA. */ -static int hfa_type (Dwarf_Die *ftypedie, int tag, - Dwarf_Word *sizep, Dwarf_Word *countp); - -/* Return 0 if MEMBDIE refers to a member with a floating-point or HFA - type, or 1 if it's not. Return -1 for errors. The meaning of the - remaining arguments is as documented at hfa_type. */ -static int -member_is_fp (Dwarf_Die *membdie, Dwarf_Word *sizep, Dwarf_Word *countp) -{ - Dwarf_Die typedie; - int tag = dwarf_peeled_die_type (membdie, &typedie); - switch (tag) - { - case DW_TAG_base_type:; - Dwarf_Word encoding; - Dwarf_Attribute attr_mem; - if (dwarf_attr_integrate (&typedie, DW_AT_encoding, &attr_mem) == NULL - || dwarf_formudata (&attr_mem, &encoding) != 0) - return -1; - - switch (encoding) - { - case DW_ATE_complex_float: - *countp = 2; - break; - - case DW_ATE_float: - *countp = 1; - break; - - default: - return 1; - } - - if (dwarf_bytesize_aux (&typedie, sizep) < 0) - return -1; - - *sizep /= *countp; - return 0; - - case DW_TAG_structure_type: - case DW_TAG_union_type: - case DW_TAG_array_type: - return hfa_type (&typedie, tag, sizep, countp); - } - - return 1; -} - -static int -hfa_type (Dwarf_Die *ftypedie, int tag, Dwarf_Word *sizep, Dwarf_Word *countp) -{ - assert (tag == DW_TAG_structure_type || tag == DW_TAG_class_type - || tag == DW_TAG_union_type || tag == DW_TAG_array_type); - - int i; - if (tag == DW_TAG_array_type) - { - Dwarf_Word tot_size; - if (dwarf_aggregate_size (ftypedie, &tot_size) < 0) - return -1; - - /* For vector types, we don't care about the underlying - type, but only about the vector type itself. */ - bool vec; - Dwarf_Attribute attr_mem; - if (dwarf_formflag (dwarf_attr_integrate (ftypedie, DW_AT_GNU_vector, - &attr_mem), &vec) == 0 - && vec) - { - *sizep = tot_size; - *countp = 1; - - return 0; - } - - if ((i = member_is_fp (ftypedie, sizep, countp)) == 0) - { - *countp = tot_size / *sizep; - return 0; - } - - return i; - } - - /* Find first DW_TAG_member and determine its type. */ - Dwarf_Die member; - if ((i = dwarf_child (ftypedie, &member) != 0)) - return i; - - if ((i = skip_until (&member, DW_TAG_member)) != 0) - return i; - - *countp = 0; - if ((i = member_is_fp (&member, sizep, countp)) != 0) - return i; - - while ((i = dwarf_siblingof (&member, &member)) == 0 - && (i = skip_until (&member, DW_TAG_member)) == 0) - { - Dwarf_Word size, count; - if ((i = member_is_fp (&member, &size, &count)) != 0) - return i; - - if (*sizep != size) - return 1; - - *countp += count; - } - - /* At this point we already have at least one FP member, which means - FTYPEDIE is an HFA. So either return 0, or propagate error. */ - return i < 0 ? i : 0; -} - -static int -pass_in_gpr (const Dwarf_Op **locp, Dwarf_Word size) -{ - static const Dwarf_Op loc[] = - { - { .atom = DW_OP_reg0 }, { .atom = DW_OP_piece, .number = 8 }, - { .atom = DW_OP_reg1 }, { .atom = DW_OP_piece, .number = 8 } - }; - - *locp = loc; - return size <= 8 ? 1 : 4; -} - -static int -pass_by_ref (const Dwarf_Op **locp) -{ - static const Dwarf_Op loc[] = { { .atom = DW_OP_breg0 } }; - - *locp = loc; - return 1; -} - -static int -pass_hfa (const Dwarf_Op **locp, Dwarf_Word size, Dwarf_Word count) -{ - assert (count >= 1 && count <= 4); - assert (size == 2 || size == 4 || size == 8 || size == 16); - -#define DEFINE_FPREG(NAME, SIZE) \ - static const Dwarf_Op NAME[] = { \ - { .atom = DW_OP_regx, .number = 64 }, \ - { .atom = DW_OP_piece, .number = SIZE }, \ - { .atom = DW_OP_regx, .number = 65 }, \ - { .atom = DW_OP_piece, .number = SIZE }, \ - { .atom = DW_OP_regx, .number = 66 }, \ - { .atom = DW_OP_piece, .number = SIZE }, \ - { .atom = DW_OP_regx, .number = 67 }, \ - { .atom = DW_OP_piece, .number = SIZE } \ - } - - switch (size) - { - case 2:; - DEFINE_FPREG (loc_hfa_2, 2); - *locp = loc_hfa_2; - break; - - case 4:; - DEFINE_FPREG (loc_hfa_4, 4); - *locp = loc_hfa_4; - break; - - case 8:; - DEFINE_FPREG (loc_hfa_8, 8); - *locp = loc_hfa_8; - break; - - case 16:; - DEFINE_FPREG (loc_hfa_16, 16); - *locp = loc_hfa_16; - break; - } -#undef DEFINE_FPREG - - return count == 1 ? 1 : 2 * count; -} - -static int -pass_in_simd (const Dwarf_Op **locp) -{ - /* This is like passing single-element HFA. Size doesn't matter, so - pretend it's for example double. */ - return pass_hfa (locp, 8, 1); -} - -int -aarch64_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) -{ - /* Start with the function's type, and get the DW_AT_type attribute, - which is the type of the return value. */ - Dwarf_Die typedie; - int tag = dwarf_peeled_die_type (functypedie, &typedie); - if (tag <= 0) - return tag; - - Dwarf_Word size = (Dwarf_Word)-1; - - /* If the argument type is a Composite Type that is larger than 16 - bytes, then the argument is copied to memory allocated by the - caller and the argument is replaced by a pointer to the copy. */ - if (tag == DW_TAG_structure_type || tag == DW_TAG_union_type - || tag == DW_TAG_class_type || tag == DW_TAG_array_type) - { - Dwarf_Word base_size, count; - switch (hfa_type (&typedie, tag, &base_size, &count)) - { - default: - return -1; - - case 0: - assert (count > 0); - if (count <= 4) - return pass_hfa (locp, base_size, count); - /* Fall through. */ - - case 1: - /* Not a HFA. */ - if (dwarf_aggregate_size (&typedie, &size) < 0) - return -1; - if (size > 16) - return pass_by_ref (locp); - } - } - - if (tag == DW_TAG_base_type - || tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) - { - if (dwarf_bytesize_aux (&typedie, &size) < 0) - { - if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) - size = 8; - else - return -1; - } - - Dwarf_Attribute attr_mem; - if (tag == DW_TAG_base_type) - { - Dwarf_Word encoding; - if (dwarf_formudata (dwarf_attr_integrate (&typedie, DW_AT_encoding, - &attr_mem), - &encoding) != 0) - return -1; - - switch (encoding) - { - /* If the argument is a Half-, Single-, Double- or Quad- - precision Floating-point [...] the argument is allocated - to the least significant bits of register v[NSRN]. */ - case DW_ATE_float: - switch (size) - { - case 2: /* half */ - case 4: /* sigle */ - case 8: /* double */ - case 16: /* quad */ - return pass_in_simd (locp); - - default: - return -2; - } - - case DW_ATE_complex_float: - switch (size) - { - case 8: /* float _Complex */ - case 16: /* double _Complex */ - case 32: /* long double _Complex */ - return pass_hfa (locp, size / 2, 2); - - default: - return -2; - } - - /* If the argument is an Integral or Pointer Type, the - size of the argument is less than or equal to 8 bytes - [...] the argument is copied to the least significant - bits in x[NGRN]. */ - case DW_ATE_boolean: - case DW_ATE_signed: - case DW_ATE_unsigned: - case DW_ATE_unsigned_char: - case DW_ATE_signed_char: - return pass_in_gpr (locp, size); - } - - return -2; - } - else - return pass_in_gpr (locp, size); - } - - *locp = NULL; - return 0; -} diff --git a/src/backends/aarch64_symbol.c b/src/backends/aarch64_symbol.c deleted file mode 100644 index 3fdc9cf8..00000000 --- a/src/backends/aarch64_symbol.c +++ /dev/null @@ -1,87 +0,0 @@ -/* AArch64 specific symbolic name handling. - Copyright (C) 2013 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <elf.h> -#include <stddef.h> -#include <string.h> - -#define BACKEND aarch64_ -#include "libebl_CPU.h" - - -/* Check for the simple reloc types. */ -Elf_Type -aarch64_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type) -{ - switch (type) - { - case R_AARCH64_ABS64: - return ELF_T_XWORD; - case R_AARCH64_ABS32: - return ELF_T_WORD; - case R_AARCH64_ABS16: - return ELF_T_HALF; - - default: - return ELF_T_NUM; - } -} - -/* If this is the _GLOBAL_OFFSET_TABLE_ symbol, then it should point to - .got[0] even if there is a .got.plt section. */ -bool -aarch64_check_special_symbol (Elf *elf, GElf_Ehdr *ehdr, const GElf_Sym *sym, - const char *name, const GElf_Shdr *destshdr) -{ - if (name != NULL - && strcmp (name, "_GLOBAL_OFFSET_TABLE_") == 0) - { - const char *sname = elf_strptr (elf, ehdr->e_shstrndx, destshdr->sh_name); - if (sname != NULL && strcmp (sname, ".got.plt") == 0) - { - Elf_Scn *scn = NULL; - while ((scn = elf_nextscn (elf, scn)) != NULL) - { - GElf_Shdr shdr_mem; - GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); - if (shdr != NULL) - { - sname = elf_strptr (elf, ehdr->e_shstrndx, shdr->sh_name); - if (sname != NULL && strcmp (sname, ".got") == 0) - return sym->st_value == shdr->sh_addr; - } - } - } - } - - return false; -} diff --git a/src/backends/alpha_auxv.c b/src/backends/alpha_auxv.c deleted file mode 100644 index 83e71997..00000000 --- a/src/backends/alpha_auxv.c +++ /dev/null @@ -1,49 +0,0 @@ -/* Alpha-specific auxv handling. - Copyright (C) 2008 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#define BACKEND alpha_ -#include "libebl_CPU.h" - -int -EBLHOOK(auxv_info) (GElf_Xword a_type, const char **name, const char **format) -{ - if (a_type != AT_HWCAP) - return 0; - - *name = "HWCAP"; - *format = "b" - "bwx\0" "fix\0" "cix\0" "0x08\0" - "0x10\0" "0x20\0" "0x40\0" "0x80\0" - "max\0" "precise_trap\0" - "\0"; - return 1; -} diff --git a/src/backends/alpha_corenote.c b/src/backends/alpha_corenote.c deleted file mode 100644 index 6190df37..00000000 --- a/src/backends/alpha_corenote.c +++ /dev/null @@ -1,70 +0,0 @@ -/* PowerPC specific core note handling. - Copyright (C) 2007 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <elf.h> -#include <inttypes.h> -#include <stddef.h> -#include <stdio.h> -#include <sys/time.h> - -#define BACKEND alpha_ -#include "libebl_CPU.h" - -static const Ebl_Register_Location prstatus_regs[] = - { - { .offset = 0, .regno = 0, .count = 31, .bits = 64 }, /* r0-r30 */ - { .offset = 32 * 8, .regno = 64, .count = 1, .bits = 64 }, /* pc */ - { .offset = 33 * 8, .regno = 66, .count = 1, .bits = 64 }, /* unique */ - }; -#define PRSTATUS_REGS_SIZE (33 * 8) - -static const Ebl_Register_Location fpregset_regs[] = - { - { .offset = 0, .regno = 32, .count = 32, .bits = 64 }, /* f0-f30, fpcr */ - }; -#define FPREGSET_SIZE (32 * 8) - -#define ULONG uint64_t -#define ALIGN_ULONG 8 -#define TYPE_ULONG ELF_T_XWORD -#define TYPE_LONG ELF_T_SXWORD -#define PID_T int32_t -#define UID_T uint32_t -#define GID_T uint32_t -#define ALIGN_PID_T 4 -#define ALIGN_UID_T 4 -#define ALIGN_GID_T 4 -#define TYPE_PID_T ELF_T_SWORD -#define TYPE_UID_T ELF_T_WORD -#define TYPE_GID_T ELF_T_WORD - -#include "linux-core-note.c" diff --git a/src/backends/alpha_init.c b/src/backends/alpha_init.c deleted file mode 100644 index a3307d83..00000000 --- a/src/backends/alpha_init.c +++ /dev/null @@ -1,70 +0,0 @@ -/* Initialization of Alpha specific backend library. - Copyright (C) 2002-2011 Red Hat, Inc. - This file is part of elfutils. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#define BACKEND alpha_ -#define RELOC_PREFIX R_ALPHA_ -#include "libebl_CPU.h" - -/* This defines the common reloc hooks based on alpha_reloc.def. */ -#include "common-reloc.c" - - -const char * -alpha_init (elf, machine, eh, ehlen) - Elf *elf __attribute__ ((unused)); - GElf_Half machine __attribute__ ((unused)); - Ebl *eh; - size_t ehlen; -{ - /* Check whether the Elf_BH object has a sufficent size. */ - if (ehlen < sizeof (Ebl)) - return NULL; - - /* We handle it. */ - eh->name = "Alpha"; - alpha_init_reloc (eh); - HOOK (eh, dynamic_tag_name); - HOOK (eh, dynamic_tag_check); - HOOK (eh, reloc_simple_type); - HOOK (eh, return_value_location); - HOOK (eh, machine_section_flag_check); - HOOK (eh, check_special_section); - HOOK (eh, check_special_symbol); - HOOK (eh, check_st_other_bits); - HOOK (eh, register_info); - HOOK (eh, core_note); - HOOK (eh, auxv_info); - eh->sysvhash_entrysize = sizeof (Elf64_Xword); - - return MODVERSION; -} diff --git a/src/backends/alpha_regs.c b/src/backends/alpha_regs.c deleted file mode 100644 index 436af3b1..00000000 --- a/src/backends/alpha_regs.c +++ /dev/null @@ -1,164 +0,0 @@ -/* Register names and numbers for Alpha DWARF. - Copyright (C) 2007 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <string.h> -#include <dwarf.h> - -#define BACKEND alpha_ -#include "libebl_CPU.h" - -ssize_t -alpha_register_info (Ebl *ebl __attribute__ ((unused)), - int regno, char *name, size_t namelen, - const char **prefix, const char **setname, - int *bits, int *type) -{ - if (name == NULL) - return 67; - - if (regno < 0 || regno > 66 || namelen < 7) - return -1; - - *prefix = "$"; - - *bits = 64; - *type = DW_ATE_signed; - *setname = "integer"; - if (regno >= 32 && regno < 64) - { - *setname = "FPU"; - *type = DW_ATE_float; - } - - switch (regno) - { - case 0: - name[0] = 'v'; - name[1] = '0'; - namelen = 2; - break; - - case 1 ... 8: - name[0] = 't'; - name[1] = regno - 1 + '0'; - namelen = 2; - break; - - case 9 ... 15: - name[0] = 's'; - name[1] = regno - 9 + '0'; - namelen = 2; - break; - - case 16 ... 21: - name[0] = 'a'; - name[1] = regno - 16 + '0'; - namelen = 2; - break; - - case 22 ... 23: - name[0] = 't'; - name[1] = regno - 22 + '8'; - namelen = 2; - break; - - case 24 ... 25: - name[0] = 't'; - name[1] = '1'; - name[2] = regno - 24 + '0'; - namelen = 3; - break; - - case 26: - *type = DW_ATE_address; - return stpcpy (name, "ra") + 1 - name; - - case 27: - return stpcpy (name, "t12") + 1 - name; - - case 28: - return stpcpy (name, "at") + 1 - name; - - case 29: - *type = DW_ATE_address; - return stpcpy (name, "gp") + 1 - name; - - case 30: - *type = DW_ATE_address; - return stpcpy (name, "sp") + 1 - name; - - case 31: - return stpcpy (name, "zero") + 1 - name; - - case 32 ... 32 + 9: - name[0] = 'f'; - name[1] = regno - 32 + '0'; - namelen = 2; - break; - - case 32 + 10 ... 32 + 19: - name[0] = 'f'; - name[1] = '1'; - name[2] = regno - 32 - 10 + '0'; - namelen = 3; - break; - - case 32 + 20 ... 32 + 29: - name[0] = 'f'; - name[1] = '2'; - name[2] = regno - 32 - 20 + '0'; - namelen = 3; - break; - - case 32 + 30: - return stpcpy (name, "f30") + 1 - name; - - case 32 + 31: - *type = DW_ATE_unsigned; - return stpcpy (name, "fpcr") + 1 - name; - - case 64: - *type = DW_ATE_address; - return stpcpy (name, "pc") + 1 - name; - - case 66: - *type = DW_ATE_address; - return stpcpy (name, "unique") + 1 - name; - - default: - *setname = NULL; - return 0; - } - - name[namelen++] = '\0'; - return namelen; -} diff --git a/src/backends/alpha_reloc.def b/src/backends/alpha_reloc.def deleted file mode 100644 index ed7e5c32..00000000 --- a/src/backends/alpha_reloc.def +++ /dev/null @@ -1,63 +0,0 @@ -/* List the relocation types for alpha. -*- C -*- - Copyright (C) 2005 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -/* NAME, REL|EXEC|DYN */ - -RELOC_TYPE (NONE, 0) -RELOC_TYPE (REFLONG, REL|EXEC|DYN) -RELOC_TYPE (REFQUAD, REL|EXEC|DYN) -RELOC_TYPE (GPREL32, REL) -RELOC_TYPE (LITERAL, REL) -RELOC_TYPE (LITUSE, REL) -RELOC_TYPE (GPDISP, REL) -RELOC_TYPE (BRADDR, REL) -RELOC_TYPE (HINT, REL) -RELOC_TYPE (SREL16, REL) -RELOC_TYPE (SREL32, REL) -RELOC_TYPE (SREL64, REL) -RELOC_TYPE (GPRELHIGH, REL) -RELOC_TYPE (GPRELLOW, REL) -RELOC_TYPE (GPREL16, REL) -RELOC_TYPE (COPY, 0) -RELOC_TYPE (GLOB_DAT, EXEC|DYN) -RELOC_TYPE (JMP_SLOT, EXEC|DYN) -RELOC_TYPE (RELATIVE, EXEC|DYN) -RELOC_TYPE (TLS_GD_HI, REL) -RELOC_TYPE (TLSGD, REL) -RELOC_TYPE (TLS_LDM, REL) -RELOC_TYPE (DTPMOD64, REL|EXEC|DYN) -RELOC_TYPE (GOTDTPREL, REL) -RELOC_TYPE (DTPREL64, REL|EXEC|DYN) -RELOC_TYPE (DTPRELHI, REL) -RELOC_TYPE (DTPRELLO, REL) -RELOC_TYPE (DTPREL16, REL) -RELOC_TYPE (GOTTPREL, REL) -RELOC_TYPE (TPREL64, REL|EXEC|DYN) -RELOC_TYPE (TPRELHI, REL) -RELOC_TYPE (TPRELLO, REL) -RELOC_TYPE (TPREL16, REL) diff --git a/src/backends/alpha_retval.c b/src/backends/alpha_retval.c deleted file mode 100644 index 53dbfa45..00000000 --- a/src/backends/alpha_retval.c +++ /dev/null @@ -1,150 +0,0 @@ -/* Function return value location for Alpha ELF ABI. - Copyright (C) 2005, 2007, 2014 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <dwarf.h> - -#define BACKEND alpha_ -#include "libebl_CPU.h" - - -/* $0. */ -static const Dwarf_Op loc_intreg[] = - { - { .atom = DW_OP_reg0 } - }; -#define nloc_intreg 1 - -/* $f0, or pair $f0, $f1. */ -static const Dwarf_Op loc_fpreg[] = - { - { .atom = DW_OP_regx, .number = 32 }, { .atom = DW_OP_piece, .number = 4 }, - { .atom = DW_OP_regx, .number = 33 }, { .atom = DW_OP_piece, .number = 4 }, - }; -#define nloc_fpreg 1 -#define nloc_fpregpair 4 - -/* The return value is a structure and is actually stored in stack space - passed in a hidden argument by the caller. But, the compiler - helpfully returns the address of that space in $0. */ -static const Dwarf_Op loc_aggregate[] = - { - { .atom = DW_OP_breg0, .number = 0 } - }; -#define nloc_aggregate 1 - -int -alpha_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) -{ - /* Start with the function's type, and get the DW_AT_type attribute, - which is the type of the return value. */ - Dwarf_Die die_mem, *typedie = &die_mem; - int tag = dwarf_peeled_die_type (functypedie, typedie); - if (tag <= 0) - return tag; - - switch (tag) - { - case -1: - return -1; - - case DW_TAG_subrange_type: - if (! dwarf_hasattr_integrate (typedie, DW_AT_byte_size)) - { - Dwarf_Attribute attr_mem, *attr; - attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem); - typedie = dwarf_formref_die (attr, &die_mem); - tag = DWARF_TAG_OR_RETURN (typedie); - } - /* Fall through. */ - - case DW_TAG_base_type: - case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: - { - Dwarf_Attribute attr_mem; - Dwarf_Word size; - if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size, - &attr_mem), &size) != 0) - { - if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) - size = 8; - else - return -1; - } - if (tag == DW_TAG_base_type) - { - Dwarf_Word encoding; - if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_encoding, - &attr_mem), - &encoding) != 0) - return -1; - - *locp = loc_fpreg; - if (encoding == DW_ATE_float) - { - if (size <= 8) - return nloc_fpreg; - goto aggregate; - } - if (encoding == DW_ATE_complex_float) - { - if (size <= 8 * 2) - return nloc_fpregpair; - goto aggregate; - } - } - if (size <= 8) - { - *locp = loc_intreg; - return nloc_intreg; - } - } - - /* Else fall through. */ - - case DW_TAG_structure_type: - case DW_TAG_class_type: - case DW_TAG_union_type: - case DW_TAG_string_type: - case DW_TAG_array_type: - aggregate: - *locp = loc_aggregate; - return nloc_aggregate; - } - - /* XXX We don't have a good way to return specific errors from ebl calls. - This value means we do not understand the type, but it is well-formed - DWARF and might be valid. */ - return -2; -} diff --git a/src/backends/alpha_symbol.c b/src/backends/alpha_symbol.c deleted file mode 100644 index 657d9eec..00000000 --- a/src/backends/alpha_symbol.c +++ /dev/null @@ -1,156 +0,0 @@ -/* Alpha specific symbolic name handling. - Copyright (C) 2002-2011 Red Hat, Inc. - This file is part of elfutils. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <elf.h> -#include <stddef.h> -#include <string.h> - -#define BACKEND alpha_ -#include "libebl_CPU.h" - - -const char * -alpha_dynamic_tag_name (int64_t tag, char *buf __attribute__ ((unused)), - size_t len __attribute__ ((unused))) -{ - switch (tag) - { - case DT_ALPHA_PLTRO: - return "ALPHA_PLTRO"; - default: - break; - } - return NULL; -} - -bool -alpha_dynamic_tag_check (int64_t tag) -{ - return tag == DT_ALPHA_PLTRO; -} - -/* Check for the simple reloc types. */ -Elf_Type -alpha_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type) -{ - switch (type) - { - case R_ALPHA_REFLONG: - return ELF_T_WORD; - case R_ALPHA_REFQUAD: - return ELF_T_XWORD; - default: - return ELF_T_NUM; - } -} - - -/* Check whether SHF_MASKPROC flags are valid. */ -bool -alpha_machine_section_flag_check (GElf_Xword sh_flags) -{ - return (sh_flags &~ (SHF_ALPHA_GPREL)) == 0; -} - -bool -alpha_check_special_section (Ebl *ebl, - int ndx __attribute__ ((unused)), - const GElf_Shdr *shdr, - const char *sname __attribute__ ((unused))) -{ - if ((shdr->sh_flags - & (SHF_WRITE | SHF_EXECINSTR)) == (SHF_WRITE | SHF_EXECINSTR) - && shdr->sh_addr != 0) - { - /* This is ordinarily flagged, but is valid for an old-style PLT. - - Look for the SHT_DYNAMIC section and the DT_PLTGOT tag in it. - Its d_ptr should match the .plt section's sh_addr. */ - - Elf_Scn *scn = NULL; - while ((scn = elf_nextscn (ebl->elf, scn)) != NULL) - { - GElf_Shdr scn_shdr; - if (likely (gelf_getshdr (scn, &scn_shdr) != NULL) - && scn_shdr.sh_type == SHT_DYNAMIC - && scn_shdr.sh_entsize != 0) - { - GElf_Addr pltgot = 0; - Elf_Data *data = elf_getdata (scn, NULL); - if (data != NULL) - for (size_t i = 0; i < data->d_size / scn_shdr.sh_entsize; ++i) - { - GElf_Dyn dyn; - if (unlikely (gelf_getdyn (data, i, &dyn) == NULL)) - break; - if (dyn.d_tag == DT_PLTGOT) - pltgot = dyn.d_un.d_ptr; - else if (dyn.d_tag == DT_ALPHA_PLTRO && dyn.d_un.d_val != 0) - return false; /* This PLT should not be writable. */ - } - return pltgot == shdr->sh_addr; - } - } - } - - return false; -} - -/* Check whether given symbol's st_value and st_size are OK despite failing - normal checks. */ -bool -alpha_check_special_symbol (Elf *elf __attribute__ ((unused)), - GElf_Ehdr *ehdr __attribute__ ((unused)), - const GElf_Sym *sym __attribute__ ((unused)), - const char *name, - const GElf_Shdr *destshdr __attribute__ ((unused))) -{ - if (name == NULL) - return false; - - if (strcmp (name, "_GLOBAL_OFFSET_TABLE_") == 0) - /* On Alpha any place in the section is valid. */ - return true; - - return false; -} - -/* Check whether only valid bits are set on the st_other symbol flag. - Standard ST_VISIBILITY have already been masked off. */ -bool -alpha_check_st_other_bits (unsigned char st_other) -{ - return ((((st_other & STO_ALPHA_STD_GPLOAD) == STO_ALPHA_NOPV) - || ((st_other & STO_ALPHA_STD_GPLOAD) == STO_ALPHA_STD_GPLOAD)) - && (st_other &~ STO_ALPHA_STD_GPLOAD) == 0); -} diff --git a/src/backends/arm_attrs.c b/src/backends/arm_attrs.c deleted file mode 100644 index c858715d..00000000 --- a/src/backends/arm_attrs.c +++ /dev/null @@ -1,245 +0,0 @@ -/* Object attribute tags for ARM. - Copyright (C) 2009 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <string.h> -#include <dwarf.h> - -#define BACKEND arm_ -#include "libebl_CPU.h" - -#define KNOWN_VALUES(...) do \ - { \ - static const char *table[] = { __VA_ARGS__ }; \ - if (value < sizeof table / sizeof table[0]) \ - *value_name = table[value]; \ - } while (0) - -bool -arm_check_object_attribute (ebl, vendor, tag, value, tag_name, value_name) - Ebl *ebl __attribute__ ((unused)); - const char *vendor; - int tag; - uint64_t value __attribute__ ((unused)); - const char **tag_name; - const char **value_name; -{ - if (!strcmp (vendor, "aeabi")) - switch (tag) - { - case 4: - *tag_name = "CPU_raw_name"; - return true; - case 5: - *tag_name = "CPU_name"; - return true; - case 6: - *tag_name = "CPU_arch"; - KNOWN_VALUES ("Pre-v4", - "v4", - "v4T", - "v5T", - "v5TE", - "v5TEJ", - "v6", - "v6KZ", - "v6T2", - "v6K", - "v7", - "v6-M", - "v6S-M"); - return true; - case 7: - *tag_name = "CPU_arch_profile"; - switch (value) - { - case 'A': - *value_name = "Application"; - break; - case 'R': - *value_name = "Realtime"; - break; - case 'M': - *value_name = "Microcontroller"; - break; - } - return true; - case 8: - *tag_name = "ARM_ISA_use"; - KNOWN_VALUES ("No", "Yes"); - return true; - case 9: - *tag_name = "THUMB_ISA_use"; - KNOWN_VALUES ("No", "Thumb-1", "Thumb-2"); - return true; - case 10: - *tag_name = "VFP_arch"; - KNOWN_VALUES ("No", "VFPv1", "VFPv2", "VFPv3", "VFPv3-D16"); - return true; - case 11: - *tag_name = "WMMX_arch"; - KNOWN_VALUES ("No", "WMMXv1", "WMMXv2"); - return true; - case 12: - *tag_name = "Advanced_SIMD_arch"; - KNOWN_VALUES ("No", "NEONv1"); - return true; - case 13: - *tag_name = "PCS_config"; - KNOWN_VALUES ("None", - "Bare platform", - "Linux application", - "Linux DSO", - "PalmOS 2004", - "PalmOS (reserved)", - "SymbianOS 2004", - "SymbianOS (reserved)"); - return true; - case 14: - *tag_name = "ABI_PCS_R9_use"; - KNOWN_VALUES ("V6", "SB", "TLS", "Unused"); - return true; - case 15: - *tag_name = "ABI_PCS_RW_data"; - KNOWN_VALUES ("Absolute", "PC-relative", "SB-relative", "None"); - return true; - case 16: - *tag_name = "ABI_PCS_RO_data"; - KNOWN_VALUES ("Absolute", "PC-relative", "None"); - return true; - case 17: - *tag_name = "ABI_PCS_GOT_use"; - KNOWN_VALUES ("None", "direct", "GOT-indirect"); - return true; - case 18: - *tag_name = "ABI_PCS_wchar_t"; - return true; - case 19: - *tag_name = "ABI_FP_rounding"; - KNOWN_VALUES ("Unused", "Needed"); - return true; - case 20: - *tag_name = "ABI_FP_denormal"; - KNOWN_VALUES ("Unused", "Needed", "Sign only"); - return true; - case 21: - *tag_name = "ABI_FP_exceptions"; - KNOWN_VALUES ("Unused", "Needed"); - return true; - case 22: - *tag_name = "ABI_FP_user_exceptions"; - KNOWN_VALUES ("Unused", "Needed"); - return true; - case 23: - *tag_name = "ABI_FP_number_model"; - KNOWN_VALUES ("Unused", "Finite", "RTABI", "IEEE 754"); - return true; - case 24: - *tag_name = "ABI_align8_needed"; - KNOWN_VALUES ("No", "Yes", "4-byte"); - return true; - case 25: - *tag_name = "ABI_align8_preserved"; - KNOWN_VALUES ("No", "Yes, except leaf SP", "Yes"); - return true; - case 26: - *tag_name = "ABI_enum_size"; - KNOWN_VALUES ("Unused", "small", "int", "forced to int"); - return true; - case 27: - *tag_name = "ABI_HardFP_use"; - KNOWN_VALUES ("as VFP_arch", "SP only", "DP only", "SP and DP"); - return true; - case 28: - *tag_name = "ABI_VFP_args"; - KNOWN_VALUES ("AAPCS", "VFP registers", "custom"); - return true; - case 29: - *tag_name = "ABI_WMMX_args"; - KNOWN_VALUES ("AAPCS", "WMMX registers", "custom"); - return true; - case 30: - *tag_name = "ABI_optimization_goals"; - KNOWN_VALUES ("None", - "Prefer Speed", - "Aggressive Speed", - "Prefer Size", - "Aggressive Size", - "Prefer Debug", - "Aggressive Debug"); - return true; - case 31: - *tag_name = "ABI_FP_optimization_goals"; - KNOWN_VALUES ("None", - "Prefer Speed", - "Aggressive Speed", - "Prefer Size", - "Aggressive Size", - "Prefer Accuracy", - "Aggressive Accuracy"); - return true; - case 34: - *tag_name = "CPU_unaligned_access"; - KNOWN_VALUES ("None", "v6"); - return true; - case 36: - *tag_name = "VFP_HP_extension"; - KNOWN_VALUES ("Not Allowed", "Allowed"); - return true; - case 38: - *tag_name = "ABI_FP_16bit_format"; - KNOWN_VALUES ("None", "IEEE 754", "Alternative Format"); - return true; - case 64: - *tag_name = "nodefaults"; - return true; - case 65: - *tag_name = "also_compatible_with"; - return true; - case 66: - *tag_name = "T2EE_use"; - KNOWN_VALUES ("Not Allowed", "Allowed"); - return true; - case 67: - *tag_name = "conformance"; - return true; - case 68: - *tag_name = "Virtualization_use"; - KNOWN_VALUES ("Not Allowed", "Allowed"); - return true; - case 70: - *tag_name = "MPextension_use"; - KNOWN_VALUES ("Not Allowed", "Allowed"); - return true; - } - - return false; -} diff --git a/src/backends/arm_auxv.c b/src/backends/arm_auxv.c deleted file mode 100644 index 3282bafc..00000000 --- a/src/backends/arm_auxv.c +++ /dev/null @@ -1,49 +0,0 @@ -/* ARM-specific auxv handling. - Copyright (C) 2009 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#define BACKEND arm_ -#include "libebl_CPU.h" - -int -EBLHOOK(auxv_info) (GElf_Xword a_type, const char **name, const char **format) -{ - if (a_type != AT_HWCAP) - return 0; - - *name = "HWCAP"; - *format = "b" - "swp\0" "half\0" "thumb\0" "26bit\0" - "fast-mult\0" "fpa\0" "vfp\0" "edsp\0" - "java\0" "iwmmxt\0" - "\0"; - return 1; -} diff --git a/src/backends/arm_cfi.c b/src/backends/arm_cfi.c deleted file mode 100644 index 971a1fc4..00000000 --- a/src/backends/arm_cfi.c +++ /dev/null @@ -1,90 +0,0 @@ -/* arm ABI-specified defaults for DWARF CFI. - Copyright (C) 2013 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> - -#define BACKEND arm_ -#include "libebl_CPU.h" - - -/* ABI-specified state of DWARF CFI based on: - - "DWARF for the ARM Architecture ABI r2.09" -http://infocenter.arm.com/help/topic/com.arm.doc.ihi0040b/IHI0040B_aadwarf.pdf - - "Procedure Call Standard for the ARM Architecture ABI r2.09" -http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042e/IHI0042E_aapcs.pdf -*/ - -int -arm_abi_cfi (Ebl *ebl __attribute__ ((unused)), Dwarf_CIE *abi_info) -{ - static const uint8_t abi_cfi[] = - { - /* The initial Canonical Frame Address is the value of the - Stack Pointer (r13) as setup in the previous frame. */ - DW_CFA_def_cfa, ULEB128_7 (13), ULEB128_7 (0), - - /* The Stack Pointer (r13) is restored from CFA address by default. */ - DW_CFA_val_offset, ULEB128_7 (13), ULEB128_7 (0), - -#define SV(n) DW_CFA_same_value, ULEB128_7 (n) - /* Callee-saved regs r4-r8, r10, r11. */ - SV (4), SV (5), SV (6), SV (7), SV (8), SV (10), SV (11), - - /* The link register contains the return address setup by caller. */ - SV (14), - DW_CFA_register, ULEB128_7 (15), ULEB128_7 (14), /* pc = lr */ -#undef SV - - /* VFP S16-S31/D8-D15/Q4-Q7 are callee saved. - And uleb128 encoded with two bytes. */ -#define ULEB128_8_2(x) ((x & 0x7f) | 0x80), 0x02 -#define SV(n) DW_CFA_same_value, ULEB128_8_2 (n) - SV (264), SV (265), SV (266), SV (267), - SV (268), SV (269), SV (270), SV (271), - - /* XXX Note: registers intentionally unused by the program, - for example as a consequence of the procedure call standard - should be initialized as if by DW_CFA_same_value. */ - }; -#undef ULEB128_8_2 -#undef SV - - abi_info->initial_instructions = abi_cfi; - abi_info->initial_instructions_end = &abi_cfi[sizeof abi_cfi]; - abi_info->data_alignment_factor = 4; - - abi_info->return_address_register = 15; /* pc. */ - - return 0; -} diff --git a/src/backends/arm_corenote.c b/src/backends/arm_corenote.c deleted file mode 100644 index c5d8d887..00000000 --- a/src/backends/arm_corenote.c +++ /dev/null @@ -1,94 +0,0 @@ -/* ARM specific core note handling. - Copyright (C) 2009, 2012 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <elf.h> -#include <inttypes.h> -#include <stddef.h> -#include <stdio.h> -#include <sys/time.h> - -#define BACKEND arm_ -#include "libebl_CPU.h" - - -static const Ebl_Register_Location prstatus_regs[] = - { - { .offset = 0, .regno = 0, .count = 16, .bits = 32 }, /* r0..r15 */ - { .offset = 16 * 4, .regno = 128, .count = 1, .bits = 32 }, /* cpsr */ - }; -#define PRSTATUS_REGS_SIZE (18 * 4) - -#define PRSTATUS_REGSET_ITEMS \ - { \ - .name = "orig_r0", .type = ELF_T_SWORD, .format = 'd', \ - .offset = offsetof (struct EBLHOOK(prstatus), pr_reg) + (4 * 17), \ - .group = "register" \ - } - -static const Ebl_Register_Location fpregset_regs[] = - { - { .offset = 0, .regno = 96, .count = 8, .bits = 96 }, /* f0..f7 */ - }; -#define FPREGSET_SIZE 116 - -#define ULONG uint32_t -#define PID_T int32_t -#define UID_T uint16_t -#define GID_T uint16_t -#define ALIGN_ULONG 4 -#define ALIGN_PID_T 4 -#define ALIGN_UID_T 2 -#define ALIGN_GID_T 2 -#define TYPE_ULONG ELF_T_WORD -#define TYPE_PID_T ELF_T_SWORD -#define TYPE_UID_T ELF_T_HALF -#define TYPE_GID_T ELF_T_HALF - -#define ARM_VFPREGS_SIZE ( 32 * 8 /*fpregs*/ + 4 /*fpscr*/ ) -static const Ebl_Register_Location vfp_regs[] = - { - { .offset = 0, .regno = 256, .count = 32, .bits = 64 }, /* fpregs */ - }; - -static const Ebl_Core_Item vfp_items[] = - { - { - .name = "fpscr", .group = "register", - .offset = 0, - .type = ELF_T_WORD, .format = 'x', - }, - }; - -#define EXTRA_NOTES \ - EXTRA_REGSET_ITEMS (NT_ARM_VFP, ARM_VFPREGS_SIZE, vfp_regs, vfp_items) - -#include "linux-core-note.c" diff --git a/src/backends/arm_init.c b/src/backends/arm_init.c deleted file mode 100644 index 3283c978..00000000 --- a/src/backends/arm_init.c +++ /dev/null @@ -1,76 +0,0 @@ -/* Initialization of Arm specific backend library. - Copyright (C) 2002, 2005, 2009, 2013, 2014 Red Hat, Inc. - This file is part of elfutils. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#define BACKEND arm_ -#define RELOC_PREFIX R_ARM_ -#include "libebl_CPU.h" - -/* This defines the common reloc hooks based on arm_reloc.def. */ -#include "common-reloc.c" - - -const char * -arm_init (elf, machine, eh, ehlen) - Elf *elf __attribute__ ((unused)); - GElf_Half machine __attribute__ ((unused)); - Ebl *eh; - size_t ehlen; -{ - /* Check whether the Elf_BH object has a sufficent size. */ - if (ehlen < sizeof (Ebl)) - return NULL; - - /* We handle it. */ - eh->name = "ARM"; - arm_init_reloc (eh); - HOOK (eh, segment_type_name); - HOOK (eh, section_type_name); - HOOK (eh, machine_flag_check); - HOOK (eh, reloc_simple_type); - HOOK (eh, register_info); - HOOK (eh, core_note); - HOOK (eh, auxv_info); - HOOK (eh, check_object_attribute); - HOOK (eh, return_value_location); - HOOK (eh, abi_cfi); - HOOK (eh, check_reloc_target_type); - - /* We only unwind the core integer registers. */ - eh->frame_nregs = 16; - HOOK (eh, set_initial_registers_tid); - - /* Bit zero encodes whether an function address is THUMB or ARM. */ - eh->func_addr_mask = ~(GElf_Addr)1; - - return MODVERSION; -} diff --git a/src/backends/arm_initreg.c b/src/backends/arm_initreg.c deleted file mode 100644 index a0a9be94..00000000 --- a/src/backends/arm_initreg.c +++ /dev/null @@ -1,92 +0,0 @@ -/* Fetch live process registers from TID. - Copyright (C) 2014 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#if defined __arm__ -# include <sys/types.h> -# include <sys/user.h> -# include <sys/ptrace.h> -#endif - -#ifdef __aarch64__ -# include <linux/uio.h> -# include <sys/user.h> -# include <sys/ptrace.h> -/* Deal with old glibc defining user_pt_regs instead of user_regs_struct. */ -# ifndef HAVE_SYS_USER_REGS -# define user_regs_struct user_pt_regs -# endif -#endif - -#define BACKEND arm_ -#include "libebl_CPU.h" - -bool -arm_set_initial_registers_tid (pid_t tid __attribute__ ((unused)), - ebl_tid_registers_t *setfunc __attribute__ ((unused)), - void *arg __attribute__ ((unused))) -{ -#if !defined __arm__ && !defined __aarch64__ - return false; -#else /* __arm__ || __aarch64__ */ -#if defined __arm__ - struct user_regs user_regs; - if (ptrace (PTRACE_GETREGS, tid, NULL, &user_regs) != 0) - return false; - - Dwarf_Word dwarf_regs[16]; - /* R0..R12 SP LR PC */ - for (int i = 0; i < 16; i++) - dwarf_regs[i] = user_regs.uregs[i]; - - return setfunc (0, 16, dwarf_regs, arg); -#elif defined __aarch64__ - /* Compat mode: arm compatible code running on aarch64 */ - int i; - struct user_regs_struct gregs; - struct iovec iovec; - iovec.iov_base = &gregs; - iovec.iov_len = sizeof (gregs); - if (ptrace (PTRACE_GETREGSET, tid, NT_PRSTATUS, &iovec) != 0) - return false; - - Dwarf_Word dwarf_regs[16]; - /* R0..R12 SP LR PC, encoded as 32 bit quantities */ - uint32_t *u32_ptr = (uint32_t *) &gregs.regs[0]; - for (i = 0; i < 16; i++) - dwarf_regs[i] = u32_ptr[i]; - - return setfunc (0, 16, dwarf_regs, arg); -#else -# error "source file error, it cannot happen" -#endif -#endif -} diff --git a/src/backends/arm_regs.c b/src/backends/arm_regs.c deleted file mode 100644 index 21c5ad3a..00000000 --- a/src/backends/arm_regs.c +++ /dev/null @@ -1,120 +0,0 @@ -/* Register names and numbers for ARM DWARF. - Copyright (C) 2009 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <string.h> -#include <dwarf.h> - -#define BACKEND arm_ -#include "libebl_CPU.h" - -ssize_t -arm_register_info (Ebl *ebl __attribute__ ((unused)), - int regno, char *name, size_t namelen, - const char **prefix, const char **setname, - int *bits, int *type) -{ - if (name == NULL) - return 320; - - if (regno < 0 || regno > 320 || namelen < 5) - return -1; - - *prefix = ""; - *bits = 32; - *type = DW_ATE_signed; - *setname = "integer"; - - switch (regno) - { - case 0 ... 9: - name[0] = 'r'; - name[1] = regno + '0'; - namelen = 2; - break; - - case 10 ... 12: - name[0] = 'r'; - name[1] = '1'; - name[2] = regno % 10 + '0'; - namelen = 3; - break; - - case 13 ... 15: - *type = DW_ATE_address; - name[0] = "slp"[regno - 13]; - name[1] = "prc"[regno - 13]; - namelen = 2; - break; - - case 16 + 0 ... 16 + 7: - regno += 96 - 16; - /* Fall through. */ - case 96 + 0 ... 96 + 7: - *setname = "FPA"; - *type = DW_ATE_float; - *bits = 96; - name[0] = 'f'; - name[1] = regno - 96 + '0'; - namelen = 2; - break; - - case 128: - *type = DW_ATE_unsigned; - return stpcpy (name, "spsr") + 1 - name; - - case 256 + 0 ... 256 + 9: - *setname = "VFP"; - *type = DW_ATE_float; - *bits = 64; - name[0] = 'd'; - name[1] = regno - 256 + '0'; - namelen = 2; - break; - - case 256 + 10 ... 256 + 31: - *setname = "VFP"; - *type = DW_ATE_float; - *bits = 64; - name[0] = 'd'; - name[1] = (regno - 256) / 10 + '0'; - name[2] = (regno - 256) % 10 + '0'; - namelen = 3; - break; - - default: - *setname = NULL; - return 0; - } - - name[namelen++] = '\0'; - return namelen; -} diff --git a/src/backends/arm_reloc.def b/src/backends/arm_reloc.def deleted file mode 100644 index 4b7894bb..00000000 --- a/src/backends/arm_reloc.def +++ /dev/null @@ -1,157 +0,0 @@ -/* List the relocation types for arm. -*- C -*- - Copyright (C) 2005-2010, 2014 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -/* NAME, REL|EXEC|DYN */ - -RELOC_TYPE (NONE, REL) /* It really is used in ET_REL on ARM. */ -RELOC_TYPE (PC24, REL|EXEC|DYN) -RELOC_TYPE (ABS32, REL|EXEC|DYN) -RELOC_TYPE (REL32, REL) -RELOC_TYPE (PC13, REL) -RELOC_TYPE (ABS16, REL) -RELOC_TYPE (ABS12, REL) -RELOC_TYPE (THM_ABS5, REL) -RELOC_TYPE (ABS8, REL) -RELOC_TYPE (SBREL32, REL) -RELOC_TYPE (THM_PC22, REL) -RELOC_TYPE (THM_PC8, REL) -RELOC_TYPE (AMP_VCALL9, REL) -RELOC_TYPE (TLS_DESC, EXEC|DYN) -RELOC_TYPE (THM_SWI8, REL) -RELOC_TYPE (XPC25, REL) -RELOC_TYPE (THM_XPC22, REL) -RELOC_TYPE (TLS_DTPMOD32, EXEC|DYN) -RELOC_TYPE (TLS_DTPOFF32, EXEC|DYN) -RELOC_TYPE (TLS_TPOFF32, EXEC|DYN) -RELOC_TYPE (COPY, EXEC) -RELOC_TYPE (GLOB_DAT, EXEC|DYN) -RELOC_TYPE (JUMP_SLOT, EXEC|DYN) -RELOC_TYPE (RELATIVE, EXEC|DYN) -RELOC_TYPE (GOTOFF, REL) -RELOC_TYPE (GOTPC, REL) -RELOC_TYPE (GOT32, REL) -RELOC_TYPE (PLT32, REL) -RELOC_TYPE (CALL, REL) -RELOC_TYPE (JUMP24, REL) -RELOC_TYPE (THM_JUMP24, REL) -RELOC_TYPE (BASE_ABS, REL) -RELOC_TYPE (ALU_PCREL_7_0, REL) -RELOC_TYPE (ALU_PCREL_15_8, REL) -RELOC_TYPE (ALU_PCREL_23_15, REL) -RELOC_TYPE (LDR_SBREL_11_0, REL) -RELOC_TYPE (ALU_SBREL_19_12, REL) -RELOC_TYPE (ALU_SBREL_27_20, REL) -RELOC_TYPE (TARGET1, REL) -RELOC_TYPE (SBREL31, REL) -RELOC_TYPE (V4BX, REL) -RELOC_TYPE (TARGET2, REL) -RELOC_TYPE (PREL31, REL) -RELOC_TYPE (MOVW_ABS_NC, REL) -RELOC_TYPE (MOVT_ABS, REL) -RELOC_TYPE (MOVW_PREL_NC, REL) -RELOC_TYPE (MOVT_PREL, REL) -RELOC_TYPE (THM_MOVW_ABS_NC, REL) -RELOC_TYPE (THM_MOVT_ABS, REL) -RELOC_TYPE (THM_MOVW_PREL_NC, REL) -RELOC_TYPE (THM_MOVT_PREL, REL) -RELOC_TYPE (THM_JUMP19, REL) -RELOC_TYPE (THM_JUMP6, REL) -RELOC_TYPE (THM_ALU_PREL_11_0, REL) -RELOC_TYPE (THM_PC12, REL) -RELOC_TYPE (ABS32_NOI, REL) -RELOC_TYPE (REL32_NOI, REL) -RELOC_TYPE (ALU_PC_G0_NC, REL) -RELOC_TYPE (ALU_PC_G0, REL) -RELOC_TYPE (ALU_PC_G1_NC, REL) -RELOC_TYPE (ALU_PC_G1, REL) -RELOC_TYPE (ALU_PC_G2, REL) -RELOC_TYPE (LDR_PC_G1, REL) -RELOC_TYPE (LDR_PC_G2, REL) -RELOC_TYPE (LDRS_PC_G0, REL) -RELOC_TYPE (LDRS_PC_G1, REL) -RELOC_TYPE (LDRS_PC_G2, REL) -RELOC_TYPE (LDC_PC_G0, REL) -RELOC_TYPE (LDC_PC_G1, REL) -RELOC_TYPE (LDC_PC_G2, REL) -RELOC_TYPE (ALU_SB_G0_NC, REL) -RELOC_TYPE (ALU_SB_G0, REL) -RELOC_TYPE (ALU_SB_G1_NC, REL) -RELOC_TYPE (ALU_SB_G1, REL) -RELOC_TYPE (ALU_SB_G2, REL) -RELOC_TYPE (LDR_SB_G0, REL) -RELOC_TYPE (LDR_SB_G1, REL) -RELOC_TYPE (LDR_SB_G2, REL) -RELOC_TYPE (LDRS_SB_G0, REL) -RELOC_TYPE (LDRS_SB_G1, REL) -RELOC_TYPE (LDRS_SB_G2, REL) -RELOC_TYPE (LDC_SB_G0, REL) -RELOC_TYPE (LDC_SB_G1, REL) -RELOC_TYPE (LDC_SB_G2, REL) -RELOC_TYPE (MOVW_BREL_NC, REL) -RELOC_TYPE (MOVT_BREL, REL) -RELOC_TYPE (MOVW_BREL, REL) -RELOC_TYPE (THM_MOVW_BREL_NC, REL) -RELOC_TYPE (THM_MOVT_BREL, REL) -RELOC_TYPE (THM_MOVW_BREL, REL) -RELOC_TYPE (TLS_GOTDESC, REL) -RELOC_TYPE (TLS_CALL, REL) -RELOC_TYPE (TLS_DESCSEQ, REL) -RELOC_TYPE (THM_TLS_CALL, REL) -RELOC_TYPE (PLT32_ABS, REL) -RELOC_TYPE (GOT_ABS, REL) -RELOC_TYPE (GOT_PREL, REL) -RELOC_TYPE (GOT_BREL12, REL) -RELOC_TYPE (GOTOFF12, REL) -RELOC_TYPE (GOTRELAX, REL) -RELOC_TYPE (GNU_VTENTRY, REL) -RELOC_TYPE (GNU_VTINHERIT, REL) -RELOC_TYPE (THM_PC11, REL) -RELOC_TYPE (THM_PC9, REL) -RELOC_TYPE (TLS_GD32, REL) -RELOC_TYPE (TLS_LDM32, REL) -RELOC_TYPE (TLS_LDO32, REL) -RELOC_TYPE (TLS_IE32, REL) -RELOC_TYPE (TLS_LE32, REL) -RELOC_TYPE (TLS_LDO12, REL) -RELOC_TYPE (TLS_LE12, REL) -RELOC_TYPE (TLS_IE12GP, REL) - -RELOC_TYPE (ME_TOO, REL) -RELOC_TYPE (THM_TLS_DESCSEQ16, REL) -RELOC_TYPE (THM_TLS_DESCSEQ32, REL) -RELOC_TYPE (THM_GOT_BREL12, REL) - -RELOC_TYPE (IRELATIVE, EXEC|DYN) - -RELOC_TYPE (RXPC25, REL) -RELOC_TYPE (RSBREL32, REL) -RELOC_TYPE (THM_RPC22, REL) -RELOC_TYPE (RREL32, REL) -RELOC_TYPE (RABS22, REL) -RELOC_TYPE (RPC24, REL) -RELOC_TYPE (RBASE, REL) diff --git a/src/backends/arm_retval.c b/src/backends/arm_retval.c deleted file mode 100644 index 7aced742..00000000 --- a/src/backends/arm_retval.c +++ /dev/null @@ -1,127 +0,0 @@ -/* Function return value location for ARM EABI. - Copyright (C) 2009-2010, 2014 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <dwarf.h> - -#define BACKEND arm_ -#include "libebl_CPU.h" - - -/* r0, or pair r0, r1, or aggregate up to r0-r3. */ -static const Dwarf_Op loc_intreg[] = - { - { .atom = DW_OP_reg0 }, { .atom = DW_OP_piece, .number = 4 }, - { .atom = DW_OP_reg1 }, { .atom = DW_OP_piece, .number = 4 }, - { .atom = DW_OP_reg2 }, { .atom = DW_OP_piece, .number = 4 }, - { .atom = DW_OP_reg3 }, { .atom = DW_OP_piece, .number = 4 }, - }; -#define nloc_intreg 1 -#define nloc_intregs(n) (2 * (n)) - -/* The return value is a structure and is actually stored in stack space - passed in a hidden argument by the caller. But, the compiler - helpfully returns the address of that space in r0. */ -static const Dwarf_Op loc_aggregate[] = - { - { .atom = DW_OP_breg0, .number = 0 } - }; -#define nloc_aggregate 1 - - -int -arm_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) -{ - /* Start with the function's type, and get the DW_AT_type attribute, - which is the type of the return value. */ - Dwarf_Die die_mem, *typedie = &die_mem; - int tag = dwarf_peeled_die_type (functypedie, typedie); - if (tag <= 0) - return tag; - - Dwarf_Word size; - switch (tag) - { - case -1: - return -1; - - case DW_TAG_subrange_type: - if (! dwarf_hasattr_integrate (typedie, DW_AT_byte_size)) - { - Dwarf_Attribute attr_mem, *attr; - attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem); - typedie = dwarf_formref_die (attr, &die_mem); - tag = DWARF_TAG_OR_RETURN (typedie); - } - /* Fall through. */ - - case DW_TAG_base_type: - case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: - { - Dwarf_Attribute attr_mem; - if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size, - &attr_mem), &size) != 0) - { - if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) - size = 4; - else - return -1; - } - if (size <= 16) - { - intreg: - *locp = loc_intreg; - return size <= 4 ? nloc_intreg : nloc_intregs ((size + 3) / 4); - } - - aggregate: - *locp = loc_aggregate; - return nloc_aggregate; - } - - case DW_TAG_structure_type: - case DW_TAG_class_type: - case DW_TAG_union_type: - case DW_TAG_array_type: - if (dwarf_aggregate_size (typedie, &size) == 0 - && size > 0 && size <= 4) - goto intreg; - goto aggregate; - } - - /* XXX We don't have a good way to return specific errors from ebl calls. - This value means we do not understand the type, but it is well-formed - DWARF and might be valid. */ - return -2; -} diff --git a/src/backends/arm_symbol.c b/src/backends/arm_symbol.c deleted file mode 100644 index cd467ffc..00000000 --- a/src/backends/arm_symbol.c +++ /dev/null @@ -1,131 +0,0 @@ -/* Arm specific symbolic name handling. - Copyright (C) 2002-2009, 2014 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <elf.h> -#include <stddef.h> - -#define BACKEND arm_ -#include "libebl_CPU.h" - - -const char * -arm_segment_type_name (int segment, char *buf __attribute__ ((unused)), - size_t len __attribute__ ((unused))) -{ - switch (segment) - { - case PT_ARM_EXIDX: - return "ARM_EXIDX"; - } - return NULL; -} - -/* Return symbolic representation of section type. */ -const char * -arm_section_type_name (int type, - char *buf __attribute__ ((unused)), - size_t len __attribute__ ((unused))) -{ - switch (type) - { - case SHT_ARM_EXIDX: - return "ARM_EXIDX"; - case SHT_ARM_PREEMPTMAP: - return "ARM_PREEMPTMAP"; - case SHT_ARM_ATTRIBUTES: - return "ARM_ATTRIBUTES"; - } - - return NULL; -} - -/* Check whether machine flags are valid. */ -bool -arm_machine_flag_check (GElf_Word flags) -{ - switch (flags & EF_ARM_EABIMASK) - { - case EF_ARM_EABI_UNKNOWN: - case EF_ARM_EABI_VER1: - case EF_ARM_EABI_VER2: - case EF_ARM_EABI_VER3: - case EF_ARM_EABI_VER4: - case EF_ARM_EABI_VER5: - break; - default: - return false; - } - - return ((flags &~ (EF_ARM_EABIMASK - | EF_ARM_RELEXEC - | EF_ARM_HASENTRY - | EF_ARM_INTERWORK - | EF_ARM_APCS_26 - | EF_ARM_APCS_FLOAT - | EF_ARM_PIC - | EF_ARM_ALIGN8 - | EF_ARM_NEW_ABI - | EF_ARM_OLD_ABI - | EF_ARM_SOFT_FLOAT - | EF_ARM_VFP_FLOAT - | EF_ARM_MAVERICK_FLOAT - | EF_ARM_SYMSARESORTED - | EF_ARM_DYNSYMSUSESEGIDX - | EF_ARM_MAPSYMSFIRST - | EF_ARM_EABIMASK - | EF_ARM_BE8 - | EF_ARM_LE8)) == 0); -} - -/* Check for the simple reloc types. */ -Elf_Type -arm_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type) -{ - switch (type) - { - case R_ARM_ABS32: - return ELF_T_WORD; - case R_ARM_ABS16: - return ELF_T_HALF; - case R_ARM_ABS8: - return ELF_T_BYTE; - default: - return ELF_T_NUM; - } -} - -/* The SHT_ARM_EXIDX section type is a valid target for relocation. */ -bool -arm_check_reloc_target_type (Ebl *ebl __attribute__ ((unused)), Elf64_Word sh_type) -{ - return sh_type == SHT_ARM_EXIDX; -} diff --git a/src/backends/common-reloc.c b/src/backends/common-reloc.c deleted file mode 100644 index 2667ec4a..00000000 --- a/src/backends/common-reloc.c +++ /dev/null @@ -1,146 +0,0 @@ -/* Common code for ebl reloc functions. - Copyright (C) 2005, 2006 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#include "libebl_CPU.h" -#include <assert.h> - -#define R_TYPE(name) PASTE (RELOC_PREFIX, name) -#define PASTE(a, b) PASTE_1 (a, b) -#define PASTE_1(a, b) a##b -#define R_NAME(name) R_NAME_1 (RELOC_PREFIX, name) -#define R_NAME_1(prefix, type) R_NAME_2 (prefix, type) -#define R_NAME_2(prefix, type) #prefix #type - -#define RELOC_TYPES STRINGIFIED_PASTE (BACKEND, reloc.def) -#define STRINGIFIED_PASTE(a, b) STRINGIFY (PASTE (a, b)) -#define STRINGIFY(x) STRINGIFY_1 (x) -#define STRINGIFY_1(x) #x - -/* Provide a table of reloc type names, in a PIC-friendly fashion. */ - -static const struct EBLHOOK(reloc_nametable) -{ - char zero; -#define RELOC_TYPE(type, uses) \ - char name_##type[sizeof R_NAME (type)]; -#include RELOC_TYPES -#undef RELOC_TYPE -} EBLHOOK(reloc_nametable) = - { - '\0', -#define RELOC_TYPE(type, uses) R_NAME (type), -#include RELOC_TYPES -#undef RELOC_TYPE - }; -#define reloc_namestr (&EBLHOOK(reloc_nametable).zero) - -static const uint_fast16_t EBLHOOK(reloc_nameidx)[] = -{ -#define RELOC_TYPE(type, uses) \ - [R_TYPE (type)] = offsetof (struct EBLHOOK(reloc_nametable), name_##type), -#include RELOC_TYPES -#undef RELOC_TYPE -}; -#define nreloc \ - ((int) (sizeof EBLHOOK(reloc_nameidx) / sizeof EBLHOOK(reloc_nameidx)[0])) - -#define REL (1 << (ET_REL - 1)) -#define EXEC (1 << (ET_EXEC - 1)) -#define DYN (1 << (ET_DYN - 1)) -static const uint8_t EBLHOOK(reloc_valid)[] = -{ -#define RELOC_TYPE(type, uses) [R_TYPE (type)] = uses, -#include RELOC_TYPES -#undef RELOC_TYPE -}; -#undef REL -#undef EXEC -#undef DYN - -const char * -EBLHOOK(reloc_type_name) (int reloc, - char *buf __attribute__ ((unused)), - size_t len __attribute__ ((unused))) -{ - if (reloc >= 0 && reloc < nreloc && EBLHOOK(reloc_nameidx)[reloc] != 0) - return &reloc_namestr[EBLHOOK(reloc_nameidx)[reloc]]; - return NULL; -} - -bool -EBLHOOK(reloc_type_check) (int reloc) -{ - return reloc >= 0 && reloc < nreloc && EBLHOOK(reloc_nameidx)[reloc] != 0; -} - -bool -EBLHOOK(reloc_valid_use) (Elf *elf, int reloc) -{ - uint8_t uses = EBLHOOK(reloc_valid)[reloc]; - - GElf_Ehdr ehdr_mem; - GElf_Ehdr *ehdr = gelf_getehdr (elf, &ehdr_mem); - assert (ehdr != NULL); - uint8_t type = ehdr->e_type; - - return type > ET_NONE && type < ET_CORE && (uses & (1 << (type - 1))); -} - - -bool -EBLHOOK(copy_reloc_p) (int reloc) -{ - return reloc == R_TYPE (COPY); -} - -bool -EBLHOOK(none_reloc_p) (int reloc) -{ - return reloc == R_TYPE (NONE); -} - -#ifndef NO_RELATIVE_RELOC -bool -EBLHOOK(relative_reloc_p) (int reloc) -{ - return reloc == R_TYPE (RELATIVE); -} -#endif - -static void -EBLHOOK(init_reloc) (Ebl *ebl) -{ - ebl->reloc_type_name = EBLHOOK(reloc_type_name); - ebl->reloc_type_check = EBLHOOK(reloc_type_check); - ebl->reloc_valid_use = EBLHOOK(reloc_valid_use); - ebl->copy_reloc_p = EBLHOOK(copy_reloc_p); - ebl->none_reloc_p = EBLHOOK(none_reloc_p); -#ifndef NO_RELATIVE_RELOC - ebl->relative_reloc_p = EBLHOOK(relative_reloc_p); -#endif -} diff --git a/src/backends/i386_auxv.c b/src/backends/i386_auxv.c deleted file mode 100644 index dba63fe0..00000000 --- a/src/backends/i386_auxv.c +++ /dev/null @@ -1,52 +0,0 @@ -/* i386 specific auxv handling. - Copyright (C) 2007 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#define BACKEND i386_ -#include "libebl_CPU.h" - -int -EBLHOOK(auxv_info) (GElf_Xword a_type, const char **name, const char **format) -{ - if (a_type != AT_HWCAP) - return 0; - - *name = "HWCAP"; - *format = "b" - "fpu\0" "vme\0" "de\0" "pse\0" "tsc\0" "msr\0" "pae\0" "mce\0" - "cx8\0" "apic\0" "10\0" "sep\0" "mtrr\0" "pge\0" "mca\0" "cmov\0" - "pat\0" "pse36\0" "pn\0" "clflush\0" "20\0" "dts\0" "acpi\0" "mmx\0" - "fxsr\0" "sse\0" "sse2\0" "ss\0" "ht\0" "tm\0" "ia64\0" "pbe\0" "\0"; - return 1; -} - -__typeof (i386_auxv_info) x86_64_auxv_info - __attribute__ ((alias ("i386_auxv_info"))); diff --git a/src/backends/i386_cfi.c b/src/backends/i386_cfi.c deleted file mode 100644 index 31f85f7e..00000000 --- a/src/backends/i386_cfi.c +++ /dev/null @@ -1,68 +0,0 @@ -/* i386 ABI-specified defaults for DWARF CFI. - Copyright (C) 2009 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> - -#define BACKEND i386_ -#include "libebl_CPU.h" - -int -i386_abi_cfi (Ebl *ebl __attribute__ ((unused)), Dwarf_CIE *abi_info) -{ - static const uint8_t abi_cfi[] = - { - /* Call-saved regs. */ - DW_CFA_same_value, ULEB128_7 (3), /* %ebx */ - DW_CFA_same_value, ULEB128_7 (5), /* %ebp */ - DW_CFA_same_value, ULEB128_7 (6), /* %esi */ - DW_CFA_same_value, ULEB128_7 (7), /* %edi */ - - /* The CFA is the SP. */ - DW_CFA_val_offset, ULEB128_7 (4), ULEB128_7 (0), - - /* Segment registers are call-saved if ever used at all. */ - DW_CFA_same_value, ULEB128_7 (40), /* %es */ - DW_CFA_same_value, ULEB128_7 (41), /* %cs */ - DW_CFA_same_value, ULEB128_7 (42), /* %ss */ - DW_CFA_same_value, ULEB128_7 (43), /* %ds */ - DW_CFA_same_value, ULEB128_7 (44), /* %fs */ - DW_CFA_same_value, ULEB128_7 (45), /* %gs */ - }; - - abi_info->initial_instructions = abi_cfi; - abi_info->initial_instructions_end = &abi_cfi[sizeof abi_cfi]; - abi_info->data_alignment_factor = 4; - - abi_info->return_address_register = 8; /* %eip */ - - return 0; -} diff --git a/src/backends/i386_corenote.c b/src/backends/i386_corenote.c deleted file mode 100644 index 15cd66b5..00000000 --- a/src/backends/i386_corenote.c +++ /dev/null @@ -1,138 +0,0 @@ -/* i386 specific core note handling. - Copyright (C) 2007-2010 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <elf.h> -#include <inttypes.h> -#include <stddef.h> -#include <stdio.h> -#include <sys/time.h> - -#define BACKEND i386_ -#include "libebl_CPU.h" - - -static const Ebl_Register_Location prstatus_regs[] = - { -#define GR(at, n, dwreg) \ - { .offset = at * 4, .regno = dwreg, .count = n, .bits = 32 } -#define SR(at, n, dwreg) \ - { .offset = at * 4, .regno = dwreg, .count = n, .bits = 16, .pad = 2 } - - GR (0, 1, 3), /* %ebx */ - GR (1, 2, 1), /* %ecx-%edx */ - GR (3, 2, 6), /* %esi-%edi */ - GR (5, 1, 5), /* %ebp */ - GR (6, 1, 0), /* %eax */ - SR (7, 1, 43), /* %ds */ - SR (8, 1, 40), /* %es */ - SR (9, 1, 44), /* %fs */ - SR (10, 1, 45), /* %gs */ - /* 11, 1, orig_eax */ - GR (12, 1, 8), /* %eip */ - SR (13, 1, 41), /* %cs */ - GR (14, 1, 9), /* eflags */ - GR (15, 1, 4), /* %esp */ - SR (16, 1, 42), /* %ss */ - -#undef GR -#undef SR - }; -#define PRSTATUS_REGS_SIZE (17 * 4) - -#define ULONG uint32_t -#define PID_T int32_t -#define UID_T uint16_t -#define GID_T uint16_t -#define ALIGN_ULONG 4 -#define ALIGN_PID_T 4 -#define ALIGN_UID_T 2 -#define ALIGN_GID_T 2 -#define TYPE_ULONG ELF_T_WORD -#define TYPE_PID_T ELF_T_SWORD -#define TYPE_UID_T ELF_T_HALF -#define TYPE_GID_T ELF_T_HALF - -#define PRSTATUS_REGSET_ITEMS \ - { \ - .name = "orig_eax", .type = ELF_T_SWORD, .format = 'd', \ - .offset = offsetof (struct EBLHOOK(prstatus), pr_reg) + (4 * 11), \ - .group = "register" \ - } - -static const Ebl_Register_Location fpregset_regs[] = - { - { .offset = 0, .regno = 37, .count = 2, .bits = 32 }, /* fctrl-fstat */ - { .offset = 7 * 4, .regno = 11, .count = 8, .bits = 80 }, /* stN */ - }; -#define FPREGSET_SIZE 108 - -static const Ebl_Register_Location prxfpreg_regs[] = - { - { .offset = 0, .regno = 37, .count = 2, .bits = 16 }, /* fctrl-fstat */ - { .offset = 24, .regno = 39, .count = 1, .bits = 32 }, /* mxcsr */ - { .offset = 32, .regno = 11, .count = 8, .bits = 80, .pad = 6 }, /* stN */ - { .offset = 32 + 128, .regno = 21, .count = 8, .bits = 128 }, /* xmm */ - }; - -#define EXTRA_NOTES \ - EXTRA_REGSET (NT_PRXFPREG, 512, prxfpreg_regs) \ - case NT_386_TLS: \ - return tls_info (nhdr->n_descsz, regs_offset, nregloc, reglocs, \ - nitems, items); \ - EXTRA_NOTES_IOPERM - -static const Ebl_Core_Item tls_items[] = - { - { .type = ELF_T_WORD, .offset = 0x0, .format = 'd', .name = "index" }, - { .type = ELF_T_WORD, .offset = 0x4, .format = 'x', .name = "base" }, - { .type = ELF_T_WORD, .offset = 0x8, .format = 'x', .name = "limit" }, - { .type = ELF_T_WORD, .offset = 0xc, .format = 'x', .name = "flags" }, - }; - -static int -tls_info (GElf_Word descsz, GElf_Word *regs_offset, - size_t *nregloc, const Ebl_Register_Location **reglocs, - size_t *nitems, const Ebl_Core_Item **items) -{ - if (descsz % 16 != 0) - return 0; - - *regs_offset = 0; - *nregloc = 0; - *reglocs = NULL; - *nitems = sizeof tls_items / sizeof tls_items[0]; - *items = tls_items; - return 1; -} - -#include "x86_corenote.c" -#include "linux-core-note.c" diff --git a/src/backends/i386_init.c b/src/backends/i386_init.c deleted file mode 100644 index 1e0b4863..00000000 --- a/src/backends/i386_init.c +++ /dev/null @@ -1,71 +0,0 @@ -/* Initialization of i386 specific backend library. - Copyright (C) 2000-2009, 2013 Red Hat, Inc. - This file is part of elfutils. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#define BACKEND i386_ -#define RELOC_PREFIX R_386_ -#include "libebl_CPU.h" - -/* This defines the common reloc hooks based on i386_reloc.def. */ -#include "common-reloc.c" - -const char * -i386_init (elf, machine, eh, ehlen) - Elf *elf __attribute__ ((unused)); - GElf_Half machine __attribute__ ((unused)); - Ebl *eh; - size_t ehlen; -{ - /* Check whether the Elf_BH object has a sufficent size. */ - if (ehlen < sizeof (Ebl)) - return NULL; - - /* We handle it. */ - eh->name = "Intel 80386"; - i386_init_reloc (eh); - HOOK (eh, reloc_simple_type); - HOOK (eh, gotpc_reloc_check); - HOOK (eh, core_note); - generic_debugscn_p = eh->debugscn_p; - HOOK (eh, debugscn_p); - HOOK (eh, return_value_location); - HOOK (eh, register_info); - HOOK (eh, syscall_abi); - HOOK (eh, auxv_info); - HOOK (eh, disasm); - HOOK (eh, abi_cfi); - /* gcc/config/ #define DWARF_FRAME_REGISTERS. For i386 it is 17, why? */ - eh->frame_nregs = 9; - HOOK (eh, set_initial_registers_tid); - - return MODVERSION; -} diff --git a/src/backends/i386_initreg.c b/src/backends/i386_initreg.c deleted file mode 100644 index 51fd9ea6..00000000 --- a/src/backends/i386_initreg.c +++ /dev/null @@ -1,79 +0,0 @@ -/* Fetch live process registers from TID. - Copyright (C) 2013 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#if defined __i386__ || defined __x86_64__ -# include <sys/types.h> -# include <sys/user.h> -# include <sys/ptrace.h> -#endif - -#define BACKEND i386_ -#include "libebl_CPU.h" - -bool -i386_set_initial_registers_tid (pid_t tid __attribute__ ((unused)), - ebl_tid_registers_t *setfunc __attribute__ ((unused)), - void *arg __attribute__ ((unused))) -{ -#if (!defined __i386__ && !defined __x86_64__) || !defined(__linux__) - return false; -#else /* __i386__ || __x86_64__ */ - struct user_regs_struct user_regs; - if (ptrace (PTRACE_GETREGS, tid, NULL, &user_regs) != 0) - return false; - Dwarf_Word dwarf_regs[9]; -# if defined __i386__ - dwarf_regs[0] = user_regs.eax; - dwarf_regs[1] = user_regs.ecx; - dwarf_regs[2] = user_regs.edx; - dwarf_regs[3] = user_regs.ebx; - dwarf_regs[4] = user_regs.esp; - dwarf_regs[5] = user_regs.ebp; - dwarf_regs[6] = user_regs.esi; - dwarf_regs[7] = user_regs.edi; - dwarf_regs[8] = user_regs.eip; -# elif defined __x86_64__ - dwarf_regs[0] = user_regs.rax; - dwarf_regs[1] = user_regs.rcx; - dwarf_regs[2] = user_regs.rdx; - dwarf_regs[3] = user_regs.rbx; - dwarf_regs[4] = user_regs.rsp; - dwarf_regs[5] = user_regs.rbp; - dwarf_regs[6] = user_regs.rsi; - dwarf_regs[7] = user_regs.rdi; - dwarf_regs[8] = user_regs.rip; -# else /* (__i386__ || __x86_64__) && (!__i386__ && !__x86_64__) */ -# error "source file error, it cannot happen" -# endif /* (__i386__ || __x86_64__) && (!__i386__ && !__x86_64__) */ - return setfunc (0, 9, dwarf_regs, arg); -#endif /* __i386__ || __x86_64__ */ -} diff --git a/src/backends/i386_regs.c b/src/backends/i386_regs.c deleted file mode 100644 index fb8ded33..00000000 --- a/src/backends/i386_regs.c +++ /dev/null @@ -1,152 +0,0 @@ -/* Register names and numbers for i386 DWARF. - Copyright (C) 2005, 2006, 2007 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <string.h> -#include <dwarf.h> - -#define BACKEND i386_ -#include "libebl_CPU.h" - -ssize_t -i386_register_info (Ebl *ebl __attribute__ ((unused)), - int regno, char *name, size_t namelen, - const char **prefix, const char **setname, - int *bits, int *type) -{ - if (name == NULL) - return 46; - - if (regno < 0 || regno > 45 || namelen < 6) - return -1; - - *prefix = "%"; - *bits = 32; - *type = DW_ATE_unsigned; - if (regno < 11) - { - *setname = "integer"; - if (regno < 9) - *type = DW_ATE_signed; - } - else if (regno < 19) - { - *setname = "x87"; - *type = DW_ATE_float; - *bits = 80; - } - else if (regno < 29) - { - *setname = "SSE"; - *bits = 128; - } - else if (regno < 37) - { - *setname = "MMX"; - *bits = 64; - } - else if (regno < 40) - *setname = "FPU-control"; - else - { - *setname = "segment"; - *bits = 16; - } - - switch (regno) - { - static const char baseregs[][2] = - { - "ax", "cx", "dx", "bx", "sp", "bp", "si", "di", "ip" - }; - - case 4: - case 5: - case 8: - *type = DW_ATE_address; - case 0 ... 3: - case 6 ... 7: - name[0] = 'e'; - name[1] = baseregs[regno][0]; - name[2] = baseregs[regno][1]; - namelen = 3; - break; - - case 9: - return stpcpy (name, "eflags") + 1 - name; - case 10: - return stpcpy (name, "trapno") + 1 - name; - - case 11 ... 18: - name[0] = 's'; - name[1] = 't'; - name[2] = regno - 11 + '0'; - namelen = 3; - break; - - case 21 ... 28: - name[0] = 'x'; - name[1] = 'm'; - name[2] = 'm'; - name[3] = regno - 21 + '0'; - namelen = 4; - break; - - case 29 ... 36: - name[0] = 'm'; - name[1] = 'm'; - name[2] = regno - 29 + '0'; - namelen = 3; - break; - - case 37: - *bits = 16; - return stpcpy (name, "fctrl") + 1 - name; - case 38: - *bits = 16; - return stpcpy (name, "fstat") + 1 - name; - case 39: - return stpcpy (name, "mxcsr") + 1 - name; - - case 40 ... 45: - name[0] = "ecsdfg"[regno - 40]; - name[1] = 's'; - namelen = 2; - break; - - default: - *setname = NULL; - return 0; - } - - name[namelen++] = '\0'; - return namelen; -} diff --git a/src/backends/i386_reloc.def b/src/backends/i386_reloc.def deleted file mode 100644 index bd273b38..00000000 --- a/src/backends/i386_reloc.def +++ /dev/null @@ -1,70 +0,0 @@ -/* List the relocation types for i386. -*- C -*- - Copyright (C) 2000, 2001, 2002, 2003, 2005, 2009 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -/* NAME, REL|EXEC|DYN */ - -RELOC_TYPE (NONE, 0) -RELOC_TYPE (COPY, EXEC) -RELOC_TYPE (32, REL|EXEC|DYN) -RELOC_TYPE (PC32, REL|EXEC|DYN) -RELOC_TYPE (GOT32, REL) -RELOC_TYPE (PLT32, REL) -RELOC_TYPE (GLOB_DAT, EXEC|DYN) -RELOC_TYPE (JMP_SLOT, EXEC|DYN) -RELOC_TYPE (RELATIVE, EXEC|DYN) -RELOC_TYPE (GOTOFF, REL) -RELOC_TYPE (GOTPC, REL) -RELOC_TYPE (32PLT, REL) -RELOC_TYPE (TLS_TPOFF, EXEC|DYN) -RELOC_TYPE (TLS_IE, REL) -RELOC_TYPE (TLS_GOTIE, REL) -RELOC_TYPE (TLS_LE, REL) -RELOC_TYPE (TLS_GD, REL) -RELOC_TYPE (TLS_LDM, REL) -RELOC_TYPE (16, REL) -RELOC_TYPE (PC16, REL) -RELOC_TYPE (8, REL) -RELOC_TYPE (PC8, REL) -RELOC_TYPE (TLS_GD_32, REL) -RELOC_TYPE (TLS_GD_PUSH, REL) -RELOC_TYPE (TLS_GD_CALL, REL) -RELOC_TYPE (TLS_GD_POP, REL) -RELOC_TYPE (TLS_LDM_32, REL) -RELOC_TYPE (TLS_LDM_PUSH, REL) -RELOC_TYPE (TLS_LDM_CALL, REL) -RELOC_TYPE (TLS_LDM_POP, REL) -RELOC_TYPE (TLS_LDO_32, REL) -RELOC_TYPE (TLS_IE_32, REL) -RELOC_TYPE (TLS_LE_32, REL) -RELOC_TYPE (TLS_DTPMOD32, EXEC|DYN) -RELOC_TYPE (TLS_DTPOFF32, EXEC|DYN) -RELOC_TYPE (TLS_TPOFF32, EXEC|DYN) -RELOC_TYPE (TLS_GOTDESC, REL) -RELOC_TYPE (TLS_DESC_CALL, REL) -RELOC_TYPE (TLS_DESC, EXEC) -RELOC_TYPE (IRELATIVE, EXEC|DYN) diff --git a/src/backends/i386_retval.c b/src/backends/i386_retval.c deleted file mode 100644 index 9da797d5..00000000 --- a/src/backends/i386_retval.c +++ /dev/null @@ -1,141 +0,0 @@ -/* Function return value location for Linux/i386 ABI. - Copyright (C) 2005-2010, 2014 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <dwarf.h> - -#define BACKEND i386_ -#include "libebl_CPU.h" - - -/* %eax, or pair %eax, %edx. */ -static const Dwarf_Op loc_intreg[] = - { - { .atom = DW_OP_reg0 }, { .atom = DW_OP_piece, .number = 4 }, - { .atom = DW_OP_reg2 }, { .atom = DW_OP_piece, .number = 4 }, - }; -#define nloc_intreg 1 -#define nloc_intregpair 4 - -/* %st(0). */ -static const Dwarf_Op loc_fpreg[] = - { - { .atom = DW_OP_reg11 } - }; -#define nloc_fpreg 1 - -/* The return value is a structure and is actually stored in stack space - passed in a hidden argument by the caller. But, the compiler - helpfully returns the address of that space in %eax. */ -static const Dwarf_Op loc_aggregate[] = - { - { .atom = DW_OP_breg0, .number = 0 } - }; -#define nloc_aggregate 1 - -int -i386_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) -{ - /* Start with the function's type, and get the DW_AT_type attribute, - which is the type of the return value. */ - Dwarf_Die die_mem, *typedie = &die_mem; - int tag = dwarf_peeled_die_type (functypedie, typedie); - if (tag <= 0) - return tag; - - switch (tag) - { - case -1: - return -1; - - case DW_TAG_subrange_type: - if (! dwarf_hasattr_integrate (typedie, DW_AT_byte_size)) - { - Dwarf_Attribute attr_mem, *attr; - attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem); - typedie = dwarf_formref_die (attr, &die_mem); - tag = DWARF_TAG_OR_RETURN (typedie); - } - /* Fall through. */ - - case DW_TAG_base_type: - case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: - { - Dwarf_Word size; - Dwarf_Attribute attr_mem; - if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size, - &attr_mem), &size) != 0) - { - if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) - size = 4; - else - return -1; - } - if (tag == DW_TAG_base_type) - { - Dwarf_Word encoding; - if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_encoding, - &attr_mem), - &encoding) != 0) - return -1; - if (encoding == DW_ATE_float) - { - if (size > 16) - return -2; - *locp = loc_fpreg; - return nloc_fpreg; - } - } - *locp = loc_intreg; - if (size <= 4) - return nloc_intreg; - if (size <= 8) - return nloc_intregpair; - - /* Else fall through. */ - } - - case DW_TAG_structure_type: - case DW_TAG_class_type: - case DW_TAG_union_type: - case DW_TAG_array_type: - *locp = loc_aggregate; - return nloc_aggregate; - } - - /* XXX We don't have a good way to return specific errors from ebl calls. - This value means we do not understand the type, but it is well-formed - DWARF and might be valid. */ - return -2; -} diff --git a/src/backends/i386_symbol.c b/src/backends/i386_symbol.c deleted file mode 100644 index 7dbf899f..00000000 --- a/src/backends/i386_symbol.c +++ /dev/null @@ -1,75 +0,0 @@ -/* i386 specific symbolic name handling. - Copyright (C) 2000, 2001, 2002, 2005 Red Hat, Inc. - This file is part of elfutils. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <elf.h> -#include <stddef.h> -#include <string.h> - -#define BACKEND i386_ -#include "libebl_CPU.h" - - -/* Return true if the symbol type is that referencing the GOT. */ -bool -i386_gotpc_reloc_check (Elf *elf __attribute__ ((unused)), int type) -{ - return type == R_386_GOTPC; -} - -/* Check for the simple reloc types. */ -Elf_Type -i386_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type) -{ - switch (type) - { - case R_386_32: - return ELF_T_SWORD; - case R_386_16: - return ELF_T_HALF; - case R_386_8: - return ELF_T_BYTE; - default: - return ELF_T_NUM; - } -} - -/* Check section name for being that of a debug information section. */ -bool (*generic_debugscn_p) (const char *); -bool -i386_debugscn_p (const char *name) -{ - return (generic_debugscn_p (name) - || strcmp (name, ".stab") == 0 - || strcmp (name, ".stabstr") == 0); -} diff --git a/src/backends/i386_syscall.c b/src/backends/i386_syscall.c deleted file mode 100644 index 535dcd86..00000000 --- a/src/backends/i386_syscall.c +++ /dev/null @@ -1,50 +0,0 @@ -/* Linux/i386 system call ABI in DWARF register numbers. - Copyright (C) 2008 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#define BACKEND i386_ -#include "libebl_CPU.h" - -int -i386_syscall_abi (Ebl *ebl __attribute__ ((unused)), - int *sp, int *pc, int *callno, int args[6]) -{ - *sp = 4; /* %esp */ - *pc = 8; /* %eip */ - *callno = 0; /* %eax */ - args[0] = 3; /* %ebx */ - args[1] = 1; /* %ecx */ - args[2] = 2; /* %edx */ - args[3] = 6; /* %esi */ - args[4] = 7; /* %edi */ - args[5] = 5; /* %ebp */ - return 0; -} diff --git a/src/backends/ia64_init.c b/src/backends/ia64_init.c deleted file mode 100644 index 91da748d..00000000 --- a/src/backends/ia64_init.c +++ /dev/null @@ -1,67 +0,0 @@ -/* Initialization of IA-64 specific backend library. - Copyright (C) 2002, 2003, 2005, 2006, 2007, 2014 Red Hat, Inc. - This file is part of elfutils. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#define BACKEND ia64_ -#define RELOC_PREFIX R_IA64_ -#include "libebl_CPU.h" - -/* This defines the common reloc hooks based on ia64_reloc.def. */ -#include "common-reloc.c" - -const char * -ia64_init (elf, machine, eh, ehlen) - Elf *elf __attribute__ ((unused)); - GElf_Half machine __attribute__ ((unused)); - Ebl *eh; - size_t ehlen; -{ - /* Check whether the Elf_BH object has a sufficent size. */ - if (ehlen < sizeof (Ebl)) - return NULL; - - /* We handle it. */ - eh->name = "Intel IA-64"; - ia64_init_reloc (eh); - HOOK (eh, reloc_simple_type); - HOOK (eh, segment_type_name); - HOOK (eh, section_type_name); - HOOK (eh, dynamic_tag_name); - HOOK (eh, dynamic_tag_check); - HOOK (eh, machine_flag_check); - HOOK (eh, machine_section_flag_check); - HOOK (eh, register_info); - HOOK (eh, return_value_location); - HOOK (eh, check_reloc_target_type); - - return MODVERSION; -} diff --git a/src/backends/ia64_regs.c b/src/backends/ia64_regs.c deleted file mode 100644 index a27fe63d..00000000 --- a/src/backends/ia64_regs.c +++ /dev/null @@ -1,273 +0,0 @@ -/* Register names and numbers for IA64 DWARF. - Copyright (C) 2006 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <string.h> -#include <dwarf.h> - -#define BACKEND i386_ -#include "libebl_CPU.h" - -ssize_t -ia64_register_info (Ebl *ebl __attribute__ ((unused)), - int regno, char *name, size_t namelen, - const char **prefix, const char **setname, - int *bits, int *type) -{ - if (name == NULL) - return 687 + 64; - - if (regno < 0 || regno > 687 + 63 || namelen < 12) - return -1; - - *prefix = "ar."; - *setname = "application"; - *bits = 64; - *type = DW_ATE_signed; - switch (regno) - { - case 0 ... 9: - name[0] = 'r'; - name[1] = (regno - 0) + '0'; - namelen = 2; - *setname = "integer"; - *prefix = ""; - break; - - case 10 ... 99: - name[0] = 'r'; - name[1] = (regno - 0) / 10 + '0'; - name[2] = (regno - 0) % 10 + '0'; - namelen = 3; - *setname = "integer"; - *prefix = ""; - break; - - case 100 ... 127: - name[0] = 'r'; - name[1] = '1'; - name[2] = (regno - 100) / 10 + '0'; - name[3] = (regno - 0) % 10 + '0'; - namelen = 4; - *setname = "integer"; - *prefix = ""; - break; - - case 128 + 0 ... 128 + 9: - name[0] = 'f'; - name[1] = (regno - 128) + '0'; - namelen = 2; - *type = DW_ATE_float; - *bits = 128; - *setname = "FPU"; - *prefix = ""; - break; - - case 128 + 10 ... 128 + 99: - name[0] = 'f'; - name[1] = (regno - 128) / 10 + '0'; - name[2] = (regno - 128) % 10 + '0'; - namelen = 3; - *setname = "FPU"; - *prefix = ""; - break; - - case 128 + 100 ... 128 + 127: - name[0] = 'f'; - name[1] = '1'; - name[2] = (regno - 128 - 100) / 10 + '0'; - name[3] = (regno - 128) % 10 + '0'; - namelen = 4; - *type = DW_ATE_float; - *bits = 128; - *setname = "FPU"; - *prefix = ""; - break; - - case 320 + 0 ... 320 + 7: - name[0] = 'b'; - name[1] = (regno - 320) + '0'; - namelen = 2; - *type = DW_ATE_address; - *setname = "branch"; - *prefix = ""; - break; - - case 328 ... 333: - { - static const char named_special[][5] = - { - "vfp", "vrap", "pr", "ip", "psr", "cfm" - }; - *setname = "special"; - *prefix = ""; - *type = regno == 331 ? DW_ATE_address : DW_ATE_unsigned; - return stpcpy (name, named_special[regno - 328]) + 1 - name; - } - - case 590: - *setname = "special"; - *prefix = ""; - *type = DW_ATE_unsigned; - return stpcpy (name, "bof") + 1 - name; - - case 334 + 0 ... 334 + 7: - name[0] = 'k'; - name[1] = 'r'; - name[2] = (regno - 334) + '0'; - namelen = 3; - *prefix = ""; - break; - - case 334 + 8 ... 334 + 127: - { - static const char named_ar[][9] = - { - [16 - 8] = "rsc", - [17 - 8] = "bsp", - [18 - 8] = "bspstore", - [19 - 8] = "rnat", - [21 - 8] = "fcr", - [24 - 8] = "eflag", - [25 - 8] = "csd", - [26 - 8] = "ssd", - [27 - 8] = "cflg", - [28 - 8] = "fsr", - [29 - 8] = "fir", - [30 - 8] = "fdr", - [32 - 8] = "ccv", - [36 - 8] = "unat", - [40 - 8] = "fpsr", - [44 - 8] = "itc", - [64 - 8] = "pfs", - [65 - 8] = "lc", - [66 - 8] = "ec", - }; - const size_t idx = regno - (334 + 8); - *type = DW_ATE_unsigned; - if (idx == 1 || idx == 2) - *type = DW_ATE_address; - if (idx < sizeof named_ar / sizeof named_ar[0] - && named_ar[idx][0] != '\0') - return stpcpy (name, named_ar[idx]) + 1 - name; - - name[0] = 'a'; - name[1] = 'r'; - switch (regno - 334) - { - case 0 ... 9: - name[2] = (regno - 334) + '0'; - namelen = 3; - break; - case 10 ... 99: - name[2] = (regno - 334) / 10 + '0'; - name[3] = (regno - 334) % 10 + '0'; - namelen = 4; - break; - case 100 ... 127: - name[2] = '1'; - name[3] = (regno - 334 - 100) / 10 + '0'; - name[4] = (regno - 334) % 10 + '0'; - namelen = 5; - break; - } - *prefix = ""; - break; - } - - case 462 + 0 ... 462 + 9: - name[0] = 'n'; - name[1] = 'a'; - name[2] = 't'; - name[3] = (regno - 462) + '0'; - namelen = 4; - *setname = "NAT"; - *type = DW_ATE_boolean; - *bits = 1; - *prefix = ""; - break; - - case 462 + 10 ... 462 + 99: - name[0] = 'n'; - name[1] = 'a'; - name[2] = 't'; - name[3] = (regno - 462) / 10 + '0'; - name[4] = (regno - 462) % 10 + '0'; - namelen = 5; - *setname = "NAT"; - *type = DW_ATE_boolean; - *bits = 1; - *prefix = ""; - break; - - case 462 + 100 ... 462 + 127: - name[0] = 'n'; - name[1] = 'a'; - name[2] = 't'; - name[3] = '1'; - name[4] = (regno - 462 - 100) / 10 + '0'; - name[5] = (regno - 462) % 10 + '0'; - namelen = 6; - *setname = "NAT"; - *type = DW_ATE_boolean; - *bits = 1; - *prefix = ""; - break; - - case 687 + 0 ... 687 + 9: - name[0] = 'p'; - name[1] = (regno - 687) + '0'; - namelen = 2; - *setname = "predicate"; - *type = DW_ATE_boolean; - *bits = 1; - *prefix = ""; - break; - - case 687 + 10 ... 687 + 63: - name[0] = 'p'; - name[1] = (regno - 687) / 10 + '0'; - name[2] = (regno - 687) % 10 + '0'; - namelen = 3; - *setname = "predicate"; - *type = DW_ATE_boolean; - *bits = 1; - *prefix = ""; - break; - - default: - *setname = NULL; - return 0; - } - - name[namelen++] = '\0'; - return namelen; -} diff --git a/src/backends/ia64_reloc.def b/src/backends/ia64_reloc.def deleted file mode 100644 index 9e058c8b..00000000 --- a/src/backends/ia64_reloc.def +++ /dev/null @@ -1,113 +0,0 @@ -/* List the relocation types for ia64. -*- C -*- - Copyright (C) 2005, 2006 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -/* NAME, REL|EXEC|DYN */ - -RELOC_TYPE (NONE, 0) -RELOC_TYPE (IMM14, REL) -RELOC_TYPE (IMM22, REL) -RELOC_TYPE (IMM64, REL) -RELOC_TYPE (DIR32MSB, REL|EXEC|DYN) -RELOC_TYPE (DIR32LSB, REL|EXEC|DYN) -RELOC_TYPE (DIR64MSB, REL|EXEC|DYN) -RELOC_TYPE (DIR64LSB, REL|EXEC|DYN) -RELOC_TYPE (GPREL22, REL) -RELOC_TYPE (GPREL64I, REL) -RELOC_TYPE (GPREL32MSB, REL) -RELOC_TYPE (GPREL32LSB, REL) -RELOC_TYPE (GPREL64MSB, REL) -RELOC_TYPE (GPREL64LSB, REL) -RELOC_TYPE (LTOFF22, REL) -RELOC_TYPE (LTOFF64I, REL) -RELOC_TYPE (PLTOFF22, REL) -RELOC_TYPE (PLTOFF64I, REL) -RELOC_TYPE (PLTOFF64MSB, REL) -RELOC_TYPE (PLTOFF64LSB, REL) -RELOC_TYPE (FPTR64I, REL) -RELOC_TYPE (FPTR32MSB, REL|EXEC|DYN) -RELOC_TYPE (FPTR32LSB, REL|EXEC|DYN) -RELOC_TYPE (FPTR64MSB, REL|EXEC|DYN) -RELOC_TYPE (FPTR64LSB, REL|EXEC|DYN) -RELOC_TYPE (PCREL60B, REL) -RELOC_TYPE (PCREL21B, REL) -RELOC_TYPE (PCREL21M, REL) -RELOC_TYPE (PCREL21F, REL) -RELOC_TYPE (PCREL32MSB, REL|EXEC|DYN) -RELOC_TYPE (PCREL32LSB, REL|EXEC|DYN) -RELOC_TYPE (PCREL64MSB, REL|EXEC|DYN) -RELOC_TYPE (PCREL64LSB, REL|EXEC|DYN) -RELOC_TYPE (LTOFF_FPTR22, REL) -RELOC_TYPE (LTOFF_FPTR64I, REL) -RELOC_TYPE (LTOFF_FPTR32MSB, REL) -RELOC_TYPE (LTOFF_FPTR32LSB, REL) -RELOC_TYPE (LTOFF_FPTR64MSB, REL) -RELOC_TYPE (LTOFF_FPTR64LSB, REL) -RELOC_TYPE (SEGREL32MSB, REL) -RELOC_TYPE (SEGREL32LSB, REL) -RELOC_TYPE (SEGREL64MSB, REL) -RELOC_TYPE (SEGREL64LSB, REL) -RELOC_TYPE (SECREL32MSB, REL) -RELOC_TYPE (SECREL32LSB, REL) -RELOC_TYPE (SECREL64MSB, REL) -RELOC_TYPE (SECREL64LSB, REL) -RELOC_TYPE (REL32MSB, EXEC|DYN) -RELOC_TYPE (REL32LSB, EXEC|DYN) -RELOC_TYPE (REL64MSB, EXEC|DYN) -RELOC_TYPE (REL64LSB, EXEC|DYN) -RELOC_TYPE (LTV32MSB, REL) -RELOC_TYPE (LTV32LSB, REL) -RELOC_TYPE (LTV64MSB, REL) -RELOC_TYPE (LTV64LSB, REL) -RELOC_TYPE (PCREL21BI, REL) -RELOC_TYPE (PCREL22, REL) -RELOC_TYPE (PCREL64I, REL) -RELOC_TYPE (IPLTMSB, REL|EXEC|DYN) -RELOC_TYPE (IPLTLSB, REL|EXEC|DYN) -RELOC_TYPE (COPY, EXEC) -RELOC_TYPE (SUB, 0) -RELOC_TYPE (LTOFF22X, REL) -RELOC_TYPE (LDXMOV, REL) -RELOC_TYPE (TPREL14, REL) -RELOC_TYPE (TPREL22, REL) -RELOC_TYPE (TPREL64I, REL) -RELOC_TYPE (TPREL64MSB, REL|EXEC|DYN) -RELOC_TYPE (TPREL64LSB, REL|EXEC|DYN) -RELOC_TYPE (LTOFF_TPREL22, REL) -RELOC_TYPE (DTPMOD64MSB, REL|EXEC|DYN) -RELOC_TYPE (DTPMOD64LSB, REL|EXEC|DYN) -RELOC_TYPE (LTOFF_DTPMOD22, REL) -RELOC_TYPE (DTPREL14, REL) -RELOC_TYPE (DTPREL22, REL) -RELOC_TYPE (DTPREL64I, REL) -RELOC_TYPE (DTPREL32MSB, REL|EXEC|DYN) -RELOC_TYPE (DTPREL32LSB, REL|EXEC|DYN) -RELOC_TYPE (DTPREL64MSB, REL|EXEC|DYN) -RELOC_TYPE (DTPREL64LSB, REL|EXEC|DYN) -RELOC_TYPE (LTOFF_DTPREL22, REL) - -#define NO_RELATIVE_RELOC 1 diff --git a/src/backends/ia64_retval.c b/src/backends/ia64_retval.c deleted file mode 100644 index b5928c58..00000000 --- a/src/backends/ia64_retval.c +++ /dev/null @@ -1,363 +0,0 @@ -/* Function return value location for IA64 ABI. - Copyright (C) 2006-2010, 2014 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <dwarf.h> - -#define BACKEND ia64_ -#include "libebl_CPU.h" - - -/* r8, or pair r8, r9, or aggregate up to r8-r11. */ -static const Dwarf_Op loc_intreg[] = - { - { .atom = DW_OP_reg8 }, { .atom = DW_OP_piece, .number = 8 }, - { .atom = DW_OP_reg9 }, { .atom = DW_OP_piece, .number = 8 }, - { .atom = DW_OP_reg10 }, { .atom = DW_OP_piece, .number = 8 }, - { .atom = DW_OP_reg11 }, { .atom = DW_OP_piece, .number = 8 }, - }; -#define nloc_intreg 1 -#define nloc_intregs(n) (2 * (n)) - -/* f8, or aggregate up to f8-f15. */ -#define DEFINE_FPREG(size) \ - static const Dwarf_Op loc_fpreg_##size[] = \ - { \ - { .atom = DW_OP_regx, .number = 128 + 8 }, \ - { .atom = DW_OP_piece, .number = size }, \ - { .atom = DW_OP_regx, .number = 128 + 9 }, \ - { .atom = DW_OP_piece, .number = size }, \ - { .atom = DW_OP_regx, .number = 128 + 10 }, \ - { .atom = DW_OP_piece, .number = size }, \ - { .atom = DW_OP_regx, .number = 128 + 11 }, \ - { .atom = DW_OP_piece, .number = size }, \ - { .atom = DW_OP_regx, .number = 128 + 12 }, \ - { .atom = DW_OP_piece, .number = size }, \ - { .atom = DW_OP_regx, .number = 128 + 13 }, \ - { .atom = DW_OP_piece, .number = size }, \ - { .atom = DW_OP_regx, .number = 128 + 14 }, \ - { .atom = DW_OP_piece, .number = size }, \ - { .atom = DW_OP_regx, .number = 128 + 15 }, \ - { .atom = DW_OP_piece, .number = size }, \ - } -#define nloc_fpreg 1 -#define nloc_fpregs(n) (2 * (n)) - -DEFINE_FPREG (4); -DEFINE_FPREG (8); -DEFINE_FPREG (10); - -#undef DEFINE_FPREG - - -/* The return value is a structure and is actually stored in stack space - passed in a hidden argument by the caller. But, the compiler - helpfully returns the address of that space in r8. */ -static const Dwarf_Op loc_aggregate[] = - { - { .atom = DW_OP_breg8, .number = 0 } - }; -#define nloc_aggregate 1 - - -/* If this type is an HFA small enough to be returned in FP registers, - return the number of registers to use. Otherwise 9, or -1 for errors. */ -static int -hfa_type (Dwarf_Die *typedie, Dwarf_Word size, - const Dwarf_Op **locp, int fpregs_used) -{ - /* Descend the type structure, counting elements and finding their types. - If we find a datum that's not an FP type (and not quad FP), punt. - If we find a datum that's not the same FP type as the first datum, punt. - If we count more than eight total homogeneous FP data, punt. */ - - inline int hfa (const Dwarf_Op *loc, int nregs) - { - if (fpregs_used == 0) - *locp = loc; - else if (*locp != loc) - return 9; - return fpregs_used + nregs; - } - - int tag = DWARF_TAG_OR_RETURN (typedie); - switch (tag) - { - Dwarf_Attribute attr_mem; - - case -1: - return -1; - - case DW_TAG_base_type:; - Dwarf_Word encoding; - if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_encoding, - &attr_mem), &encoding) != 0) - return -1; - - switch (encoding) - { - case DW_ATE_float: - switch (size) - { - case 4: /* float */ - return hfa (loc_fpreg_4, 1); - case 8: /* double */ - return hfa (loc_fpreg_8, 1); - case 10: /* x86-style long double, not really used */ - return hfa (loc_fpreg_10, 1); - } - break; - - case DW_ATE_complex_float: - switch (size) - { - case 4 * 2: /* complex float */ - return hfa (loc_fpreg_4, 2); - case 8 * 2: /* complex double */ - return hfa (loc_fpreg_8, 2); - case 10 * 2: /* complex long double (x86-style) */ - return hfa (loc_fpreg_10, 2); - } - break; - } - break; - - case DW_TAG_structure_type: - case DW_TAG_class_type: - case DW_TAG_union_type:; - Dwarf_Die child_mem; - switch (dwarf_child (typedie, &child_mem)) - { - default: - return -1; - - case 1: /* No children: empty struct. */ - break; - - case 0:; /* Look at each element. */ - int max_used = fpregs_used; - do - switch (dwarf_tag (&child_mem)) - { - case -1: - return -1; - - case DW_TAG_member:; - Dwarf_Die child_type_mem; - Dwarf_Die *child_typedie - = dwarf_formref_die (dwarf_attr_integrate (&child_mem, - DW_AT_type, - &attr_mem), - &child_type_mem); - Dwarf_Word child_size; - if (dwarf_aggregate_size (child_typedie, &child_size) != 0) - return -1; - if (tag == DW_TAG_union_type) - { - int used = hfa_type (child_typedie, child_size, - locp, fpregs_used); - if (used < 0 || used > 8) - return used; - if (used > max_used) - max_used = used; - } - else - { - fpregs_used = hfa_type (child_typedie, child_size, - locp, fpregs_used); - if (fpregs_used < 0 || fpregs_used > 8) - return fpregs_used; - } - } - while (dwarf_siblingof (&child_mem, &child_mem) == 0); - if (tag == DW_TAG_union_type) - fpregs_used = max_used; - break; - } - break; - - case DW_TAG_array_type: - if (size == 0) - break; - - Dwarf_Die base_type_mem; - Dwarf_Die *base_typedie - = dwarf_formref_die (dwarf_attr_integrate (typedie, DW_AT_type, - &attr_mem), - &base_type_mem); - Dwarf_Word base_size; - if (dwarf_aggregate_size (base_typedie, &base_size) != 0) - return -1; - - int used = hfa_type (base_typedie, base_size, locp, 0); - if (used < 0 || used > 8) - return used; - if (size % (*locp)[1].number != 0) - return 0; - fpregs_used += used * (size / (*locp)[1].number); - break; - - default: - return 9; - } - - return fpregs_used; -} - -int -ia64_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) -{ - /* Start with the function's type, and get the DW_AT_type attribute, - which is the type of the return value. */ - Dwarf_Die die_mem, *typedie = &die_mem; - int tag = dwarf_peeled_die_type (functypedie, typedie); - if (tag <= 0) - return tag; - - Dwarf_Word size; - switch (tag) - { - case -1: - return -1; - - case DW_TAG_subrange_type: - if (! dwarf_hasattr_integrate (typedie, DW_AT_byte_size)) - { - Dwarf_Attribute attr_mem, *attr; - attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem); - typedie = dwarf_formref_die (attr, &die_mem); - tag = DWARF_TAG_OR_RETURN (typedie); - } - /* Fall through. */ - - case DW_TAG_base_type: - case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: - { - Dwarf_Attribute attr_mem; - if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size, - &attr_mem), &size) != 0) - { - if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) - size = 8; - else - return -1; - } - } - - if (tag == DW_TAG_base_type) - { - Dwarf_Attribute attr_mem; - Dwarf_Word encoding; - if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_encoding, - &attr_mem), - &encoding) != 0) - return -1; - - switch (encoding) - { - case DW_ATE_float: - switch (size) - { - case 4: /* float */ - *locp = loc_fpreg_4; - return nloc_fpreg; - case 8: /* double */ - *locp = loc_fpreg_8; - return nloc_fpreg; - case 10: /* x86-style long double, not really used */ - *locp = loc_fpreg_10; - return nloc_fpreg; - case 16: /* long double, IEEE quad format */ - *locp = loc_intreg; - return nloc_intregs (2); - } - return -2; - - case DW_ATE_complex_float: - switch (size) - { - case 4 * 2: /* complex float */ - *locp = loc_fpreg_4; - return nloc_fpregs (2); - case 8 * 2: /* complex double */ - *locp = loc_fpreg_8; - return nloc_fpregs (2); - case 10 * 2: /* complex long double (x86-style) */ - *locp = loc_fpreg_10; - return nloc_fpregs (2); - case 16 * 2: /* complex long double (IEEE quad) */ - *locp = loc_intreg; - return nloc_intregs (4); - } - return -2; - } - } - - intreg: - *locp = loc_intreg; - if (size <= 8) - return nloc_intreg; - if (size <= 32) - return nloc_intregs ((size + 7) / 8); - - large: - *locp = loc_aggregate; - return nloc_aggregate; - - case DW_TAG_structure_type: - case DW_TAG_class_type: - case DW_TAG_union_type: - case DW_TAG_array_type: - if (dwarf_aggregate_size (typedie, &size) != 0) - return -1; - - /* If this qualifies as an homogeneous floating-point aggregate - (HFA), then it should be returned in FP regs. */ - int nfpreg = hfa_type (typedie, size, locp, 0); - if (nfpreg < 0) - return nfpreg; - else if (nfpreg > 0 && nfpreg <= 8) - return nfpreg == 1 ? nloc_fpreg : nloc_fpregs (nfpreg); - - if (size > 32) - goto large; - - goto intreg; - } - - /* XXX We don't have a good way to return specific errors from ebl calls. - This value means we do not understand the type, but it is well-formed - DWARF and might be valid. */ - return -2; -} diff --git a/src/backends/ia64_symbol.c b/src/backends/ia64_symbol.c deleted file mode 100644 index f928b0b7..00000000 --- a/src/backends/ia64_symbol.c +++ /dev/null @@ -1,157 +0,0 @@ -/* IA-64 specific symbolic name handling. - Copyright (C) 2002-2009, 2014 Red Hat, Inc. - This file is part of elfutils. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <elf.h> -#include <stddef.h> -#include <assert.h> - -#define BACKEND ia64_ -#include "libebl_CPU.h" - - -const char * -ia64_segment_type_name (int segment, char *buf __attribute__ ((unused)), - size_t len __attribute__ ((unused))) -{ - switch (segment) - { - case PT_IA_64_ARCHEXT: - return "IA_64_ARCHEXT"; - case PT_IA_64_UNWIND: - return "IA_64_UNWIND"; - case PT_IA_64_HP_OPT_ANOT: - return "IA_64_HP_OPT_ANOT"; - case PT_IA_64_HP_HSL_ANOT: - return "IA_64_HP_HSL_ANOT"; - case PT_IA_64_HP_STACK: - return "IA_64_HP_STACK"; - default: - break; - } - return NULL; -} - -const char * -ia64_dynamic_tag_name (int64_t tag, char *buf __attribute__ ((unused)), - size_t len __attribute__ ((unused))) -{ - switch (tag) - { - case DT_IA_64_PLT_RESERVE: - return "IA_64_PLT_RESERVE"; - default: - break; - } - return NULL; -} - -/* Check dynamic tag. */ -bool -ia64_dynamic_tag_check (int64_t tag) -{ - return tag == DT_IA_64_PLT_RESERVE; -} - -/* Check whether machine flags are valid. */ -bool -ia64_machine_flag_check (GElf_Word flags) -{ - return ((flags &~ EF_IA_64_ABI64) == 0); -} - -/* Check whether SHF_MASKPROC flags are valid. */ -bool -ia64_machine_section_flag_check (GElf_Xword sh_flags) -{ - return (sh_flags &~ (SHF_IA_64_SHORT | SHF_IA_64_NORECOV)) == 0; -} - -/* Return symbolic representation of section type. */ -const char * -ia64_section_type_name (int type, - char *buf __attribute__ ((unused)), - size_t len __attribute__ ((unused))) -{ - switch (type) - { - case SHT_IA_64_EXT: - return "IA_64_EXT"; - case SHT_IA_64_UNWIND: - return "IA_64_UNWIND"; - } - - return NULL; -} - -/* Check for the simple reloc types. */ -Elf_Type -ia64_reloc_simple_type (Ebl *ebl, int type) -{ - switch (type) - { - /* The SECREL types when used with non-allocated sections - like .debug_* are the same as direct absolute relocs - applied to those sections, since a 0 section address is assumed. - So we treat them the same here. */ - - case R_IA64_SECREL32MSB: - case R_IA64_DIR32MSB: - if (ebl->data == ELFDATA2MSB) - return ELF_T_WORD; - break; - case R_IA64_SECREL32LSB: - case R_IA64_DIR32LSB: - if (ebl->data == ELFDATA2LSB) - return ELF_T_WORD; - break; - case R_IA64_DIR64MSB: - case R_IA64_SECREL64MSB: - if (ebl->data == ELFDATA2MSB) - return ELF_T_XWORD; - break; - case R_IA64_SECREL64LSB: - case R_IA64_DIR64LSB: - if (ebl->data == ELFDATA2LSB) - return ELF_T_XWORD; - break; - } - - return ELF_T_NUM; -} - -/* The SHT_IA_64_UNWIND section type is a valid target for relocation. */ -bool -ia64_check_reloc_target_type (Ebl *ebl __attribute__ ((unused)), Elf64_Word sh_type) -{ - return sh_type == SHT_IA_64_UNWIND; -} diff --git a/src/backends/libebl_CPU.h b/src/backends/libebl_CPU.h deleted file mode 100644 index ef2b922b..00000000 --- a/src/backends/libebl_CPU.h +++ /dev/null @@ -1,76 +0,0 @@ -/* Common interface for libebl modules. - Copyright (C) 2000, 2001, 2002, 2003, 2005, 2013, 2014 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifndef _LIBEBL_CPU_H -#define _LIBEBL_CPU_H 1 - -#include <dwarf.h> -#include <libeblP.h> - -#define EBLHOOK(name) EBLHOOK_1(BACKEND, name) -#define EBLHOOK_1(a, b) EBLHOOK_2(a, b) -#define EBLHOOK_2(a, b) a##b - -/* Constructor. */ -extern const char *EBLHOOK(init) (Elf *elf, GElf_Half machine, - Ebl *eh, size_t ehlen); - -#include "ebl-hooks.h" - -#define HOOK(eh, name) eh->name = EBLHOOK(name) - -extern bool (*generic_debugscn_p) (const char *) attribute_hidden; - -/* Helper for retval. Return dwarf_tag (die), but calls return -1 - if there where previous errors that leave die NULL. */ -#define DWARF_TAG_OR_RETURN(die) \ - ({ Dwarf_Die *_die = (die); \ - if (_die == NULL) return -1; \ - dwarf_tag (_die); }) - -/* Get a type die corresponding to DIE. Peel CV qualifiers off - it. */ -static inline int -dwarf_peeled_die_type (Dwarf_Die *die, Dwarf_Die *result) -{ - Dwarf_Attribute attr_mem; - Dwarf_Attribute *attr = dwarf_attr_integrate (die, DW_AT_type, &attr_mem); - if (attr == NULL) - /* The function has no return value, like a `void' function in C. */ - return 0; - - if (dwarf_formref_die (attr, result) == NULL) - return -1; - - if (dwarf_peel_type (result, result) != 0) - return -1; - - return DWARF_TAG_OR_RETURN (result); -} - -#endif /* libebl_CPU.h */ diff --git a/src/backends/linux-core-note.c b/src/backends/linux-core-note.c deleted file mode 100644 index e3c01098..00000000 --- a/src/backends/linux-core-note.c +++ /dev/null @@ -1,299 +0,0 @@ -/* Common core note type descriptions for Linux. - Copyright (C) 2007-2010 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#include <string.h> - -/* The including CPU_corenote.c file provides prstatus_regs and - defines macros ULONG, [PUG]ID_T, and ALIGN_*, TYPE_*. - - Here we describe the common layout used in <linux/elfcore.h>. */ - -#define CHAR int8_t -#define ALIGN_CHAR 1 -#define TYPE_CHAR ELF_T_BYTE -#define SHORT uint16_t -#define ALIGN_SHORT 2 -#define TYPE_SHORT ELF_T_HALF -#define INT int32_t -#define ALIGN_INT 4 -#define TYPE_INT ELF_T_SWORD -#ifndef ALIGN_PR_REG -# define ALIGN_PR_REG ALIGN_ULONG -#endif - -#define FIELD(type, name) type name __attribute__ ((aligned (ALIGN_##type))) - -struct EBLHOOK(siginfo) -{ - FIELD (INT, si_signo); - FIELD (INT, si_code); - FIELD (INT, si_errno); -}; - -struct EBLHOOK(timeval) -{ - FIELD (ULONG, tv_sec); - FIELD (ULONG, tv_usec); -}; - -/* On sparc64, tv_usec (suseconds_t) is actually 32 bits with 32 bits padding. - The 'T'|0x80 value for .format indicates this as a special kludge. */ -#if SUSECONDS_HALF -# define TIMEVAL_FIELD(name) FIELD (time, ULONG, name, 'T'|0x80, .count = 2) -#else -# define TIMEVAL_FIELD(name) FIELD (time, ULONG, name, 'T', .count = 2) -#endif - - -struct EBLHOOK(prstatus) -{ - struct EBLHOOK(siginfo) pr_info; - FIELD (SHORT, pr_cursig); - FIELD (ULONG, pr_sigpend); - FIELD (ULONG, pr_sighold); - FIELD (PID_T, pr_pid); - FIELD (PID_T, pr_ppid); - FIELD (PID_T, pr_pgrp); - FIELD (PID_T, pr_sid); - struct EBLHOOK(timeval) pr_utime; - struct EBLHOOK(timeval) pr_stime; - struct EBLHOOK(timeval) pr_cutime; - struct EBLHOOK(timeval) pr_cstime; - struct - { - FIELD (ULONG, pr_reg[PRSTATUS_REGS_SIZE / sizeof (ULONG)]); - } -#ifdef ALIGN_PR_REG - __attribute__ ((aligned (ALIGN_PR_REG))) -#endif - ; - FIELD (INT, pr_fpvalid); -}; - -#define FNAMESZ 16 -#define PRARGSZ 80 - -struct EBLHOOK(prpsinfo) -{ - FIELD (CHAR, pr_state); - FIELD (CHAR, pr_sname); - FIELD (CHAR, pr_zomb); - FIELD (CHAR, pr_nice); - FIELD (ULONG, pr_flag); - FIELD (UID_T, pr_uid); - FIELD (GID_T, pr_gid); - FIELD (PID_T, pr_pid); - FIELD (PID_T, pr_ppid); - FIELD (PID_T, pr_pgrp); - FIELD (PID_T, pr_sid); - FIELD (CHAR, pr_fname[FNAMESZ]); - FIELD (CHAR, pr_psargs[PRARGSZ]); -}; - -#undef FIELD - -#define FIELD(igroup, itype, item, fmt, ...) \ - { \ - .name = #item, \ - .group = #igroup, \ - .offset = offsetof (struct EBLHOOK(prstatus), pr_##item), \ - .type = TYPE_##itype, \ - .format = fmt, \ - __VA_ARGS__ \ - } - -static const Ebl_Core_Item prstatus_items[] = - { - FIELD (signal, INT, info.si_signo, 'd'), - FIELD (signal, INT, info.si_code, 'd'), - FIELD (signal, INT, info.si_errno, 'd'), - FIELD (signal, SHORT, cursig, 'd'), - - /* Use different group name for a newline delimiter. */ - FIELD (signal2, ULONG, sigpend, 'B'), - FIELD (signal3, ULONG, sighold, 'B'), - FIELD (identity, PID_T, pid, 'd', .thread_identifier = true), - FIELD (identity, PID_T, ppid, 'd'), - FIELD (identity, PID_T, pgrp, 'd'), - FIELD (identity, PID_T, sid, 'd'), - TIMEVAL_FIELD (utime), - TIMEVAL_FIELD (stime), - TIMEVAL_FIELD (cutime), - TIMEVAL_FIELD (cstime), -#ifdef PRSTATUS_REGSET_ITEMS - PRSTATUS_REGSET_ITEMS, -#endif - FIELD (register, INT, fpvalid, 'd'), - }; - -#undef FIELD - -#define FIELD(igroup, itype, item, fmt, ...) \ - { \ - .name = #item, \ - .group = #igroup, \ - .offset = offsetof (struct EBLHOOK(prpsinfo), pr_##item), \ - .type = TYPE_##itype, \ - .format = fmt, \ - __VA_ARGS__ \ - } - -static const Ebl_Core_Item prpsinfo_items[] = - { - FIELD (state, CHAR, state, 'd'), - FIELD (state, CHAR, sname, 'c'), - FIELD (state, CHAR, zomb, 'd'), - FIELD (state, CHAR, nice, 'd'), - FIELD (state, ULONG, flag, 'x'), - FIELD (identity, UID_T, uid, 'd'), - FIELD (identity, GID_T, gid, 'd'), - FIELD (identity, PID_T, pid, 'd'), - FIELD (identity, PID_T, ppid, 'd'), - FIELD (identity, PID_T, pgrp, 'd'), - FIELD (identity, PID_T, sid, 'd'), - FIELD (command, CHAR, fname, 's', .count = FNAMESZ), - FIELD (command, CHAR, psargs, 's', .count = PRARGSZ), - }; - -static const Ebl_Core_Item vmcoreinfo_items[] = - { - { - .type = ELF_T_BYTE, .format = '\n' - } - }; - -#undef FIELD - -int -EBLHOOK(core_note) (nhdr, name, regs_offset, nregloc, reglocs, nitems, items) - const GElf_Nhdr *nhdr; - const char *name; - GElf_Word *regs_offset; - size_t *nregloc; - const Ebl_Register_Location **reglocs; - size_t *nitems; - const Ebl_Core_Item **items; -{ - switch (nhdr->n_namesz) - { - case sizeof "CORE" - 1: /* Buggy old Linux kernels. */ - if (memcmp (name, "CORE", nhdr->n_namesz) == 0) - break; - return 0; - - case sizeof "CORE": - if (memcmp (name, "CORE", nhdr->n_namesz) == 0) - break; - /* Buggy old Linux kernels didn't terminate "LINUX". - Fall through. */ - - case sizeof "LINUX": - if (memcmp (name, "LINUX", nhdr->n_namesz) == 0) - break; - return 0; - - case sizeof "VMCOREINFO": - if (nhdr->n_type != 0 - || memcmp (name, "VMCOREINFO", sizeof "VMCOREINFO") != 0) - return 0; - *regs_offset = 0; - *nregloc = 0; - *nitems = 1; - *items = vmcoreinfo_items; - return 1; - - default: - return 0; - } - - switch (nhdr->n_type) - { - case NT_PRSTATUS: - if (nhdr->n_descsz != sizeof (struct EBLHOOK(prstatus))) - return 0; - *regs_offset = offsetof (struct EBLHOOK(prstatus), pr_reg); - *nregloc = sizeof prstatus_regs / sizeof prstatus_regs[0]; - *reglocs = prstatus_regs; - *nitems = sizeof prstatus_items / sizeof prstatus_items[0]; - *items = prstatus_items; - return 1; - - case NT_PRPSINFO: - if (nhdr->n_descsz != sizeof (struct EBLHOOK(prpsinfo))) - return 0; - *regs_offset = 0; - *nregloc = 0; - *reglocs = NULL; - *nitems = sizeof prpsinfo_items / sizeof prpsinfo_items[0]; - *items = prpsinfo_items; - return 1; - -#define EXTRA_REGSET(type, size, table) \ - case type: \ - if (nhdr->n_descsz != size) \ - return 0; \ - *regs_offset = 0; \ - *nregloc = sizeof table / sizeof table[0]; \ - *reglocs = table; \ - *nitems = 0; \ - *items = NULL; \ - return 1; - -#define EXTRA_REGSET_ITEMS(type, size, table, extra_items) \ - case type: \ - if (nhdr->n_descsz != size) \ - return 0; \ - *regs_offset = 0; \ - *nregloc = sizeof table / sizeof table[0]; \ - *reglocs = table; \ - *nitems = sizeof extra_items / sizeof extra_items[0]; \ - *items = extra_items; \ - return 1; - -#define EXTRA_ITEMS(type, size, extra_items) \ - case type: \ - if (nhdr->n_descsz != size) \ - return 0; \ - *regs_offset = 0; \ - *nregloc = 0; \ - *reglocs = NULL; \ - *nitems = sizeof extra_items / sizeof extra_items[0]; \ - *items = extra_items; \ - return 1; - -#ifdef FPREGSET_SIZE - EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs) -#endif - -#ifdef EXTRA_NOTES - EXTRA_NOTES -#endif - } - - return 0; -} diff --git a/src/backends/ppc64_corenote.c b/src/backends/ppc64_corenote.c deleted file mode 100644 index 9d6a6a44..00000000 --- a/src/backends/ppc64_corenote.c +++ /dev/null @@ -1,2 +0,0 @@ -#define BITS 64 -#include "ppc_corenote.c" diff --git a/src/backends/ppc64_init.c b/src/backends/ppc64_init.c deleted file mode 100644 index 56e1828e..00000000 --- a/src/backends/ppc64_init.c +++ /dev/null @@ -1,109 +0,0 @@ -/* Initialization of PPC64 specific backend library. - Copyright (C) 2004, 2005, 2006, 2007, 2008, 2013, 2014 Red Hat, Inc. - This file is part of elfutils. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <string.h> - -#define BACKEND ppc64_ -#define RELOC_PREFIX R_PPC64_ -#include "libebl_CPU.h" - -/* This defines the common reloc hooks based on ppc64_reloc.def. */ -#include "common-reloc.c" - - -const char * -ppc64_init (elf, machine, eh, ehlen) - Elf *elf __attribute__ ((unused)); - GElf_Half machine __attribute__ ((unused)); - Ebl *eh; - size_t ehlen; -{ - /* Check whether the Elf_BH object has a sufficent size. */ - if (ehlen < sizeof (Ebl)) - return NULL; - - /* We handle it. */ - eh->name = "PowerPC 64-bit"; - ppc64_init_reloc (eh); - HOOK (eh, reloc_simple_type); - HOOK (eh, dynamic_tag_name); - HOOK (eh, dynamic_tag_check); - HOOK (eh, machine_flag_check); - HOOK (eh, copy_reloc_p); - HOOK (eh, check_special_symbol); - HOOK (eh, check_st_other_bits); - HOOK (eh, bss_plt_p); - HOOK (eh, return_value_location); - HOOK (eh, register_info); - HOOK (eh, syscall_abi); - HOOK (eh, core_note); - HOOK (eh, auxv_info); - HOOK (eh, abi_cfi); - /* gcc/config/ #define DWARF_FRAME_REGISTERS. */ - eh->frame_nregs = (114 - 1) + 32; - HOOK (eh, set_initial_registers_tid); - HOOK (eh, dwarf_to_regno); - HOOK (eh, resolve_sym_value); - - /* Find the function descriptor .opd table for resolve_sym_value. */ - if (elf != NULL) - { - GElf_Ehdr ehdr_mem, *ehdr = gelf_getehdr (elf, &ehdr_mem); - if (ehdr != NULL && ehdr->e_type != ET_REL) - { - /* We could also try through DT_PPC64_OPD and DT_PPC64_OPDSZ. */ - GElf_Shdr opd_shdr_mem, *opd_shdr; - Elf_Scn *scn = NULL; - while ((scn = elf_nextscn (elf, scn)) != NULL) - { - opd_shdr = gelf_getshdr (scn, &opd_shdr_mem); - if (opd_shdr != NULL - && (opd_shdr->sh_flags & SHF_ALLOC) != 0 - && opd_shdr->sh_type == SHT_PROGBITS - && opd_shdr->sh_size > 0) - { - const char *name = elf_strptr (elf, ehdr->e_shstrndx, - opd_shdr->sh_name); - if (name != NULL && strcmp (name, ".opd") == 0) - { - eh->fd_addr = opd_shdr->sh_addr; - eh->fd_data = elf_getdata (scn, NULL); - break; - } - } - } - } - } - - return MODVERSION; -} diff --git a/src/backends/ppc64_reloc.def b/src/backends/ppc64_reloc.def deleted file mode 100644 index 3a693cf6..00000000 --- a/src/backends/ppc64_reloc.def +++ /dev/null @@ -1,161 +0,0 @@ -/* List the relocation types for ppc64. -*- C -*- - Copyright (C) 2005 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -/* NAME, REL|EXEC|DYN */ - -RELOC_TYPE (NONE, 0) -RELOC_TYPE (ADDR32, REL|EXEC|DYN) -RELOC_TYPE (ADDR24, REL) -RELOC_TYPE (ADDR16, REL) /* note 1 */ -RELOC_TYPE (ADDR16_LO, REL) /* note 1 */ -RELOC_TYPE (ADDR16_HI, REL) /* note 1 */ -RELOC_TYPE (ADDR16_HA, REL) /* note 1 */ -RELOC_TYPE (ADDR14, REL) /* note 1 */ -RELOC_TYPE (ADDR14_BRTAKEN, REL) /* note 1 */ -RELOC_TYPE (ADDR14_BRNTAKEN, REL) /* note 1 */ -RELOC_TYPE (REL24, REL) -RELOC_TYPE (REL14, REL) -RELOC_TYPE (REL14_BRTAKEN, REL) -RELOC_TYPE (REL14_BRNTAKEN, REL) -RELOC_TYPE (GOT16, REL) -RELOC_TYPE (GOT16_LO, REL) -RELOC_TYPE (GOT16_HI, REL) -RELOC_TYPE (GOT16_HA, REL) -RELOC_TYPE (COPY, EXEC) -RELOC_TYPE (GLOB_DAT, EXEC|DYN) -RELOC_TYPE (JMP_SLOT, EXEC|DYN) -RELOC_TYPE (RELATIVE, EXEC|DYN) -RELOC_TYPE (UADDR32, REL|EXEC|DYN) -RELOC_TYPE (UADDR16, REL) -RELOC_TYPE (REL32, REL|EXEC|DYN) -RELOC_TYPE (PLT32, REL) -RELOC_TYPE (PLTREL32, REL) -RELOC_TYPE (PLT16_LO, REL) -RELOC_TYPE (PLT16_HI, REL) -RELOC_TYPE (PLT16_HA, REL) -RELOC_TYPE (SECTOFF, REL) -RELOC_TYPE (SECTOFF_LO, REL) -RELOC_TYPE (SECTOFF_HI, REL) -RELOC_TYPE (SECTOFF_HA, REL) -RELOC_TYPE (ADDR30, REL) /* note 1 */ -RELOC_TYPE (ADDR64, REL|EXEC|DYN) -RELOC_TYPE (ADDR16_HIGHER, REL) /* note 1 */ -RELOC_TYPE (ADDR16_HIGHERA, REL) /* note 1 */ -RELOC_TYPE (ADDR16_HIGHEST, REL) /* note 1 */ -RELOC_TYPE (ADDR16_HIGHESTA, REL) /* note 1 */ -RELOC_TYPE (UADDR64, REL|EXEC|DYN) -RELOC_TYPE (REL64, REL|EXEC|DYN) -RELOC_TYPE (PLT64, REL) -RELOC_TYPE (PLTREL64, REL) -RELOC_TYPE (TOC16, REL) -RELOC_TYPE (TOC16_LO, REL) -RELOC_TYPE (TOC16_HI, REL) -RELOC_TYPE (TOC16_HA, REL) -RELOC_TYPE (TOC, REL) -RELOC_TYPE (PLTGOT16, REL) -RELOC_TYPE (PLTGOT16_LO, REL) -RELOC_TYPE (PLTGOT16_HI, REL) -RELOC_TYPE (PLTGOT16_HA, REL) -RELOC_TYPE (ADDR16_DS, REL) /* note 1 */ -RELOC_TYPE (ADDR16_LO_DS, REL) /* note 1 */ -RELOC_TYPE (GOT16_DS, REL) -RELOC_TYPE (GOT16_LO_DS, REL) -RELOC_TYPE (PLT16_LO_DS, REL) -RELOC_TYPE (SECTOFF_DS, REL) -RELOC_TYPE (SECTOFF_LO_DS, REL) -RELOC_TYPE (TOC16_DS, REL) -RELOC_TYPE (TOC16_LO_DS, REL) -RELOC_TYPE (PLTGOT16_DS, REL) -RELOC_TYPE (PLTGOT16_LO_DS, REL) -RELOC_TYPE (TLS, REL) -RELOC_TYPE (DTPMOD64, REL|EXEC|DYN) /* note 3 */ -RELOC_TYPE (TPREL16, REL) /* note 2 */ -RELOC_TYPE (TPREL16_LO, REL) /* note 2 */ -RELOC_TYPE (TPREL16_HI, REL) /* note 2 */ -RELOC_TYPE (TPREL16_HA, REL) /* note 2 */ -RELOC_TYPE (TPREL64, REL|EXEC|DYN) /* note 3 */ -RELOC_TYPE (DTPREL16, REL) -RELOC_TYPE (DTPREL16_LO, REL) -RELOC_TYPE (DTPREL16_HI, REL) -RELOC_TYPE (DTPREL16_HA, REL) -RELOC_TYPE (DTPREL64, REL|EXEC|DYN) /* note 3 */ -RELOC_TYPE (GOT_TLSGD16, REL) -RELOC_TYPE (GOT_TLSGD16_LO, REL) -RELOC_TYPE (GOT_TLSGD16_HI, REL) -RELOC_TYPE (GOT_TLSGD16_HA, REL) -RELOC_TYPE (GOT_TLSLD16, REL) -RELOC_TYPE (GOT_TLSLD16_LO, REL) -RELOC_TYPE (GOT_TLSLD16_HI, REL) -RELOC_TYPE (GOT_TLSLD16_HA, REL) -RELOC_TYPE (GOT_TPREL16_DS, REL) -RELOC_TYPE (GOT_TPREL16_LO_DS, REL) -RELOC_TYPE (GOT_TPREL16_HI, REL) -RELOC_TYPE (GOT_TPREL16_HA, REL) -RELOC_TYPE (GOT_DTPREL16_DS, REL) -RELOC_TYPE (GOT_DTPREL16_LO_DS, REL) -RELOC_TYPE (GOT_DTPREL16_HI, REL) -RELOC_TYPE (GOT_DTPREL16_HA, REL) -RELOC_TYPE (TPREL16_DS, REL) /* note 2 */ -RELOC_TYPE (TPREL16_LO_DS, REL) /* note 2 */ -RELOC_TYPE (TPREL16_HIGHER, REL) /* note 2 */ -RELOC_TYPE (TPREL16_HIGHERA, REL) /* note 2 */ -RELOC_TYPE (TPREL16_HIGHEST, REL) /* note 2 */ -RELOC_TYPE (TPREL16_HIGHESTA, REL) /* note 2 */ -RELOC_TYPE (DTPREL16_DS, REL) -RELOC_TYPE (DTPREL16_LO_DS, REL) -RELOC_TYPE (DTPREL16_HIGHER, REL) -RELOC_TYPE (DTPREL16_HIGHERA, REL) -RELOC_TYPE (DTPREL16_HIGHEST, REL) -RELOC_TYPE (DTPREL16_HIGHESTA, REL) -RELOC_TYPE (TLSGD, REL) -RELOC_TYPE (TLSLD, REL) -RELOC_TYPE (TOCSAVE, REL) -RELOC_TYPE (ADDR16_HIGH, REL) -RELOC_TYPE (ADDR16_HIGHA, REL) -RELOC_TYPE (TPREL16_HIGH, REL) -RELOC_TYPE (TPREL16_HIGHA, REL) -RELOC_TYPE (DTPREL16_HIGH, REL) -RELOC_TYPE (DTPREL16_HIGHA, REL) -RELOC_TYPE (JMP_IREL, REL) -RELOC_TYPE (IRELATIVE, REL) -RELOC_TYPE (REL16, REL) -RELOC_TYPE (REL16_LO, REL) -RELOC_TYPE (REL16_HI, REL) -RELOC_TYPE (REL16_HA, REL) - -/* Notes from Alan Modra: - - 1) These can appear in DYN and EXEC with improper assembly, but they - aren't really kosher. - - 2) These can appear in DYN with improper assembly (or silly gcc - attributes, I think). Again, not kosher. - - 3) These are legal in REL for PowerOpen compatible assembler syntax, - ie. TOC managed by compiler. -*/ diff --git a/src/backends/ppc64_resolve_sym.c b/src/backends/ppc64_resolve_sym.c deleted file mode 100644 index 03f65584..00000000 --- a/src/backends/ppc64_resolve_sym.c +++ /dev/null @@ -1,63 +0,0 @@ -/* Resolve symbol values through .opd function descriptors. - Copyright (C) 2013 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#define BACKEND ppc64_ -#include "libebl_CPU.h" - -/* Resolve a function descriptor if addr points into the .opd section. - The .opd section contains function descriptors consisting of 3 addresses. - function, toc and chain. We are just interested in the first. - http://refspecs.linuxfoundation.org/ELF/ppc64/PPC-elf64abi-1.9.html#FUNC-DES - - Returns true if the given address could be resolved, false otherwise. -*/ -bool -ppc64_resolve_sym_value (Ebl *ebl, GElf_Addr *addr) -{ - if (ebl->fd_data != NULL && *addr >= ebl->fd_addr - && *addr + sizeof (Elf64_Addr) <= ebl->fd_addr + ebl->fd_data->d_size) - { - GElf_Ehdr ehdr_mem, *ehdr = gelf_getehdr (ebl->elf, &ehdr_mem); - if (ehdr != NULL) - { - Elf_Data opd_in, opd_out; - opd_in.d_buf = ebl->fd_data->d_buf + (*addr - ebl->fd_addr); - opd_out.d_buf = addr; - opd_out.d_size = opd_in.d_size = sizeof (Elf64_Addr); - opd_out.d_type = opd_in.d_type = ELF_T_ADDR; - if (elf64_xlatetom (&opd_out, &opd_in, - ehdr->e_ident[EI_DATA]) != NULL) - return true; - } - } - return false; -} diff --git a/src/backends/ppc64_retval.c b/src/backends/ppc64_retval.c deleted file mode 100644 index a2519839..00000000 --- a/src/backends/ppc64_retval.c +++ /dev/null @@ -1,195 +0,0 @@ -/* Function return value location for Linux/PPC64 ABI. - Copyright (C) 2005-2010, 2014 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <dwarf.h> - -#define BACKEND ppc64_ -#include "libebl_CPU.h" - - -/* r3. */ -static const Dwarf_Op loc_intreg[] = - { - { .atom = DW_OP_reg3 } - }; -#define nloc_intreg 1 - -/* f1, or f1:f2, or f1:f4. */ -static const Dwarf_Op loc_fpreg[] = - { - { .atom = DW_OP_regx, .number = 33 }, { .atom = DW_OP_piece, .number = 8 }, - { .atom = DW_OP_regx, .number = 34 }, { .atom = DW_OP_piece, .number = 8 }, - { .atom = DW_OP_regx, .number = 35 }, { .atom = DW_OP_piece, .number = 8 }, - { .atom = DW_OP_regx, .number = 36 }, { .atom = DW_OP_piece, .number = 8 }, - }; -#define nloc_fpreg 1 -#define nloc_fp2regs 4 -#define nloc_fp4regs 8 - -/* vr2. */ -static const Dwarf_Op loc_vmxreg[] = - { - { .atom = DW_OP_regx, .number = 1124 + 2 } - }; -#define nloc_vmxreg 1 - -/* The return value is a structure and is actually stored in stack space - passed in a hidden argument by the caller. But, the compiler - helpfully returns the address of that space in r3. */ -static const Dwarf_Op loc_aggregate[] = - { - { .atom = DW_OP_breg3, .number = 0 } - }; -#define nloc_aggregate 1 - -int -ppc64_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) -{ - /* Start with the function's type, and get the DW_AT_type attribute, - which is the type of the return value. */ - Dwarf_Die die_mem, *typedie = &die_mem; - int tag = dwarf_peeled_die_type (functypedie, typedie); - if (tag <= 0) - return tag; - - Dwarf_Word size; - switch (tag) - { - case -1: - return -1; - - case DW_TAG_subrange_type: - if (! dwarf_hasattr_integrate (typedie, DW_AT_byte_size)) - { - Dwarf_Attribute attr_mem, *attr; - attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem); - typedie = dwarf_formref_die (attr, &die_mem); - tag = DWARF_TAG_OR_RETURN (typedie); - } - /* Fall through. */ - - case DW_TAG_base_type: - case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: - { - Dwarf_Attribute attr_mem; - if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size, - &attr_mem), &size) != 0) - { - if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) - size = 8; - else - return -1; - } - } - - if (tag == DW_TAG_base_type) - { - Dwarf_Attribute attr_mem; - Dwarf_Word encoding; - if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_encoding, - &attr_mem), - &encoding) != 0) - return -1; - - if (encoding == DW_ATE_float || encoding == DW_ATE_complex_float) - { - *locp = loc_fpreg; - if (size <= 8) - return nloc_fpreg; - if (size <= 16) - return nloc_fp2regs; - if (size <= 32) - return nloc_fp4regs; - } - } - if (size <= 8) - { - intreg: - *locp = loc_intreg; - return nloc_intreg; - } - - /* Else fall through. */ - case DW_TAG_structure_type: - case DW_TAG_class_type: - case DW_TAG_union_type: - aggregate: - *locp = loc_aggregate; - return nloc_aggregate; - - case DW_TAG_array_type: - { - Dwarf_Attribute attr_mem; - bool is_vector; - if (dwarf_formflag (dwarf_attr_integrate (typedie, DW_AT_GNU_vector, - &attr_mem), &is_vector) == 0 - && is_vector) - { - *locp = loc_vmxreg; - return nloc_vmxreg; - } - } - /* Fall through. */ - - case DW_TAG_string_type: - if (dwarf_aggregate_size (typedie, &size) == 0 && size <= 8) - { - if (tag == DW_TAG_array_type) - { - /* Check if it's a character array. */ - Dwarf_Attribute attr_mem, *attr; - attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem); - typedie = dwarf_formref_die (attr, &die_mem); - tag = DWARF_TAG_OR_RETURN (typedie); - if (tag != DW_TAG_base_type) - goto aggregate; - if (dwarf_formudata (dwarf_attr_integrate (typedie, - DW_AT_byte_size, - &attr_mem), - &size) != 0) - return -1; - if (size != 1) - goto aggregate; - } - goto intreg; - } - goto aggregate; - } - - /* XXX We don't have a good way to return specific errors from ebl calls. - This value means we do not understand the type, but it is well-formed - DWARF and might be valid. */ - return -2; -} diff --git a/src/backends/ppc64_symbol.c b/src/backends/ppc64_symbol.c deleted file mode 100644 index 0feddcee..00000000 --- a/src/backends/ppc64_symbol.c +++ /dev/null @@ -1,130 +0,0 @@ -/* PPC64 specific symbolic name handling. - Copyright (C) 2004, 2005, 2014 Red Hat, Inc. - This file is part of elfutils. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <elf.h> -#include <stddef.h> -#include <string.h> - -#define BACKEND ppc64_ -#include "libebl_CPU.h" - - -/* Check for the simple reloc types. */ -Elf_Type -ppc64_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type) -{ - switch (type) - { - case R_PPC64_ADDR64: - case R_PPC64_UADDR64: - return ELF_T_XWORD; - case R_PPC64_ADDR32: - case R_PPC64_UADDR32: - return ELF_T_WORD; - case R_PPC64_UADDR16: - return ELF_T_HALF; - default: - return ELF_T_NUM; - } -} - - -const char * -ppc64_dynamic_tag_name (int64_t tag, char *buf __attribute__ ((unused)), - size_t len __attribute__ ((unused))) -{ - switch (tag) - { - case DT_PPC64_GLINK: - return "PPC64_GLINK"; - case DT_PPC64_OPD: - return "PPC64_OPD"; - case DT_PPC64_OPDSZ: - return "PPC64_OPDSZ"; - case DT_PPC64_OPT: - return "PPC64_OPT"; - default: - break; - } - return NULL; -} - - -bool -ppc64_dynamic_tag_check (int64_t tag) -{ - return (tag == DT_PPC64_GLINK - || tag == DT_PPC64_OPD - || tag == DT_PPC64_OPDSZ - || tag == DT_PPC64_OPT); -} - - -/* Check whether given symbol's st_value and st_size are OK despite failing - normal checks. */ -bool -ppc64_check_special_symbol (Elf *elf, GElf_Ehdr *ehdr, - const GElf_Sym *sym __attribute__ ((unused)), - const char *name __attribute__ ((unused)), - const GElf_Shdr *destshdr) -{ - const char *sname = elf_strptr (elf, ehdr->e_shstrndx, destshdr->sh_name); - if (sname == NULL) - return false; - return strcmp (sname, ".opd") == 0; -} - - -/* Check if backend uses a bss PLT in this file. */ -bool -ppc64_bss_plt_p (Elf *elf __attribute__ ((unused))) -{ - return true; -} - -/* Check whether machine flags are valid. PPC64 has three possible values: - 0 - for unspecified ABI, or not using any specific ABI features. - 1 - for the original ELF PPC64 ABI using function descriptors. - 2 - for the revised ELFv2 PPC64 ABI without function descriptors. */ -bool -ppc64_machine_flag_check (GElf_Word flags) -{ - return flags == 0 || flags == 1 || flags == 2; -} - -bool -ppc64_check_st_other_bits (unsigned char st_other) -{ - return (PPC64_LOCAL_ENTRY_OFFSET (st_other) != 0); -} diff --git a/src/backends/ppc_attrs.c b/src/backends/ppc_attrs.c deleted file mode 100644 index ebeafe5a..00000000 --- a/src/backends/ppc_attrs.c +++ /dev/null @@ -1,89 +0,0 @@ -/* Object attribute tags for PowerPC. - Copyright (C) 2008, 2009 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <string.h> -#include <dwarf.h> - -#define BACKEND ppc_ -#include "libebl_CPU.h" - -bool -ppc_check_object_attribute (ebl, vendor, tag, value, tag_name, value_name) - Ebl *ebl __attribute__ ((unused)); - const char *vendor; - int tag; - uint64_t value; - const char **tag_name; - const char **value_name; -{ - if (!strcmp (vendor, "gnu")) - switch (tag) - { - case 4: - *tag_name = "GNU_Power_ABI_FP"; - static const char *fp_kinds[] = - { - "Hard or soft float", - "Hard float", - "Soft float", - }; - if (value < sizeof fp_kinds / sizeof fp_kinds[0]) - *value_name = fp_kinds[value]; - return true; - - case 8: - *tag_name = "GNU_Power_ABI_Vector"; - static const char *vector_kinds[] = - { - "Any", "Generic", "AltiVec", "SPE" - }; - if (value < sizeof vector_kinds / sizeof vector_kinds[0]) - *value_name = vector_kinds[value]; - return true; - - case 12: - *tag_name = "GNU_Power_ABI_Struct_Return"; - static const char *struct_return_kinds[] = - { - "Any", "r3/r4", "Memory" - }; - if (value < sizeof struct_return_kinds / sizeof struct_return_kinds[0]) - *value_name = struct_return_kinds[value]; - return true; - } - - return false; -} - -__typeof (ppc_check_object_attribute) - ppc64_check_object_attribute - __attribute__ ((alias ("ppc_check_object_attribute"))); diff --git a/src/backends/ppc_auxv.c b/src/backends/ppc_auxv.c deleted file mode 100644 index a27a1da4..00000000 --- a/src/backends/ppc_auxv.c +++ /dev/null @@ -1,55 +0,0 @@ -/* i386 specific auxv handling. - Copyright (C) 2007 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#define BACKEND ppc_ -#include "libebl_CPU.h" - -int -EBLHOOK(auxv_info) (GElf_Xword a_type, const char **name, const char **format) -{ - if (a_type != AT_HWCAP) - return 0; - - *name = "HWCAP"; - *format = "b" - "ppcle\0" "truele\0" "3\0" "4\0" "5\0" "6\0" "7\0" "8\0" "9\0" - "power6x\0" "dfp\0" "pa6t\0" "arch_2_05\0" - "ic_snoop\0" "smt\0" "booke\0" "cellbe\0" - "power5+\0" "power5\0" "power4\0" "notb\0" - "efpdouble\0" "efpsingle\0" "spe\0" "ucache\0" - "4xxmac\0" "mmu\0" "fpu\0" "altivec\0" - "ppc601\0" "ppc64\0" "ppc32\0" "\0"; - return 1; -} - -__typeof (ppc_auxv_info) ppc64_auxv_info - __attribute__ ((alias ("ppc_auxv_info"))); diff --git a/src/backends/ppc_cfi.c b/src/backends/ppc_cfi.c deleted file mode 100644 index 55169aef..00000000 --- a/src/backends/ppc_cfi.c +++ /dev/null @@ -1,77 +0,0 @@ -/* ppc ABI-specified defaults for DWARF CFI. - Copyright (C) 2012, 2013 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> - -#define BACKEND ppc_ -#include "libebl_CPU.h" - -int -ppc_abi_cfi (Ebl *ebl __attribute__ ((unused)), Dwarf_CIE *abi_info) -{ - static const uint8_t abi_cfi[] = - { - /* This instruction is provided in every CIE. It is not repeated here: - DW_CFA_def_cfa, ULEB128_7 (1), ULEB128_7 (0) */ - /* r1 is assumed to be restored from cfa adress, - r1 acts as a stack frame pointer. */ - DW_CFA_val_offset, ULEB128_7 (1), ULEB128_7 (0), - /* lr is not callee-saved but it needs to be preserved as it is pre-set - by the caller. */ - DW_CFA_same_value, ULEB128_7 (65), /* lr */ - - /* Callee-saved regs. */ -#define SV(n) DW_CFA_same_value, ULEB128_7 (n) - SV (2), /* r2 is TOC pointer. */ - SV (13), /* Reserved as system thread id (is it for CFI?). */ - /* r14-r31 are non-volatile registers. */ - SV (14), SV (15), SV (16), SV (17), SV (18), SV (19), SV (20), SV (21), - SV (22), SV (23), SV (24), SV (25), SV (26), SV (27), SV (28), SV (29), - SV (30), SV (31) - /* VMX registers v20-v31 and vrsave are non-volatile but they are - assigned DWARF registers 1144-1156 (v20-v31) which is outside of the - CFI supported range. */ -#undef SV - }; - - abi_info->initial_instructions = abi_cfi; - abi_info->initial_instructions_end = &abi_cfi[sizeof abi_cfi]; - abi_info->data_alignment_factor = ebl->class == ELFCLASS64 ? 8 : 4; - - abi_info->return_address_register = 65; - - return 0; -} - -__typeof (ppc_abi_cfi) - ppc64_abi_cfi - __attribute__ ((alias ("ppc_abi_cfi"))); diff --git a/src/backends/ppc_corenote.c b/src/backends/ppc_corenote.c deleted file mode 100644 index 9ac88712..00000000 --- a/src/backends/ppc_corenote.c +++ /dev/null @@ -1,134 +0,0 @@ -/* PowerPC specific core note handling. - Copyright (C) 2007, 2008 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <elf.h> -#include <inttypes.h> -#include <stddef.h> -#include <stdio.h> -#include <sys/time.h> - -#ifndef BITS -# define BITS 32 -# define BACKEND ppc_ -#else -# define BITS 64 -# define BACKEND ppc64_ -#endif -#include "libebl_CPU.h" - -static const Ebl_Register_Location prstatus_regs[] = - { -#define GR(at, n, dwreg) \ - { .offset = at * BITS/8, .regno = dwreg, .count = n, .bits = BITS } - - GR (0, 32, 0), /* r0-r31 */ - /* 32, 1, nip */ - GR (33, 1, 66), /* msr */ - /* 34, 1, orig_gpr3 */ - GR (35, 1, 109), /* ctr */ - GR (36, 1, 108), /* lr */ - GR (37, 1, 101), /* xer */ - GR (38, 1, 64), /* cr */ - GR (39, 1, 100), /* mq */ - /* 40, 1, trap */ - GR (41, 1, 119), /* dar */ - GR (42, 1, 118), /* dsisr */ - -#undef GR - }; -#define PRSTATUS_REGS_SIZE (BITS / 8 * 48) - -static const Ebl_Register_Location fpregset_regs[] = - { - { .offset = 0, .regno = 32, .count = 32, .bits = 64 }, /* f0-f31 */ - { .offset = 32 * 8 + 4, .regno = 65, .count = 1, .bits = 32 } /* fpscr */ - }; -#define FPREGSET_SIZE (33 * 8) - -static const Ebl_Register_Location altivec_regs[] = - { - /* vr0-vr31 */ - { .offset = 0, .regno = 1124, .count = 32, .bits = 128 }, - /* vscr XXX 67 is an unofficial assignment */ - { .offset = 32 * 16, .regno = 67, .count = 1, .bits = 32, .pad = 12 }, - /* vrsave */ - { .offset = 33 * 16, .regno = 356, .count = 1, .bits = 32, .pad = 12 } - }; - -static const Ebl_Register_Location spe_regs[] = - { - /* evr0-evr31 - { .offset = 0, .regno = ???, .count = 32, .bits = 32 }, - * acc * - { .offset = 32 * 4, .regno = ???, .count = 1, .bits = 64 }, */ - /* spefscr */ - { .offset = 34 * 4, .regno = 612, .count = 1, .bits = 32 } - }; - -#define EXTRA_NOTES \ - EXTRA_REGSET (NT_PPC_VMX, 34 * 16, altivec_regs) \ - EXTRA_REGSET (NT_PPC_SPE, 35 * 4, spe_regs) - -#if BITS == 32 -# define ULONG uint32_t -# define ALIGN_ULONG 4 -# define TYPE_ULONG ELF_T_WORD -# define TYPE_LONG ELF_T_SWORD -#else -# define ULONG uint64_t -# define ALIGN_ULONG 8 -# define TYPE_ULONG ELF_T_XWORD -# define TYPE_LONG ELF_T_SXWORD -#endif -#define PID_T int32_t -#define UID_T uint32_t -#define GID_T uint32_t -#define ALIGN_PID_T 4 -#define ALIGN_UID_T 4 -#define ALIGN_GID_T 4 -#define TYPE_PID_T ELF_T_SWORD -#define TYPE_UID_T ELF_T_WORD -#define TYPE_GID_T ELF_T_WORD - -#define PRSTATUS_REGSET_ITEMS \ - { \ - .name = "nip", .type = ELF_T_ADDR, .format = 'x', \ - .offset = offsetof (struct EBLHOOK(prstatus), pr_reg[32]), \ - .group = "register", .pc_register = true \ - }, \ - { \ - .name = "orig_gpr3", .type = TYPE_LONG, .format = 'd', \ - .offset = offsetof (struct EBLHOOK(prstatus), pr_reg[34]), \ - .group = "register" \ - } - -#include "linux-core-note.c" diff --git a/src/backends/ppc_init.c b/src/backends/ppc_init.c deleted file mode 100644 index ad92765c..00000000 --- a/src/backends/ppc_init.c +++ /dev/null @@ -1,74 +0,0 @@ -/* Initialization of PPC specific backend library. - Copyright (C) 2004, 2005, 2006, 2007, 2008, 2013 Red Hat, Inc. - This file is part of elfutils. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#define BACKEND ppc_ -#define RELOC_PREFIX R_PPC_ -#include "libebl_CPU.h" - -/* This defines the common reloc hooks based on ppc_reloc.def. */ -#include "common-reloc.c" - - -const char * -ppc_init (elf, machine, eh, ehlen) - Elf *elf __attribute__ ((unused)); - GElf_Half machine __attribute__ ((unused)); - Ebl *eh; - size_t ehlen; -{ - /* Check whether the Elf_BH object has a sufficent size. */ - if (ehlen < sizeof (Ebl)) - return NULL; - - /* We handle it. */ - eh->name = "PowerPC"; - ppc_init_reloc (eh); - HOOK (eh, reloc_simple_type); - HOOK (eh, dynamic_tag_name); - HOOK (eh, dynamic_tag_check); - HOOK (eh, check_special_symbol); - HOOK (eh, bss_plt_p); - HOOK (eh, return_value_location); - HOOK (eh, register_info); - HOOK (eh, syscall_abi); - HOOK (eh, core_note); - HOOK (eh, auxv_info); - HOOK (eh, check_object_attribute); - HOOK (eh, abi_cfi); - /* gcc/config/ #define DWARF_FRAME_REGISTERS. */ - eh->frame_nregs = (114 - 1) + 32; - HOOK (eh, set_initial_registers_tid); - HOOK (eh, dwarf_to_regno); - - return MODVERSION; -} diff --git a/src/backends/ppc_initreg.c b/src/backends/ppc_initreg.c deleted file mode 100644 index 64f53793..00000000 --- a/src/backends/ppc_initreg.c +++ /dev/null @@ -1,114 +0,0 @@ -/* Fetch live process registers from TID. - Copyright (C) 2013 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "system.h" -#include <stdlib.h> -#ifdef __powerpc__ -# include <sys/user.h> -# include <sys/ptrace.h> -#endif - -#define BACKEND ppc_ -#include "libebl_CPU.h" - -bool -ppc_dwarf_to_regno (Ebl *ebl __attribute__ ((unused)), unsigned *regno) -{ - switch (*regno) - { - case 108: - // LR uses both 65 and 108 numbers, there is no consistency for it. - *regno = 65; - return true; - case 0 ... 107: - case 109 ... (114 - 1) -1: - return true; - case 1200 ... 1231: - *regno = *regno - 1200 + (114 - 1); - return true; - default: - return false; - } - abort (); -} - -__typeof (ppc_dwarf_to_regno) - ppc64_dwarf_to_regno - __attribute__ ((alias ("ppc_dwarf_to_regno"))); - -bool -ppc_set_initial_registers_tid (pid_t tid __attribute__ ((unused)), - ebl_tid_registers_t *setfunc __attribute__ ((unused)), - void *arg __attribute__ ((unused))) -{ -#ifndef __powerpc__ - return false; -#else /* __powerpc__ */ - union - { - struct pt_regs r; - long l[sizeof (struct pt_regs) / sizeof (long)]; - } - user_regs; - eu_static_assert (sizeof (struct pt_regs) % sizeof (long) == 0); - /* PTRACE_GETREGS is EIO on kernel-2.6.18-308.el5.ppc64. */ - errno = 0; - for (unsigned regno = 0; regno < sizeof (user_regs) / sizeof (long); - regno++) - { - user_regs.l[regno] = ptrace (PTRACE_PEEKUSER, tid, - (void *) (uintptr_t) (regno - * sizeof (long)), - NULL); - if (errno != 0) - return false; - } - const size_t gprs = sizeof (user_regs.r.gpr) / sizeof (*user_regs.r.gpr); - Dwarf_Word dwarf_regs[gprs]; - for (unsigned gpr = 0; gpr < gprs; gpr++) - dwarf_regs[gpr] = user_regs.r.gpr[gpr]; - if (! setfunc (0, gprs, dwarf_regs, arg)) - return false; - dwarf_regs[0] = user_regs.r.link; - // LR uses both 65 and 108 numbers, there is no consistency for it. - if (! setfunc (65, 1, dwarf_regs, arg)) - return false; - /* Registers like msr, ctr, xer, dar, dsisr etc. are probably irrelevant - for CFI. */ - dwarf_regs[0] = user_regs.r.nip; - return setfunc (-1, 1, dwarf_regs, arg); -#endif /* __powerpc__ */ -} - -__typeof (ppc_set_initial_registers_tid) - ppc64_set_initial_registers_tid - __attribute__ ((alias ("ppc_set_initial_registers_tid"))); diff --git a/src/backends/ppc_regs.c b/src/backends/ppc_regs.c deleted file mode 100644 index 4b92a9aa..00000000 --- a/src/backends/ppc_regs.c +++ /dev/null @@ -1,200 +0,0 @@ -/* Register names and numbers for PowerPC DWARF. - Copyright (C) 2005, 2006, 2007 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <string.h> -#include <dwarf.h> - -#define BACKEND ppc_ -#include "libebl_CPU.h" - -ssize_t -ppc_register_info (Ebl *ebl __attribute__ ((unused)), - int regno, char *name, size_t namelen, - const char **prefix, const char **setname, - int *bits, int *type) -{ - if (name == NULL) - return 1156; - - if (regno < 0 || regno > 1155 || namelen < 8) - return -1; - - *prefix = ""; - *bits = ebl->machine == EM_PPC64 ? 64 : 32; - *type = (regno < 32 ? DW_ATE_signed - : regno < 64 ? DW_ATE_float : DW_ATE_unsigned); - - if (regno < 32 || regno == 64 || regno == 66) - *setname = "integer"; - else if (regno < 64 || regno == 65) - { - *setname = "FPU"; - if (ebl->machine != EM_PPC64 && regno < 64) - *bits = 64; - } - else if (regno == 67 || regno == 356 || regno == 612 || regno >= 1124) - { - *setname = "vector"; - *bits = regno >= 1124 ? 128 : 32; - } - else - *setname = "privileged"; - - switch (regno) - { - case 0 ... 9: - name[0] = 'r'; - name[1] = regno + '0'; - namelen = 2; - break; - - case 10 ... 31: - name[0] = 'r'; - name[1] = regno / 10 + '0'; - name[2] = regno % 10 + '0'; - namelen = 3; - break; - - case 32 + 0 ... 32 + 9: - name[0] = 'f'; - name[1] = (regno - 32) + '0'; - namelen = 2; - break; - - case 32 + 10 ... 32 + 31: - name[0] = 'f'; - name[1] = (regno - 32) / 10 + '0'; - name[2] = (regno - 32) % 10 + '0'; - namelen = 3; - break; - - case 64: - return stpcpy (name, "cr") + 1 - name; - case 65: - return stpcpy (name, "fpscr") + 1 - name; - case 66: - return stpcpy (name, "msr") + 1 - name; - case 67: /* XXX unofficial assignment */ - return stpcpy (name, "vscr") + 1 - name; - - case 70 + 0 ... 70 + 9: - name[0] = 's'; - name[1] = 'r'; - name[2] = (regno - 70) + '0'; - namelen = 3; - break; - - case 70 + 10 ... 70 + 15: - name[0] = 's'; - name[1] = 'r'; - name[2] = (regno - 70) / 10 + '0'; - name[3] = (regno - 70) % 10 + '0'; - namelen = 4; - break; - - case 101: - return stpcpy (name, "xer") + 1 - name; - case 108: - return stpcpy (name, "lr") + 1 - name; - case 109: - return stpcpy (name, "ctr") + 1 - name; - case 118: - return stpcpy (name, "dsisr") + 1 - name; - case 119: - return stpcpy (name, "dar") + 1 - name; - case 122: - return stpcpy (name, "dec") + 1 - name; - case 356: - return stpcpy (name, "vrsave") + 1 - name; - case 612: - return stpcpy (name, "spefscr") + 1 - name; - case 100: - if (*bits == 32) - return stpcpy (name, "mq") + 1 - name; - - case 102 ... 107: - name[0] = 's'; - name[1] = 'p'; - name[2] = 'r'; - name[3] = (regno - 100) + '0'; - namelen = 4; - break; - - case 110 ... 117: - case 120 ... 121: - case 123 ... 199: - name[0] = 's'; - name[1] = 'p'; - name[2] = 'r'; - name[3] = (regno - 100) / 10 + '0'; - name[4] = (regno - 100) % 10 + '0'; - namelen = 5; - break; - - case 200 ... 355: - case 357 ... 611: - case 613 ... 999: - name[0] = 's'; - name[1] = 'p'; - name[2] = 'r'; - name[3] = (regno - 100) / 100 + '0'; - name[4] = ((regno - 100) % 100 / 10) + '0'; - name[5] = (regno - 100) % 10 + '0'; - namelen = 6; - break; - - case 1124 + 0 ... 1124 + 9: - name[0] = 'v'; - name[1] = 'r'; - name[2] = (regno - 1124) + '0'; - namelen = 3; - break; - - case 1124 + 10 ... 1124 + 31: - name[0] = 'v'; - name[1] = 'r'; - name[2] = (regno - 1124) / 10 + '0'; - name[3] = (regno - 1124) % 10 + '0'; - namelen = 4; - break; - - default: - *setname = NULL; - return 0; - } - - name[namelen++] = '\0'; - return namelen; -} - -__typeof (ppc_register_info) - ppc64_register_info __attribute__ ((alias ("ppc_register_info"))); diff --git a/src/backends/ppc_reloc.def b/src/backends/ppc_reloc.def deleted file mode 100644 index dc963a0e..00000000 --- a/src/backends/ppc_reloc.def +++ /dev/null @@ -1,137 +0,0 @@ -/* List the relocation types for ppc. -*- C -*- - Copyright (C) 2005 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -/* NAME, REL|EXEC|DYN */ - -RELOC_TYPE (NONE, 0) -RELOC_TYPE (ADDR32, REL|EXEC|DYN) -RELOC_TYPE (ADDR24, REL) -RELOC_TYPE (ADDR16, REL|EXEC|DYN) /* note 1 */ -RELOC_TYPE (ADDR16_LO, REL|EXEC|DYN) /* note 1 */ -RELOC_TYPE (ADDR16_HI, REL|EXEC|DYN) /* note 1 */ -RELOC_TYPE (ADDR16_HA, REL|EXEC|DYN) /* note 1 */ -RELOC_TYPE (ADDR14, REL|EXEC|DYN) /* note 1 */ -RELOC_TYPE (ADDR14_BRTAKEN, REL|EXEC|DYN) /* note 1 */ -RELOC_TYPE (ADDR14_BRNTAKEN, REL|EXEC|DYN) /* note 1 */ -RELOC_TYPE (REL24, REL|EXEC|DYN) /* note 1 */ -RELOC_TYPE (REL14, REL|EXEC|DYN) /* note 1 */ -RELOC_TYPE (REL14_BRTAKEN, REL|EXEC|DYN) /* note 1 */ -RELOC_TYPE (REL14_BRNTAKEN, REL|EXEC|DYN) /* note 1 */ -RELOC_TYPE (GOT16, REL) -RELOC_TYPE (GOT16_LO, REL) -RELOC_TYPE (GOT16_HI, REL) -RELOC_TYPE (GOT16_HA, REL) -RELOC_TYPE (PLTREL24, REL) -RELOC_TYPE (COPY, EXEC) -RELOC_TYPE (GLOB_DAT, EXEC|DYN) -RELOC_TYPE (JMP_SLOT, EXEC|DYN) -RELOC_TYPE (RELATIVE, EXEC|DYN) -RELOC_TYPE (LOCAL24PC, REL) -RELOC_TYPE (UADDR32, REL|EXEC|DYN) -RELOC_TYPE (UADDR16, REL) /* note 2 */ -RELOC_TYPE (REL32, REL|EXEC|DYN) -RELOC_TYPE (PLT32, REL) -RELOC_TYPE (PLTREL32, REL) -RELOC_TYPE (PLT16_LO, REL) -RELOC_TYPE (PLT16_HI, REL) -RELOC_TYPE (PLT16_HA, REL) -RELOC_TYPE (SDAREL16, REL) -RELOC_TYPE (SECTOFF, REL) -RELOC_TYPE (SECTOFF_LO, REL) -RELOC_TYPE (SECTOFF_HI, REL) -RELOC_TYPE (SECTOFF_HA, REL) -RELOC_TYPE (TLS, REL) -RELOC_TYPE (DTPMOD32, EXEC|DYN) /* note 2 */ -RELOC_TYPE (TPREL16, REL) /* note 2 */ -RELOC_TYPE (TPREL16_LO, REL) /* note 2 */ -RELOC_TYPE (TPREL16_HI, REL) /* note 2 */ -RELOC_TYPE (TPREL16_HA, REL) /* note 2 */ -RELOC_TYPE (TPREL32, EXEC|DYN) /* note 2 */ -RELOC_TYPE (DTPREL16, REL) -RELOC_TYPE (DTPREL16_LO, REL) -RELOC_TYPE (DTPREL16_HI, REL) -RELOC_TYPE (DTPREL16_HA, REL) -RELOC_TYPE (DTPREL32, EXEC|DYN) /* note 2 */ -RELOC_TYPE (GOT_TLSGD16, REL) -RELOC_TYPE (GOT_TLSGD16_LO, REL) -RELOC_TYPE (GOT_TLSGD16_HI, REL) -RELOC_TYPE (GOT_TLSGD16_HA, REL) -RELOC_TYPE (GOT_TLSLD16, REL) -RELOC_TYPE (GOT_TLSLD16_LO, REL) -RELOC_TYPE (GOT_TLSLD16_HI, REL) -RELOC_TYPE (GOT_TLSLD16_HA, REL) -RELOC_TYPE (GOT_TPREL16, REL) -RELOC_TYPE (GOT_TPREL16_LO, REL) -RELOC_TYPE (GOT_TPREL16_HI, REL) -RELOC_TYPE (GOT_TPREL16_HA, REL) -RELOC_TYPE (GOT_DTPREL16, REL) -RELOC_TYPE (GOT_DTPREL16_LO, REL) -RELOC_TYPE (GOT_DTPREL16_HI, REL) -RELOC_TYPE (GOT_DTPREL16_HA, REL) -RELOC_TYPE (EMB_NADDR32, REL) /* note 3 */ -RELOC_TYPE (EMB_NADDR16, REL) /* note 3 */ -RELOC_TYPE (EMB_NADDR16_LO, REL) /* note 3 */ -RELOC_TYPE (EMB_NADDR16_HI, REL) /* note 3 */ -RELOC_TYPE (EMB_NADDR16_HA, REL) /* note 3 */ -RELOC_TYPE (EMB_SDAI16, REL) /* note 3 */ -RELOC_TYPE (EMB_SDA2I16, REL) /* note 3 */ -RELOC_TYPE (EMB_SDA2REL, REL) /* note 3 */ -RELOC_TYPE (EMB_SDA21, REL) /* note 3 */ -RELOC_TYPE (EMB_MRKREF, REL) /* note 3 */ -RELOC_TYPE (EMB_RELSEC16, REL) /* note 3 */ -RELOC_TYPE (EMB_RELST_LO, REL) /* note 3 */ -RELOC_TYPE (EMB_RELST_HI, REL) /* note 3 */ -RELOC_TYPE (EMB_RELST_HA, REL) /* note 3 */ -RELOC_TYPE (EMB_BIT_FLD, REL) /* note 3 */ -RELOC_TYPE (EMB_RELSDA, REL) /* note 3 */ -RELOC_TYPE (DIAB_SDA21_LO, REL) /* note 3 */ -RELOC_TYPE (DIAB_SDA21_HI, REL) /* note 3 */ -RELOC_TYPE (DIAB_SDA21_HA, REL) /* note 3 */ -RELOC_TYPE (DIAB_RELSDA_LO, REL) /* note 3 */ -RELOC_TYPE (DIAB_RELSDA_HI, REL) /* note 3 */ -RELOC_TYPE (DIAB_RELSDA_HA, REL) /* note 3 */ -RELOC_TYPE (REL16, REL) /* note 2 */ -RELOC_TYPE (REL16_LO, REL) /* note 2 */ -RELOC_TYPE (REL16_HI, REL) /* note 2 */ -RELOC_TYPE (REL16_HA, REL) /* note 2 */ -RELOC_TYPE (TOC16, REL) /* note 2 */ - -/* Notes from Alan Modra: - - 1) These relocs should not really appear in EXEC or DYN, but they do, - primarily due to improper assembly or non-pic shared objects. They - will cause TEXTREL to be set. I marked them in the table, because - numerous people seem to think non-pic shared libs are a good idea. - - 2) As for (1), these relocs can appear anywhere with improper - assembler. I should probably make ld reject anything other than the - cases allowed in this table. Not seen in the wild, so I haven't - added the other cases. - - 3) Not used in SYSV4 -*/ diff --git a/src/backends/ppc_retval.c b/src/backends/ppc_retval.c deleted file mode 100644 index b14a99f1..00000000 --- a/src/backends/ppc_retval.c +++ /dev/null @@ -1,191 +0,0 @@ -/* Function return value location for Linux/PPC ABI. - Copyright (C) 2005, 2006, 2007, 2010, 2014 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <dwarf.h> - -#define BACKEND ppc_ -#include "libebl_CPU.h" - - -/* This is the SVR4 ELF ABI convention, but AIX and Linux do not use it. */ -#define SVR4_STRUCT_RETURN 0 - - -/* r3, or pair r3, r4, or quad r3-r6. */ -static const Dwarf_Op loc_intreg[] = - { - { .atom = DW_OP_reg3 }, { .atom = DW_OP_piece, .number = 4 }, - { .atom = DW_OP_reg4 }, { .atom = DW_OP_piece, .number = 4 }, - { .atom = DW_OP_reg5 }, { .atom = DW_OP_piece, .number = 4 }, - { .atom = DW_OP_reg6 }, { .atom = DW_OP_piece, .number = 4 }, - }; -#define nloc_intreg 1 -#define nloc_intregpair 4 -#define nloc_intregquad 8 - -/* f1. */ -static const Dwarf_Op loc_fpreg[] = - { - { .atom = DW_OP_regx, .number = 33 } - }; -#define nloc_fpreg 1 - -/* vr2. */ -static const Dwarf_Op loc_vmxreg[] = - { - { .atom = DW_OP_regx, .number = 1124 + 2 } - }; -#define nloc_vmxreg 1 - -/* The return value is a structure and is actually stored in stack space - passed in a hidden argument by the caller. But, the compiler - helpfully returns the address of that space in r3. */ -static const Dwarf_Op loc_aggregate[] = - { - { .atom = DW_OP_breg3, .number = 0 } - }; -#define nloc_aggregate 1 - - -/* XXX We should check the SHT_GNU_ATTRIBUTES bits here (or in ppc_init). */ -static bool -ppc_altivec_abi (void) -{ - return true; -} - -int -ppc_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) -{ - /* Start with the function's type, and get the DW_AT_type attribute, - which is the type of the return value. */ - Dwarf_Die die_mem, *typedie = &die_mem; - int tag = dwarf_peeled_die_type (functypedie, typedie); - if (tag <= 0) - return tag; - - Dwarf_Word size; - switch (tag) - { - case -1: - return -1; - - case DW_TAG_subrange_type: - if (! dwarf_hasattr_integrate (typedie, DW_AT_byte_size)) - { - Dwarf_Attribute attr_mem, *attr; - attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem); - typedie = dwarf_formref_die (attr, &die_mem); - tag = DWARF_TAG_OR_RETURN (typedie); - } - /* Fall through. */ - - case DW_TAG_base_type: - case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: - { - Dwarf_Attribute attr_mem; - if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size, - &attr_mem), &size) != 0) - { - if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) - size = 4; - else - return -1; - } - } - - if (size <= 8) - { - if (tag == DW_TAG_base_type) - { - Dwarf_Attribute attr_mem; - Dwarf_Word encoding; - if (dwarf_formudata (dwarf_attr_integrate (typedie, - DW_AT_encoding, - &attr_mem), - &encoding) != 0) - return -1; - if (encoding == DW_ATE_float) - { - *locp = loc_fpreg; - return nloc_fpreg; - } - } - intreg: - *locp = loc_intreg; - return size <= 4 ? nloc_intreg : nloc_intregpair; - } - - aggregate: - *locp = loc_aggregate; - return nloc_aggregate; - - case DW_TAG_array_type: - { - Dwarf_Attribute attr_mem; - bool is_vector; - if (dwarf_formflag (dwarf_attr_integrate (typedie, DW_AT_GNU_vector, - &attr_mem), &is_vector) == 0 - && is_vector - && dwarf_aggregate_size (typedie, &size) == 0) - switch (size) - { - case 16: - if (ppc_altivec_abi ()) - { - *locp = loc_vmxreg; - return nloc_vmxreg; - } - *locp = loc_intreg; - return nloc_intregquad; - } - } - /* Fall through. */ - - case DW_TAG_structure_type: - case DW_TAG_class_type: - case DW_TAG_union_type: - if (SVR4_STRUCT_RETURN - && dwarf_aggregate_size (typedie, &size) == 0 - && size > 0 && size <= 8) - goto intreg; - goto aggregate; - } - - /* XXX We don't have a good way to return specific errors from ebl calls. - This value means we do not understand the type, but it is well-formed - DWARF and might be valid. */ - return -2; -} diff --git a/src/backends/ppc_symbol.c b/src/backends/ppc_symbol.c deleted file mode 100644 index c17ab374..00000000 --- a/src/backends/ppc_symbol.c +++ /dev/null @@ -1,165 +0,0 @@ -/* PPC specific symbolic name handling. - Copyright (C) 2004, 2005, 2007, 2014 Red Hat, Inc. - This file is part of elfutils. - Written by Ulrich Drepper <drepper@redhat.com>, 2004. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <elf.h> -#include <stddef.h> -#include <string.h> - -#define BACKEND ppc_ -#include "libebl_CPU.h" - - -/* Check for the simple reloc types. */ -Elf_Type -ppc_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type) -{ - switch (type) - { - case R_PPC_ADDR32: - case R_PPC_UADDR32: - return ELF_T_WORD; - case R_PPC_UADDR16: - return ELF_T_HALF; - default: - return ELF_T_NUM; - } -} - - -const char * -ppc_dynamic_tag_name (int64_t tag, char *buf __attribute__ ((unused)), - size_t len __attribute__ ((unused))) -{ - switch (tag) - { - case DT_PPC_GOT: - return "PPC_GOT"; - default: - break; - } - return NULL; -} - - -bool -ppc_dynamic_tag_check (int64_t tag) -{ - return tag == DT_PPC_GOT; -} - - -/* Look for DT_PPC_GOT. */ -static bool -find_dyn_got (Elf *elf, GElf_Addr *addr) -{ - size_t phnum; - if (elf_getphdrnum (elf, &phnum) != 0) - return false; - - for (size_t i = 0; i < phnum; ++i) - { - GElf_Phdr phdr_mem; - GElf_Phdr *phdr = gelf_getphdr (elf, i, &phdr_mem); - if (phdr == NULL || phdr->p_type != PT_DYNAMIC) - continue; - - Elf_Scn *scn = gelf_offscn (elf, phdr->p_offset); - GElf_Shdr shdr_mem; - GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); - Elf_Data *data = elf_getdata (scn, NULL); - if (shdr != NULL && shdr->sh_type == SHT_DYNAMIC && data != NULL) - for (unsigned int j = 0; j < shdr->sh_size / shdr->sh_entsize; ++j) - { - GElf_Dyn dyn_mem; - GElf_Dyn *dyn = gelf_getdyn (data, j, &dyn_mem); - if (dyn != NULL && dyn->d_tag == DT_PPC_GOT) - { - *addr = dyn->d_un.d_ptr; - return true; - } - } - - /* There is only one PT_DYNAMIC entry. */ - break; - } - - return false; -} - - -/* Check whether given symbol's st_value and st_size are OK despite failing - normal checks. */ -bool -ppc_check_special_symbol (Elf *elf, GElf_Ehdr *ehdr, const GElf_Sym *sym, - const char *name, const GElf_Shdr *destshdr) -{ - if (name == NULL) - return false; - - if (strcmp (name, "_GLOBAL_OFFSET_TABLE_") == 0) - { - /* In -msecure-plt mode, DT_PPC_GOT is present and must match. */ - GElf_Addr gotaddr; - if (find_dyn_got (elf, &gotaddr)) - return sym->st_value == gotaddr; - - /* In -mbss-plt mode, any place in the section is valid. */ - return true; - } - - const char *sname = elf_strptr (elf, ehdr->e_shstrndx, destshdr->sh_name); - if (sname == NULL) - return false; - - if (strcmp (name, "_SDA_BASE_") == 0) - return (strcmp (sname, ".sdata") == 0 - && sym->st_value == destshdr->sh_addr + 0x8000 - && sym->st_size == 0); - - if (strcmp (name, "_SDA2_BASE_") == 0) - return (strcmp (sname, ".sdata2") == 0 - && sym->st_value == destshdr->sh_addr + 0x8000 - && sym->st_size == 0); - - return false; -} - - -/* Check if backend uses a bss PLT in this file. */ -bool -ppc_bss_plt_p (Elf *elf) -{ - GElf_Addr addr; - return ! find_dyn_got (elf, &addr); -} diff --git a/src/backends/ppc_syscall.c b/src/backends/ppc_syscall.c deleted file mode 100644 index b1b9c52b..00000000 --- a/src/backends/ppc_syscall.c +++ /dev/null @@ -1,53 +0,0 @@ -/* Linux/PPC system call ABI in DWARF register numbers. - Copyright (C) 2008 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#define BACKEND ppc_ -#include "libebl_CPU.h" - -int -ppc_syscall_abi (Ebl *ebl __attribute__ ((unused)), - int *sp, int *pc, int *callno, int args[6]) -{ - *sp = 1; - *pc = -1; - *callno = 0; - args[0] = 3; - args[1] = 4; - args[2] = 5; - args[3] = 6; - args[4] = 7; - args[5] = 8; - return 0; -} - -__typeof (ppc_syscall_abi) -ppc64_syscall_abi __attribute__ ((alias ("ppc_syscall_abi"))); diff --git a/src/backends/s390_cfi.c b/src/backends/s390_cfi.c deleted file mode 100644 index cb494861..00000000 --- a/src/backends/s390_cfi.c +++ /dev/null @@ -1,65 +0,0 @@ -/* s390 ABI-specified defaults for DWARF CFI. - Copyright (C) 2012, 2013 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> - -#define BACKEND s390_ -#include "libebl_CPU.h" - -int -s390_abi_cfi (Ebl *ebl, Dwarf_CIE *abi_info) -{ - static const uint8_t abi_cfi[] = - { - /* This instruction is provided in every CIE. It is not repeated here: - DW_CFA_def_cfa, ULEB128_7 (15), ULEB128_7 (96) */ - /* r14 is not callee-saved but it needs to be preserved as it is pre-set - by the caller. */ - DW_CFA_same_value, ULEB128_7 (14), /* r14 */ - - /* Callee-saved regs. */ -#define SV(n) DW_CFA_same_value, ULEB128_7 (n) - SV (6), SV (7), SV (8), SV (9), SV (10), /* r6-r13, r15 */ - SV (11), SV (12), SV (13), SV (15), - SV (16 + 8), SV (16 + 9), SV (16 + 10), SV (16 + 11), /* f8-f15 */ - SV (16 + 12), SV (16 + 13), SV (16 + 14), SV (16 + 15) -#undef SV - }; - - abi_info->initial_instructions = abi_cfi; - abi_info->initial_instructions_end = &abi_cfi[sizeof abi_cfi]; - abi_info->data_alignment_factor = ebl->class == ELFCLASS64 ? 8 : 4; - - abi_info->return_address_register = 14; - - return 0; -} diff --git a/src/backends/s390_corenote.c b/src/backends/s390_corenote.c deleted file mode 100644 index 7ca35168..00000000 --- a/src/backends/s390_corenote.c +++ /dev/null @@ -1,189 +0,0 @@ -/* S390-specific core note handling. - Copyright (C) 2012 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <elf.h> -#include <inttypes.h> -#include <stddef.h> -#include <stdio.h> -#include <sys/time.h> - -#ifndef BITS -# define BITS 32 -# define BACKEND s390_ -#else -# define BITS 64 -# define BACKEND s390x_ -#endif -#include "libebl_CPU.h" - -static const Ebl_Register_Location prstatus_regs[] = - { -#define GR(at, n, dwreg, b...) \ - { .offset = at * BITS/8, .regno = dwreg, .count = n, .bits = b } - - GR ( 0, 1, 64, BITS), /* pswm */ - GR ( 1, 1, 65, BITS, .pc_register = true ), /* pswa */ - GR ( 2, 16, 0, BITS), /* r0-r15 */ - GR (18, 16, 48, 32), /* ar0-ar15 */ - -#undef GR - }; - - /* orig_r2 is at offset (BITS == 32 ? 34 * 4 : 26 * 8). */ -#define PRSTATUS_REGS_SIZE (BITS / 8 * (BITS == 32 ? 35 : 27)) - -static const Ebl_Register_Location fpregset_regs[] = - { -#define FPR(at, n, dwreg) \ - { .offset = at * 64/8, .regno = dwreg, .count = n, .bits = 64 } - - /* fpc is at offset 0, see fpregset_items, it has no assigned DWARF regno. - Bytes at offsets 4 to 7 are unused. */ - FPR (1 + 0, 1, 16), /* f0 */ - FPR (1 + 1, 1, 20), /* f1 */ - FPR (1 + 2, 1, 17), /* f2 */ - FPR (1 + 3, 1, 21), /* f3 */ - FPR (1 + 4, 1, 18), /* f4 */ - FPR (1 + 5, 1, 22), /* f5 */ - FPR (1 + 6, 1, 19), /* f6 */ - FPR (1 + 7, 1, 23), /* f7 */ - FPR (1 + 8, 1, 24), /* f8 */ - FPR (1 + 9, 1, 28), /* f9 */ - FPR (1 + 10, 1, 25), /* f10 */ - FPR (1 + 11, 1, 29), /* f11 */ - FPR (1 + 12, 1, 26), /* f12 */ - FPR (1 + 13, 1, 30), /* f13 */ - FPR (1 + 14, 1, 27), /* f14 */ - FPR (1 + 15, 1, 31), /* f15 */ - -#undef FPR - }; - -static const Ebl_Core_Item fpregset_items[] = - { - { - .name = "fpc", .group = "register", .offset = 0, .type = ELF_T_WORD, - .format = 'x', - }, - }; - -/* Do not set FPREGSET_SIZE so that we can supply fpregset_items. */ -#define EXTRA_NOTES_FPREGSET \ - EXTRA_REGSET_ITEMS (NT_FPREGSET, 17 * 8, fpregset_regs, fpregset_items) - -#if BITS == 32 -# define ULONG uint32_t -# define ALIGN_ULONG 4 -# define TYPE_ULONG ELF_T_WORD -# define TYPE_LONG ELF_T_SWORD -# define UID_T uint16_t -# define GID_T uint16_t -# define ALIGN_UID_T 2 -# define ALIGN_GID_T 2 -# define TYPE_UID_T ELF_T_HALF -# define TYPE_GID_T ELF_T_HALF -#else -# define ULONG uint64_t -# define ALIGN_ULONG 8 -# define TYPE_ULONG ELF_T_XWORD -# define TYPE_LONG ELF_T_SXWORD -# define UID_T uint32_t -# define GID_T uint32_t -# define ALIGN_UID_T 4 -# define ALIGN_GID_T 4 -# define TYPE_UID_T ELF_T_WORD -# define TYPE_GID_T ELF_T_WORD -#endif -#define PID_T int32_t -#define ALIGN_PID_T 4 -#define TYPE_PID_T ELF_T_SWORD -/* s390 psw_compat_t has alignment 8 bytes where it is inherited from. */ -#define ALIGN_PR_REG 8 - -#define PRSTATUS_REGSET_ITEMS \ - { \ - .name = "orig_r2", .type = TYPE_LONG, .format = 'd', \ - .offset = offsetof (struct EBLHOOK(prstatus), \ - pr_reg[BITS == 32 ? 34 : 26]), \ - .group = "register" \ - } - -#if BITS == 32 - -static const Ebl_Core_Item high_regs_items[] = - { -#define HR(n) \ - { \ - .name = "high_r" #n , .group = "register", .offset = (n) * 4, \ - .type = ELF_T_WORD, .format = 'x', \ - } - - /* Upper halves of r0-r15 are stored here. - FIXME: They are currently not combined with the r0-r15 lower halves. */ - HR (0), HR (1), HR (2), HR (3), HR (4), HR (5), HR (6), HR (7), - HR (8), HR (9), HR (10), HR (11), HR (12), HR (13), HR (14), HR (15) - -#undef HR - }; - -#define EXTRA_NOTES_HIGH_GPRS \ - EXTRA_ITEMS (NT_S390_HIGH_GPRS, 16 * 4, high_regs_items) - -#else /* BITS == 64 */ - -#define EXTRA_NOTES_HIGH_GPRS - -#endif /* BITS == 64 */ - -static const Ebl_Core_Item last_break_items[] = - { - { - .name = "last_break", .group = "system", .offset = BITS == 32 ? 4 : 0, - .type = BITS == 32 ? ELF_T_WORD : ELF_T_XWORD, .format = 'x', - }, - }; - -static const Ebl_Core_Item system_call_items[] = - { - { - .name = "system_call", .group = "system", .offset = 0, .type = ELF_T_WORD, - .format = 'd', - }, - }; - -#define EXTRA_NOTES \ - EXTRA_NOTES_FPREGSET \ - EXTRA_NOTES_HIGH_GPRS \ - EXTRA_ITEMS (NT_S390_LAST_BREAK, 8, last_break_items) \ - EXTRA_ITEMS (NT_S390_SYSTEM_CALL, 4, system_call_items) - -#include "linux-core-note.c" diff --git a/src/backends/s390_init.c b/src/backends/s390_init.c deleted file mode 100644 index 26b20b49..00000000 --- a/src/backends/s390_init.c +++ /dev/null @@ -1,80 +0,0 @@ -/* Initialization of S/390 specific backend library. - Copyright (C) 2005, 2006, 2013 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#define BACKEND s390_ -#define RELOC_PREFIX R_390_ -#include "libebl_CPU.h" - -/* This defines the common reloc hooks based on arm_reloc.def. */ -#include "common-reloc.c" - -extern __typeof (s390_core_note) s390x_core_note; - - -const char * -s390_init (elf, machine, eh, ehlen) - Elf *elf __attribute__ ((unused)); - GElf_Half machine __attribute__ ((unused)); - Ebl *eh; - size_t ehlen; -{ - /* Check whether the Elf_BH object has a sufficent size. */ - if (ehlen < sizeof (Ebl)) - return NULL; - - /* We handle it. */ - eh->name = "IBM S/390"; - s390_init_reloc (eh); - HOOK (eh, reloc_simple_type); - HOOK (eh, register_info); - HOOK (eh, return_value_location); - if (eh->class == ELFCLASS64) - eh->core_note = s390x_core_note; - else - HOOK (eh, core_note); - HOOK (eh, abi_cfi); - /* gcc/config/ #define DWARF_FRAME_REGISTERS 34. - But from the gcc/config/s390/s390.h "Register usage." comment it looks as - if #32 (Argument pointer) and #33 (Condition code) are not used for - unwinding. */ - eh->frame_nregs = 32; - HOOK (eh, set_initial_registers_tid); - if (eh->class == ELFCLASS32) - HOOK (eh, normalize_pc); - HOOK (eh, unwind); - - /* Only the 64-bit format uses the incorrect hash table entry size. */ - if (eh->class == ELFCLASS64) - eh->sysvhash_entrysize = sizeof (Elf64_Xword); - - return MODVERSION; -} diff --git a/src/backends/s390_initreg.c b/src/backends/s390_initreg.c deleted file mode 100644 index b4c4b67c..00000000 --- a/src/backends/s390_initreg.c +++ /dev/null @@ -1,95 +0,0 @@ -/* Fetch live process registers from TID. - Copyright (C) 2013 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "system.h" -#include <assert.h> -#ifdef __s390__ -# include <sys/user.h> -# include <asm/ptrace.h> -# include <sys/ptrace.h> -#endif - -#define BACKEND s390_ -#include "libebl_CPU.h" - -bool -s390_set_initial_registers_tid (pid_t tid __attribute__ ((unused)), - ebl_tid_registers_t *setfunc __attribute__ ((unused)), - void *arg __attribute__ ((unused))) -{ -#ifndef __s390__ - return false; -#else /* __s390__ */ - struct user user_regs; - ptrace_area parea; - parea.process_addr = (uintptr_t) &user_regs; - parea.kernel_addr = 0; - parea.len = sizeof (user_regs); - if (ptrace (PTRACE_PEEKUSR_AREA, tid, &parea, NULL) != 0) - return false; - /* If we run as s390x we get the 64-bit registers of tid. - But -m31 executable seems to use only the 32-bit parts of its - registers so we ignore the upper half. */ - Dwarf_Word dwarf_regs[16]; - for (unsigned u = 0; u < 16; u++) - dwarf_regs[u] = user_regs.regs.gprs[u]; - if (! setfunc (0, 16, dwarf_regs, arg)) - return false; - /* Avoid conversion double -> integer. */ - eu_static_assert (sizeof user_regs.regs.fp_regs.fprs[0] - == sizeof dwarf_regs[0]); - for (unsigned u = 0; u < 16; u++) - { - // Store the double bits as is in the Dwarf_Word without conversion. - union - { - double d; - Dwarf_Word w; - } fpr = { .d = user_regs.regs.fp_regs.fprs[u] }; - dwarf_regs[u] = fpr.w; - } - - if (! setfunc (16, 16, dwarf_regs, arg)) - return false; - dwarf_regs[0] = user_regs.regs.psw.addr; - return setfunc (-1, 1, dwarf_regs, arg); -#endif /* __s390__ */ -} - -void -s390_normalize_pc (Ebl *ebl __attribute__ ((unused)), Dwarf_Addr *pc) -{ - assert (ebl->class == ELFCLASS32); - - /* Clear S390 bit 31. */ - *pc &= (1U << 31) - 1; -} diff --git a/src/backends/s390_regs.c b/src/backends/s390_regs.c deleted file mode 100644 index ba6178a3..00000000 --- a/src/backends/s390_regs.c +++ /dev/null @@ -1,146 +0,0 @@ -/* Register names and numbers for S/390 DWARF. - Copyright (C) 2006 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <string.h> -#include <dwarf.h> - -#define BACKEND s390_ -#include "libebl_CPU.h" - - -/* -zseries (64) - -0-15 gpr0-gpr15 x -16-19 fpr[0246] -20-24 fpr[13578] -25-27 fpr1[024] -28 fpr9 -29-31 fpr1[135] -32-47 cr0-cr15 x -48-63 ar0-ar15 x -64 psw_mask -65 psw_address -*/ - - -ssize_t -s390_register_info (Ebl *ebl __attribute__ ((unused)), - int regno, char *name, size_t namelen, - const char **prefix, const char **setname, - int *bits, int *type) -{ - if (name == NULL) - return 66; - - if (regno < 0 || regno > 65 || namelen < 7) - return -1; - - *prefix = "%"; - - *bits = ebl->class == ELFCLASS64 ? 64 : 32; - *type = DW_ATE_unsigned; - if (regno < 16) - { - *setname = "integer"; - *type = DW_ATE_signed; - } - else if (regno < 32) - { - *setname = "FPU"; - *type = DW_ATE_float; - *bits = 64; - } - else if (regno < 48 || regno > 63) - *setname = "control"; - else - { - *setname = "access"; - *bits = 32; - } - - switch (regno) - { - case 0 ... 9: - name[0] = 'r'; - name[1] = regno + '0'; - namelen = 2; - break; - - case 10 ... 15: - name[0] = 'r'; - name[1] = '1'; - name[2] = regno - 10 + '0'; - namelen = 3; - break; - - case 16 ... 31: - name[0] = 'f'; - regno = (regno & 8) | ((regno & 4) >> 2) | ((regno & 3) << 1); - namelen = 1; - if (regno >= 10) - { - regno -= 10; - name[namelen++] = '1'; - } - name[namelen++] = regno + '0'; - break; - - case 32 + 0 ... 32 + 9: - case 48 + 0 ... 48 + 9: - name[0] = regno < 48 ? 'c' : 'a'; - name[1] = (regno & 15) + '0'; - namelen = 2; - break; - - case 32 + 10 ... 32 + 15: - case 48 + 10 ... 48 + 15: - name[0] = regno < 48 ? 'c' : 'a'; - name[1] = '1'; - name[2] = (regno & 15) - 10 + '0'; - namelen = 3; - break; - - case 64: - return stpcpy (name, "pswm") + 1 - name; - case 65: - *type = DW_ATE_address; - return stpcpy (name, "pswa") + 1 - name; - - default: - *setname = NULL; - return 0; - } - - name[namelen++] = '\0'; - return namelen; -} diff --git a/src/backends/s390_reloc.def b/src/backends/s390_reloc.def deleted file mode 100644 index b4686a30..00000000 --- a/src/backends/s390_reloc.def +++ /dev/null @@ -1,91 +0,0 @@ -/* List the relocation types for s390. -*- C -*- - Copyright (C) 2005, 2006 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -/* NAME, REL|EXEC|DYN */ - -RELOC_TYPE (NONE, 0) -RELOC_TYPE (8, REL|EXEC|DYN) -RELOC_TYPE (12, REL|EXEC|DYN) -RELOC_TYPE (16, REL|EXEC|DYN) -RELOC_TYPE (32, REL|EXEC|DYN) -RELOC_TYPE (PC32, REL|EXEC|DYN) -RELOC_TYPE (GOT12, REL) -RELOC_TYPE (GOT32, REL) -RELOC_TYPE (PLT32, REL) -RELOC_TYPE (COPY, EXEC) -RELOC_TYPE (GLOB_DAT, EXEC|DYN) -RELOC_TYPE (JMP_SLOT, EXEC|DYN) -RELOC_TYPE (RELATIVE, EXEC|DYN) -RELOC_TYPE (GOTOFF32, REL) -RELOC_TYPE (GOTPC, REL) -RELOC_TYPE (GOT16, REL) -RELOC_TYPE (PC16, REL|EXEC|DYN) -RELOC_TYPE (PC16DBL, REL|EXEC|DYN) -RELOC_TYPE (PLT16DBL, REL) -RELOC_TYPE (PC32DBL, REL|EXEC|DYN) -RELOC_TYPE (PLT32DBL, REL) -RELOC_TYPE (GOTPCDBL, REL) -RELOC_TYPE (64, REL|EXEC|DYN) -RELOC_TYPE (PC64, REL|EXEC|DYN) -RELOC_TYPE (GOT64, REL) -RELOC_TYPE (PLT64, REL) -RELOC_TYPE (GOTENT, REL) -RELOC_TYPE (GOTOFF16, REL) -RELOC_TYPE (GOTOFF64, REL) -RELOC_TYPE (GOTPLT12, REL) -RELOC_TYPE (GOTPLT16, REL) -RELOC_TYPE (GOTPLT32, REL) -RELOC_TYPE (GOTPLT64, REL) -RELOC_TYPE (GOTPLTENT, REL) -RELOC_TYPE (PLTOFF16, REL) -RELOC_TYPE (PLTOFF32, REL) -RELOC_TYPE (PLTOFF64, REL) -RELOC_TYPE (TLS_LOAD, REL) -RELOC_TYPE (TLS_GDCALL, REL) -RELOC_TYPE (TLS_LDCALL, REL) -RELOC_TYPE (TLS_GD32, REL) -RELOC_TYPE (TLS_GD64, REL) -RELOC_TYPE (TLS_GOTIE12, REL) -RELOC_TYPE (TLS_GOTIE32, REL) -RELOC_TYPE (TLS_GOTIE64, REL) -RELOC_TYPE (TLS_LDM32, REL) -RELOC_TYPE (TLS_LDM64, REL) -RELOC_TYPE (TLS_IE32, REL) -RELOC_TYPE (TLS_IE64, REL) -RELOC_TYPE (TLS_IEENT, REL) -RELOC_TYPE (TLS_LE32, REL) -RELOC_TYPE (TLS_LE64, REL) -RELOC_TYPE (TLS_LDO32, REL) -RELOC_TYPE (TLS_LDO64, REL) -RELOC_TYPE (TLS_DTPMOD, DYN) -RELOC_TYPE (TLS_DTPOFF, DYN) -RELOC_TYPE (TLS_TPOFF, DYN) -RELOC_TYPE (20, REL|EXEC|DYN) -RELOC_TYPE (GOT20, REL) -RELOC_TYPE (GOTPLT20, REL) -RELOC_TYPE (TLS_GOTIE20, REL) diff --git a/src/backends/s390_retval.c b/src/backends/s390_retval.c deleted file mode 100644 index a927d46a..00000000 --- a/src/backends/s390_retval.c +++ /dev/null @@ -1,144 +0,0 @@ -/* Function return value location for S/390 ABI. - Copyright (C) 2006, 2007, 2014 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <dwarf.h> - -#define BACKEND s390_ -#include "libebl_CPU.h" - - -/* %r2, or pair %r2, %r3. */ -static const Dwarf_Op loc_intreg[] = - { - { .atom = DW_OP_reg2 }, { .atom = DW_OP_piece, .number = 4 }, - { .atom = DW_OP_reg3 }, { .atom = DW_OP_piece, .number = 4 }, - }; -#define nloc_intreg 1 -#define nloc_intregpair 4 - -/* %f0. */ -static const Dwarf_Op loc_fpreg[] = - { - { .atom = DW_OP_reg16 }, - }; -#define nloc_fpreg 1 - -/* The return value is a structure and is actually stored in stack space - passed in a hidden argument by the caller. But, the compiler - helpfully returns the address of that space in %r2. */ -static const Dwarf_Op loc_aggregate[] = - { - { .atom = DW_OP_breg2, .number = 0 } - }; -#define nloc_aggregate 1 - - -int -s390_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) -{ - /* Start with the function's type, and get the DW_AT_type attribute, - which is the type of the return value. */ - Dwarf_Die die_mem, *typedie = &die_mem; - int tag = dwarf_peeled_die_type (functypedie, typedie); - if (tag <= 0) - return tag; - - Dwarf_Word size; - switch (tag) - { - case -1: - return -1; - - case DW_TAG_subrange_type: - if (! dwarf_hasattr_integrate (typedie, DW_AT_byte_size)) - { - Dwarf_Attribute attr_mem, *attr; - attr = dwarf_attr (typedie, DW_AT_type, &attr_mem); - typedie = dwarf_formref_die (attr, &die_mem); - tag = DWARF_TAG_OR_RETURN (typedie); - } - /* Fall through. */ - - case DW_TAG_base_type: - case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: - { - Dwarf_Die cudie; - uint8_t asize; - if (dwarf_diecu (typedie, &cudie, &asize, NULL) == NULL) - return -1; - - Dwarf_Attribute attr_mem; - if (dwarf_formudata (dwarf_attr (typedie, DW_AT_byte_size, - &attr_mem), &size) != 0) - { - if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) - size = asize; - else - return -1; - } - if (tag == DW_TAG_base_type) - { - Dwarf_Word encoding; - if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_encoding, - &attr_mem), - &encoding) != 0) - return -1; - if (encoding == DW_ATE_float && size <= 8) - { - *locp = loc_fpreg; - return nloc_fpreg; - } - } - if (size <= 8) - { - *locp = loc_intreg; - return size <= asize ? nloc_intreg : nloc_intregpair; - } - } - /* Fall through. */ - - case DW_TAG_structure_type: - case DW_TAG_class_type: - case DW_TAG_union_type: - case DW_TAG_array_type: - *locp = loc_aggregate; - return nloc_aggregate; - } - - /* XXX We don't have a good way to return specific errors from ebl calls. - This value means we do not understand the type, but it is well-formed - DWARF and might be valid. */ - return -2; -} diff --git a/src/backends/s390_symbol.c b/src/backends/s390_symbol.c deleted file mode 100644 index a0a4fafa..00000000 --- a/src/backends/s390_symbol.c +++ /dev/null @@ -1,56 +0,0 @@ -/* S/390-specific symbolic name handling. - Copyright (C) 2005 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <elf.h> -#include <stddef.h> - -#define BACKEND s390_ -#include "libebl_CPU.h" - -/* Check for the simple reloc types. */ -Elf_Type -s390_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type) -{ - switch (type) - { - case R_390_64: - return ELF_T_SXWORD; - case R_390_32: - return ELF_T_SWORD; - case R_390_16: - return ELF_T_HALF; - case R_390_8: - return ELF_T_BYTE; - default: - return ELF_T_NUM; - } -} diff --git a/src/backends/s390_unwind.c b/src/backends/s390_unwind.c deleted file mode 100644 index 752bc287..00000000 --- a/src/backends/s390_unwind.c +++ /dev/null @@ -1,139 +0,0 @@ -/* Get previous frame state for an existing frame state. - Copyright (C) 2013 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdlib.h> -#include <assert.h> - -#define BACKEND s390_ -#include "libebl_CPU.h" - -/* s390/s390x do not annotate signal handler frame by CFI. It would be also - difficult as PC points into a stub built on stack. Function below is called - only if unwinder could not find CFI. Function then verifies the register - state for this frame really belongs to a signal frame. In such case it - fetches original registers saved by the signal frame. */ - -bool -s390_unwind (Ebl *ebl, Dwarf_Addr pc, ebl_tid_registers_t *setfunc, - ebl_tid_registers_get_t *getfunc, ebl_pid_memory_read_t *readfunc, - void *arg, bool *signal_framep) -{ - /* Caller already assumed caller adjustment but S390 instructions are 4 bytes - long. Undo it. */ - if ((pc & 0x3) != 0x3) - return false; - pc++; - /* We can assume big-endian read here. */ - Dwarf_Word instr; - if (! readfunc (pc, &instr, arg)) - return false; - /* Fetch only the very first two bytes. */ - instr = (instr >> (ebl->class == ELFCLASS64 ? 48 : 16)) & 0xffff; - /* See GDB s390_sigtramp_frame_sniffer. */ - /* Check for 'svc' as the first instruction. */ - if (((instr >> 8) & 0xff) != 0x0a) - return false; - /* Check for 'sigreturn' or 'rt_sigreturn' as the second instruction. */ - if ((instr & 0xff) != 119 && (instr & 0xff) != 173) - return false; - /* See GDB s390_sigtramp_frame_unwind_cache. */ - Dwarf_Word this_sp; - if (! getfunc (0 + 15, 1, &this_sp, arg)) - return false; - unsigned word_size = ebl->class == ELFCLASS64 ? 8 : 4; - Dwarf_Addr next_cfa = this_sp + 16 * word_size + 32; - /* "New-style RT frame" is not supported, - assuming "Old-style RT frame and all non-RT frames". - Pointer to the array of saved registers is at NEXT_CFA + 8. */ - Dwarf_Word sigreg_ptr; - if (! readfunc (next_cfa + 8, &sigreg_ptr, arg)) - return false; - /* Skip PSW mask. */ - sigreg_ptr += word_size; - /* Read PSW address. */ - Dwarf_Word val; - if (! readfunc (sigreg_ptr, &val, arg)) - return false; - if (! setfunc (-1, 1, &val, arg)) - return false; - sigreg_ptr += word_size; - /* Then the GPRs. */ - Dwarf_Word gprs[16]; - for (int i = 0; i < 16; i++) - { - if (! readfunc (sigreg_ptr, &gprs[i], arg)) - return false; - sigreg_ptr += word_size; - } - /* Then the ACRs. Skip them, they are not used in CFI. */ - for (int i = 0; i < 16; i++) - sigreg_ptr += 4; - /* The floating-point control word. */ - sigreg_ptr += 8; - /* And finally the FPRs. */ - Dwarf_Word fprs[16]; - for (int i = 0; i < 16; i++) - { - if (! readfunc (sigreg_ptr, &val, arg)) - return false; - if (ebl->class == ELFCLASS32) - { - Dwarf_Addr val_low; - if (! readfunc (sigreg_ptr + 4, &val_low, arg)) - return false; - val = (val << 32) | val_low; - } - fprs[i] = val; - sigreg_ptr += 8; - } - /* If we have them, the GPR upper halves are appended at the end. */ - if (ebl->class == ELFCLASS32) - { - /* Skip signal number. */ - sigreg_ptr += 4; - for (int i = 0; i < 16; i++) - { - if (! readfunc (sigreg_ptr, &val, arg)) - return false; - Dwarf_Word val_low = gprs[i]; - val = (val << 32) | val_low; - gprs[i] = val; - sigreg_ptr += 4; - } - } - if (! setfunc (0, 16, gprs, arg)) - return false; - if (! setfunc (16, 16, fprs, arg)) - return false; - *signal_framep = true; - return true; -} diff --git a/src/backends/s390x_corenote.c b/src/backends/s390x_corenote.c deleted file mode 100644 index 427bf7de..00000000 --- a/src/backends/s390x_corenote.c +++ /dev/null @@ -1,2 +0,0 @@ -#define BITS 64 -#include "s390_corenote.c" diff --git a/src/backends/sh_corenote.c b/src/backends/sh_corenote.c deleted file mode 100644 index 9268f568..00000000 --- a/src/backends/sh_corenote.c +++ /dev/null @@ -1,88 +0,0 @@ -/* SH specific core note handling. - Copyright (C) 2010 Red Hat, Inc. - This file is part of elfutils. - Contributed Matt Fleming <matt@console-pimps.org>. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <elf.h> -#include <inttypes.h> -#include <stddef.h> -#include <stdio.h> -#include <sys/time.h> - -#define BACKEND sh_ -#include "libebl_CPU.h" - -static const Ebl_Register_Location prstatus_regs[] = - { -#define GR(at, n, dwreg) \ - { .offset = at * 4, .regno = dwreg, .count = n, .bits = 32 } - GR (0, 16, 0), /* r0-r15 */ - GR (16, 1, 16), /* pc */ - GR (17, 1, 17), /* pr */ - GR (18, 1, 22), /* sr */ - GR (19, 1, 18), /* gbr */ - GR (20, 1, 20), /* mach */ - GR (21, 1, 21), /* macl */ - /* 22, 1, tra */ -#undef GR - }; -#define PRSTATUS_REGS_SIZE (23 * 4) - -#define ULONG uint32_t -#define PID_T int32_t -#define UID_T uint16_t -#define GID_T uint16_t -#define ALIGN_ULONG 4 -#define ALIGN_PID_T 4 -#define ALIGN_UID_T 2 -#define ALIGN_GID_T 2 -#define TYPE_ULONG ELF_T_WORD -#define TYPE_PID_T ELF_T_SWORD -#define TYPE_UID_T ELF_T_HALF -#define TYPE_GID_T ELF_T_HALF - -#define PRSTATUS_REGSET_ITEMS \ - { \ - .name = "tra", .type = ELF_T_ADDR, .format = 'x', \ - .offset = offsetof (struct EBLHOOK(prstatus), pr_reg[22]), \ - .group = "register" \ - } - -static const Ebl_Register_Location fpregset_regs[] = - { - { .offset = 0, .regno = 25, .count = 16, .bits = 32 }, /* fr0-fr15 */ - { .offset = 16, .regno = 87, .count = 16, .bits = 32 }, /* xf0-xf15 */ - { .offset = 32, .regno = 24, .count = 1, .bits = 32 }, /* fpscr */ - { .offset = 33, .regno = 23, .count = 1, .bits = 32 } /* fpul */ - }; -#define FPREGSET_SIZE (50 * 4) - -#include "linux-core-note.c" diff --git a/src/backends/sh_init.c b/src/backends/sh_init.c deleted file mode 100644 index 90ddcb2c..00000000 --- a/src/backends/sh_init.c +++ /dev/null @@ -1,64 +0,0 @@ -/* Initialization of SH specific backend library. - Copyright (C) 2000, 2001, 2002, 2005 Red Hat, Inc. - This file is part of elfutils. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#define BACKEND sh_ -#define RELOC_PREFIX R_SH_ -#include "libebl_CPU.h" - -/* This defines the common reloc hooks based on sh_reloc.def. */ -#include "common-reloc.c" - - -const char * -sh_init (elf, machine, eh, ehlen) - Elf *elf __attribute__ ((unused)); - GElf_Half machine __attribute__ ((unused)); - Ebl *eh; - size_t ehlen; -{ - /* Check whether the Elf_BH object has a sufficent size. */ - if (ehlen < sizeof (Ebl)) - return NULL; - - /* We handle it. */ - eh->name = "Hitachi SH"; - sh_init_reloc (eh); - HOOK (eh, reloc_simple_type); - HOOK (eh, gotpc_reloc_check); - HOOK (eh, machine_flag_check); - HOOK (eh, core_note); - HOOK (eh, register_info); - HOOK (eh, return_value_location); - - return MODVERSION; -} diff --git a/src/backends/sh_regs.c b/src/backends/sh_regs.c deleted file mode 100644 index d4332364..00000000 --- a/src/backends/sh_regs.c +++ /dev/null @@ -1,191 +0,0 @@ -/* Register names and numbers for SH DWARF. - Copyright (C) 2010 Red Hat, Inc. - This file is part of elfutils. - Contributed by Matt Fleming <matt@console-pimps.org>. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <dwarf.h> -#include <string.h> - -#define BACKEND sh_ -#include "libebl_CPU.h" - -ssize_t -sh_register_info (Ebl *ebl __attribute__ ((unused)), - int regno, char *name, size_t namelen, - const char **prefix, const char **setname, - int *bits, int *type) -{ - if (name == NULL) - return 104; - - if (regno < 0 || regno > 103 || namelen < 6) - return -1; - - *prefix = ""; - *bits = 32; - *type = DW_ATE_signed; - - switch (regno) - { - case 0 ... 9: - *setname = "integer"; - name[0] = 'r'; - name[1] = regno + '0'; - namelen = 2; - break; - - case 10 ... 15: - *setname = "integer"; - name[0] = 'r'; - name[1] = '1'; - name[2] = regno - 10 + '0'; - namelen = 3; - break; - - case 16: - *setname = "system"; - *type = DW_ATE_address; - name[0] = 'p'; - name[1] = 'c'; - namelen = 2; - break; - - case 17: - *setname = "system"; - *type = DW_ATE_address; - name[0] = 'p'; - name[1] = 'r'; - namelen = 2; - break; - - case 18: - *setname = "control"; - *type = DW_ATE_unsigned; - name[0] = 's'; - name[1] = 'r'; - namelen = 2; - break; - - case 19: - *setname = "control"; - *type = DW_ATE_unsigned; - name[0] = 'g'; - name[1] = 'b'; - name[2] = 'r'; - namelen = 3; - break; - - case 20: - *setname = "system"; - name[0] = 'm'; - name[1] = 'a'; - name[2] = 'c'; - name[3] = 'h'; - namelen = 4; - break; - - case 21: - *setname = "system"; - name[0] = 'm'; - name[1] = 'a'; - name[2] = 'c'; - name[3] = 'l'; - namelen = 4; - - break; - - case 23: - *setname = "system"; - *type = DW_ATE_unsigned; - name[0] = 'f'; - name[1] = 'p'; - name[2] = 'u'; - name[3] = 'l'; - namelen = 4; - break; - - case 24: - *setname = "system"; - *type = DW_ATE_unsigned; - name[0] = 'f'; - name[1] = 'p'; - name[2] = 's'; - name[3] = 'c'; - name[4] = 'r'; - namelen = 5; - break; - - case 25 ... 34: - *setname = "fpu"; - *type = DW_ATE_float; - name[0] = 'f'; - name[1] = 'r'; - name[2] = regno - 25 + '0'; - namelen = 3; - break; - - case 35 ... 40: - *setname = "fpu"; - *type = DW_ATE_float; - name[0] = 'f'; - name[1] = 'r'; - name[2] = '1'; - name[3] = regno - 35 + '0'; - namelen = 4; - break; - - case 87 ... 96: - *type = DW_ATE_float; - *setname = "fpu"; - name[0] = 'x'; - name[1] = 'f'; - name[2] = regno - 87 + '0'; - namelen = 3; - break; - - case 97 ... 103: - *type = DW_ATE_float; - *setname = "fpu"; - name[0] = 'x'; - name[1] = 'f'; - name[2] = '1'; - name[3] = regno - 97 + '0'; - namelen = 4; - break; - - default: - return 0; - } - - name[namelen++] = '\0'; - return namelen; -} diff --git a/src/backends/sh_reloc.def b/src/backends/sh_reloc.def deleted file mode 100644 index 66a5a9d2..00000000 --- a/src/backends/sh_reloc.def +++ /dev/null @@ -1,67 +0,0 @@ -/* List the relocation types for SH. -*- C -*- - Copyright (C) 2005 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -/* NAME, REL|EXEC|DYN */ - -RELOC_TYPE (NONE, 0) -RELOC_TYPE (DIR32, REL|DYN) -RELOC_TYPE (REL32, REL|DYN) -RELOC_TYPE (DIR8WPN, REL) -RELOC_TYPE (IND12W, REL) -RELOC_TYPE (DIR8WPL, REL) -RELOC_TYPE (DIR8WPZ, REL) -RELOC_TYPE (DIR8BP, REL) -RELOC_TYPE (DIR8W, REL) -RELOC_TYPE (DIR8L, REL) -RELOC_TYPE (SWITCH16, REL) -RELOC_TYPE (SWITCH32, REL) -RELOC_TYPE (USES, REL) -RELOC_TYPE (COUNT, REL) -RELOC_TYPE (ALIGN, REL) -RELOC_TYPE (CODE, REL) -RELOC_TYPE (DATA, REL) -RELOC_TYPE (LABEL, REL) -RELOC_TYPE (SWITCH8, REL) -RELOC_TYPE (GNU_VTINHERIT, REL) -RELOC_TYPE (GNU_VTENTRY, REL) -RELOC_TYPE (TLS_GD_32, REL) -RELOC_TYPE (TLS_LD_32, REL) -RELOC_TYPE (TLS_LDO_32, REL) -RELOC_TYPE (TLS_IE_32, REL) -RELOC_TYPE (TLS_LE_32, REL) -RELOC_TYPE (TLS_DTPMOD32, DYN) -RELOC_TYPE (TLS_DTPOFF32, DYN) -RELOC_TYPE (TLS_TPOFF32, DYN) -RELOC_TYPE (GOT32, REL) -RELOC_TYPE (PLT32, REL) -RELOC_TYPE (COPY, EXEC) -RELOC_TYPE (GLOB_DAT, EXEC|DYN) -RELOC_TYPE (JMP_SLOT, EXEC|DYN) -RELOC_TYPE (RELATIVE, EXEC|DYN) -RELOC_TYPE (GOTOFF, REL) -RELOC_TYPE (GOTPC, REL) diff --git a/src/backends/sh_retval.c b/src/backends/sh_retval.c deleted file mode 100644 index d44f2601..00000000 --- a/src/backends/sh_retval.c +++ /dev/null @@ -1,131 +0,0 @@ -/* Function return value location for Linux/SH ABI. - Copyright (C) 2010, 2014 Red Hat, Inc. - This file is part of elfutils. - Contributed by Matt Fleming <matt@console-pimps.org>. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <dwarf.h> - -#define BACKEND sh_ -#include "libebl_CPU.h" - - -/* This is the SVR4 ELF ABI convention, but AIX and Linux do not use it. */ -#define SVR4_STRUCT_RETURN 0 - - -/* r0, or pair r0, r1. */ -static const Dwarf_Op loc_intreg[] = - { - { .atom = DW_OP_reg0 }, { .atom = DW_OP_piece, .number = 4 }, - { .atom = DW_OP_reg1 }, { .atom = DW_OP_piece, .number = 4 }, - }; -#define nloc_intreg 1 -#define nloc_intregpair 4 - -/* fr0 or fr1. */ -static const Dwarf_Op loc_fpreg[] = - { - { .atom = DW_OP_reg25 }, { .atom = DW_OP_piece, .number = 4 }, - { .atom = DW_OP_reg26 }, { .atom = DW_OP_piece, .number = 4 }, - }; -#define nloc_fpreg 1 -#define nloc_fpregpair 2 - -int -sh_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) -{ - /* Start with the function's type, and get the DW_AT_type attribute, - which is the type of the return value. */ - Dwarf_Die die_mem, *typedie = &die_mem; - int tag = dwarf_peeled_die_type (functypedie, typedie); - if (tag <= 0) - return tag; - - Dwarf_Word size; - switch (tag) - { - case -1: - return -1; - - case DW_TAG_subrange_type: - if (! dwarf_hasattr_integrate (typedie, DW_AT_byte_size)) - { - Dwarf_Attribute attr_mem, *attr; - attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem); - typedie = dwarf_formref_die (attr, &die_mem); - tag = DWARF_TAG_OR_RETURN (typedie); - } - /* Fall through. */ - - case DW_TAG_base_type: - case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: - { - Dwarf_Attribute attr_mem; - if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size, - &attr_mem), &size) != 0) - { - if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) - size = 4; - else - return -1; - } - } - - if (size <= 8) - { - if (tag == DW_TAG_base_type) - { - Dwarf_Attribute attr_mem; - Dwarf_Word encoding; - if (dwarf_formudata (dwarf_attr_integrate (typedie, - DW_AT_encoding, - &attr_mem), - &encoding) != 0) - return -1; - if (encoding == DW_ATE_float) - { - *locp = loc_fpreg; - return size <= 4 ? nloc_fpreg : nloc_fpregpair; - } - } - *locp = loc_intreg; - return size <= 4 ? nloc_intreg : nloc_intregpair; - } - } - - /* XXX We don't have a good way to return specific errors from ebl calls. - This value means we do not understand the type, but it is well-formed - DWARF and might be valid. */ - return -2; -} diff --git a/src/backends/sh_symbol.c b/src/backends/sh_symbol.c deleted file mode 100644 index 8101e96f..00000000 --- a/src/backends/sh_symbol.c +++ /dev/null @@ -1,94 +0,0 @@ -/* SH specific relocation handling. - Copyright (C) 2000, 2001, 2002, 2005 Red Hat, Inc. - This file is part of elfutils. - Written by Ulrich Drepper <drepper@redhat.com>, 2000. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <elf.h> -#include <stddef.h> - -#define BACKEND sh_ -#include "libebl_CPU.h" - - -/* Return true if the symbol type is that referencing the GOT. */ -bool -sh_gotpc_reloc_check (Elf *elf __attribute__ ((unused)), int type) -{ - return type == R_SH_GOTPC; -} - -/* Check for the simple reloc types. */ -Elf_Type -sh_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type) -{ - switch (type) - { - case R_SH_DIR32: - return ELF_T_WORD; - default: - return ELF_T_NUM; - } -} - -/* Check whether machine flags are valid. */ -bool -sh_machine_flag_check (GElf_Word flags) -{ - switch (flags & EF_SH_MACH_MASK) - { - case EF_SH_UNKNOWN: - case EF_SH1: - case EF_SH2: - case EF_SH3: - case EF_SH_DSP: - case EF_SH3_DSP: - case EF_SH4AL_DSP: - case EF_SH3E: - case EF_SH4: - case EF_SH2E: - case EF_SH4A: - case EF_SH2A: - case EF_SH4_NOFPU: - case EF_SH4A_NOFPU: - case EF_SH4_NOMMU_NOFPU: - case EF_SH2A_NOFPU: - case EF_SH3_NOMMU: - case EF_SH2A_SH4_NOFPU: - case EF_SH2A_SH3_NOFPU: - case EF_SH2A_SH4: - case EF_SH2A_SH3E: - break; - default: - return false; - } - - return ((flags &~ (EF_SH_MACH_MASK)) == 0); -} diff --git a/src/backends/sparc64_corenote.c b/src/backends/sparc64_corenote.c deleted file mode 100644 index cef6431e..00000000 --- a/src/backends/sparc64_corenote.c +++ /dev/null @@ -1,2 +0,0 @@ -#define BITS 64 -#include "sparc_corenote.c" diff --git a/src/backends/sparc_auxv.c b/src/backends/sparc_auxv.c deleted file mode 100644 index 2da349ca..00000000 --- a/src/backends/sparc_auxv.c +++ /dev/null @@ -1,46 +0,0 @@ -/* SPARC-specific auxv handling. - Copyright (C) 2007 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#define BACKEND sparc_ -#include "libebl_CPU.h" - -int -EBLHOOK(auxv_info) (GElf_Xword a_type, const char **name, const char **format) -{ - if (a_type != AT_HWCAP) - return 0; - - *name = "HWCAP"; - *format = "b" - "flush\0" "stbar\0" "swap\0" "muldiv\0" "v9\0" "ultra3\0" "v9v\0" "\0"; - return 1; -} diff --git a/src/backends/sparc_corenote.c b/src/backends/sparc_corenote.c deleted file mode 100644 index 7912539b..00000000 --- a/src/backends/sparc_corenote.c +++ /dev/null @@ -1,112 +0,0 @@ -/* PowerPC specific core note handling. - Copyright (C) 2007 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <elf.h> -#include <inttypes.h> -#include <stddef.h> -#include <stdio.h> -#include <sys/time.h> - -#ifndef BITS -# define BITS 32 -# define BACKEND sparc_ -#else -# define BITS 64 -# define BACKEND sparc64_ -#endif -#include "libebl_CPU.h" - -#define GR(at, n, dwreg) \ - { .offset = at * BITS/8, .regno = dwreg, .count = n, .bits = BITS } - -static const Ebl_Register_Location prstatus_regs[] = - { - GR (0, 32, 0), /* %g0-%g7, %o0-%o7, %i0-%i7 */ -#if BITS == 32 - GR (32, 1, 65), /* %psr */ - GR (33, 2, 68), /* %pc, %npc */ - GR (35, 1, 64), /* %y */ - GR (36, 1, 66), /* %wim, %tbr */ -#else - GR (32, 1, 82), /* %state */ - GR (33, 2, 80), /* %pc, %npc */ - GR (35, 1, 85), /* %y */ -#endif - }; -#define PRSTATUS_REGS_SIZE (BITS / 8 * (32 + (BITS == 32 ? 6 : 4))) - -static const Ebl_Register_Location fpregset_regs[] = - { -#if BITS == 32 - GR (0, 32, 32), /* %f0-%f31 */ - /* padding word */ - GR (33, 1, 70), /* %fsr */ - /* qcnt, q_entrysize, en, q, padding */ -# define FPREGSET_SIZE (34 * 4 + 4 + 64 * 4 + 4) -#else - GR (0, 32, 32), /* %f0-%f31 */ - GR (32, 1, 83), /* %fsr */ - /* 33, 1, %gsr */ - GR (34, 1, 84), /* %fprs */ -# define FPREGSET_SIZE (35 * 8) -#endif - }; - -#if BITS == 32 -# define ULONG uint32_t -# define ALIGN_ULONG 4 -# define TYPE_ULONG ELF_T_WORD -# define TYPE_LONG ELF_T_SWORD -# define UID_T uint16_t -# define GID_T uint16_t -# define ALIGN_UID_T 2 -# define ALIGN_GID_T 2 -# define TYPE_UID_T ELF_T_HALF -# define TYPE_GID_T ELF_T_HALF -#else -# define ULONG uint64_t -# define ALIGN_ULONG 8 -# define TYPE_ULONG ELF_T_XWORD -# define TYPE_LONG ELF_T_SXWORD -# define UID_T uint32_t -# define GID_T uint32_t -# define ALIGN_UID_T 4 -# define ALIGN_GID_T 4 -# define TYPE_UID_T ELF_T_WORD -# define TYPE_GID_T ELF_T_WORD -# define SUSECONDS_HALF 1 -#endif -#define PID_T int32_t -#define ALIGN_PID_T 4 -#define TYPE_PID_T ELF_T_SWORD - -#include "linux-core-note.c" diff --git a/src/backends/sparc_init.c b/src/backends/sparc_init.c deleted file mode 100644 index 7d229981..00000000 --- a/src/backends/sparc_init.c +++ /dev/null @@ -1,76 +0,0 @@ -/* Initialization of SPARC specific backend library. - Copyright (C) 2002, 2005, 2006, 2007, 2008 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#define BACKEND sparc_ -#define RELOC_PREFIX R_SPARC_ -#include "libebl_CPU.h" - -/* This defines the common reloc hooks based on sparc_reloc.def. */ -#include "common-reloc.c" - -extern __typeof (EBLHOOK (core_note)) sparc64_core_note attribute_hidden; - -const char * -sparc_init (elf, machine, eh, ehlen) - Elf *elf __attribute__ ((unused)); - GElf_Half machine __attribute__ ((unused)); - Ebl *eh; - size_t ehlen; -{ - /* Check whether the Elf_BH object has a sufficent size. */ - if (ehlen < sizeof (Ebl)) - return NULL; - - /* We handle it. */ - if (machine == EM_SPARCV9) - eh->name = "SPARC v9"; - else if (machine == EM_SPARC32PLUS) - eh->name = "SPARC v8+"; - else - eh->name = "SPARC"; - sparc_init_reloc (eh); - HOOK (eh, reloc_simple_type); - HOOK (eh, machine_flag_check); - HOOK (eh, check_special_section); - HOOK (eh, symbol_type_name); - HOOK (eh, dynamic_tag_name); - HOOK (eh, dynamic_tag_check); - if (eh->class == ELFCLASS64) - eh->core_note = sparc64_core_note; - else - HOOK (eh, core_note); - HOOK (eh, auxv_info); - HOOK (eh, register_info); - HOOK (eh, return_value_location); - - return MODVERSION; -} diff --git a/src/backends/sparc_regs.c b/src/backends/sparc_regs.c deleted file mode 100644 index f9709bb3..00000000 --- a/src/backends/sparc_regs.c +++ /dev/null @@ -1,111 +0,0 @@ -/* Register names and numbers for SPARC DWARF. - Copyright (C) 2005, 2006 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <string.h> -#include <dwarf.h> - -#define BACKEND sparc_ -#include "libebl_CPU.h" - -ssize_t -sparc_register_info (Ebl *ebl, - int regno, char *name, size_t namelen, - const char **prefix, const char **setname, - int *bits, int *type) -{ - const int nfp = 32 + (ebl->machine == EM_SPARC ? 0 : 16); - const int nspec = ebl->machine == EM_SPARC ? 8 : 6; - - if (name == NULL) - return 32 + nfp + nspec; - - if (regno < 0 || regno >= 32 + nfp + nspec || namelen < 6) - return -1; - - *bits = ebl->machine == EM_SPARC ? 32 : 64; - *type = DW_ATE_signed; - - *prefix = "%"; - - if (regno >= 32 + nfp) - { - regno -= 32 + nfp; - static const char names[2][8][6] = - { - { "y", "psr", "wim", "tbr", "pc", "npc", "fsr", "csr" }, /* v8 */ - { "pc", "npc", "state", "fsr", "fprs", "y" } /* v9 */ - }; - *setname = "control"; - *type = DW_ATE_unsigned; - if ((ebl->machine != EM_SPARC ? 0 : 4) + 1 - (unsigned int) regno <= 1) - *type = DW_ATE_address; - return stpncpy (name, names[ebl->machine != EM_SPARC][regno], - namelen) + 1 - name; - } - - if (regno < 32) - { - *setname = "integer"; - name[0] = "goli"[regno >> 3]; - name[1] = (regno & 7) + '0'; - namelen = 2; - if ((regno & 8) && (regno & 7) == 6) - *type = DW_ATE_address; - } - else - { - *setname = "FPU"; - *type = DW_ATE_float; - - regno -= 32; - if (regno >= 32) - regno = 32 + 2 * (regno - 32); - else - *bits = 32; - - name[0] = 'f'; - if (regno < 10) - { - name[1] = regno + '0'; - namelen = 2; - } - else - { - name[1] = regno / 10 + '0'; - name[2] = regno % 10 + '0'; - namelen = 3; - } - } - - name[namelen++] = '\0'; - return namelen; -} diff --git a/src/backends/sparc_reloc.def b/src/backends/sparc_reloc.def deleted file mode 100644 index c39b0fae..00000000 --- a/src/backends/sparc_reloc.def +++ /dev/null @@ -1,121 +0,0 @@ -/* List the relocation types for sparc. -*- C -*- - Copyright (C) 2009 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -/* NAME, REL|EXEC|DYN */ - -RELOC_TYPE (NONE, REL) -RELOC_TYPE (8, REL) -RELOC_TYPE (16, REL) -RELOC_TYPE (32, REL|DYN) -RELOC_TYPE (DISP8, REL) -RELOC_TYPE (DISP16, REL) -RELOC_TYPE (DISP32, REL) -RELOC_TYPE (WDISP30, REL) -RELOC_TYPE (WDISP22, REL) -RELOC_TYPE (HI22, REL) -RELOC_TYPE (22, REL) -RELOC_TYPE (13, REL) -RELOC_TYPE (LO10, REL) -RELOC_TYPE (GOT10, REL) -RELOC_TYPE (GOT13, REL) -RELOC_TYPE (GOT22, REL) -RELOC_TYPE (PC10, REL) -RELOC_TYPE (PC22, REL) -RELOC_TYPE (WPLT30, REL) -RELOC_TYPE (COPY, EXEC) -RELOC_TYPE (GLOB_DAT, EXEC|DYN) -RELOC_TYPE (JMP_SLOT, EXEC|DYN) -RELOC_TYPE (RELATIVE, EXEC|DYN) -RELOC_TYPE (UA32, REL) -RELOC_TYPE (PLT32, REL) -RELOC_TYPE (HIPLT22, REL) -RELOC_TYPE (LOPLT10, REL) -RELOC_TYPE (PCPLT32, REL) -RELOC_TYPE (PCPLT22, REL) -RELOC_TYPE (PCPLT10, REL) -RELOC_TYPE (10, REL) -RELOC_TYPE (11, REL) -RELOC_TYPE (64, REL|DYN) -RELOC_TYPE (OLO10, REL) -RELOC_TYPE (HH22, REL) -RELOC_TYPE (HM10, REL) -RELOC_TYPE (LM22, REL) -RELOC_TYPE (PC_HH22, REL) -RELOC_TYPE (PC_HM10, REL) -RELOC_TYPE (PC_LM22, REL) -RELOC_TYPE (WDISP16, REL) -RELOC_TYPE (WDISP19, REL) -RELOC_TYPE (GLOB_JMP, EXEC|DYN) -RELOC_TYPE (7, REL) -RELOC_TYPE (5, REL) -RELOC_TYPE (6, REL) -RELOC_TYPE (DISP64, REL) -RELOC_TYPE (PLT64, REL) -RELOC_TYPE (HIX22, REL) -RELOC_TYPE (LOX10, REL) -RELOC_TYPE (H44, REL) -RELOC_TYPE (M44, REL) -RELOC_TYPE (L44, REL) -RELOC_TYPE (REGISTER, REL) -RELOC_TYPE (UA64, REL) -RELOC_TYPE (UA16, REL) -RELOC_TYPE (TLS_GD_HI22, REL) -RELOC_TYPE (TLS_GD_LO10, REL) -RELOC_TYPE (TLS_GD_ADD, REL) -RELOC_TYPE (TLS_GD_CALL, REL) -RELOC_TYPE (TLS_LDM_HI22, REL) -RELOC_TYPE (TLS_LDM_LO10, REL) -RELOC_TYPE (TLS_LDM_ADD, REL) -RELOC_TYPE (TLS_LDM_CALL, REL) -RELOC_TYPE (TLS_LDO_HIX22, REL) -RELOC_TYPE (TLS_LDO_LOX10, REL) -RELOC_TYPE (TLS_LDO_ADD, REL) -RELOC_TYPE (TLS_IE_HI22, REL) -RELOC_TYPE (TLS_IE_LO10, REL) -RELOC_TYPE (TLS_IE_LD, REL) -RELOC_TYPE (TLS_IE_LDX, REL) -RELOC_TYPE (TLS_IE_ADD, REL) -RELOC_TYPE (TLS_LE_HIX22, REL) -RELOC_TYPE (TLS_LE_LOX10, REL) -RELOC_TYPE (TLS_DTPMOD32, DYN) -RELOC_TYPE (TLS_DTPMOD64, DYN) -RELOC_TYPE (TLS_DTPOFF32, DYN) -RELOC_TYPE (TLS_DTPOFF64, DYN) -RELOC_TYPE (TLS_TPOFF32, DYN) -RELOC_TYPE (TLS_TPOFF64, DYN) -RELOC_TYPE (GOTDATA_HIX22, REL) -RELOC_TYPE (GOTDATA_LOX10, REL) -RELOC_TYPE (GOTDATA_OP_HIX22, DYN) -RELOC_TYPE (GOTDATA_OP_LOX10, DYN) -RELOC_TYPE (GOTDATA_OP, DYN) -RELOC_TYPE (H34, REL) -RELOC_TYPE (SIZE32, REL) -RELOC_TYPE (SIZE64, REL) -RELOC_TYPE (GNU_VTINHERIT, REL) -RELOC_TYPE (GNU_VTENTRY, REL) -RELOC_TYPE (REV32, REL) diff --git a/src/backends/sparc_retval.c b/src/backends/sparc_retval.c deleted file mode 100644 index e1b17753..00000000 --- a/src/backends/sparc_retval.c +++ /dev/null @@ -1,159 +0,0 @@ -/* Function return value location for SPARC. - Copyright (C) 2006-2010, 2014 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <dwarf.h> - -#define BACKEND sparc_ -#include "libebl_CPU.h" - - -/* %o0, or pair %o0, %o1. */ -static const Dwarf_Op loc_intreg[] = - { - { .atom = DW_OP_reg8 }, { .atom = DW_OP_piece, .number = 4 }, - { .atom = DW_OP_reg9 }, { .atom = DW_OP_piece, .number = 4 }, - }; -#define nloc_intreg 1 -#define nloc_intregpair 4 - -/* %f0 or pair %f0, %f1, or quad %f0..%f3. */ -static const Dwarf_Op loc_fpreg[] = - { - { .atom = DW_OP_regx, .number = 32 }, { .atom = DW_OP_piece, .number = 4 }, - { .atom = DW_OP_regx, .number = 33 }, { .atom = DW_OP_piece, .number = 4 }, - { .atom = DW_OP_regx, .number = 34 }, { .atom = DW_OP_piece, .number = 4 }, - { .atom = DW_OP_regx, .number = 35 }, { .atom = DW_OP_piece, .number = 4 }, - }; -#define nloc_fpreg 1 -#define nloc_fpregpair 4 -#define nloc_fpregquad 8 - -/* The return value is a structure and is actually stored in stack space - passed in a hidden argument by the caller. But, the compiler - helpfully returns the address of that space in %o0. */ -static const Dwarf_Op loc_aggregate[] = - { - { .atom = DW_OP_breg8, .number = 0 } - }; -#define nloc_aggregate 1 - -int -sparc_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) -{ - /* Start with the function's type, and get the DW_AT_type attribute, - which is the type of the return value. */ - Dwarf_Die die_mem, *typedie = &die_mem; - int tag = dwarf_peeled_die_type (functypedie, typedie); - if (tag <= 0) - return tag; - - Dwarf_Word size; - switch (tag) - { - case -1: - return -1; - - case DW_TAG_subrange_type: - if (! dwarf_hasattr_integrate (typedie, DW_AT_byte_size)) - { - Dwarf_Attribute attr_mem, *attr; - attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem); - typedie = dwarf_formref_die (attr, &die_mem); - tag = DWARF_TAG_OR_RETURN (typedie); - } - /* Fall through. */ - - case DW_TAG_base_type: - case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: - { - Dwarf_Attribute attr_mem; - if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size, - &attr_mem), &size) != 0) - { - uint8_t asize; - Dwarf_Die cudie; - if ((tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) - && dwarf_diecu (typedie, &cudie, &asize, NULL) != NULL) - size = asize; - else - return -1; - } - } - - if (tag == DW_TAG_base_type) - { - Dwarf_Attribute attr_mem; - Dwarf_Word encoding; - if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_encoding, - &attr_mem), - &encoding) != 0) - return -1; - if (encoding == DW_ATE_float) - { - *locp = loc_fpreg; - if (size <= 4) - return nloc_fpreg; - if (size <= 8) - return nloc_fpregpair; - if (size <= 16) - return nloc_fpregquad; - } - } - if (size <= 8) - { - intreg: - *locp = loc_intreg; - return size <= 4 ? nloc_intreg : nloc_intregpair; - } - - aggregate: - *locp = loc_aggregate; - return nloc_aggregate; - - case DW_TAG_structure_type: - case DW_TAG_class_type: - case DW_TAG_union_type: - case DW_TAG_array_type: - if (dwarf_aggregate_size (typedie, &size) == 0 - && size > 0 && size <= 8) - goto intreg; - goto aggregate; - } - - /* XXX We don't have a good way to return specific errors from ebl calls. - This value means we do not understand the type, but it is well-formed - DWARF and might be valid. */ - return -2; -} diff --git a/src/backends/sparc_symbol.c b/src/backends/sparc_symbol.c deleted file mode 100644 index ec11dc97..00000000 --- a/src/backends/sparc_symbol.c +++ /dev/null @@ -1,148 +0,0 @@ -/* SPARC specific symbolic name handling. - Copyright (C) 2002, 2003, 2005, 2007, 2008 Red Hat, Inc. - This file is part of elfutils. - Written by Jakub Jelinek <jakub@redhat.com>, 2002. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <elf.h> -#include <stddef.h> - -#define BACKEND sparc_ -#include "libebl_CPU.h" - -/* Check for the simple reloc types. */ -Elf_Type -sparc_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type) -{ - switch (type) - { - case R_SPARC_8: - return ELF_T_BYTE; - case R_SPARC_16: - case R_SPARC_UA16: - return ELF_T_HALF; - case R_SPARC_32: - case R_SPARC_UA32: - return ELF_T_WORD; - case R_SPARC_64: - case R_SPARC_UA64: - return ELF_T_XWORD; - default: - return ELF_T_NUM; - } -} - -/* Check whether machine flags are valid. */ -bool -sparc_machine_flag_check (GElf_Word flags) -{ - return ((flags &~ (EF_SPARCV9_MM - | EF_SPARC_LEDATA - | EF_SPARC_32PLUS - | EF_SPARC_SUN_US1 - | EF_SPARC_SUN_US3)) == 0); -} - -bool -sparc_check_special_section (Ebl *ebl, - int ndx __attribute__ ((unused)), - const GElf_Shdr *shdr, - const char *sname __attribute__ ((unused))) -{ - if ((shdr->sh_flags & (SHF_WRITE | SHF_EXECINSTR)) - == (SHF_WRITE | SHF_EXECINSTR)) - { - /* This is ordinarily flagged, but is valid for a PLT on SPARC. - - Look for the SHT_DYNAMIC section and the DT_PLTGOT tag in it. - Its d_ptr should match the .plt section's sh_addr. */ - - Elf_Scn *scn = NULL; - while ((scn = elf_nextscn (ebl->elf, scn)) != NULL) - { - GElf_Shdr scn_shdr; - if (likely (gelf_getshdr (scn, &scn_shdr) != NULL) - && scn_shdr.sh_type == SHT_DYNAMIC - && scn_shdr.sh_entsize != 0) - { - Elf_Data *data = elf_getdata (scn, NULL); - if (data != NULL) - for (size_t i = 0; i < data->d_size / scn_shdr.sh_entsize; ++i) - { - GElf_Dyn dyn; - if (unlikely (gelf_getdyn (data, i, &dyn) == NULL)) - break; - if (dyn.d_tag == DT_PLTGOT) - return dyn.d_un.d_ptr == shdr->sh_addr; - } - break; - } - } - } - - return false; -} - -const char * -sparc_symbol_type_name (int type, - char *buf __attribute__ ((unused)), - size_t len __attribute__ ((unused))) -{ - switch (type) - { - case STT_SPARC_REGISTER: - return "SPARC_REGISTER"; - } - return NULL; -} - -const char * -sparc_dynamic_tag_name (int64_t tag, - char *buf __attribute__ ((unused)), - size_t len __attribute__ ((unused))) -{ - switch (tag) - { - case DT_SPARC_REGISTER: - return "SPARC_REGISTER"; - } - return NULL; -} - -bool -sparc_dynamic_tag_check (int64_t tag) -{ - switch (tag) - { - case DT_SPARC_REGISTER: - return true; - } - return false; -} diff --git a/src/backends/tilegx_corenote.c b/src/backends/tilegx_corenote.c deleted file mode 100644 index be3e7dbf..00000000 --- a/src/backends/tilegx_corenote.c +++ /dev/null @@ -1,64 +0,0 @@ -/* TILE-Gx specific core note handling. - Copyright (C) 2012 Tilera Corporation - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <elf.h> -#include <inttypes.h> -#include <stddef.h> -#include <stdio.h> -#include <sys/time.h> - -#define BACKEND tilegx_ -#include "libebl_CPU.h" - -static const Ebl_Register_Location prstatus_regs[] = - { - { .offset = 0, .regno = 0, .count = 56, .bits = 64 }, /* r0-r55 */ - { .offset = 56 * 8, .regno = 64, .count = 1, .bits = 64 } /* pc */ - }; -#define PRSTATUS_REGS_SIZE (57 * 8) - -#define ULONG uint64_t -#define ALIGN_ULONG 8 -#define TYPE_ULONG ELF_T_XWORD -#define TYPE_LONG ELF_T_SXWORD -#define PID_T int32_t -#define UID_T uint32_t -#define GID_T uint32_t -#define ALIGN_PID_T 4 -#define ALIGN_UID_T 4 -#define ALIGN_GID_T 4 -#define TYPE_PID_T ELF_T_SWORD -#define TYPE_UID_T ELF_T_WORD -#define TYPE_GID_T ELF_T_WORD - -#include "linux-core-note.c" diff --git a/src/backends/tilegx_init.c b/src/backends/tilegx_init.c deleted file mode 100644 index 858798bf..00000000 --- a/src/backends/tilegx_init.c +++ /dev/null @@ -1,60 +0,0 @@ -/* Initialization of TILE-Gx specific backend library. - Copyright (C) 2012 Tilera Corporation - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#define BACKEND tilegx_ -#define RELOC_PREFIX R_TILEGX_ -#include "libebl_CPU.h" - -/* This defines the common reloc hooks based on tilegx_reloc.def. */ -#include "common-reloc.c" - -const char * -tilegx_init (elf, machine, eh, ehlen) - Elf *elf __attribute__ ((unused)); - GElf_Half machine __attribute__ ((unused)); - Ebl *eh; - size_t ehlen; -{ - /* Check whether the Elf_BH object has a sufficent size. */ - if (ehlen < sizeof (Ebl)) - return NULL; - - /* We handle it. */ - eh->name = "TILE-Gx"; - tilegx_init_reloc (eh); - HOOK (eh, reloc_simple_type); - HOOK (eh, return_value_location); - HOOK (eh, register_info); - HOOK (eh, core_note); - - return MODVERSION; -} diff --git a/src/backends/tilegx_regs.c b/src/backends/tilegx_regs.c deleted file mode 100644 index b1e17439..00000000 --- a/src/backends/tilegx_regs.c +++ /dev/null @@ -1,129 +0,0 @@ -/* Register names and numbers for TILE-Gx DWARF. - Copyright (C) 2012 Tilera Corporation - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdio.h> -#include <string.h> -#include <dwarf.h> - -#define BACKEND tilegx_ -#include "libebl_CPU.h" - -ssize_t -tilegx_register_info (Ebl *ebl __attribute__ ((unused)), - int regno, char *name, size_t namelen, - const char **prefix, const char **setname, - int *bits, int *type) -{ - if (name == NULL) - return 65; - - if (regno < 0 || regno > 64 || namelen < 5) - return -1; - - *prefix = ""; - *setname = "integer"; - *bits = 64; - - switch (regno) - { - case 0 ... 9: - *type = DW_ATE_signed; - name[0] = 'r'; - name[1] = regno + '0'; - namelen = 2; - break; - - case 10 ... 52: - *type = DW_ATE_signed; - name[0] = 'r'; - name[1] = regno / 10 + '0'; - name[2] = regno % 10 + '0'; - namelen = 3; - break; - - case 53: - *type = DW_ATE_address; - return stpcpy (name, "tp") + 1 - name; - - case 54: - *type = DW_ATE_address; - return stpcpy (name, "sp") + 1 - name; - - case 55: - *type = DW_ATE_address; - return stpcpy (name, "lr") + 1 - name; - - case 56: - *type = DW_ATE_unsigned; - return stpcpy (name, "sn") + 1 - name; - - case 57: - *type = DW_ATE_unsigned; - return stpcpy (name, "idn0") + 1 - name; - - case 58: - *type = DW_ATE_unsigned; - return stpcpy (name, "idn1") + 1 - name; - - case 59: - *type = DW_ATE_unsigned; - return stpcpy (name, "udn0") + 1 - name; - - case 60: - *type = DW_ATE_unsigned; - return stpcpy (name, "udn1") + 1 - name; - - case 61: - *type = DW_ATE_unsigned; - return stpcpy (name, "udn2") + 1 - name; - - case 62: - *type = DW_ATE_unsigned; - return stpcpy (name, "udn3") + 1 - name; - - case 63: - *type = DW_ATE_unsigned; - return stpcpy (name, "zero") + 1 - name; - - case 64: - *type = DW_ATE_address; - return stpcpy (name, "pc") + 1 - name; - - /* Can't happen. */ - default: - *setname = NULL; - return 0; - } - - name[namelen++] = '\0'; - return namelen; -} diff --git a/src/backends/tilegx_reloc.def b/src/backends/tilegx_reloc.def deleted file mode 100644 index 9736286e..00000000 --- a/src/backends/tilegx_reloc.def +++ /dev/null @@ -1,120 +0,0 @@ -/* List the relocation types for tilegx. -*- C -*- - Copyright (C) 2012 Tilera Corporation - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -/* NAME, REL|EXEC|DYN */ - -RELOC_TYPE (NONE, 0) -RELOC_TYPE (64, REL|EXEC|DYN) -RELOC_TYPE (32, REL|EXEC|DYN) -RELOC_TYPE (16, REL|EXEC|DYN) -RELOC_TYPE (8, REL|EXEC|DYN) -RELOC_TYPE (64_PCREL, REL) -RELOC_TYPE (32_PCREL, REL) -RELOC_TYPE (16_PCREL, REL) -RELOC_TYPE (8_PCREL, REL) -RELOC_TYPE (HW0, REL) -RELOC_TYPE (HW1, REL) -RELOC_TYPE (HW2, REL) -RELOC_TYPE (HW3, REL) -RELOC_TYPE (HW0_LAST, REL) -RELOC_TYPE (HW1_LAST, REL) -RELOC_TYPE (HW2_LAST, REL) -RELOC_TYPE (COPY, EXEC) -RELOC_TYPE (GLOB_DAT, EXEC|DYN) -RELOC_TYPE (JMP_SLOT, EXEC|DYN) -RELOC_TYPE (RELATIVE, EXEC|DYN) -RELOC_TYPE (BROFF_X1, REL) -RELOC_TYPE (JUMPOFF_X1, REL) -RELOC_TYPE (JUMPOFF_X1_PLT, REL) -RELOC_TYPE (IMM8_X0, REL) -RELOC_TYPE (IMM8_Y0, REL) -RELOC_TYPE (IMM8_X1, REL) -RELOC_TYPE (IMM8_Y1, REL) -RELOC_TYPE (DEST_IMM8_X1, REL) -RELOC_TYPE (MT_IMM14_X1, REL) -RELOC_TYPE (MF_IMM14_X1, REL) -RELOC_TYPE (MMSTART_X0, REL) -RELOC_TYPE (MMEND_X0, REL) -RELOC_TYPE (SHAMT_X0, REL) -RELOC_TYPE (SHAMT_X1, REL) -RELOC_TYPE (SHAMT_Y0, REL) -RELOC_TYPE (SHAMT_Y1, REL) -RELOC_TYPE (IMM16_X0_HW0, REL) -RELOC_TYPE (IMM16_X1_HW0, REL) -RELOC_TYPE (IMM16_X0_HW1, REL) -RELOC_TYPE (IMM16_X1_HW1, REL) -RELOC_TYPE (IMM16_X0_HW2, REL) -RELOC_TYPE (IMM16_X1_HW2, REL) -RELOC_TYPE (IMM16_X0_HW3, REL) -RELOC_TYPE (IMM16_X1_HW3, REL) -RELOC_TYPE (IMM16_X0_HW0_LAST, REL) -RELOC_TYPE (IMM16_X1_HW0_LAST, REL) -RELOC_TYPE (IMM16_X0_HW1_LAST, REL) -RELOC_TYPE (IMM16_X1_HW1_LAST, REL) -RELOC_TYPE (IMM16_X0_HW2_LAST, REL) -RELOC_TYPE (IMM16_X1_HW2_LAST, REL) -RELOC_TYPE (IMM16_X0_HW0_PCREL, REL) -RELOC_TYPE (IMM16_X1_HW0_PCREL, REL) -RELOC_TYPE (IMM16_X0_HW1_PCREL, REL) -RELOC_TYPE (IMM16_X1_HW1_PCREL, REL) -RELOC_TYPE (IMM16_X0_HW2_PCREL, REL) -RELOC_TYPE (IMM16_X1_HW2_PCREL, REL) -RELOC_TYPE (IMM16_X0_HW3_PCREL, REL) -RELOC_TYPE (IMM16_X1_HW3_PCREL, REL) -RELOC_TYPE (IMM16_X0_HW0_LAST_PCREL, REL) -RELOC_TYPE (IMM16_X1_HW0_LAST_PCREL, REL) -RELOC_TYPE (IMM16_X0_HW1_LAST_PCREL, REL) -RELOC_TYPE (IMM16_X1_HW1_LAST_PCREL, REL) -RELOC_TYPE (IMM16_X0_HW2_LAST_PCREL, REL) -RELOC_TYPE (IMM16_X1_HW2_LAST_PCREL, REL) -RELOC_TYPE (IMM16_X0_HW0_GOT, REL) -RELOC_TYPE (IMM16_X1_HW0_GOT, REL) -RELOC_TYPE (IMM16_X0_HW0_LAST_GOT, REL) -RELOC_TYPE (IMM16_X1_HW0_LAST_GOT, REL) -RELOC_TYPE (IMM16_X0_HW1_LAST_GOT, REL) -RELOC_TYPE (IMM16_X1_HW1_LAST_GOT, REL) -RELOC_TYPE (IMM16_X0_HW0_TLS_GD, REL) -RELOC_TYPE (IMM16_X1_HW0_TLS_GD, REL) -RELOC_TYPE (IMM16_X0_HW0_LAST_TLS_GD, REL) -RELOC_TYPE (IMM16_X1_HW0_LAST_TLS_GD, REL) -RELOC_TYPE (IMM16_X0_HW1_LAST_TLS_GD, REL) -RELOC_TYPE (IMM16_X1_HW1_LAST_TLS_GD, REL) -RELOC_TYPE (IMM16_X0_HW0_TLS_IE, REL) -RELOC_TYPE (IMM16_X1_HW0_TLS_IE, REL) -RELOC_TYPE (IMM16_X0_HW0_LAST_TLS_IE, REL) -RELOC_TYPE (IMM16_X1_HW0_LAST_TLS_IE, REL) -RELOC_TYPE (IMM16_X0_HW1_LAST_TLS_IE, REL) -RELOC_TYPE (IMM16_X1_HW1_LAST_TLS_IE, REL) -RELOC_TYPE (TLS_DTPMOD64, EXEC|DYN) -RELOC_TYPE (TLS_DTPOFF64, EXEC|DYN) -RELOC_TYPE (TLS_TPOFF64, EXEC|DYN) -RELOC_TYPE (TLS_DTPMOD32, EXEC|DYN) -RELOC_TYPE (TLS_DTPOFF32, EXEC|DYN) -RELOC_TYPE (TLS_TPOFF32, EXEC|DYN) -RELOC_TYPE (GNU_VTINHERIT, REL) -RELOC_TYPE (GNU_VTENTRY, REL) diff --git a/src/backends/tilegx_retval.c b/src/backends/tilegx_retval.c deleted file mode 100644 index db81a20b..00000000 --- a/src/backends/tilegx_retval.c +++ /dev/null @@ -1,154 +0,0 @@ -/* Function return value location for Linux/TILE-Gx ABI. - Copyright (C) 2012 Tilera Corporation - Copyright (C) 2014 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <dwarf.h> - -#define BACKEND tilegx_ -#include "libebl_CPU.h" - - -/* r0. */ -static const Dwarf_Op loc_intreg[] = - { - { .atom = DW_OP_reg0 } - }; -#define nloc_intreg 1 - -/* The return value is a structure and is actually stored in stack space - passed in a hidden argument by the caller. But, the compiler - helpfully returns the address of that space in r0. */ -static const Dwarf_Op loc_aggregate[] = - { - { .atom = DW_OP_breg0, .number = 0 } - }; -#define nloc_aggregate 1 - -int -tilegx_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) -{ - /* Start with the function's type, and get the DW_AT_type attribute, - which is the type of the return value. */ - Dwarf_Die die_mem, *typedie = &die_mem; - int tag = dwarf_peeled_die_type (functypedie, typedie); - if (tag <= 0) - return tag; - - Dwarf_Word size; - switch (tag) - { - case -1: - return -1; - - case DW_TAG_subrange_type: - if (! dwarf_hasattr_integrate (typedie, DW_AT_byte_size)) - { - Dwarf_Attribute attr_mem, *attr; - attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem); - typedie = dwarf_formref_die (attr, &die_mem); - tag = DWARF_TAG_OR_RETURN (typedie); - } - /* Fall through. */ - - case DW_TAG_base_type: - case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: - { - Dwarf_Attribute attr_mem; - if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size, - &attr_mem), &size) != 0) - { - if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) - size = 8; - else - return -1; - } - if (tag == DW_TAG_base_type) - { - Dwarf_Word encoding; - if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_encoding, - &attr_mem), - &encoding) != 0) - return -1; - } - } - - /* Small enough structs are passed directly in registers R0 ... R7. */ - if (size <= 8) - { - intreg: - *locp = loc_intreg; - return nloc_intreg; - } - - /* Else fall through. */ - case DW_TAG_structure_type: - case DW_TAG_class_type: - case DW_TAG_union_type: - aggregate: - *locp = loc_aggregate; - return nloc_aggregate; - - case DW_TAG_array_type: - case DW_TAG_string_type: - if (dwarf_aggregate_size (typedie, &size) == 0 && size <= 8) - { - if (tag == DW_TAG_array_type) - { - Dwarf_Attribute attr_mem, *attr; - /* Check if it's a character array. */ - attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem); - typedie = dwarf_formref_die (attr, &die_mem); - tag = DWARF_TAG_OR_RETURN (typedie); - if (tag != DW_TAG_base_type) - goto aggregate; - if (dwarf_formudata (dwarf_attr_integrate (typedie, - DW_AT_byte_size, - &attr_mem), - &size) != 0) - return -1; - if (size != 1) - goto aggregate; - } - goto intreg; - } - goto aggregate; - } - - /* XXX We don't have a good way to return specific errors from ebl calls. - This value means we do not understand the type, but it is well-formed - DWARF and might be valid. */ - return -2; -} diff --git a/src/backends/tilegx_symbol.c b/src/backends/tilegx_symbol.c deleted file mode 100644 index b6533266..00000000 --- a/src/backends/tilegx_symbol.c +++ /dev/null @@ -1,57 +0,0 @@ -/* TILEGX-specific symbolic name handling. - Copyright (C) 2012 Tilera Corporation - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <elf.h> -#include <stddef.h> - -#define BACKEND tilegx_ -#include "libebl_CPU.h" - -/* Check for the simple reloc types. */ -Elf_Type -tilegx_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type) -{ - switch (type) - { - case R_TILEGX_64: - return ELF_T_SXWORD; - case R_TILEGX_32: - return ELF_T_SWORD; - case R_TILEGX_16: - return ELF_T_HALF; - case R_TILEGX_8: - return ELF_T_BYTE; - default: - return ELF_T_NUM; - } -} diff --git a/src/backends/x86_64_cfi.c b/src/backends/x86_64_cfi.c deleted file mode 100644 index 6db8ac44..00000000 --- a/src/backends/x86_64_cfi.c +++ /dev/null @@ -1,63 +0,0 @@ -/* x86-64 ABI-specified defaults for DWARF CFI. - Copyright (C) 2009 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <dwarf.h> - -#define BACKEND x86_64_ -#include "libebl_CPU.h" - -int -x86_64_abi_cfi (Ebl *ebl __attribute__ ((unused)), Dwarf_CIE *abi_info) -{ - static const uint8_t abi_cfi[] = - { - /* Call-saved regs. */ - DW_CFA_same_value, ULEB128_7 (0), /* %rbx */ - DW_CFA_same_value, ULEB128_7 (6), /* %rbp */ - DW_CFA_same_value, ULEB128_7 (12), /* %r12 */ - DW_CFA_same_value, ULEB128_7 (13), /* %r13 */ - DW_CFA_same_value, ULEB128_7 (14), /* %r14 */ - DW_CFA_same_value, ULEB128_7 (15), /* %r15 */ - DW_CFA_same_value, ULEB128_7 (16), /* %r16 */ - - /* The CFA is the SP. */ - DW_CFA_val_offset, ULEB128_7 (7), ULEB128_7 (0), - }; - - abi_info->initial_instructions = abi_cfi; - abi_info->initial_instructions_end = &abi_cfi[sizeof abi_cfi]; - abi_info->data_alignment_factor = 8; - - abi_info->return_address_register = 16; /* %rip */ - - return 0; -} diff --git a/src/backends/x86_64_corenote.c b/src/backends/x86_64_corenote.c deleted file mode 100644 index f9d8db45..00000000 --- a/src/backends/x86_64_corenote.c +++ /dev/null @@ -1,112 +0,0 @@ -/* x86-64 specific core note handling. - Copyright (C) 2005, 2007, 2008 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <elf.h> -#include <inttypes.h> -#include <stddef.h> -#include <stdio.h> -#include <sys/time.h> - -#define BACKEND x86_64_ -#include "libebl_CPU.h" - - -static const Ebl_Register_Location prstatus_regs[] = - { -#define GR(at, n, dwreg) \ - { .offset = at * 8, .regno = dwreg, .count = n, .bits = 64 } -#define SR(at, n, dwreg) \ - { .offset = at * 8, .regno = dwreg, .count = n, .bits = 16, .pad = 6 } - - GR (0, 1, 15), /* %r15 */ - GR (1, 1, 14), /* %r14 */ - GR (2, 1, 13), /* %r13 */ - GR (3, 1, 12), /* %r12 */ - GR (4, 1, 6), /* %rbp */ - GR (5, 1, 3), /* %rbx */ - GR (6, 1, 11), /* %r11 */ - GR (7, 1, 10), /* %r10 */ - GR (8, 1, 9), /* %r9 */ - GR (9, 1, 8), /* %r8 */ - GR (10,1, 0), /* %rax */ - GR (11,1, 2), /* %rcx */ - GR (12,1, 1), /* %rdx */ - GR (13,2, 4), /* %rsi-%rdi */ - /* 15,1, orig_rax */ - GR (16,1, 16), /* %rip */ - SR (17,1, 51), /* %cs */ - GR (18,1, 49), /* %rFLAGS */ - GR (19,1, 7), /* %rsp */ - SR (20,1, 52), /* %ss */ - GR (21,2, 58), /* %fs.base-%gs.base */ - SR (23,1, 53), /* %ds */ - SR (24,1, 50), /* %es */ - SR (25,2, 54), /* %fs-%gs */ - -#undef GR -#undef SR - }; -#define PRSTATUS_REGS_SIZE (27 * 8) - -#define ULONG uint64_t -#define PID_T int32_t -#define UID_T uint32_t -#define GID_T uint32_t -#define ALIGN_ULONG 8 -#define ALIGN_PID_T 4 -#define ALIGN_UID_T 4 -#define ALIGN_GID_T 4 -#define TYPE_ULONG ELF_T_XWORD -#define TYPE_PID_T ELF_T_SWORD -#define TYPE_UID_T ELF_T_SWORD -#define TYPE_GID_T ELF_T_SWORD - -#define PRSTATUS_REGSET_ITEMS \ - { \ - .name = "orig_rax", .type = ELF_T_SXWORD, .format = 'd', \ - .offset = offsetof (struct EBLHOOK(prstatus), pr_reg) + (8 * 15), \ - .group = "register" \ - } - -static const Ebl_Register_Location fpregset_regs[] = - { - { .offset = 0, .regno = 65, .count = 2, .bits = 16 }, /* fcw-fsw */ - { .offset = 24, .regno = 64, .count = 1, .bits = 32 }, /* mxcsr */ - { .offset = 32, .regno = 33, .count = 8, .bits = 80, .pad = 6 }, /* stN */ - { .offset = 32 + 128, .regno = 17, .count = 16, .bits = 128 }, /* xmm */ - }; -#define FPREGSET_SIZE 512 - -#define EXTRA_NOTES EXTRA_NOTES_IOPERM - -#include "x86_corenote.c" -#include "linux-core-note.c" diff --git a/src/backends/x86_64_init.c b/src/backends/x86_64_init.c deleted file mode 100644 index b885558b..00000000 --- a/src/backends/x86_64_init.c +++ /dev/null @@ -1,68 +0,0 @@ -/* Initialization of x86-64 specific backend library. - Copyright (C) 2002-2009, 2013 Red Hat, Inc. - This file is part of elfutils. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#define BACKEND x86_64_ -#define RELOC_PREFIX R_X86_64_ -#include "libebl_CPU.h" - -/* This defines the common reloc hooks based on x86_64_reloc.def. */ -#include "common-reloc.c" - -const char * -x86_64_init (elf, machine, eh, ehlen) - Elf *elf __attribute__ ((unused)); - GElf_Half machine __attribute__ ((unused)); - Ebl *eh; - size_t ehlen; -{ - /* Check whether the Elf_BH object has a sufficent size. */ - if (ehlen < sizeof (Ebl)) - return NULL; - - /* We handle it. */ - eh->name = "AMD x86-64"; - x86_64_init_reloc (eh); - HOOK (eh, reloc_simple_type); - HOOK (eh, core_note); - HOOK (eh, return_value_location); - HOOK (eh, register_info); - HOOK (eh, syscall_abi); - HOOK (eh, auxv_info); - HOOK (eh, disasm); - HOOK (eh, abi_cfi); - /* gcc/config/ #define DWARF_FRAME_REGISTERS. */ - eh->frame_nregs = 17; - HOOK (eh, set_initial_registers_tid); - - return MODVERSION; -} diff --git a/src/backends/x86_64_initreg.c b/src/backends/x86_64_initreg.c deleted file mode 100644 index db9216ed..00000000 --- a/src/backends/x86_64_initreg.c +++ /dev/null @@ -1,73 +0,0 @@ -/* Fetch live process registers from TID. - Copyright (C) 2013 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdlib.h> -#ifdef __x86_64__ -# include <sys/user.h> -# include <sys/ptrace.h> -#endif - -#define BACKEND x86_64_ -#include "libebl_CPU.h" - -bool -x86_64_set_initial_registers_tid (pid_t tid __attribute__ ((unused)), - ebl_tid_registers_t *setfunc __attribute__ ((unused)), - void *arg __attribute__ ((unused))) -{ -#if !defined(__x86_64__) || !defined(__linux__) - return false; -#else /* __x86_64__ */ - struct user_regs_struct user_regs; - if (ptrace (PTRACE_GETREGS, tid, NULL, &user_regs) != 0) - return false; - Dwarf_Word dwarf_regs[17]; - dwarf_regs[0] = user_regs.rax; - dwarf_regs[1] = user_regs.rdx; - dwarf_regs[2] = user_regs.rcx; - dwarf_regs[3] = user_regs.rbx; - dwarf_regs[4] = user_regs.rsi; - dwarf_regs[5] = user_regs.rdi; - dwarf_regs[6] = user_regs.rbp; - dwarf_regs[7] = user_regs.rsp; - dwarf_regs[8] = user_regs.r8; - dwarf_regs[9] = user_regs.r9; - dwarf_regs[10] = user_regs.r10; - dwarf_regs[11] = user_regs.r11; - dwarf_regs[12] = user_regs.r12; - dwarf_regs[13] = user_regs.r13; - dwarf_regs[14] = user_regs.r14; - dwarf_regs[15] = user_regs.r15; - dwarf_regs[16] = user_regs.rip; - return setfunc (0, 17, dwarf_regs, arg); -#endif /* __x86_64__ */ -} diff --git a/src/backends/x86_64_regs.c b/src/backends/x86_64_regs.c deleted file mode 100644 index 2172d9f1..00000000 --- a/src/backends/x86_64_regs.c +++ /dev/null @@ -1,185 +0,0 @@ -/* Register names and numbers for x86-64 DWARF. - Copyright (C) 2005, 2006, 2007 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <dwarf.h> -#include <string.h> - -#define BACKEND x86_64_ -#include "libebl_CPU.h" - -ssize_t -x86_64_register_info (Ebl *ebl __attribute__ ((unused)), - int regno, char *name, size_t namelen, - const char **prefix, const char **setname, - int *bits, int *type) -{ - if (name == NULL) - return 67; - - if (regno < 0 || regno > 66 || namelen < 7) - return -1; - - *prefix = "%"; - *bits = 64; - *type = DW_ATE_unsigned; - if (regno < 17) - { - *setname = "integer"; - *type = DW_ATE_signed; - } - else if (regno < 33) - { - *setname = "SSE"; - *bits = 128; - } - else if (regno < 41) - { - *setname = "x87"; - *type = DW_ATE_float; - *bits = 80; - } - else if (regno < 49) - *setname = "MMX"; - else if (regno > 49 && regno < 60) - { - *setname = "segment"; - *bits = 16; - } - else - *setname = "control"; - - switch (regno) - { - static const char baseregs[][2] = - { - "ax", "dx", "cx", "bx", "si", "di", "bp", "sp" - }; - - case 6 ... 7: - *type = DW_ATE_address; - case 0 ... 5: - name[0] = 'r'; - name[1] = baseregs[regno][0]; - name[2] = baseregs[regno][1]; - namelen = 3; - break; - - case 8 ... 9: - name[0] = 'r'; - name[1] = regno - 8 + '8'; - namelen = 2; - break; - - case 10 ... 15: - name[0] = 'r'; - name[1] = '1'; - name[2] = regno - 10 + '0'; - namelen = 3; - break; - - case 16: - *type = DW_ATE_address; - name[0] = 'r'; - name[1] = 'i'; - name[2] = 'p'; - namelen = 3; - break; - - case 17 ... 26: - name[0] = 'x'; - name[1] = 'm'; - name[2] = 'm'; - name[3] = regno - 17 + '0'; - namelen = 4; - break; - - case 27 ... 32: - name[0] = 'x'; - name[1] = 'm'; - name[2] = 'm'; - name[3] = '1'; - name[4] = regno - 27 + '0'; - namelen = 5; - break; - - case 33 ... 40: - name[0] = 's'; - name[1] = 't'; - name[2] = regno - 33 + '0'; - namelen = 3; - break; - - case 41 ... 48: - name[0] = 'm'; - name[1] = 'm'; - name[2] = regno - 41 + '0'; - namelen = 3; - break; - - case 50 ... 55: - name[0] = "ecsdfg"[regno - 50]; - name[1] = 's'; - namelen = 2; - break; - - case 58 ... 59: - *type = DW_ATE_address; - *bits = 64; - name[0] = regno - 58 + 'f'; - return stpcpy (&name[1], "s.base") + 1 - name; - - case 49: - *setname = "integer"; - return stpcpy (name, "rflags") + 1 - name; - case 62: - return stpcpy (name, "tr") + 1 - name; - case 63: - return stpcpy (name, "ldtr") + 1 - name; - case 64: - return stpcpy (name, "mxcsr") + 1 - name; - - case 65 ... 66: - *bits = 16; - name[0] = 'f'; - name[1] = "cs"[regno - 65]; - name[2] = 'w'; - namelen = 3; - break; - - default: - return 0; - } - - name[namelen++] = '\0'; - return namelen; -} diff --git a/src/backends/x86_64_reloc.def b/src/backends/x86_64_reloc.def deleted file mode 100644 index 8ed98f64..00000000 --- a/src/backends/x86_64_reloc.def +++ /dev/null @@ -1,63 +0,0 @@ -/* List the relocation types for x86-64. -*- C -*- - Copyright (C) 2000, 2001, 2002, 2003, 2005, 2009 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -/* NAME, REL|EXEC|DYN */ - -RELOC_TYPE (NONE, 0) -RELOC_TYPE (64, REL|EXEC|DYN) -RELOC_TYPE (PC32, REL|EXEC|DYN) -RELOC_TYPE (GOT32, REL) -RELOC_TYPE (PLT32, REL) -RELOC_TYPE (COPY, EXEC) -RELOC_TYPE (GLOB_DAT, EXEC|DYN) -RELOC_TYPE (JUMP_SLOT, EXEC|DYN) -RELOC_TYPE (RELATIVE, EXEC|DYN) -RELOC_TYPE (GOTPCREL, REL) -RELOC_TYPE (32, REL|EXEC|DYN) -RELOC_TYPE (32S, REL) -RELOC_TYPE (16, REL) -RELOC_TYPE (PC16, REL) -RELOC_TYPE (8, REL) -RELOC_TYPE (PC8, REL) -RELOC_TYPE (DTPMOD64, EXEC|DYN) -RELOC_TYPE (DTPOFF64, EXEC|DYN) -RELOC_TYPE (TPOFF64, EXEC|DYN) -RELOC_TYPE (TLSGD, REL) -RELOC_TYPE (TLSLD, REL) -RELOC_TYPE (DTPOFF32, REL) -RELOC_TYPE (GOTTPOFF, REL) -RELOC_TYPE (TPOFF32, REL) -RELOC_TYPE (PC64, REL|EXEC|DYN) -RELOC_TYPE (GOTOFF64, REL) -RELOC_TYPE (GOTPC32, REL) -RELOC_TYPE (SIZE32, REL|EXEC|DYN) -RELOC_TYPE (SIZE64, REL|EXEC|DYN) -RELOC_TYPE (GOTPC32_TLSDESC, REL) -RELOC_TYPE (TLSDESC_CALL, REL) -RELOC_TYPE (TLSDESC, REL|EXEC|DYN) -RELOC_TYPE (IRELATIVE, EXEC|DYN) diff --git a/src/backends/x86_64_retval.c b/src/backends/x86_64_retval.c deleted file mode 100644 index b3799ae0..00000000 --- a/src/backends/x86_64_retval.c +++ /dev/null @@ -1,194 +0,0 @@ -/* Function return value location for Linux/x86-64 ABI. - Copyright (C) 2005-2010, 2014 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <dwarf.h> - -#define BACKEND x86_64_ -#include "libebl_CPU.h" - - -/* %rax, or pair %rax, %rdx. */ -static const Dwarf_Op loc_intreg[] = - { - { .atom = DW_OP_reg0 }, { .atom = DW_OP_piece, .number = 8 }, - { .atom = DW_OP_reg1 }, { .atom = DW_OP_piece, .number = 8 }, - }; -#define nloc_intreg 1 -#define nloc_intregpair 4 - -/* %st(0), or pair %st(0), %st(1). */ -static const Dwarf_Op loc_x87reg[] = - { - { .atom = DW_OP_regx, .number = 33 }, - { .atom = DW_OP_piece, .number = 10 }, - { .atom = DW_OP_regx, .number = 34 }, - { .atom = DW_OP_piece, .number = 10 }, - }; -#define nloc_x87reg 1 -#define nloc_x87regpair 4 - -/* %xmm0, or pair %xmm0, %xmm1. */ -static const Dwarf_Op loc_ssereg[] = - { - { .atom = DW_OP_reg17 }, { .atom = DW_OP_piece, .number = 16 }, - { .atom = DW_OP_reg18 }, { .atom = DW_OP_piece, .number = 16 }, - }; -#define nloc_ssereg 1 -#define nloc_sseregpair 4 - -/* The return value is a structure and is actually stored in stack space - passed in a hidden argument by the caller. But, the compiler - helpfully returns the address of that space in %rax. */ -static const Dwarf_Op loc_aggregate[] = - { - { .atom = DW_OP_breg0, .number = 0 } - }; -#define nloc_aggregate 1 - - -int -x86_64_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) -{ - /* Start with the function's type, and get the DW_AT_type attribute, - which is the type of the return value. */ - Dwarf_Die die_mem, *typedie = &die_mem; - int tag = dwarf_peeled_die_type (functypedie, typedie); - if (tag <= 0) - return tag; - - Dwarf_Word size; - switch (tag) - { - case -1: - return -1; - - case DW_TAG_subrange_type: - if (! dwarf_hasattr_integrate (typedie, DW_AT_byte_size)) - { - Dwarf_Attribute attr_mem, *attr; - attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem); - typedie = dwarf_formref_die (attr, &die_mem); - tag = DWARF_TAG_OR_RETURN (typedie); - } - /* Fall through. */ - - case DW_TAG_base_type: - case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: - { - Dwarf_Attribute attr_mem; - if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size, - &attr_mem), &size) != 0) - { - if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) - size = 8; - else - return -1; - } - } - - if (tag == DW_TAG_base_type) - { - Dwarf_Attribute attr_mem; - Dwarf_Word encoding; - if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_encoding, - &attr_mem), - &encoding) != 0) - return -1; - - switch (encoding) - { - case DW_ATE_complex_float: - switch (size) - { - case 4 * 2: /* complex float */ - case 8 * 2: /* complex double */ - *locp = loc_ssereg; - return nloc_sseregpair; - case 16 * 2: /* complex long double */ - *locp = loc_x87reg; - return nloc_x87regpair; - } - return -2; - - case DW_ATE_float: - switch (size) - { - case 4: /* float */ - case 8: /* double */ - *locp = loc_ssereg; - return nloc_ssereg; - case 16: /* long double */ - /* XXX distinguish __float128, which is sseregpair?? */ - *locp = loc_x87reg; - return nloc_x87reg; - } - return -2; - } - } - - intreg: - *locp = loc_intreg; - if (size <= 8) - return nloc_intreg; - if (size <= 16) - return nloc_intregpair; - - large: - *locp = loc_aggregate; - return nloc_aggregate; - - case DW_TAG_structure_type: - case DW_TAG_class_type: - case DW_TAG_union_type: - case DW_TAG_array_type: - if (dwarf_aggregate_size (typedie, &size) != 0) - goto large; - if (size > 16) - goto large; - - /* XXX - Must examine the fields in picayune ways to determine the - actual answer. This will be right for small C structs - containing integer types and similarly simple cases. - */ - - goto intreg; - } - - /* XXX We don't have a good way to return specific errors from ebl calls. - This value means we do not understand the type, but it is well-formed - DWARF and might be valid. */ - return -2; -} diff --git a/src/backends/x86_64_symbol.c b/src/backends/x86_64_symbol.c deleted file mode 100644 index 1622461d..00000000 --- a/src/backends/x86_64_symbol.c +++ /dev/null @@ -1,60 +0,0 @@ -/* x86_64 specific symbolic name handling. - Copyright (C) 2002, 2005 Red Hat, Inc. - This file is part of elfutils. - Written by Ulrich Drepper <drepper@redhat.com>, 2002. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <assert.h> -#include <elf.h> -#include <stddef.h> - -#define BACKEND x86_64_ -#include "libebl_CPU.h" - -/* Check for the simple reloc types. */ -Elf_Type -x86_64_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type) -{ - switch (type) - { - case R_X86_64_64: - return ELF_T_XWORD; - case R_X86_64_32: - return ELF_T_WORD; - case R_X86_64_32S: - return ELF_T_SWORD; - case R_X86_64_16: - return ELF_T_HALF; - case R_X86_64_8: - return ELF_T_BYTE; - default: - return ELF_T_NUM; - } -} diff --git a/src/backends/x86_64_syscall.c b/src/backends/x86_64_syscall.c deleted file mode 100644 index 0deb8bad..00000000 --- a/src/backends/x86_64_syscall.c +++ /dev/null @@ -1,50 +0,0 @@ -/* Linux/x86-64 system call ABI in DWARF register numbers. - Copyright (C) 2008 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#define BACKEND x86_64_ -#include "libebl_CPU.h" - -int -x86_64_syscall_abi (Ebl *ebl __attribute__ ((unused)), - int *sp, int *pc, int *callno, int args[6]) -{ - *sp = 7; /* %rsp */ - *pc = 16; /* %rip */ - *callno = 0; /* %rax */ - args[0] = 5; /* %rdi */ - args[1] = 4; /* %rsi */ - args[2] = 1; /* %rdx */ - args[3] = 10; /* %r10 */ - args[4] = 8; /* %r8 */ - args[5] = 9; /* %r9 */ - return 0; -} diff --git a/src/backends/x86_corenote.c b/src/backends/x86_corenote.c deleted file mode 100644 index 629462c3..00000000 --- a/src/backends/x86_corenote.c +++ /dev/null @@ -1,51 +0,0 @@ -/* x86-specific core note handling, pieces common to x86-64 and i386. - Copyright (C) 2005-2010 Red Hat, Inc. - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify - it under the terms of either - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at - your option) any later version - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at - your option) any later version - - or both in parallel, as here. - - elfutils is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see <http://www.gnu.org/licenses/>. */ - -#define EXTRA_NOTES_IOPERM \ - case NT_386_IOPERM: \ - return ioperm_info (nhdr->n_descsz, \ - regs_offset, nregloc, reglocs, nitems, items); - -static int -ioperm_info (GElf_Word descsz, GElf_Word *regs_offset, - size_t *nregloc, const Ebl_Register_Location **reglocs, - size_t *nitems, const Ebl_Core_Item **items) -{ - static const Ebl_Core_Item ioperm_item = - { .type = ELF_T_WORD, .format = 'b', .name = "ioperm" }; - - if (descsz % 4 != 0) - return 0; - - *regs_offset = 0; - *nregloc = 0; - *reglocs = NULL; - *nitems = 1; - *items = &ioperm_item; - return 1; -} |