diff options
Diffstat (limited to 'include')
35 files changed, 1765 insertions, 1885 deletions
diff --git a/include/ChangeLog b/include/ChangeLog index 4ad0de858..c5b84b579 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,111 +1,3 @@ -2012-08-02 Sean Keys <skeys@ipdatasys.com> - - * elf/m68hc11.h: #define E_M68HC11_NO_BANK_WARNING - 0x000000200 - -2012-07-24 Stephan McCamant <smcc@cs.berkeley.edu> - Dr David Alan Gilbert <dave@treblig.org> - - PR binutils/13135 - * dis-asm.h (fprintf_ftype): Add ATTRIBUTE_FPTR_PRINTF_2. - -2012-07-13 Doug Evans <dje@google.com> - - * filenames.h: #include "hashtab.h". - (filename_hash, filename_eq): Declare. - -2012-07-13 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> - - * elf/s390.h (START_RELOC_NUMBERS): Define R_390_IRELATIVE reloc. - -2012-07-05 Sean Keys <skeys@ipdatasys.com> - - * opcode/xgate.h: Changed the format string for mode - XGATE_OP_DYA_MON. - -2012-06-18 Doug Evans <dje@google.com> - - * dwarf2.def (DW_OP): Add DW_OP_GNU_const_index. - -2012-06-12 Rafael Ávila de Espíndola <respindola@mozilla.com> - - * plugin-api.h (ld_plugin_output_file_type): Add LDPO_PIE. - -2012-06-08 Jakub Jelinek <jakub@redhat.com> - - * dwarf2.def (DW_FORM_GNU_ref_alt, DW_FORM_GNU_strp_alt): New - forms. - * dwarf2.h (enum dwarf_macro_record_type): Add - DW_MACRO_GNU_define_indirect_alt, DW_MACRO_GNU_undef_indirect_alt - and DW_MACRO_GNU_transparent_include_alt. - -2012-05-23 Doug Evans <dje@google.com> - - * leb128.h: #include stdint.h, inttypes.h. - (read_uleb128_to_uint64): Renamed from read_uleb128_to_ull. - Change to take a uint64_t * argument instead of unsigned long long. - (read_sleb128_to_uint64): Renamed from read_sleb128_to_ll. - Change to take an int64_t * argument instead of long long. - -2012-05-22 Doug Evans <dje@google.com> - - * leb128.h: New file. - -2012-05-19 Gary Funck <gary@intrepid.com> - - * dwarf2.def: Update comment re: UPC extensions to reference - DWARF4 specification. - -2012-05-15 James Murray <jsm@jsm-net.demon.co.uk> - - * dis-asm.h (print_insn_m9s12x): Prototype. - (print_insn_m9s12xg): Prototype. - -2012-05-03 Sean Keys <skeys@ipdatasys.com> - - * dis-asm.h (print_insn_xgate): Define. - (print_insn_xgate): Ditto. - Added new files for XGATE port. - -2012-05-02 Cary Coutant <ccoutant@google.com> - - * dwarf2.def: Remove DW_FORM_GNU_ref_index, - replace DW_AT_GNU_ref_base with DW_AT_GNU_ranges_base. - -2012-04-28 Doug Evans <dje@google.com> - - * dwarf2.def (DW_OP): Add DW_OP_GNU_addr_index. - -2012-04-27 Tom Tromey <tromey@redhat.com> - - * dwarf2.h: Wrap function declarations in extern "C". - -2012-04-27 Tom Tromey <tromey@redhat.com> - - * dwarf2.h (enum dwarf_tag, enum dwarf_form, enum dwarf_attribute) - (enum dwarf_location_atom, enum dwarf_type, enum - dwarf_call_frame_info): Remove. - (DW_TAG, DW_TAG_DUP, DW_FORM, DW_AT, DW_AT_DUP, DW_OP) - (DW_OP_DUP, DW_ATE, DW_ATE_DUP, DW_CFA): New macros. - Include dwarf2.def. - (get_DW_TAG_name, get_DW_AT_name, get_DW_FORM_name) - (get_DW_OP_name, get_DW_ATE_name): Declare. - * dwarf2.def: New file, from dwarf2.h. - -2012-04-12 David S. Miller <davem@davemloft.net> - - * elf/sparc.h (R_SPARC_WDISP10): New reloc. - * opcode/sparc.h: Define '=' as generating R_SPARC_WDISP10. - -2012-04-10 Tristan Gingold <gingold@adacore.com> - - * splay-tree.h: Conditionnaly includes stdint.h and inttypes.h - (libi_uhostptr_t, libi_shostptr_t): Remove, replaced by uintptr_t. - -2012-04-09 Roland McGrath <mcgrathr@google.com> - - * bfdlink.h (struct bfd_link_info): Add new member user_phdrs. - 2012-03-15 Alan Modra <amodra@gmail.com> * dis-asm.h (disassemble_init_powerpc): Declare. diff --git a/include/bfdlink.h b/include/bfdlink.h index d900b4783..c79d8f055 100644 --- a/include/bfdlink.h +++ b/include/bfdlink.h @@ -229,7 +229,7 @@ typedef enum {with_flags, without_flags} flag_type; /* A section flag list. */ struct flag_info_list { - flag_type with; + flag_type with; const char *name; bfd_boolean valid; struct flag_info_list *next; @@ -405,9 +405,6 @@ struct bfd_link_info /* TRUE if we should warn alternate ELF machine code. */ unsigned int warn_alternate_em: 1; - /* TRUE if the linker script contained an explicit PHDRS command. */ - unsigned int user_phdrs: 1; - /* Char that may appear as the first char of a symbol, but should be skipped (like symbol_leading_char) when looking up symbols in wrap_hash. Used by PowerPC Linux for 'dot' symbols. */ @@ -677,7 +674,7 @@ struct bfd_link_order } indirect; struct { - /* Size of contents, or zero when contents should be filled by + /* Size of contents, or zero when contents should be filled by the architecture-dependent fill function. A non-zero value allows filling of the output section with an arbitrary repeated pattern. */ diff --git a/include/dis-asm.h b/include/dis-asm.h index 661e7cf58..c9cbfbb32 100644 --- a/include/dis-asm.h +++ b/include/dis-asm.h @@ -35,7 +35,7 @@ extern "C" { #include <stdio.h> #include "bfd.h" - typedef int (*fprintf_ftype) (void *, const char*, ...) ATTRIBUTE_FPTR_PRINTF_2; + typedef int (*fprintf_ftype) (void *, const char*, ...) /*ATTRIBUTE_FPTR_PRINTF_2*/; enum dis_insn_type { @@ -260,8 +260,6 @@ extern int print_insn_m32c (bfd_vma, disassemble_info *); extern int print_insn_m32r (bfd_vma, disassemble_info *); extern int print_insn_m68hc11 (bfd_vma, disassemble_info *); extern int print_insn_m68hc12 (bfd_vma, disassemble_info *); -extern int print_insn_m9s12x (bfd_vma, disassemble_info *); -extern int print_insn_m9s12xg (bfd_vma, disassemble_info *); extern int print_insn_m68k (bfd_vma, disassemble_info *); extern int print_insn_m88k (bfd_vma, disassemble_info *); extern int print_insn_mcore (bfd_vma, disassemble_info *); @@ -295,7 +293,6 @@ extern int print_insn_v850 (bfd_vma, disassemble_info *); extern int print_insn_vax (bfd_vma, disassemble_info *); extern int print_insn_w65 (bfd_vma, disassemble_info *); extern int print_insn_xc16x (bfd_vma, disassemble_info *); -extern int print_insn_xgate (bfd_vma, disassemble_info *); extern int print_insn_xstormy16 (bfd_vma, disassemble_info *); extern int print_insn_xtensa (bfd_vma, disassemble_info *); extern int print_insn_z80 (bfd_vma, disassemble_info *); diff --git a/include/dwarf2.def b/include/dwarf2.def deleted file mode 100644 index 3c3dfccf3..000000000 --- a/include/dwarf2.def +++ /dev/null @@ -1,685 +0,0 @@ -/* -*- c -*- - Declarations and definitions of codes relating to the DWARF2 and - DWARF3 symbolic debugging information formats. - Copyright (C) 1992, 1993, 1995, 1996, 1997, 1999, 2000, 2001, 2002, - 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 - Free Software Foundation, Inc. - - Written by Gary Funck (gary@intrepid.com) The Ada Joint Program - Office (AJPO), Florida State University and Silicon Graphics Inc. - provided support for this effort -- June 21, 1995. - - Derived from the DWARF 1 implementation written by Ron Guilmette - (rfg@netcom.com), November 1990. - - This file is part of GCC. - - GCC is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free - Software Foundation; either version 3, or (at your option) any later - version. - - GCC 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. - - Under Section 7 of GPL version 3, you are granted additional - permissions described in the GCC Runtime Library Exception, version - 3.1, as published by the Free Software Foundation. - - You should have received a copy of the GNU General Public License and - a copy of the GCC Runtime Library Exception along with this program; - see the files COPYING3 and COPYING.RUNTIME respectively. If not, see - <http://www.gnu.org/licenses/>. */ - -/* This file is derived from the DWARF specification (a public document) - Revision 2.0.0 (July 27, 1993) developed by the UNIX International - Programming Languages Special Interest Group (UI/PLSIG) and distributed - by UNIX International. Copies of this specification are available from - UNIX International, 20 Waterview Boulevard, Parsippany, NJ, 07054. - - This file also now contains definitions from the DWARF 3 specification - published Dec 20, 2005, available from: http://dwarf.freestandards.org. - - This file also now contains definitions from the DWARF 4 - specification, available from: http://dwarfstd.org/ */ - -/* This file declares various DWARF-related constants using a set of - macros which can be redefined by the including file. - - The macros are in sections. Each section corresponds to a single - set of DWARF constants and has a corresponding key. The key is - used in all the macro names. - - The sections are TAG (for DW_TAG_ constants), FORM (DW_FORM_), AT - (DW_AT_), OP (DW_OP_), ATE (DW_ATE_), and CFA (DW_CFA_). - - Using TAG as an example, the following macros may be used for each - key: - - DW_FIRST_TAG(name, value) - Introduce the first DW_TAG constant. - - DW_TAG(name, value) - Define a subsequent constant. - - DW_TAG_DUP(name, value) - Define a subsequent constant whose value - is a duplicate of some other constant. Not all keys use the _DUP - macro form. If more than one name shares a value, then the base - (DW_TAG) form will be the preferred name and DW_TAG_DUP will hold - any alternate names. - - DW_END_TAG - Invoked at the end of the DW_TAG constants. */ - -DW_FIRST_TAG (DW_TAG_padding, 0x00) -DW_TAG (DW_TAG_array_type, 0x01) -DW_TAG (DW_TAG_class_type, 0x02) -DW_TAG (DW_TAG_entry_point, 0x03) -DW_TAG (DW_TAG_enumeration_type, 0x04) -DW_TAG (DW_TAG_formal_parameter, 0x05) -DW_TAG (DW_TAG_imported_declaration, 0x08) -DW_TAG (DW_TAG_label, 0x0a) -DW_TAG (DW_TAG_lexical_block, 0x0b) -DW_TAG (DW_TAG_member, 0x0d) -DW_TAG (DW_TAG_pointer_type, 0x0f) -DW_TAG (DW_TAG_reference_type, 0x10) -DW_TAG (DW_TAG_compile_unit, 0x11) -DW_TAG (DW_TAG_string_type, 0x12) -DW_TAG (DW_TAG_structure_type, 0x13) -DW_TAG (DW_TAG_subroutine_type, 0x15) -DW_TAG (DW_TAG_typedef, 0x16) -DW_TAG (DW_TAG_union_type, 0x17) -DW_TAG (DW_TAG_unspecified_parameters, 0x18) -DW_TAG (DW_TAG_variant, 0x19) -DW_TAG (DW_TAG_common_block, 0x1a) -DW_TAG (DW_TAG_common_inclusion, 0x1b) -DW_TAG (DW_TAG_inheritance, 0x1c) -DW_TAG (DW_TAG_inlined_subroutine, 0x1d) -DW_TAG (DW_TAG_module, 0x1e) -DW_TAG (DW_TAG_ptr_to_member_type, 0x1f) -DW_TAG (DW_TAG_set_type, 0x20) -DW_TAG (DW_TAG_subrange_type, 0x21) -DW_TAG (DW_TAG_with_stmt, 0x22) -DW_TAG (DW_TAG_access_declaration, 0x23) -DW_TAG (DW_TAG_base_type, 0x24) -DW_TAG (DW_TAG_catch_block, 0x25) -DW_TAG (DW_TAG_const_type, 0x26) -DW_TAG (DW_TAG_constant, 0x27) -DW_TAG (DW_TAG_enumerator, 0x28) -DW_TAG (DW_TAG_file_type, 0x29) -DW_TAG (DW_TAG_friend, 0x2a) -DW_TAG (DW_TAG_namelist, 0x2b) -DW_TAG (DW_TAG_namelist_item, 0x2c) -DW_TAG (DW_TAG_packed_type, 0x2d) -DW_TAG (DW_TAG_subprogram, 0x2e) -DW_TAG (DW_TAG_template_type_param, 0x2f) -DW_TAG (DW_TAG_template_value_param, 0x30) -DW_TAG (DW_TAG_thrown_type, 0x31) -DW_TAG (DW_TAG_try_block, 0x32) -DW_TAG (DW_TAG_variant_part, 0x33) -DW_TAG (DW_TAG_variable, 0x34) -DW_TAG (DW_TAG_volatile_type, 0x35) -/* DWARF 3. */ -DW_TAG (DW_TAG_dwarf_procedure, 0x36) -DW_TAG (DW_TAG_restrict_type, 0x37) -DW_TAG (DW_TAG_interface_type, 0x38) -DW_TAG (DW_TAG_namespace, 0x39) -DW_TAG (DW_TAG_imported_module, 0x3a) -DW_TAG (DW_TAG_unspecified_type, 0x3b) -DW_TAG (DW_TAG_partial_unit, 0x3c) -DW_TAG (DW_TAG_imported_unit, 0x3d) -DW_TAG (DW_TAG_condition, 0x3f) -DW_TAG (DW_TAG_shared_type, 0x40) -/* DWARF 4. */ -DW_TAG (DW_TAG_type_unit, 0x41) -DW_TAG (DW_TAG_rvalue_reference_type, 0x42) -DW_TAG (DW_TAG_template_alias, 0x43) - -DW_TAG_DUP (DW_TAG_lo_user, 0x4080) -DW_TAG_DUP (DW_TAG_hi_user, 0xffff) - -/* SGI/MIPS Extensions. */ -DW_TAG (DW_TAG_MIPS_loop, 0x4081) - -/* HP extensions. See: ftp://ftp.hp.com/pub/lang/tools/WDB/wdb-4.0.tar.gz . */ -DW_TAG (DW_TAG_HP_array_descriptor, 0x4090) -DW_TAG (DW_TAG_HP_Bliss_field, 0x4091) -DW_TAG (DW_TAG_HP_Bliss_field_set, 0x4092) - -/* GNU extensions. */ -DW_TAG (DW_TAG_format_label, 0x4101) /* For FORTRAN 77 and Fortran 90. */ -DW_TAG (DW_TAG_function_template, 0x4102) /* For C++. */ -DW_TAG (DW_TAG_class_template, 0x4103) /* For C++. */ -DW_TAG (DW_TAG_GNU_BINCL, 0x4104) -DW_TAG (DW_TAG_GNU_EINCL, 0x4105) -/* Template template parameter. - See http://gcc.gnu.org/wiki/TemplateParmsDwarf . */ -DW_TAG (DW_TAG_GNU_template_template_param, 0x4106) - -/* Template parameter pack extension, specified at - http://wiki.dwarfstd.org/index.php?title=C%2B%2B0x:_Variadic_templates - The values of these two TAGS are in the DW_TAG_GNU_* space until the tags - are properly part of DWARF 5. */ -DW_TAG (DW_TAG_GNU_template_parameter_pack, 0x4107) -DW_TAG (DW_TAG_GNU_formal_parameter_pack, 0x4108) -/* The GNU call site extension, specified at - http://www.dwarfstd.org/ShowIssue.php?issue=100909.2&type=open . - The values of these two TAGS are in the DW_TAG_GNU_* space until the tags - are properly part of DWARF 5. */ -DW_TAG (DW_TAG_GNU_call_site, 0x4109) -DW_TAG (DW_TAG_GNU_call_site_parameter, 0x410a) -/* Extensions for UPC. See: http://dwarfstd.org/doc/DWARF4.pdf. */ -DW_TAG (DW_TAG_upc_shared_type, 0x8765) -DW_TAG (DW_TAG_upc_strict_type, 0x8766) -DW_TAG (DW_TAG_upc_relaxed_type, 0x8767) -/* PGI (STMicroelectronics) extensions. No documentation available. */ -DW_TAG (DW_TAG_PGI_kanji_type, 0xA000) -DW_TAG (DW_TAG_PGI_interface_block, 0xA020) -DW_END_TAG - -DW_FIRST_FORM (DW_FORM_addr, 0x01) -DW_FORM (DW_FORM_block2, 0x03) -DW_FORM (DW_FORM_block4, 0x04) -DW_FORM (DW_FORM_data2, 0x05) -DW_FORM (DW_FORM_data4, 0x06) -DW_FORM (DW_FORM_data8, 0x07) -DW_FORM (DW_FORM_string, 0x08) -DW_FORM (DW_FORM_block, 0x09) -DW_FORM (DW_FORM_block1, 0x0a) -DW_FORM (DW_FORM_data1, 0x0b) -DW_FORM (DW_FORM_flag, 0x0c) -DW_FORM (DW_FORM_sdata, 0x0d) -DW_FORM (DW_FORM_strp, 0x0e) -DW_FORM (DW_FORM_udata, 0x0f) -DW_FORM (DW_FORM_ref_addr, 0x10) -DW_FORM (DW_FORM_ref1, 0x11) -DW_FORM (DW_FORM_ref2, 0x12) -DW_FORM (DW_FORM_ref4, 0x13) -DW_FORM (DW_FORM_ref8, 0x14) -DW_FORM (DW_FORM_ref_udata, 0x15) -DW_FORM (DW_FORM_indirect, 0x16) -/* DWARF 4. */ -DW_FORM (DW_FORM_sec_offset, 0x17) -DW_FORM (DW_FORM_exprloc, 0x18) -DW_FORM (DW_FORM_flag_present, 0x19) -DW_FORM (DW_FORM_ref_sig8, 0x20) -/* Extensions for Fission. See http://gcc.gnu.org/wiki/DebugFission. */ -DW_FORM (DW_FORM_GNU_addr_index, 0x1f01) -DW_FORM (DW_FORM_GNU_str_index, 0x1f02) -/* Extensions for DWZ multifile. - See http://www.dwarfstd.org/ShowIssue.php?issue=120604.1&type=open . */ -DW_FORM (DW_FORM_GNU_ref_alt, 0x1f20) -DW_FORM (DW_FORM_GNU_strp_alt, 0x1f21) -DW_END_FORM - -DW_FIRST_AT (DW_AT_sibling, 0x01) -DW_AT (DW_AT_location, 0x02) -DW_AT (DW_AT_name, 0x03) -DW_AT (DW_AT_ordering, 0x09) -DW_AT (DW_AT_subscr_data, 0x0a) -DW_AT (DW_AT_byte_size, 0x0b) -DW_AT (DW_AT_bit_offset, 0x0c) -DW_AT (DW_AT_bit_size, 0x0d) -DW_AT (DW_AT_element_list, 0x0f) -DW_AT (DW_AT_stmt_list, 0x10) -DW_AT (DW_AT_low_pc, 0x11) -DW_AT (DW_AT_high_pc, 0x12) -DW_AT (DW_AT_language, 0x13) -DW_AT (DW_AT_member, 0x14) -DW_AT (DW_AT_discr, 0x15) -DW_AT (DW_AT_discr_value, 0x16) -DW_AT (DW_AT_visibility, 0x17) -DW_AT (DW_AT_import, 0x18) -DW_AT (DW_AT_string_length, 0x19) -DW_AT (DW_AT_common_reference, 0x1a) -DW_AT (DW_AT_comp_dir, 0x1b) -DW_AT (DW_AT_const_value, 0x1c) -DW_AT (DW_AT_containing_type, 0x1d) -DW_AT (DW_AT_default_value, 0x1e) -DW_AT (DW_AT_inline, 0x20) -DW_AT (DW_AT_is_optional, 0x21) -DW_AT (DW_AT_lower_bound, 0x22) -DW_AT (DW_AT_producer, 0x25) -DW_AT (DW_AT_prototyped, 0x27) -DW_AT (DW_AT_return_addr, 0x2a) -DW_AT (DW_AT_start_scope, 0x2c) -DW_AT (DW_AT_bit_stride, 0x2e) -DW_AT (DW_AT_upper_bound, 0x2f) -DW_AT (DW_AT_abstract_origin, 0x31) -DW_AT (DW_AT_accessibility, 0x32) -DW_AT (DW_AT_address_class, 0x33) -DW_AT (DW_AT_artificial, 0x34) -DW_AT (DW_AT_base_types, 0x35) -DW_AT (DW_AT_calling_convention, 0x36) -DW_AT (DW_AT_count, 0x37) -DW_AT (DW_AT_data_member_location, 0x38) -DW_AT (DW_AT_decl_column, 0x39) -DW_AT (DW_AT_decl_file, 0x3a) -DW_AT (DW_AT_decl_line, 0x3b) -DW_AT (DW_AT_declaration, 0x3c) -DW_AT (DW_AT_discr_list, 0x3d) -DW_AT (DW_AT_encoding, 0x3e) -DW_AT (DW_AT_external, 0x3f) -DW_AT (DW_AT_frame_base, 0x40) -DW_AT (DW_AT_friend, 0x41) -DW_AT (DW_AT_identifier_case, 0x42) -DW_AT (DW_AT_macro_info, 0x43) -DW_AT (DW_AT_namelist_items, 0x44) -DW_AT (DW_AT_priority, 0x45) -DW_AT (DW_AT_segment, 0x46) -DW_AT (DW_AT_specification, 0x47) -DW_AT (DW_AT_static_link, 0x48) -DW_AT (DW_AT_type, 0x49) -DW_AT (DW_AT_use_location, 0x4a) -DW_AT (DW_AT_variable_parameter, 0x4b) -DW_AT (DW_AT_virtuality, 0x4c) -DW_AT (DW_AT_vtable_elem_location, 0x4d) -/* DWARF 3 values. */ -DW_AT (DW_AT_allocated, 0x4e) -DW_AT (DW_AT_associated, 0x4f) -DW_AT (DW_AT_data_location, 0x50) -DW_AT (DW_AT_byte_stride, 0x51) -DW_AT (DW_AT_entry_pc, 0x52) -DW_AT (DW_AT_use_UTF8, 0x53) -DW_AT (DW_AT_extension, 0x54) -DW_AT (DW_AT_ranges, 0x55) -DW_AT (DW_AT_trampoline, 0x56) -DW_AT (DW_AT_call_column, 0x57) -DW_AT (DW_AT_call_file, 0x58) -DW_AT (DW_AT_call_line, 0x59) -DW_AT (DW_AT_description, 0x5a) -DW_AT (DW_AT_binary_scale, 0x5b) -DW_AT (DW_AT_decimal_scale, 0x5c) -DW_AT (DW_AT_small, 0x5d) -DW_AT (DW_AT_decimal_sign, 0x5e) -DW_AT (DW_AT_digit_count, 0x5f) -DW_AT (DW_AT_picture_string, 0x60) -DW_AT (DW_AT_mutable, 0x61) -DW_AT (DW_AT_threads_scaled, 0x62) -DW_AT (DW_AT_explicit, 0x63) -DW_AT (DW_AT_object_pointer, 0x64) -DW_AT (DW_AT_endianity, 0x65) -DW_AT (DW_AT_elemental, 0x66) -DW_AT (DW_AT_pure, 0x67) -DW_AT (DW_AT_recursive, 0x68) -/* DWARF 4. */ -DW_AT (DW_AT_signature, 0x69) -DW_AT (DW_AT_main_subprogram, 0x6a) -DW_AT (DW_AT_data_bit_offset, 0x6b) -DW_AT (DW_AT_const_expr, 0x6c) -DW_AT (DW_AT_enum_class, 0x6d) -DW_AT (DW_AT_linkage_name, 0x6e) - -DW_AT_DUP (DW_AT_lo_user, 0x2000) /* Implementation-defined range start. */ -DW_AT_DUP (DW_AT_hi_user, 0x3fff) /* Implementation-defined range end. */ - -/* SGI/MIPS extensions. */ -DW_AT (DW_AT_MIPS_fde, 0x2001) -DW_AT (DW_AT_MIPS_loop_begin, 0x2002) -DW_AT (DW_AT_MIPS_tail_loop_begin, 0x2003) -DW_AT (DW_AT_MIPS_epilog_begin, 0x2004) -DW_AT (DW_AT_MIPS_loop_unroll_factor, 0x2005) -DW_AT (DW_AT_MIPS_software_pipeline_depth, 0x2006) -DW_AT (DW_AT_MIPS_linkage_name, 0x2007) -DW_AT (DW_AT_MIPS_stride, 0x2008) -DW_AT (DW_AT_MIPS_abstract_name, 0x2009) -DW_AT (DW_AT_MIPS_clone_origin, 0x200a) -DW_AT (DW_AT_MIPS_has_inlines, 0x200b) -/* HP extensions. */ -DW_AT (DW_AT_HP_block_index, 0x2000) -DW_AT_DUP (DW_AT_HP_unmodifiable, 0x2001) /* Same as DW_AT_MIPS_fde. */ -DW_AT_DUP (DW_AT_HP_prologue, 0x2005) /* Same as DW_AT_MIPS_loop_unroll. */ -DW_AT_DUP (DW_AT_HP_epilogue, 0x2008) /* Same as DW_AT_MIPS_stride. */ -DW_AT (DW_AT_HP_actuals_stmt_list, 0x2010) -DW_AT (DW_AT_HP_proc_per_section, 0x2011) -DW_AT (DW_AT_HP_raw_data_ptr, 0x2012) -DW_AT (DW_AT_HP_pass_by_reference, 0x2013) -DW_AT (DW_AT_HP_opt_level, 0x2014) -DW_AT (DW_AT_HP_prof_version_id, 0x2015) -DW_AT (DW_AT_HP_opt_flags, 0x2016) -DW_AT (DW_AT_HP_cold_region_low_pc, 0x2017) -DW_AT (DW_AT_HP_cold_region_high_pc, 0x2018) -DW_AT (DW_AT_HP_all_variables_modifiable, 0x2019) -DW_AT (DW_AT_HP_linkage_name, 0x201a) -DW_AT (DW_AT_HP_prof_flags, 0x201b) /* In comp unit of procs_info for -g. */ -DW_AT (DW_AT_HP_unit_name, 0x201f) -DW_AT (DW_AT_HP_unit_size, 0x2020) -DW_AT (DW_AT_HP_widened_byte_size, 0x2021) -DW_AT (DW_AT_HP_definition_points, 0x2022) -DW_AT (DW_AT_HP_default_location, 0x2023) -DW_AT (DW_AT_HP_is_result_param, 0x2029) - -/* GNU extensions. */ -DW_AT (DW_AT_sf_names, 0x2101) -DW_AT (DW_AT_src_info, 0x2102) -DW_AT (DW_AT_mac_info, 0x2103) -DW_AT (DW_AT_src_coords, 0x2104) -DW_AT (DW_AT_body_begin, 0x2105) -DW_AT (DW_AT_body_end, 0x2106) -DW_AT (DW_AT_GNU_vector, 0x2107) -/* Thread-safety annotations. - See http://gcc.gnu.org/wiki/ThreadSafetyAnnotation . */ -DW_AT (DW_AT_GNU_guarded_by, 0x2108) -DW_AT (DW_AT_GNU_pt_guarded_by, 0x2109) -DW_AT (DW_AT_GNU_guarded, 0x210a) -DW_AT (DW_AT_GNU_pt_guarded, 0x210b) -DW_AT (DW_AT_GNU_locks_excluded, 0x210c) -DW_AT (DW_AT_GNU_exclusive_locks_required, 0x210d) -DW_AT (DW_AT_GNU_shared_locks_required, 0x210e) -/* One-definition rule violation detection. - See http://gcc.gnu.org/wiki/DwarfSeparateTypeInfo . */ -DW_AT (DW_AT_GNU_odr_signature, 0x210f) -/* Template template argument name. - See http://gcc.gnu.org/wiki/TemplateParmsDwarf . */ -DW_AT (DW_AT_GNU_template_name, 0x2110) -/* The GNU call site extension. - See http://www.dwarfstd.org/ShowIssue.php?issue=100909.2&type=open . */ -DW_AT (DW_AT_GNU_call_site_value, 0x2111) -DW_AT (DW_AT_GNU_call_site_data_value, 0x2112) -DW_AT (DW_AT_GNU_call_site_target, 0x2113) -DW_AT (DW_AT_GNU_call_site_target_clobbered, 0x2114) -DW_AT (DW_AT_GNU_tail_call, 0x2115) -DW_AT (DW_AT_GNU_all_tail_call_sites, 0x2116) -DW_AT (DW_AT_GNU_all_call_sites, 0x2117) -DW_AT (DW_AT_GNU_all_source_call_sites, 0x2118) -/* Section offset into .debug_macro section. */ -DW_AT (DW_AT_GNU_macros, 0x2119) -/* Extensions for Fission. See http://gcc.gnu.org/wiki/DebugFission. */ -DW_AT (DW_AT_GNU_dwo_name, 0x2130) -DW_AT (DW_AT_GNU_dwo_id, 0x2131) -DW_AT (DW_AT_GNU_ranges_base, 0x2132) -DW_AT (DW_AT_GNU_addr_base, 0x2133) -DW_AT (DW_AT_GNU_pubnames, 0x2134) -DW_AT (DW_AT_GNU_pubtypes, 0x2135) -/* VMS extensions. */ -DW_AT (DW_AT_VMS_rtnbeg_pd_address, 0x2201) -/* GNAT extensions. */ -/* GNAT descriptive type. - See http://gcc.gnu.org/wiki/DW_AT_GNAT_descriptive_type . */ -DW_AT (DW_AT_use_GNAT_descriptive_type, 0x2301) -DW_AT (DW_AT_GNAT_descriptive_type, 0x2302) -/* UPC extension. */ -DW_AT (DW_AT_upc_threads_scaled, 0x3210) -/* PGI (STMicroelectronics) extensions. */ -DW_AT (DW_AT_PGI_lbase, 0x3a00) -DW_AT (DW_AT_PGI_soffset, 0x3a01) -DW_AT (DW_AT_PGI_lstride, 0x3a02) -DW_END_AT - -DW_FIRST_OP (DW_OP_addr, 0x03) -DW_OP (DW_OP_deref, 0x06) -DW_OP (DW_OP_const1u, 0x08) -DW_OP (DW_OP_const1s, 0x09) -DW_OP (DW_OP_const2u, 0x0a) -DW_OP (DW_OP_const2s, 0x0b) -DW_OP (DW_OP_const4u, 0x0c) -DW_OP (DW_OP_const4s, 0x0d) -DW_OP (DW_OP_const8u, 0x0e) -DW_OP (DW_OP_const8s, 0x0f) -DW_OP (DW_OP_constu, 0x10) -DW_OP (DW_OP_consts, 0x11) -DW_OP (DW_OP_dup, 0x12) -DW_OP (DW_OP_drop, 0x13) -DW_OP (DW_OP_over, 0x14) -DW_OP (DW_OP_pick, 0x15) -DW_OP (DW_OP_swap, 0x16) -DW_OP (DW_OP_rot, 0x17) -DW_OP (DW_OP_xderef, 0x18) -DW_OP (DW_OP_abs, 0x19) -DW_OP (DW_OP_and, 0x1a) -DW_OP (DW_OP_div, 0x1b) -DW_OP (DW_OP_minus, 0x1c) -DW_OP (DW_OP_mod, 0x1d) -DW_OP (DW_OP_mul, 0x1e) -DW_OP (DW_OP_neg, 0x1f) -DW_OP (DW_OP_not, 0x20) -DW_OP (DW_OP_or, 0x21) -DW_OP (DW_OP_plus, 0x22) -DW_OP (DW_OP_plus_uconst, 0x23) -DW_OP (DW_OP_shl, 0x24) -DW_OP (DW_OP_shr, 0x25) -DW_OP (DW_OP_shra, 0x26) -DW_OP (DW_OP_xor, 0x27) -DW_OP (DW_OP_bra, 0x28) -DW_OP (DW_OP_eq, 0x29) -DW_OP (DW_OP_ge, 0x2a) -DW_OP (DW_OP_gt, 0x2b) -DW_OP (DW_OP_le, 0x2c) -DW_OP (DW_OP_lt, 0x2d) -DW_OP (DW_OP_ne, 0x2e) -DW_OP (DW_OP_skip, 0x2f) -DW_OP (DW_OP_lit0, 0x30) -DW_OP (DW_OP_lit1, 0x31) -DW_OP (DW_OP_lit2, 0x32) -DW_OP (DW_OP_lit3, 0x33) -DW_OP (DW_OP_lit4, 0x34) -DW_OP (DW_OP_lit5, 0x35) -DW_OP (DW_OP_lit6, 0x36) -DW_OP (DW_OP_lit7, 0x37) -DW_OP (DW_OP_lit8, 0x38) -DW_OP (DW_OP_lit9, 0x39) -DW_OP (DW_OP_lit10, 0x3a) -DW_OP (DW_OP_lit11, 0x3b) -DW_OP (DW_OP_lit12, 0x3c) -DW_OP (DW_OP_lit13, 0x3d) -DW_OP (DW_OP_lit14, 0x3e) -DW_OP (DW_OP_lit15, 0x3f) -DW_OP (DW_OP_lit16, 0x40) -DW_OP (DW_OP_lit17, 0x41) -DW_OP (DW_OP_lit18, 0x42) -DW_OP (DW_OP_lit19, 0x43) -DW_OP (DW_OP_lit20, 0x44) -DW_OP (DW_OP_lit21, 0x45) -DW_OP (DW_OP_lit22, 0x46) -DW_OP (DW_OP_lit23, 0x47) -DW_OP (DW_OP_lit24, 0x48) -DW_OP (DW_OP_lit25, 0x49) -DW_OP (DW_OP_lit26, 0x4a) -DW_OP (DW_OP_lit27, 0x4b) -DW_OP (DW_OP_lit28, 0x4c) -DW_OP (DW_OP_lit29, 0x4d) -DW_OP (DW_OP_lit30, 0x4e) -DW_OP (DW_OP_lit31, 0x4f) -DW_OP (DW_OP_reg0, 0x50) -DW_OP (DW_OP_reg1, 0x51) -DW_OP (DW_OP_reg2, 0x52) -DW_OP (DW_OP_reg3, 0x53) -DW_OP (DW_OP_reg4, 0x54) -DW_OP (DW_OP_reg5, 0x55) -DW_OP (DW_OP_reg6, 0x56) -DW_OP (DW_OP_reg7, 0x57) -DW_OP (DW_OP_reg8, 0x58) -DW_OP (DW_OP_reg9, 0x59) -DW_OP (DW_OP_reg10, 0x5a) -DW_OP (DW_OP_reg11, 0x5b) -DW_OP (DW_OP_reg12, 0x5c) -DW_OP (DW_OP_reg13, 0x5d) -DW_OP (DW_OP_reg14, 0x5e) -DW_OP (DW_OP_reg15, 0x5f) -DW_OP (DW_OP_reg16, 0x60) -DW_OP (DW_OP_reg17, 0x61) -DW_OP (DW_OP_reg18, 0x62) -DW_OP (DW_OP_reg19, 0x63) -DW_OP (DW_OP_reg20, 0x64) -DW_OP (DW_OP_reg21, 0x65) -DW_OP (DW_OP_reg22, 0x66) -DW_OP (DW_OP_reg23, 0x67) -DW_OP (DW_OP_reg24, 0x68) -DW_OP (DW_OP_reg25, 0x69) -DW_OP (DW_OP_reg26, 0x6a) -DW_OP (DW_OP_reg27, 0x6b) -DW_OP (DW_OP_reg28, 0x6c) -DW_OP (DW_OP_reg29, 0x6d) -DW_OP (DW_OP_reg30, 0x6e) -DW_OP (DW_OP_reg31, 0x6f) -DW_OP (DW_OP_breg0, 0x70) -DW_OP (DW_OP_breg1, 0x71) -DW_OP (DW_OP_breg2, 0x72) -DW_OP (DW_OP_breg3, 0x73) -DW_OP (DW_OP_breg4, 0x74) -DW_OP (DW_OP_breg5, 0x75) -DW_OP (DW_OP_breg6, 0x76) -DW_OP (DW_OP_breg7, 0x77) -DW_OP (DW_OP_breg8, 0x78) -DW_OP (DW_OP_breg9, 0x79) -DW_OP (DW_OP_breg10, 0x7a) -DW_OP (DW_OP_breg11, 0x7b) -DW_OP (DW_OP_breg12, 0x7c) -DW_OP (DW_OP_breg13, 0x7d) -DW_OP (DW_OP_breg14, 0x7e) -DW_OP (DW_OP_breg15, 0x7f) -DW_OP (DW_OP_breg16, 0x80) -DW_OP (DW_OP_breg17, 0x81) -DW_OP (DW_OP_breg18, 0x82) -DW_OP (DW_OP_breg19, 0x83) -DW_OP (DW_OP_breg20, 0x84) -DW_OP (DW_OP_breg21, 0x85) -DW_OP (DW_OP_breg22, 0x86) -DW_OP (DW_OP_breg23, 0x87) -DW_OP (DW_OP_breg24, 0x88) -DW_OP (DW_OP_breg25, 0x89) -DW_OP (DW_OP_breg26, 0x8a) -DW_OP (DW_OP_breg27, 0x8b) -DW_OP (DW_OP_breg28, 0x8c) -DW_OP (DW_OP_breg29, 0x8d) -DW_OP (DW_OP_breg30, 0x8e) -DW_OP (DW_OP_breg31, 0x8f) -DW_OP (DW_OP_regx, 0x90) -DW_OP (DW_OP_fbreg, 0x91) -DW_OP (DW_OP_bregx, 0x92) -DW_OP (DW_OP_piece, 0x93) -DW_OP (DW_OP_deref_size, 0x94) -DW_OP (DW_OP_xderef_size, 0x95) -DW_OP (DW_OP_nop, 0x96) -/* DWARF 3 extensions. */ -DW_OP (DW_OP_push_object_address, 0x97) -DW_OP (DW_OP_call2, 0x98) -DW_OP (DW_OP_call4, 0x99) -DW_OP (DW_OP_call_ref, 0x9a) -DW_OP (DW_OP_form_tls_address, 0x9b) -DW_OP (DW_OP_call_frame_cfa, 0x9c) -DW_OP (DW_OP_bit_piece, 0x9d) - -/* DWARF 4 extensions. */ -DW_OP (DW_OP_implicit_value, 0x9e) -DW_OP (DW_OP_stack_value, 0x9f) - -DW_OP_DUP (DW_OP_lo_user, 0xe0) /* Implementation-defined range start. */ -DW_OP_DUP (DW_OP_hi_user, 0xff) /* Implementation-defined range end. */ - -/* GNU extensions. */ -DW_OP (DW_OP_GNU_push_tls_address, 0xe0) -/* The following is for marking variables that are uninitialized. */ -DW_OP (DW_OP_GNU_uninit, 0xf0) -DW_OP (DW_OP_GNU_encoded_addr, 0xf1) -/* The GNU implicit pointer extension. - See http://www.dwarfstd.org/ShowIssue.php?issue=100831.1&type=open . */ -DW_OP (DW_OP_GNU_implicit_pointer, 0xf2) -/* The GNU entry value extension. - See http://www.dwarfstd.org/ShowIssue.php?issue=100909.1&type=open . */ -DW_OP (DW_OP_GNU_entry_value, 0xf3) -/* The GNU typed stack extension. - See http://www.dwarfstd.org/doc/040408.1.html . */ -DW_OP (DW_OP_GNU_const_type, 0xf4) -DW_OP (DW_OP_GNU_regval_type, 0xf5) -DW_OP (DW_OP_GNU_deref_type, 0xf6) -DW_OP (DW_OP_GNU_convert, 0xf7) -DW_OP (DW_OP_GNU_reinterpret, 0xf9) -/* The GNU parameter ref extension. */ -DW_OP (DW_OP_GNU_parameter_ref, 0xfa) -/* Extension for Fission. See http://gcc.gnu.org/wiki/DebugFission. */ -DW_OP (DW_OP_GNU_addr_index, 0xfb) -DW_OP (DW_OP_GNU_const_index, 0xfc) -/* HP extensions. */ -DW_OP_DUP (DW_OP_HP_unknown, 0xe0) /* Ouch, the same as GNU_push_tls_address. */ -DW_OP (DW_OP_HP_is_value, 0xe1) -DW_OP (DW_OP_HP_fltconst4, 0xe2) -DW_OP (DW_OP_HP_fltconst8, 0xe3) -DW_OP (DW_OP_HP_mod_range, 0xe4) -DW_OP (DW_OP_HP_unmod_range, 0xe5) -DW_OP (DW_OP_HP_tls, 0xe6) -/* PGI (STMicroelectronics) extensions. */ -DW_OP (DW_OP_PGI_omp_thread_num, 0xf8) -DW_END_OP - -DW_FIRST_ATE (DW_ATE_void, 0x0) -DW_ATE (DW_ATE_address, 0x1) -DW_ATE (DW_ATE_boolean, 0x2) -DW_ATE (DW_ATE_complex_float, 0x3) -DW_ATE (DW_ATE_float, 0x4) -DW_ATE (DW_ATE_signed, 0x5) -DW_ATE (DW_ATE_signed_char, 0x6) -DW_ATE (DW_ATE_unsigned, 0x7) -DW_ATE (DW_ATE_unsigned_char, 0x8) -/* DWARF 3. */ -DW_ATE (DW_ATE_imaginary_float, 0x9) -DW_ATE (DW_ATE_packed_decimal, 0xa) -DW_ATE (DW_ATE_numeric_string, 0xb) -DW_ATE (DW_ATE_edited, 0xc) -DW_ATE (DW_ATE_signed_fixed, 0xd) -DW_ATE (DW_ATE_unsigned_fixed, 0xe) -DW_ATE (DW_ATE_decimal_float, 0xf) -/* DWARF 4. */ -DW_ATE (DW_ATE_UTF, 0x10) - -DW_ATE_DUP (DW_ATE_lo_user, 0x80) -DW_ATE_DUP (DW_ATE_hi_user, 0xff) - -/* HP extensions. */ -DW_ATE (DW_ATE_HP_float80, 0x80) /* Floating-point (80 bit). */ -DW_ATE (DW_ATE_HP_complex_float80, 0x81) /* Complex floating-point (80 bit). */ -DW_ATE (DW_ATE_HP_float128, 0x82) /* Floating-point (128 bit). */ -DW_ATE (DW_ATE_HP_complex_float128, 0x83) /* Complex fp (128 bit). */ -DW_ATE (DW_ATE_HP_floathpintel, 0x84) /* Floating-point (82 bit IA64). */ -DW_ATE (DW_ATE_HP_imaginary_float80, 0x85) -DW_ATE (DW_ATE_HP_imaginary_float128, 0x86) -DW_ATE (DW_ATE_HP_VAX_float, 0x88) /* F or G floating. */ -DW_ATE (DW_ATE_HP_VAX_float_d, 0x89) /* D floating. */ -DW_ATE (DW_ATE_HP_packed_decimal, 0x8a) /* Cobol. */ -DW_ATE (DW_ATE_HP_zoned_decimal, 0x8b) /* Cobol. */ -DW_ATE (DW_ATE_HP_edited, 0x8c) /* Cobol. */ -DW_ATE (DW_ATE_HP_signed_fixed, 0x8d) /* Cobol. */ -DW_ATE (DW_ATE_HP_unsigned_fixed, 0x8e) /* Cobol. */ -DW_ATE (DW_ATE_HP_VAX_complex_float, 0x8f) /* F or G floating complex. */ -DW_ATE (DW_ATE_HP_VAX_complex_float_d, 0x90) /* D floating complex. */ - -DW_END_ATE - -DW_FIRST_CFA (DW_CFA_advance_loc, 0x40) -DW_CFA (DW_CFA_offset, 0x80) -DW_CFA (DW_CFA_restore, 0xc0) -DW_CFA (DW_CFA_nop, 0x00) -DW_CFA (DW_CFA_set_loc, 0x01) -DW_CFA (DW_CFA_advance_loc1, 0x02) -DW_CFA (DW_CFA_advance_loc2, 0x03) -DW_CFA (DW_CFA_advance_loc4, 0x04) -DW_CFA (DW_CFA_offset_extended, 0x05) -DW_CFA (DW_CFA_restore_extended, 0x06) -DW_CFA (DW_CFA_undefined, 0x07) -DW_CFA (DW_CFA_same_value, 0x08) -DW_CFA (DW_CFA_register, 0x09) -DW_CFA (DW_CFA_remember_state, 0x0a) -DW_CFA (DW_CFA_restore_state, 0x0b) -DW_CFA (DW_CFA_def_cfa, 0x0c) -DW_CFA (DW_CFA_def_cfa_register, 0x0d) -DW_CFA (DW_CFA_def_cfa_offset, 0x0e) -/* DWARF 3. */ -DW_CFA (DW_CFA_def_cfa_expression, 0x0f) -DW_CFA (DW_CFA_expression, 0x10) -DW_CFA (DW_CFA_offset_extended_sf, 0x11) -DW_CFA (DW_CFA_def_cfa_sf, 0x12) -DW_CFA (DW_CFA_def_cfa_offset_sf, 0x13) -DW_CFA (DW_CFA_val_offset, 0x14) -DW_CFA (DW_CFA_val_offset_sf, 0x15) -DW_CFA (DW_CFA_val_expression, 0x16) - -DW_CFA (DW_CFA_lo_user, 0x1c) -DW_CFA (DW_CFA_hi_user, 0x3f) - -/* SGI/MIPS specific. */ -DW_CFA (DW_CFA_MIPS_advance_loc8, 0x1d) -/* GNU extensions. */ -DW_CFA (DW_CFA_GNU_window_save, 0x2d) -DW_CFA (DW_CFA_GNU_args_size, 0x2e) -DW_CFA (DW_CFA_GNU_negative_offset_extended, 0x2f) - -DW_END_CFA diff --git a/include/dwarf2.h b/include/dwarf2.h index 2c1aeb6b9..8c0c9ed6d 100644 --- a/include/dwarf2.h +++ b/include/dwarf2.h @@ -1,7 +1,7 @@ /* Declarations and definitions of codes relating to the DWARF2 and DWARF3 symbolic debugging information formats. Copyright (C) 1992, 1993, 1995, 1996, 1997, 1999, 2000, 2001, 2002, - 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 + 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. Written by Gary Funck (gary@intrepid.com) The Ada Joint Program @@ -41,71 +41,599 @@ This file also now contains definitions from the DWARF 3 specification published Dec 20, 2005, available from: http://dwarf.freestandards.org. */ +/* This file is shared between GCC and GDB, and should not contain + prototypes. */ + #ifndef _DWARF2_H #define _DWARF2_H -#define DW_TAG(name, value) , name = value -#define DW_TAG_DUP(name, value) , name = value -#define DW_FORM(name, value) , name = value -#define DW_AT(name, value) , name = value -#define DW_AT_DUP(name, value) , name = value -#define DW_OP(name, value) , name = value -#define DW_OP_DUP(name, value) , name = value -#define DW_ATE(name, value) , name = value -#define DW_ATE_DUP(name, value) , name = value -#define DW_CFA(name, value) , name = value - -#define DW_FIRST_TAG(name, value) enum dwarf_tag { \ - name = value -#define DW_END_TAG }; -#define DW_FIRST_FORM(name, value) enum dwarf_form { \ - name = value -#define DW_END_FORM }; -#define DW_FIRST_AT(name, value) enum dwarf_attribute { \ - name = value -#define DW_END_AT }; -#define DW_FIRST_OP(name, value) enum dwarf_location_atom { \ - name = value -#define DW_END_OP }; -#define DW_FIRST_ATE(name, value) enum dwarf_type { \ - name = value -#define DW_END_ATE }; -#define DW_FIRST_CFA(name, value) enum dwarf_call_frame_info { \ - name = value -#define DW_END_CFA }; - -#include "dwarf2.def" - -#undef DW_FIRST_TAG -#undef DW_END_TAG -#undef DW_FIRST_FORM -#undef DW_END_FORM -#undef DW_FIRST_AT -#undef DW_END_AT -#undef DW_FIRST_OP -#undef DW_END_OP -#undef DW_FIRST_ATE -#undef DW_END_ATE -#undef DW_FIRST_CFA -#undef DW_END_CFA - -#undef DW_TAG -#undef DW_TAG_DUP -#undef DW_FORM -#undef DW_AT -#undef DW_AT_DUP -#undef DW_OP -#undef DW_OP_DUP -#undef DW_ATE -#undef DW_ATE_DUP -#undef DW_CFA +/* Tag names and codes. */ +enum dwarf_tag + { + DW_TAG_padding = 0x00, + DW_TAG_array_type = 0x01, + DW_TAG_class_type = 0x02, + DW_TAG_entry_point = 0x03, + DW_TAG_enumeration_type = 0x04, + DW_TAG_formal_parameter = 0x05, + DW_TAG_imported_declaration = 0x08, + DW_TAG_label = 0x0a, + DW_TAG_lexical_block = 0x0b, + DW_TAG_member = 0x0d, + DW_TAG_pointer_type = 0x0f, + DW_TAG_reference_type = 0x10, + DW_TAG_compile_unit = 0x11, + DW_TAG_string_type = 0x12, + DW_TAG_structure_type = 0x13, + DW_TAG_subroutine_type = 0x15, + DW_TAG_typedef = 0x16, + DW_TAG_union_type = 0x17, + DW_TAG_unspecified_parameters = 0x18, + DW_TAG_variant = 0x19, + DW_TAG_common_block = 0x1a, + DW_TAG_common_inclusion = 0x1b, + DW_TAG_inheritance = 0x1c, + DW_TAG_inlined_subroutine = 0x1d, + DW_TAG_module = 0x1e, + DW_TAG_ptr_to_member_type = 0x1f, + DW_TAG_set_type = 0x20, + DW_TAG_subrange_type = 0x21, + DW_TAG_with_stmt = 0x22, + DW_TAG_access_declaration = 0x23, + DW_TAG_base_type = 0x24, + DW_TAG_catch_block = 0x25, + DW_TAG_const_type = 0x26, + DW_TAG_constant = 0x27, + DW_TAG_enumerator = 0x28, + DW_TAG_file_type = 0x29, + DW_TAG_friend = 0x2a, + DW_TAG_namelist = 0x2b, + DW_TAG_namelist_item = 0x2c, + DW_TAG_packed_type = 0x2d, + DW_TAG_subprogram = 0x2e, + DW_TAG_template_type_param = 0x2f, + DW_TAG_template_value_param = 0x30, + DW_TAG_thrown_type = 0x31, + DW_TAG_try_block = 0x32, + DW_TAG_variant_part = 0x33, + DW_TAG_variable = 0x34, + DW_TAG_volatile_type = 0x35, + /* DWARF 3. */ + DW_TAG_dwarf_procedure = 0x36, + DW_TAG_restrict_type = 0x37, + DW_TAG_interface_type = 0x38, + DW_TAG_namespace = 0x39, + DW_TAG_imported_module = 0x3a, + DW_TAG_unspecified_type = 0x3b, + DW_TAG_partial_unit = 0x3c, + DW_TAG_imported_unit = 0x3d, + DW_TAG_condition = 0x3f, + DW_TAG_shared_type = 0x40, + /* DWARF 4. */ + DW_TAG_type_unit = 0x41, + DW_TAG_rvalue_reference_type = 0x42, + DW_TAG_template_alias = 0x43, + + DW_TAG_lo_user = 0x4080, + DW_TAG_hi_user = 0xffff, + + /* SGI/MIPS Extensions. */ + DW_TAG_MIPS_loop = 0x4081, + + /* HP extensions. See: ftp://ftp.hp.com/pub/lang/tools/WDB/wdb-4.0.tar.gz . */ + DW_TAG_HP_array_descriptor = 0x4090, + DW_TAG_HP_Bliss_field = 0x4091, + DW_TAG_HP_Bliss_field_set = 0x4092, + + /* GNU extensions. */ + DW_TAG_format_label = 0x4101, /* For FORTRAN 77 and Fortran 90. */ + DW_TAG_function_template = 0x4102, /* For C++. */ + DW_TAG_class_template = 0x4103, /* For C++. */ + DW_TAG_GNU_BINCL = 0x4104, + DW_TAG_GNU_EINCL = 0x4105, + /* Template template parameter. + See http://gcc.gnu.org/wiki/TemplateParmsDwarf . */ + DW_TAG_GNU_template_template_param = 0x4106, + + /* Template parameter pack extension, specified at + http://wiki.dwarfstd.org/index.php?title=C%2B%2B0x:_Variadic_templates + The values of these two TAGS are in the DW_TAG_GNU_* space until the tags + are properly part of DWARF 5. */ + DW_TAG_GNU_template_parameter_pack = 0x4107, + DW_TAG_GNU_formal_parameter_pack = 0x4108, + /* The GNU call site extension, specified at + http://www.dwarfstd.org/ShowIssue.php?issue=100909.2&type=open . + The values of these two TAGS are in the DW_TAG_GNU_* space until the tags + are properly part of DWARF 5. */ + DW_TAG_GNU_call_site = 0x4109, + DW_TAG_GNU_call_site_parameter = 0x410a, + /* Extensions for UPC. See: http://upc.gwu.edu/~upc. */ + DW_TAG_upc_shared_type = 0x8765, + DW_TAG_upc_strict_type = 0x8766, + DW_TAG_upc_relaxed_type = 0x8767, + /* PGI (STMicroelectronics) extensions. No documentation available. */ + DW_TAG_PGI_kanji_type = 0xA000, + DW_TAG_PGI_interface_block = 0xA020 + }; /* Flag that tells whether entry has a child or not. */ #define DW_children_no 0 #define DW_children_yes 1 +/* Form names and codes. */ +enum dwarf_form + { + DW_FORM_addr = 0x01, + DW_FORM_block2 = 0x03, + DW_FORM_block4 = 0x04, + DW_FORM_data2 = 0x05, + DW_FORM_data4 = 0x06, + DW_FORM_data8 = 0x07, + DW_FORM_string = 0x08, + DW_FORM_block = 0x09, + DW_FORM_block1 = 0x0a, + DW_FORM_data1 = 0x0b, + DW_FORM_flag = 0x0c, + DW_FORM_sdata = 0x0d, + DW_FORM_strp = 0x0e, + DW_FORM_udata = 0x0f, + DW_FORM_ref_addr = 0x10, + DW_FORM_ref1 = 0x11, + DW_FORM_ref2 = 0x12, + DW_FORM_ref4 = 0x13, + DW_FORM_ref8 = 0x14, + DW_FORM_ref_udata = 0x15, + DW_FORM_indirect = 0x16, + /* DWARF 4. */ + DW_FORM_sec_offset = 0x17, + DW_FORM_exprloc = 0x18, + DW_FORM_flag_present = 0x19, + DW_FORM_ref_sig8 = 0x20, + /* Extensions for Fission. See http://gcc.gnu.org/wiki/DebugFission. */ + DW_FORM_GNU_ref_index = 0x1f00, + DW_FORM_GNU_addr_index = 0x1f01, + DW_FORM_GNU_str_index = 0x1f02 + }; + +/* Attribute names and codes. */ +enum dwarf_attribute + { + DW_AT_sibling = 0x01, + DW_AT_location = 0x02, + DW_AT_name = 0x03, + DW_AT_ordering = 0x09, + DW_AT_subscr_data = 0x0a, + DW_AT_byte_size = 0x0b, + DW_AT_bit_offset = 0x0c, + DW_AT_bit_size = 0x0d, + DW_AT_element_list = 0x0f, + DW_AT_stmt_list = 0x10, + DW_AT_low_pc = 0x11, + DW_AT_high_pc = 0x12, + DW_AT_language = 0x13, + DW_AT_member = 0x14, + DW_AT_discr = 0x15, + DW_AT_discr_value = 0x16, + DW_AT_visibility = 0x17, + DW_AT_import = 0x18, + DW_AT_string_length = 0x19, + DW_AT_common_reference = 0x1a, + DW_AT_comp_dir = 0x1b, + DW_AT_const_value = 0x1c, + DW_AT_containing_type = 0x1d, + DW_AT_default_value = 0x1e, + DW_AT_inline = 0x20, + DW_AT_is_optional = 0x21, + DW_AT_lower_bound = 0x22, + DW_AT_producer = 0x25, + DW_AT_prototyped = 0x27, + DW_AT_return_addr = 0x2a, + DW_AT_start_scope = 0x2c, + DW_AT_bit_stride = 0x2e, #define DW_AT_stride_size DW_AT_bit_stride /* Note: The use of DW_AT_stride_size is deprecated. */ + DW_AT_upper_bound = 0x2f, + DW_AT_abstract_origin = 0x31, + DW_AT_accessibility = 0x32, + DW_AT_address_class = 0x33, + DW_AT_artificial = 0x34, + DW_AT_base_types = 0x35, + DW_AT_calling_convention = 0x36, + DW_AT_count = 0x37, + DW_AT_data_member_location = 0x38, + DW_AT_decl_column = 0x39, + DW_AT_decl_file = 0x3a, + DW_AT_decl_line = 0x3b, + DW_AT_declaration = 0x3c, + DW_AT_discr_list = 0x3d, + DW_AT_encoding = 0x3e, + DW_AT_external = 0x3f, + DW_AT_frame_base = 0x40, + DW_AT_friend = 0x41, + DW_AT_identifier_case = 0x42, + DW_AT_macro_info = 0x43, + DW_AT_namelist_items = 0x44, + DW_AT_priority = 0x45, + DW_AT_segment = 0x46, + DW_AT_specification = 0x47, + DW_AT_static_link = 0x48, + DW_AT_type = 0x49, + DW_AT_use_location = 0x4a, + DW_AT_variable_parameter = 0x4b, + DW_AT_virtuality = 0x4c, + DW_AT_vtable_elem_location = 0x4d, + /* DWARF 3 values. */ + DW_AT_allocated = 0x4e, + DW_AT_associated = 0x4f, + DW_AT_data_location = 0x50, + DW_AT_byte_stride = 0x51, #define DW_AT_stride DW_AT_byte_stride /* Note: The use of DW_AT_stride is deprecated. */ + DW_AT_entry_pc = 0x52, + DW_AT_use_UTF8 = 0x53, + DW_AT_extension = 0x54, + DW_AT_ranges = 0x55, + DW_AT_trampoline = 0x56, + DW_AT_call_column = 0x57, + DW_AT_call_file = 0x58, + DW_AT_call_line = 0x59, + DW_AT_description = 0x5a, + DW_AT_binary_scale = 0x5b, + DW_AT_decimal_scale = 0x5c, + DW_AT_small = 0x5d, + DW_AT_decimal_sign = 0x5e, + DW_AT_digit_count = 0x5f, + DW_AT_picture_string = 0x60, + DW_AT_mutable = 0x61, + DW_AT_threads_scaled = 0x62, + DW_AT_explicit = 0x63, + DW_AT_object_pointer = 0x64, + DW_AT_endianity = 0x65, + DW_AT_elemental = 0x66, + DW_AT_pure = 0x67, + DW_AT_recursive = 0x68, + /* DWARF 4. */ + DW_AT_signature = 0x69, + DW_AT_main_subprogram = 0x6a, + DW_AT_data_bit_offset = 0x6b, + DW_AT_const_expr = 0x6c, + DW_AT_enum_class = 0x6d, + DW_AT_linkage_name = 0x6e, + + DW_AT_lo_user = 0x2000, /* Implementation-defined range start. */ + DW_AT_hi_user = 0x3fff, /* Implementation-defined range end. */ + + /* SGI/MIPS extensions. */ + DW_AT_MIPS_fde = 0x2001, + DW_AT_MIPS_loop_begin = 0x2002, + DW_AT_MIPS_tail_loop_begin = 0x2003, + DW_AT_MIPS_epilog_begin = 0x2004, + DW_AT_MIPS_loop_unroll_factor = 0x2005, + DW_AT_MIPS_software_pipeline_depth = 0x2006, + DW_AT_MIPS_linkage_name = 0x2007, + DW_AT_MIPS_stride = 0x2008, + DW_AT_MIPS_abstract_name = 0x2009, + DW_AT_MIPS_clone_origin = 0x200a, + DW_AT_MIPS_has_inlines = 0x200b, + /* HP extensions. */ + DW_AT_HP_block_index = 0x2000, + DW_AT_HP_unmodifiable = 0x2001, /* Same as DW_AT_MIPS_fde. */ + DW_AT_HP_prologue = 0x2005, /* Same as DW_AT_MIPS_loop_unroll. */ + DW_AT_HP_epilogue = 0x2008, /* Same as DW_AT_MIPS_stride. */ + DW_AT_HP_actuals_stmt_list = 0x2010, + DW_AT_HP_proc_per_section = 0x2011, + DW_AT_HP_raw_data_ptr = 0x2012, + DW_AT_HP_pass_by_reference = 0x2013, + DW_AT_HP_opt_level = 0x2014, + DW_AT_HP_prof_version_id = 0x2015, + DW_AT_HP_opt_flags = 0x2016, + DW_AT_HP_cold_region_low_pc = 0x2017, + DW_AT_HP_cold_region_high_pc = 0x2018, + DW_AT_HP_all_variables_modifiable = 0x2019, + DW_AT_HP_linkage_name = 0x201a, + DW_AT_HP_prof_flags = 0x201b, /* In comp unit of procs_info for -g. */ + DW_AT_HP_unit_name = 0x201f, + DW_AT_HP_unit_size = 0x2020, + DW_AT_HP_widened_byte_size = 0x2021, + DW_AT_HP_definition_points = 0x2022, + DW_AT_HP_default_location = 0x2023, + DW_AT_HP_is_result_param = 0x2029, + + /* GNU extensions. */ + DW_AT_sf_names = 0x2101, + DW_AT_src_info = 0x2102, + DW_AT_mac_info = 0x2103, + DW_AT_src_coords = 0x2104, + DW_AT_body_begin = 0x2105, + DW_AT_body_end = 0x2106, + DW_AT_GNU_vector = 0x2107, + /* Thread-safety annotations. + See http://gcc.gnu.org/wiki/ThreadSafetyAnnotation . */ + DW_AT_GNU_guarded_by = 0x2108, + DW_AT_GNU_pt_guarded_by = 0x2109, + DW_AT_GNU_guarded = 0x210a, + DW_AT_GNU_pt_guarded = 0x210b, + DW_AT_GNU_locks_excluded = 0x210c, + DW_AT_GNU_exclusive_locks_required = 0x210d, + DW_AT_GNU_shared_locks_required = 0x210e, + /* One-definition rule violation detection. + See http://gcc.gnu.org/wiki/DwarfSeparateTypeInfo . */ + DW_AT_GNU_odr_signature = 0x210f, + /* Template template argument name. + See http://gcc.gnu.org/wiki/TemplateParmsDwarf . */ + DW_AT_GNU_template_name = 0x2110, + /* The GNU call site extension. + See http://www.dwarfstd.org/ShowIssue.php?issue=100909.2&type=open . */ + DW_AT_GNU_call_site_value = 0x2111, + DW_AT_GNU_call_site_data_value = 0x2112, + DW_AT_GNU_call_site_target = 0x2113, + DW_AT_GNU_call_site_target_clobbered = 0x2114, + DW_AT_GNU_tail_call = 0x2115, + DW_AT_GNU_all_tail_call_sites = 0x2116, + DW_AT_GNU_all_call_sites = 0x2117, + DW_AT_GNU_all_source_call_sites = 0x2118, + /* Section offset into .debug_macro section. */ + DW_AT_GNU_macros = 0x2119, + /* Extensions for Fission. See http://gcc.gnu.org/wiki/DebugFission. */ + DW_AT_GNU_dwo_name = 0x2130, + DW_AT_GNU_dwo_id = 0x2131, + DW_AT_GNU_ref_base = 0x2132, + DW_AT_GNU_addr_base = 0x2133, + DW_AT_GNU_pubnames = 0x2134, + DW_AT_GNU_pubtypes = 0x2135, + /* VMS extensions. */ + DW_AT_VMS_rtnbeg_pd_address = 0x2201, + /* GNAT extensions. */ + /* GNAT descriptive type. + See http://gcc.gnu.org/wiki/DW_AT_GNAT_descriptive_type . */ + DW_AT_use_GNAT_descriptive_type = 0x2301, + DW_AT_GNAT_descriptive_type = 0x2302, + /* UPC extension. */ + DW_AT_upc_threads_scaled = 0x3210, + /* PGI (STMicroelectronics) extensions. */ + DW_AT_PGI_lbase = 0x3a00, + DW_AT_PGI_soffset = 0x3a01, + DW_AT_PGI_lstride = 0x3a02 + }; + +/* Location atom names and codes. */ +enum dwarf_location_atom + { + DW_OP_addr = 0x03, + DW_OP_deref = 0x06, + DW_OP_const1u = 0x08, + DW_OP_const1s = 0x09, + DW_OP_const2u = 0x0a, + DW_OP_const2s = 0x0b, + DW_OP_const4u = 0x0c, + DW_OP_const4s = 0x0d, + DW_OP_const8u = 0x0e, + DW_OP_const8s = 0x0f, + DW_OP_constu = 0x10, + DW_OP_consts = 0x11, + DW_OP_dup = 0x12, + DW_OP_drop = 0x13, + DW_OP_over = 0x14, + DW_OP_pick = 0x15, + DW_OP_swap = 0x16, + DW_OP_rot = 0x17, + DW_OP_xderef = 0x18, + DW_OP_abs = 0x19, + DW_OP_and = 0x1a, + DW_OP_div = 0x1b, + DW_OP_minus = 0x1c, + DW_OP_mod = 0x1d, + DW_OP_mul = 0x1e, + DW_OP_neg = 0x1f, + DW_OP_not = 0x20, + DW_OP_or = 0x21, + DW_OP_plus = 0x22, + DW_OP_plus_uconst = 0x23, + DW_OP_shl = 0x24, + DW_OP_shr = 0x25, + DW_OP_shra = 0x26, + DW_OP_xor = 0x27, + DW_OP_bra = 0x28, + DW_OP_eq = 0x29, + DW_OP_ge = 0x2a, + DW_OP_gt = 0x2b, + DW_OP_le = 0x2c, + DW_OP_lt = 0x2d, + DW_OP_ne = 0x2e, + DW_OP_skip = 0x2f, + DW_OP_lit0 = 0x30, + DW_OP_lit1 = 0x31, + DW_OP_lit2 = 0x32, + DW_OP_lit3 = 0x33, + DW_OP_lit4 = 0x34, + DW_OP_lit5 = 0x35, + DW_OP_lit6 = 0x36, + DW_OP_lit7 = 0x37, + DW_OP_lit8 = 0x38, + DW_OP_lit9 = 0x39, + DW_OP_lit10 = 0x3a, + DW_OP_lit11 = 0x3b, + DW_OP_lit12 = 0x3c, + DW_OP_lit13 = 0x3d, + DW_OP_lit14 = 0x3e, + DW_OP_lit15 = 0x3f, + DW_OP_lit16 = 0x40, + DW_OP_lit17 = 0x41, + DW_OP_lit18 = 0x42, + DW_OP_lit19 = 0x43, + DW_OP_lit20 = 0x44, + DW_OP_lit21 = 0x45, + DW_OP_lit22 = 0x46, + DW_OP_lit23 = 0x47, + DW_OP_lit24 = 0x48, + DW_OP_lit25 = 0x49, + DW_OP_lit26 = 0x4a, + DW_OP_lit27 = 0x4b, + DW_OP_lit28 = 0x4c, + DW_OP_lit29 = 0x4d, + DW_OP_lit30 = 0x4e, + DW_OP_lit31 = 0x4f, + DW_OP_reg0 = 0x50, + DW_OP_reg1 = 0x51, + DW_OP_reg2 = 0x52, + DW_OP_reg3 = 0x53, + DW_OP_reg4 = 0x54, + DW_OP_reg5 = 0x55, + DW_OP_reg6 = 0x56, + DW_OP_reg7 = 0x57, + DW_OP_reg8 = 0x58, + DW_OP_reg9 = 0x59, + DW_OP_reg10 = 0x5a, + DW_OP_reg11 = 0x5b, + DW_OP_reg12 = 0x5c, + DW_OP_reg13 = 0x5d, + DW_OP_reg14 = 0x5e, + DW_OP_reg15 = 0x5f, + DW_OP_reg16 = 0x60, + DW_OP_reg17 = 0x61, + DW_OP_reg18 = 0x62, + DW_OP_reg19 = 0x63, + DW_OP_reg20 = 0x64, + DW_OP_reg21 = 0x65, + DW_OP_reg22 = 0x66, + DW_OP_reg23 = 0x67, + DW_OP_reg24 = 0x68, + DW_OP_reg25 = 0x69, + DW_OP_reg26 = 0x6a, + DW_OP_reg27 = 0x6b, + DW_OP_reg28 = 0x6c, + DW_OP_reg29 = 0x6d, + DW_OP_reg30 = 0x6e, + DW_OP_reg31 = 0x6f, + DW_OP_breg0 = 0x70, + DW_OP_breg1 = 0x71, + DW_OP_breg2 = 0x72, + DW_OP_breg3 = 0x73, + DW_OP_breg4 = 0x74, + DW_OP_breg5 = 0x75, + DW_OP_breg6 = 0x76, + DW_OP_breg7 = 0x77, + DW_OP_breg8 = 0x78, + DW_OP_breg9 = 0x79, + DW_OP_breg10 = 0x7a, + DW_OP_breg11 = 0x7b, + DW_OP_breg12 = 0x7c, + DW_OP_breg13 = 0x7d, + DW_OP_breg14 = 0x7e, + DW_OP_breg15 = 0x7f, + DW_OP_breg16 = 0x80, + DW_OP_breg17 = 0x81, + DW_OP_breg18 = 0x82, + DW_OP_breg19 = 0x83, + DW_OP_breg20 = 0x84, + DW_OP_breg21 = 0x85, + DW_OP_breg22 = 0x86, + DW_OP_breg23 = 0x87, + DW_OP_breg24 = 0x88, + DW_OP_breg25 = 0x89, + DW_OP_breg26 = 0x8a, + DW_OP_breg27 = 0x8b, + DW_OP_breg28 = 0x8c, + DW_OP_breg29 = 0x8d, + DW_OP_breg30 = 0x8e, + DW_OP_breg31 = 0x8f, + DW_OP_regx = 0x90, + DW_OP_fbreg = 0x91, + DW_OP_bregx = 0x92, + DW_OP_piece = 0x93, + DW_OP_deref_size = 0x94, + DW_OP_xderef_size = 0x95, + DW_OP_nop = 0x96, + /* DWARF 3 extensions. */ + DW_OP_push_object_address = 0x97, + DW_OP_call2 = 0x98, + DW_OP_call4 = 0x99, + DW_OP_call_ref = 0x9a, + DW_OP_form_tls_address = 0x9b, + DW_OP_call_frame_cfa = 0x9c, + DW_OP_bit_piece = 0x9d, + + /* DWARF 4 extensions. */ + DW_OP_implicit_value = 0x9e, + DW_OP_stack_value = 0x9f, + + DW_OP_lo_user = 0xe0, /* Implementation-defined range start. */ + DW_OP_hi_user = 0xff, /* Implementation-defined range end. */ + + /* GNU extensions. */ + DW_OP_GNU_push_tls_address = 0xe0, + /* The following is for marking variables that are uninitialized. */ + DW_OP_GNU_uninit = 0xf0, + DW_OP_GNU_encoded_addr = 0xf1, + /* The GNU implicit pointer extension. + See http://www.dwarfstd.org/ShowIssue.php?issue=100831.1&type=open . */ + DW_OP_GNU_implicit_pointer = 0xf2, + /* The GNU entry value extension. + See http://www.dwarfstd.org/ShowIssue.php?issue=100909.1&type=open . */ + DW_OP_GNU_entry_value = 0xf3, + /* The GNU typed stack extension. + See http://www.dwarfstd.org/doc/040408.1.html . */ + DW_OP_GNU_const_type = 0xf4, + DW_OP_GNU_regval_type = 0xf5, + DW_OP_GNU_deref_type = 0xf6, + DW_OP_GNU_convert = 0xf7, + DW_OP_GNU_reinterpret = 0xf9, + /* The GNU parameter ref extension. */ + DW_OP_GNU_parameter_ref = 0xfa, + /* HP extensions. */ + DW_OP_HP_unknown = 0xe0, /* Ouch, the same as GNU_push_tls_address. */ + DW_OP_HP_is_value = 0xe1, + DW_OP_HP_fltconst4 = 0xe2, + DW_OP_HP_fltconst8 = 0xe3, + DW_OP_HP_mod_range = 0xe4, + DW_OP_HP_unmod_range = 0xe5, + DW_OP_HP_tls = 0xe6, + /* PGI (STMicroelectronics) extensions. */ + DW_OP_PGI_omp_thread_num = 0xf8 + }; + +/* Type encodings. */ +enum dwarf_type + { + DW_ATE_void = 0x0, + DW_ATE_address = 0x1, + DW_ATE_boolean = 0x2, + DW_ATE_complex_float = 0x3, + DW_ATE_float = 0x4, + DW_ATE_signed = 0x5, + DW_ATE_signed_char = 0x6, + DW_ATE_unsigned = 0x7, + DW_ATE_unsigned_char = 0x8, + /* DWARF 3. */ + DW_ATE_imaginary_float = 0x9, + DW_ATE_packed_decimal = 0xa, + DW_ATE_numeric_string = 0xb, + DW_ATE_edited = 0xc, + DW_ATE_signed_fixed = 0xd, + DW_ATE_unsigned_fixed = 0xe, + DW_ATE_decimal_float = 0xf, + /* DWARF 4. */ + DW_ATE_UTF = 0x10, + + DW_ATE_lo_user = 0x80, + DW_ATE_hi_user = 0xff, + + /* HP extensions. */ + DW_ATE_HP_float80 = 0x80, /* Floating-point (80 bit). */ + DW_ATE_HP_complex_float80 = 0x81, /* Complex floating-point (80 bit). */ + DW_ATE_HP_float128 = 0x82, /* Floating-point (128 bit). */ + DW_ATE_HP_complex_float128 = 0x83, /* Complex fp (128 bit). */ + DW_ATE_HP_floathpintel = 0x84, /* Floating-point (82 bit IA64). */ + DW_ATE_HP_imaginary_float80 = 0x85, + DW_ATE_HP_imaginary_float128 = 0x86, + DW_ATE_HP_VAX_float = 0x88, /* F or G floating. */ + DW_ATE_HP_VAX_float_d = 0x89, /* D floating. */ + DW_ATE_HP_packed_decimal = 0x8a, /* Cobol. */ + DW_ATE_HP_zoned_decimal = 0x8b, /* Cobol. */ + DW_ATE_HP_edited = 0x8c, /* Cobol. */ + DW_ATE_HP_signed_fixed = 0x8d, /* Cobol. */ + DW_ATE_HP_unsigned_fixed = 0x8e, /* Cobol. */ + DW_ATE_HP_VAX_complex_float = 0x8f, /* F or G floating complex. */ + DW_ATE_HP_VAX_complex_float_d = 0x90 /* D floating complex. */ + }; /* Decimal sign encodings. */ enum dwarf_decimal_sign_encoding @@ -259,6 +787,48 @@ enum dwarf_line_number_hp_sfc_ops DW_LNE_HP_SFC_associate = 3 }; +/* Call frame information. */ +enum dwarf_call_frame_info + { + DW_CFA_advance_loc = 0x40, + DW_CFA_offset = 0x80, + DW_CFA_restore = 0xc0, + DW_CFA_nop = 0x00, + DW_CFA_set_loc = 0x01, + DW_CFA_advance_loc1 = 0x02, + DW_CFA_advance_loc2 = 0x03, + DW_CFA_advance_loc4 = 0x04, + DW_CFA_offset_extended = 0x05, + DW_CFA_restore_extended = 0x06, + DW_CFA_undefined = 0x07, + DW_CFA_same_value = 0x08, + DW_CFA_register = 0x09, + DW_CFA_remember_state = 0x0a, + DW_CFA_restore_state = 0x0b, + DW_CFA_def_cfa = 0x0c, + DW_CFA_def_cfa_register = 0x0d, + DW_CFA_def_cfa_offset = 0x0e, + /* DWARF 3. */ + DW_CFA_def_cfa_expression = 0x0f, + DW_CFA_expression = 0x10, + DW_CFA_offset_extended_sf = 0x11, + DW_CFA_def_cfa_sf = 0x12, + DW_CFA_def_cfa_offset_sf = 0x13, + DW_CFA_val_offset = 0x14, + DW_CFA_val_offset_sf = 0x15, + DW_CFA_val_expression = 0x16, + + DW_CFA_lo_user = 0x1c, + DW_CFA_hi_user = 0x3f, + + /* SGI/MIPS specific. */ + DW_CFA_MIPS_advance_loc8 = 0x1d, + /* GNU extensions. */ + DW_CFA_GNU_window_save = 0x2d, + DW_CFA_GNU_args_size = 0x2e, + DW_CFA_GNU_negative_offset_extended = 0x2f + }; + #define DW_CIE_ID 0xffffffff #define DW64_CIE_ID 0xffffffffffffffffULL #define DW_CIE_VERSION 1 @@ -333,11 +903,6 @@ enum dwarf_macro_record_type DW_MACRO_GNU_define_indirect = 5, DW_MACRO_GNU_undef_indirect = 6, DW_MACRO_GNU_transparent_include = 7, - /* Extensions for DWZ multifile. - See http://www.dwarfstd.org/ShowIssue.php?issue=120604.1&type=open . */ - DW_MACRO_GNU_define_indirect_alt = 8, - DW_MACRO_GNU_undef_indirect_alt = 9, - DW_MACRO_GNU_transparent_include_alt = 10, DW_MACRO_GNU_lo_user = 0xe0, DW_MACRO_GNU_hi_user = 0xff }; @@ -365,37 +930,4 @@ enum dwarf_macro_record_type #define DW_EH_PE_indirect 0x80 - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/* Return the name of a DW_TAG_ constant, or NULL if the value is not - recognized. */ -extern const char *get_DW_TAG_name (unsigned int tag); - -/* Return the name of a DW_AT_ constant, or NULL if the value is not - recognized. */ -extern const char *get_DW_AT_name (unsigned int attr); - -/* Return the name of a DW_FORM_ constant, or NULL if the value is not - recognized. */ -extern const char *get_DW_FORM_name (unsigned int form); - -/* Return the name of a DW_OP_ constant, or NULL if the value is not - recognized. */ -extern const char *get_DW_OP_name (unsigned int op); - -/* Return the name of a DW_ATE_ constant, or NULL if the value is not - recognized. */ -extern const char *get_DW_ATE_name (unsigned int enc); - -/* Return the name of a DW_CFA_ constant, or NULL if the value is not - recognized. */ -extern const char *get_DW_CFA_name (unsigned int opc); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - #endif /* _DWARF2_H */ diff --git a/include/elf/ChangeLog b/include/elf/ChangeLog index ef84aa36a..2d8264ea3 100644 --- a/include/elf/ChangeLog +++ b/include/elf/ChangeLog @@ -1,64 +1,3 @@ -2012-06-28 Iain Sandoe <iain@codesourcery.com> - - * common.h (AT_L1I_CACHESHAPE, AT_L1D_CACHESHAPE, - AT_L2_CACHESHAPE, AT_L3_CACHESHAPE): New defines. - -2012-05-16 Georg-Johann Lay <avr@gjlay.de> - - PR target/13503 - * avr.h (RELOC_NUMBERS): Rename R_AVR_8_HHI8 to R_AVR_8_HLO8. - -2012-05-15 James Murray <jsm@jsm-net.demon.co.uk> - - * m68hc11.h (R_M68HC12_16B, R_M68HC12_PCREL_9, R_M68HC12_PCREL_10) - R_M68HC12_HI8XG, R_M68HC12_LO8XG): New relocations. - (E_M68HC11_XGATE_RAMOFFSET): Define. - -2012-05-14 James Lemke <jwlemke@codesourcery.com> - * ppc.h (SEC_PPC_VLE): Remove. - -2012-05-14 Catherine Moore <clm@codesourcery.com> - James Lemke <jwlemke@codesourcery.com> - - * ppc.h (R_PPC_VLE_REL8): New reloction. - (R_PPC_VLE_REL15): Likewise. - (R_PPC_VLE_REL24): Likewise. - (R_PPC_VLE_LO16A): Likewise. - (R_PPC_VLE_LO16D): Likewise. - (R_PPC_VLE_HI16A): Likewise. - (R_PPC_VLE_HI16D): Likewise. - (R_PPC_VLE_HA16A): Likewise. - (R_PPC_VLE_HA16D): Likewise. - (R_PPC_VLE_SDA21): Likewise. - (R_PPC_VLE_SDA21_LO): Likewise. - (R_PPC_VLE_SDAREL_LO16A): Likewise. - (R_PPC_VLE_SDAREL_LO16D): Likewise. - (R_PPC_VLE_SDAREL_HI16A): Likewise. - (R_PPC_VLE_SDAREL_HI16D): Likewise. - (R_PPC_VLE_SDAREL_HA16A): Likewise. - (R_PPC_VLE_SDAREL_HA16D): Likewise. - (SEC_PPC_VLE): Remove. - (PF_PPC_VLE): New program header flag. - (SHF_PPC_VLE): New section header flag. - (vle_opcodes, vle_num_opcodes): New. - (VLE_OP): New macro. - (VLE_OP_TO_SEG): New macro. - -2012-05-11 Georg-Johann Lay <avr@gjlay.de - - PR target/13503 - * elf/avr.h (RELOC_NUMBERS): Add values for R_AVR_8_LO8, - R_AVR_8_HI8, R_AVR_8_HHI8. - -2012-05-03 Sean Keys <skeys@ipdatasys.com> - - * xgate.h: Mininal file to support XGATE relocations. - -2012-04-27 David S. Miller <davem@davemloft.net> - - * sparc.h: Add new ELF_SPARC_HWCAP_* defines for crypto, - pause, and compare-and-branch instructions. - 2012-03-07 Nick Clifton <nickc@redhat.com> * mn10300.h (elf_mn10300_reloc_type): Add R_MN10300_TLS_GD, diff --git a/include/elf/avr.h b/include/elf/avr.h index b45d902d2..11d43f966 100644 --- a/include/elf/avr.h +++ b/include/elf/avr.h @@ -1,6 +1,5 @@ /* AVR ELF support for BFD. - Copyright 1999, 2000, 2004, 2006, 2010, 2012 - Free Software Foundation, Inc. + Copyright 1999, 2000, 2004, 2006, 2010 Free Software Foundation, Inc. Contributed by Denis Chertykov <denisc@overta.ru> This file is part of BFD, the Binary File Descriptor library. @@ -31,16 +30,16 @@ as reference for the relocations so that linker relaxation is possible. */ #define EF_AVR_LINKRELAX_PREPARED 0x80 -#define E_AVR_MACH_AVR1 1 -#define E_AVR_MACH_AVR2 2 -#define E_AVR_MACH_AVR25 25 -#define E_AVR_MACH_AVR3 3 -#define E_AVR_MACH_AVR31 31 -#define E_AVR_MACH_AVR35 35 -#define E_AVR_MACH_AVR4 4 -#define E_AVR_MACH_AVR5 5 -#define E_AVR_MACH_AVR51 51 -#define E_AVR_MACH_AVR6 6 +#define E_AVR_MACH_AVR1 1 +#define E_AVR_MACH_AVR2 2 +#define E_AVR_MACH_AVR25 25 +#define E_AVR_MACH_AVR3 3 +#define E_AVR_MACH_AVR31 31 +#define E_AVR_MACH_AVR35 35 +#define E_AVR_MACH_AVR4 4 +#define E_AVR_MACH_AVR5 5 +#define E_AVR_MACH_AVR51 51 +#define E_AVR_MACH_AVR6 6 #define E_AVR_MACH_XMEGA1 101 #define E_AVR_MACH_XMEGA2 102 #define E_AVR_MACH_XMEGA3 103 @@ -78,9 +77,6 @@ START_RELOC_NUMBERS (elf_avr_reloc_type) RELOC_NUMBER (R_AVR_LO8_LDI_GS, 24) RELOC_NUMBER (R_AVR_HI8_LDI_GS, 25) RELOC_NUMBER (R_AVR_8, 26) - RELOC_NUMBER (R_AVR_8_LO8, 27) - RELOC_NUMBER (R_AVR_8_HI8, 28) - RELOC_NUMBER (R_AVR_8_HLO8, 29) END_RELOC_NUMBERS (R_AVR_max) #endif /* _ELF_AVR_H */ diff --git a/include/elf/common.h b/include/elf/common.h index 58e489afe..5cddc0bef 100644 --- a/include/elf/common.h +++ b/include/elf/common.h @@ -1,6 +1,6 @@ /* ELF support for BFD. Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 + 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. Written by Fred Fish @ Cygnus Support, from information published @@ -935,18 +935,6 @@ #define AT_SYSINFO 32 #define AT_SYSINFO_EHDR 33 /* Pointer to ELF header of system-supplied DSO. */ -/* More complete cache descriptions than AT_[DIU]CACHEBSIZE. If the - value is -1, then the cache doesn't exist. Otherwise: - - bit 0-3: Cache set-associativity; 0 means fully associative. - bit 4-7: Log2 of cacheline size. - bit 8-31: Size of the entire cache >> 8. */ - -#define AT_L1I_CACHESHAPE 34 -#define AT_L1D_CACHESHAPE 35 -#define AT_L2_CACHESHAPE 36 -#define AT_L3_CACHESHAPE 37 - #define AT_SUN_UID 2000 /* Effective user ID. */ #define AT_SUN_RUID 2001 /* Real user ID. */ #define AT_SUN_GID 2002 /* Effective group ID. */ diff --git a/include/elf/m68hc11.h b/include/elf/m68hc11.h index 58d882088..ca325d981 100644 --- a/include/elf/m68hc11.h +++ b/include/elf/m68hc11.h @@ -1,5 +1,5 @@ /* m68hc11 & m68hc12 ELF support for BFD. - Copyright 1999, 2000, 2001, 2002, 2010, 2012 Free Software Foundation, Inc. + Copyright 1999, 2000, 2001, 2002, 2010 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -42,12 +42,6 @@ START_RELOC_NUMBERS (elf_m68hc11_reloc_type) RELOC_NUMBER (R_M68HC11_LO16, 12) RELOC_NUMBER (R_M68HC11_PAGE, 13) - RELOC_NUMBER (R_M68HC12_16B, 15) - RELOC_NUMBER (R_M68HC12_PCREL_9, 16) - RELOC_NUMBER (R_M68HC12_PCREL_10, 17) - RELOC_NUMBER (R_M68HC12_HI8XG, 18) - RELOC_NUMBER (R_M68HC12_LO8XG, 19) - /* GNU extension for linker relaxation. Mark beginning of a jump instruction (any form). */ RELOC_NUMBER (R_M68HC11_RL_JUMP, 20) @@ -70,12 +64,6 @@ END_RELOC_NUMBERS (R_M68HC11_max) /* Uses 68HC12 memory banks. */ #define E_M68HC12_BANKS 0x000000004 -/* XGATE ram offsetting. */ -#define E_M68HC11_XGATE_RAMOFFSET 0x000000100 - -/* Suppress warnings */ -#define E_M68HC11_NO_BANK_WARNING 0x000000200 - #define EF_M68HC11_MACH_MASK 0xF0 #define EF_M68HC11_GENERIC 0x00 /* Generic 68HC12/backward compatibility. */ #define EF_M68HC12_MACH 0x10 /* 68HC12 microcontroller. */ @@ -98,10 +86,10 @@ END_RELOC_NUMBERS (R_M68HC11_max) /* Special values for the st_other field in the symbol table. These are used for 68HC12 to identify far functions (must be called with 'call' and returns with 'rtc'). */ -#define STO_M68HC12_FAR 0x80 +#define STO_M68HC12_FAR 0x80 /* Identify interrupt handlers. This is used by the debugger to correctly compute the stack frame. */ -#define STO_M68HC12_INTERRUPT 0x40 +#define STO_M68HC12_INTERRUPT 0x40 #endif diff --git a/include/elf/ppc.h b/include/elf/ppc.h index f80a1e8a3..8e27855be 100644 --- a/include/elf/ppc.h +++ b/include/elf/ppc.h @@ -131,25 +131,6 @@ START_RELOC_NUMBERS (elf_ppc_reloc_type) RELOC_NUMBER (R_PPC_EMB_BIT_FLD, 115) RELOC_NUMBER (R_PPC_EMB_RELSDA, 116) -/* PowerPC VLE relocations. */ - RELOC_NUMBER (R_PPC_VLE_REL8, 216) - RELOC_NUMBER (R_PPC_VLE_REL15, 217) - RELOC_NUMBER (R_PPC_VLE_REL24, 218) - RELOC_NUMBER (R_PPC_VLE_LO16A, 219) - RELOC_NUMBER (R_PPC_VLE_LO16D, 220) - RELOC_NUMBER (R_PPC_VLE_HI16A, 221) - RELOC_NUMBER (R_PPC_VLE_HI16D, 222) - RELOC_NUMBER (R_PPC_VLE_HA16A, 223) - RELOC_NUMBER (R_PPC_VLE_HA16D, 224) - RELOC_NUMBER (R_PPC_VLE_SDA21, 225) - RELOC_NUMBER (R_PPC_VLE_SDA21_LO, 226) - RELOC_NUMBER (R_PPC_VLE_SDAREL_LO16A, 227) - RELOC_NUMBER (R_PPC_VLE_SDAREL_LO16D, 228) - RELOC_NUMBER (R_PPC_VLE_SDAREL_HI16A, 229) - RELOC_NUMBER (R_PPC_VLE_SDAREL_HI16D, 230) - RELOC_NUMBER (R_PPC_VLE_SDAREL_HA16A, 231) - RELOC_NUMBER (R_PPC_VLE_SDAREL_HA16D, 232) - /* Support STT_GNU_IFUNC plt calls. */ RELOC_NUMBER (R_PPC_IRELATIVE, 248) @@ -185,11 +166,9 @@ END_RELOC_NUMBERS (R_PPC_max) #define EF_PPC_RELOCATABLE 0x00010000 /* PowerPC -mrelocatable flag. */ #define EF_PPC_RELOCATABLE_LIB 0x00008000 /* PowerPC -mrelocatable-lib flag. */ -/* Processor specific program headers, p_flags field. */ -#define PF_PPC_VLE 0x10000000 /* PowerPC VLE. */ - -/* Processor specific section headers, sh_flags field. */ -#define SHF_PPC_VLE 0x10000000 /* PowerPC VLE text section. */ +/* This bit is reserved by BFD for processor specific stuff. Name + it properly so that we can easily stay consistent elsewhere. */ +#define SEC_PPC_VLE SEC_TIC54X_BLOCK /* Processor specific section headers, sh_type field. */ diff --git a/include/elf/s390.h b/include/elf/s390.h index a5b4217bc..807b7e8e0 100644 --- a/include/elf/s390.h +++ b/include/elf/s390.h @@ -119,7 +119,6 @@ START_RELOC_NUMBERS (elf_s390_reloc_type) RELOC_NUMBER (R_390_GOTPLT20, 59) /* 20 bit offset to jump slot. */ RELOC_NUMBER (R_390_TLS_GOTIE20, 60)/* 20 bit GOT offset for statis TLS block offset. */ - RELOC_NUMBER (R_390_IRELATIVE, 61) /* IFUNC relocation. */ /* These are GNU extensions to enable C++ vtable garbage collection. */ RELOC_NUMBER (R_390_GNU_VTINHERIT, 250) RELOC_NUMBER (R_390_GNU_VTENTRY, 251) diff --git a/include/elf/sparc.h b/include/elf/sparc.h index d182f4d76..fc8a765a6 100644 --- a/include/elf/sparc.h +++ b/include/elf/sparc.h @@ -162,7 +162,6 @@ START_RELOC_NUMBERS (elf_sparc_reloc_type) RELOC_NUMBER (R_SPARC_H34, 85) RELOC_NUMBER (R_SPARC_SIZE32, 86) RELOC_NUMBER (R_SPARC_SIZE64, 87) - RELOC_NUMBER (R_SPARC_WDISP10, 88) EMPTY_RELOC (R_SPARC_max_std) @@ -213,19 +212,5 @@ enum #define ELF_SPARC_HWCAP_IMA 0x00008000 /* integer multiply-add */ #define ELF_SPARC_HWCAP_ASI_CACHE_SPARING \ 0x00010000 /* cache sparing ASIs */ -#define ELF_SPARC_HWCAP_AES 0x00020000 /* AES crypto insns */ -#define ELF_SPARC_HWCAP_DES 0x00040000 /* DES crypto insns */ -#define ELF_SPARC_HWCAP_KASUMI 0x00080000 /* KASUMI crypto insns */ -#define ELF_SPARC_HWCAP_CAMELLIA \ - 0x00100000 /* CAMELLIA crypto insns */ -#define ELF_SPARC_HWCAP_MD5 0x00200000 /* MD5 hashing insns */ -#define ELF_SPARC_HWCAP_SHA1 0x00400000 /* SHA1 hashing insns */ -#define ELF_SPARC_HWCAP_SHA256 0x00800000 /* SHA256 hashing insns */ -#define ELF_SPARC_HWCAP_SHA512 0x01000000 /* SHA512 hashing insns */ -#define ELF_SPARC_HWCAP_MPMUL 0x02000000 /* Multiple Precision Multiply */ -#define ELF_SPARC_HWCAP_MONT 0x04000000 /* Montgomery Mult/Sqrt */ -#define ELF_SPARC_HWCAP_PAUSE 0x08000000 /* Pause insn */ -#define ELF_SPARC_HWCAP_CBCOND 0x10000000 /* Compare and Branch insns */ -#define ELF_SPARC_HWCAP_CRC32C 0x20000000 /* CRC32C insn */ #endif /* _ELF_SPARC_H */ diff --git a/include/elf/xgate.h b/include/elf/xgate.h deleted file mode 100644 index 33286a8d0..000000000 --- a/include/elf/xgate.h +++ /dev/null @@ -1,77 +0,0 @@ -/* XGATE ELF support for BFD. - Copyright 2010, 2011, 2012 Free Software Foundation, Inc. - - This file is part of BFD, the Binary File Descriptor library. - - This program is free software; you can redistribute it and/or modify - it under the terms of 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. - - This program 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 a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ - -#ifndef _ELF_XGATE_H -#define _ELF_XGATE_H - -#include "elf/reloc-macros.h" - -/* Relocation types. */ -START_RELOC_NUMBERS (elf_xgate_reloc_type) - RELOC_NUMBER (R_XGATE_NONE, 0) - RELOC_NUMBER (R_XGATE_8, 1) - RELOC_NUMBER (R_XGATE_PCREL_8, 2) - RELOC_NUMBER (R_XGATE_16, 3) - RELOC_NUMBER (R_XGATE_32, 4) - RELOC_NUMBER (R_XGATE_PCREL_16, 5) - /* These are GNU extensions to enable C++ vtable garbage collection. */ - RELOC_NUMBER (R_XGATE_GNU_VTINHERIT, 6) - RELOC_NUMBER (R_XGATE_GNU_VTENTRY, 7) - - RELOC_NUMBER (R_XGATE_24, 8) - RELOC_NUMBER (R_XGATE_LO16, 9) - RELOC_NUMBER (R_XGATE_GPAGE, 10) - RELOC_NUMBER (R_XGATE_PCREL_9, 11) - RELOC_NUMBER (R_XGATE_PCREL_10, 12) - RELOC_NUMBER (R_XGATE_IMM8_LO, 13) - RELOC_NUMBER (R_XGATE_IMM8_HI, 14) - RELOC_NUMBER (R_XGATE_IMM3, 15) - RELOC_NUMBER (R_XGATE_IMM4, 16) - RELOC_NUMBER (R_XGATE_IMM5, 17) - - /* GNU extension for linker relaxation. - Mark beginning of a jump instruction (any form). */ - RELOC_NUMBER (R_XGATE_RL_JUMP, 18) - - /* Mark beginning of Gcc relaxation group instruction. */ - RELOC_NUMBER (R_XGATE_RL_GROUP, 19) -END_RELOC_NUMBERS (R_XGATE_max) - -/* Processor specific flags for the ELF header e_flags field. */ - -/* ABI identification. */ -#define EF_XGATE_ABI 0x00000000F - -/* Integers are 32-bit long. */ -#define E_XGATE_I32 0x000000001 - -/* Doubles are 64-bit long. */ -#define E_XGATE_F64 0x000000002 - -#define EF_XGATE_MACH_MASK 0xF0 - -#define EF_XGATE_MACH 0x80 /* XGATE microcontroller. */ - -#define E_M68HCS12X_GLOBAL 0x100 - -/* Identify interrupt handlers. This is used by the debugger to - correctly compute the stack frame. */ -#define STO_XGATE_INTERRUPT 0x40 - -#endif diff --git a/include/filenames.h b/include/filenames.h index e799a51b6..75ec3302d 100644 --- a/include/filenames.h +++ b/include/filenames.h @@ -26,8 +26,6 @@ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. #ifndef FILENAMES_H #define FILENAMES_H -#include "hashtab.h" /* for hashval_t */ - #ifdef __cplusplus extern "C" { #endif @@ -86,10 +84,6 @@ extern int filename_cmp (const char *s1, const char *s2); extern int filename_ncmp (const char *s1, const char *s2, size_t n); -extern hashval_t filename_hash (const void *s); - -extern int filename_eq (const void *s1, const void *s2); - #ifdef __cplusplus } #endif diff --git a/include/gdb/ChangeLog b/include/gdb/ChangeLog index 833f913ff..a2ab59f0f 100644 --- a/include/gdb/ChangeLog +++ b/include/gdb/ChangeLog @@ -1,23 +1,3 @@ -2012-06-23 Doug Evans <dje@google.com> - - * gdb-index.h: New file. - -2012-05-24 Pedro Alves <palves@redhat.com> - - PR gdb/7205 - - Replace TARGET_SIGNAL_ with GDB_SIGNAL_ throughout. - -2012-05-24 Pedro Alves <palves@redhat.com> - - PR gdb/7205 - - Replace target_signal with gdb_signal throughout. - -2012-04-12 Mike Frysinger <vapier@gentoo.org> - - * callback.h (CB_SYS_argc, CB_SYS_argnlen, CB_SYS_argn): Define. - 2012-02-03 Kevin Buettner <kevinb@redhat.com> * sim-rl78.h: New file. diff --git a/include/gdb/callback.h b/include/gdb/callback.h index d8d14727d..9b6cf8539 100644 --- a/include/gdb/callback.h +++ b/include/gdb/callback.h @@ -231,11 +231,6 @@ extern host_callback default_callback; #define CB_SYS_truncate 21 #define CB_SYS_ftruncate 22 #define CB_SYS_pipe 23 - -/* New ARGV support. */ -#define CB_SYS_argc 24 -#define CB_SYS_argnlen 25 -#define CB_SYS_argn 26 /* Struct use to pass and return information necessary to perform a system call. */ @@ -314,7 +309,7 @@ int cb_target_to_host_open (host_callback *, int); int cb_target_to_host_signal (host_callback *, int); /* Translate host signal number to target. */ -int cb_host_to_gdb_signal (host_callback *, int); +int cb_host_to_target_signal (host_callback *, int); /* Translate host stat struct to target. If stat struct ptr is NULL, just compute target stat struct size. diff --git a/include/gdb/gdb-index.h b/include/gdb/gdb-index.h deleted file mode 100644 index 92c3398b9..000000000 --- a/include/gdb/gdb-index.h +++ /dev/null @@ -1,99 +0,0 @@ -/* Public attributes of the .gdb_index section. - Copyright 2012 Free Software Foundation, Inc. - - This file is part of GDB. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program 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 a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. */ - -/* This file contains values for understanding the .gdb_index section - needed by more than just GDB, e.g. readelf. */ - -#ifndef GDB_INDEX_H -#define GDB_INDEX_H - -/* Each symbol in .gdb_index refers to a set of CUs that defines the symbol. - Each CU is represented by a 32 bit number that is the index of the CU in - the CU table, plus some attributes of the use of the symbol in that CU. - - The values are defined such that if all the bits are zero, then no - special meaning is assigned to any of them. This is done to preserve - compatibility with older indices. The way this is done is to specify - that if the GDB_INDEX_SYMBOL_KIND value is zero then all other attribute - bits must be zero. - - 0-23 CU index - 24-27 reserved - 28-30 symbol kind - 31 0 == global, 1 == static - - Bits 24-27 are reserved because it's easier to relax restrictions than - it is to impose them after the fact. At present 24 bits to represent - the CU index is plenty. If we need more bits for the CU index or for - attributes then we have them. */ - -/* Whether the symbol is in GLOBAL_BLOCK (== 0) or STATIC_BLOCK (== 1). */ -#define GDB_INDEX_SYMBOL_STATIC_SHIFT 31 -#define GDB_INDEX_SYMBOL_STATIC_MASK 1 -#define GDB_INDEX_SYMBOL_STATIC_VALUE(cu_index) \ - (((cu_index) >> GDB_INDEX_SYMBOL_STATIC_SHIFT) & GDB_INDEX_SYMBOL_STATIC_MASK) -#define GDB_INDEX_SYMBOL_STATIC_SET_VALUE(cu_index, value) \ - do { \ - (cu_index) |= (((value) & GDB_INDEX_SYMBOL_STATIC_MASK) \ - << GDB_INDEX_SYMBOL_STATIC_SHIFT); \ - } while (0) - -/* The kind of the symbol. - We don't use GDB's internal values as these numbers are published - so that other tools can build and read .gdb_index. */ - -typedef enum { - /* Special value to indicate no attributes are present. */ - GDB_INDEX_SYMBOL_KIND_NONE = 0, - GDB_INDEX_SYMBOL_KIND_TYPE = 1, - GDB_INDEX_SYMBOL_KIND_VARIABLE = 2, - GDB_INDEX_SYMBOL_KIND_FUNCTION = 3, - GDB_INDEX_SYMBOL_KIND_OTHER = 4, - /* We currently allocate 3 bits to record the symbol kind. - Give the unused bits a value so gdb will print them sensibly. */ - GDB_INDEX_SYMBOL_KIND_UNUSED5 = 5, - GDB_INDEX_SYMBOL_KIND_UNUSED6 = 6, - GDB_INDEX_SYMBOL_KIND_UNUSED7 = 7, -} gdb_index_symbol_kind; - -#define GDB_INDEX_SYMBOL_KIND_SHIFT 28 -#define GDB_INDEX_SYMBOL_KIND_MASK 7 -#define GDB_INDEX_SYMBOL_KIND_VALUE(cu_index) \ - ((gdb_index_symbol_kind) (((cu_index) >> GDB_INDEX_SYMBOL_KIND_SHIFT) \ - & GDB_INDEX_SYMBOL_KIND_MASK)) -#define GDB_INDEX_SYMBOL_KIND_SET_VALUE(cu_index, value) \ - do { \ - (cu_index) |= (((value) & GDB_INDEX_SYMBOL_KIND_MASK) \ - << GDB_INDEX_SYMBOL_KIND_SHIFT); \ - } while (0) - -#define GDB_INDEX_RESERVED_SHIFT 24 -#define GDB_INDEX_RESERVED_MASK 15 -#define GDB_INDEX_RESERVED_VALUE(cu_index) \ - (((cu_index) >> GDB_INDEX_RESERVED_SHIFT) & GDB_INDEX_RESERVED_MASK) - -/* CU index. */ -#define GDB_INDEX_CU_BITSIZE 24 -#define GDB_INDEX_CU_MASK ((1 << GDB_INDEX_CU_BITSIZE) - 1) -#define GDB_INDEX_CU_VALUE(cu_index) ((cu_index) & GDB_INDEX_CU_MASK) -#define GDB_INDEX_CU_SET_VALUE(cu_index, value) \ - do { \ - (cu_index) |= (value) & GDB_INDEX_CU_MASK; \ - } while (0) - -#endif /* GDB_INDEX_H */ diff --git a/include/gdb/signals.def b/include/gdb/signals.def index ef4c8d4ee..c01895ae5 100644 --- a/include/gdb/signals.def +++ b/include/gdb/signals.def @@ -18,173 +18,173 @@ /* Used some places (e.g. stop_signal) to record the concept that there is no signal. */ -SET (GDB_SIGNAL_0, 0, "0", "Signal 0") -#define GDB_SIGNAL_FIRST GDB_SIGNAL_0 -SET (GDB_SIGNAL_HUP, 1, "SIGHUP", "Hangup") -SET (GDB_SIGNAL_INT, 2, "SIGINT", "Interrupt") -SET (GDB_SIGNAL_QUIT, 3, "SIGQUIT", "Quit") -SET (GDB_SIGNAL_ILL, 4, "SIGILL", "Illegal instruction") -SET (GDB_SIGNAL_TRAP, 5, "SIGTRAP", "Trace/breakpoint trap") -SET (GDB_SIGNAL_ABRT, 6, "SIGABRT", "Aborted") -SET (GDB_SIGNAL_EMT, 7, "SIGEMT", "Emulation trap") -SET (GDB_SIGNAL_FPE, 8, "SIGFPE", "Arithmetic exception") -SET (GDB_SIGNAL_KILL, 9, "SIGKILL", "Killed") -SET (GDB_SIGNAL_BUS, 10, "SIGBUS", "Bus error") -SET (GDB_SIGNAL_SEGV, 11, "SIGSEGV", "Segmentation fault") -SET (GDB_SIGNAL_SYS, 12, "SIGSYS", "Bad system call") -SET (GDB_SIGNAL_PIPE, 13, "SIGPIPE", "Broken pipe") -SET (GDB_SIGNAL_ALRM, 14, "SIGALRM", "Alarm clock") -SET (GDB_SIGNAL_TERM, 15, "SIGTERM", "Terminated") -SET (GDB_SIGNAL_URG, 16, "SIGURG", "Urgent I/O condition") -SET (GDB_SIGNAL_STOP, 17, "SIGSTOP", "Stopped (signal)") -SET (GDB_SIGNAL_TSTP, 18, "SIGTSTP", "Stopped (user)") -SET (GDB_SIGNAL_CONT, 19, "SIGCONT", "Continued") -SET (GDB_SIGNAL_CHLD, 20, "SIGCHLD", "Child status changed") -SET (GDB_SIGNAL_TTIN, 21, "SIGTTIN", "Stopped (tty input)") -SET (GDB_SIGNAL_TTOU, 22, "SIGTTOU", "Stopped (tty output)") -SET (GDB_SIGNAL_IO, 23, "SIGIO", "I/O possible") -SET (GDB_SIGNAL_XCPU, 24, "SIGXCPU", "CPU time limit exceeded") -SET (GDB_SIGNAL_XFSZ, 25, "SIGXFSZ", "File size limit exceeded") -SET (GDB_SIGNAL_VTALRM, 26, "SIGVTALRM", "Virtual timer expired") -SET (GDB_SIGNAL_PROF, 27, "SIGPROF", "Profiling timer expired") -SET (GDB_SIGNAL_WINCH, 28, "SIGWINCH", "Window size changed") -SET (GDB_SIGNAL_LOST, 29, "SIGLOST", "Resource lost") -SET (GDB_SIGNAL_USR1, 30, "SIGUSR1", "User defined signal 1") -SET (GDB_SIGNAL_USR2, 31, "SIGUSR2", "User defined signal 2") -SET (GDB_SIGNAL_PWR, 32, "SIGPWR", "Power fail/restart") +SET (TARGET_SIGNAL_0, 0, "0", "Signal 0") +#define TARGET_SIGNAL_FIRST TARGET_SIGNAL_0 +SET (TARGET_SIGNAL_HUP, 1, "SIGHUP", "Hangup") +SET (TARGET_SIGNAL_INT, 2, "SIGINT", "Interrupt") +SET (TARGET_SIGNAL_QUIT, 3, "SIGQUIT", "Quit") +SET (TARGET_SIGNAL_ILL, 4, "SIGILL", "Illegal instruction") +SET (TARGET_SIGNAL_TRAP, 5, "SIGTRAP", "Trace/breakpoint trap") +SET (TARGET_SIGNAL_ABRT, 6, "SIGABRT", "Aborted") +SET (TARGET_SIGNAL_EMT, 7, "SIGEMT", "Emulation trap") +SET (TARGET_SIGNAL_FPE, 8, "SIGFPE", "Arithmetic exception") +SET (TARGET_SIGNAL_KILL, 9, "SIGKILL", "Killed") +SET (TARGET_SIGNAL_BUS, 10, "SIGBUS", "Bus error") +SET (TARGET_SIGNAL_SEGV, 11, "SIGSEGV", "Segmentation fault") +SET (TARGET_SIGNAL_SYS, 12, "SIGSYS", "Bad system call") +SET (TARGET_SIGNAL_PIPE, 13, "SIGPIPE", "Broken pipe") +SET (TARGET_SIGNAL_ALRM, 14, "SIGALRM", "Alarm clock") +SET (TARGET_SIGNAL_TERM, 15, "SIGTERM", "Terminated") +SET (TARGET_SIGNAL_URG, 16, "SIGURG", "Urgent I/O condition") +SET (TARGET_SIGNAL_STOP, 17, "SIGSTOP", "Stopped (signal)") +SET (TARGET_SIGNAL_TSTP, 18, "SIGTSTP", "Stopped (user)") +SET (TARGET_SIGNAL_CONT, 19, "SIGCONT", "Continued") +SET (TARGET_SIGNAL_CHLD, 20, "SIGCHLD", "Child status changed") +SET (TARGET_SIGNAL_TTIN, 21, "SIGTTIN", "Stopped (tty input)") +SET (TARGET_SIGNAL_TTOU, 22, "SIGTTOU", "Stopped (tty output)") +SET (TARGET_SIGNAL_IO, 23, "SIGIO", "I/O possible") +SET (TARGET_SIGNAL_XCPU, 24, "SIGXCPU", "CPU time limit exceeded") +SET (TARGET_SIGNAL_XFSZ, 25, "SIGXFSZ", "File size limit exceeded") +SET (TARGET_SIGNAL_VTALRM, 26, "SIGVTALRM", "Virtual timer expired") +SET (TARGET_SIGNAL_PROF, 27, "SIGPROF", "Profiling timer expired") +SET (TARGET_SIGNAL_WINCH, 28, "SIGWINCH", "Window size changed") +SET (TARGET_SIGNAL_LOST, 29, "SIGLOST", "Resource lost") +SET (TARGET_SIGNAL_USR1, 30, "SIGUSR1", "User defined signal 1") +SET (TARGET_SIGNAL_USR2, 31, "SIGUSR2", "User defined signal 2") +SET (TARGET_SIGNAL_PWR, 32, "SIGPWR", "Power fail/restart") /* Similar to SIGIO. Perhaps they should have the same number. */ -SET (GDB_SIGNAL_POLL, 33, "SIGPOLL", "Pollable event occurred") -SET (GDB_SIGNAL_WIND, 34, "SIGWIND", "SIGWIND") -SET (GDB_SIGNAL_PHONE, 35, "SIGPHONE", "SIGPHONE") -SET (GDB_SIGNAL_WAITING, 36, "SIGWAITING", "Process's LWPs are blocked") -SET (GDB_SIGNAL_LWP, 37, "SIGLWP", "Signal LWP") -SET (GDB_SIGNAL_DANGER, 38, "SIGDANGER", "Swap space dangerously low") -SET (GDB_SIGNAL_GRANT, 39, "SIGGRANT", "Monitor mode granted") -SET (GDB_SIGNAL_RETRACT, 40, "SIGRETRACT", +SET (TARGET_SIGNAL_POLL, 33, "SIGPOLL", "Pollable event occurred") +SET (TARGET_SIGNAL_WIND, 34, "SIGWIND", "SIGWIND") +SET (TARGET_SIGNAL_PHONE, 35, "SIGPHONE", "SIGPHONE") +SET (TARGET_SIGNAL_WAITING, 36, "SIGWAITING", "Process's LWPs are blocked") +SET (TARGET_SIGNAL_LWP, 37, "SIGLWP", "Signal LWP") +SET (TARGET_SIGNAL_DANGER, 38, "SIGDANGER", "Swap space dangerously low") +SET (TARGET_SIGNAL_GRANT, 39, "SIGGRANT", "Monitor mode granted") +SET (TARGET_SIGNAL_RETRACT, 40, "SIGRETRACT", "Need to relinquish monitor mode") -SET (GDB_SIGNAL_MSG, 41, "SIGMSG", "Monitor mode data available") -SET (GDB_SIGNAL_SOUND, 42, "SIGSOUND", "Sound completed") -SET (GDB_SIGNAL_SAK, 43, "SIGSAK", "Secure attention") -SET (GDB_SIGNAL_PRIO, 44, "SIGPRIO", "SIGPRIO") -SET (GDB_SIGNAL_REALTIME_33, 45, "SIG33", "Real-time event 33") -SET (GDB_SIGNAL_REALTIME_34, 46, "SIG34", "Real-time event 34") -SET (GDB_SIGNAL_REALTIME_35, 47, "SIG35", "Real-time event 35") -SET (GDB_SIGNAL_REALTIME_36, 48, "SIG36", "Real-time event 36") -SET (GDB_SIGNAL_REALTIME_37, 49, "SIG37", "Real-time event 37") -SET (GDB_SIGNAL_REALTIME_38, 50, "SIG38", "Real-time event 38") -SET (GDB_SIGNAL_REALTIME_39, 51, "SIG39", "Real-time event 39") -SET (GDB_SIGNAL_REALTIME_40, 52, "SIG40", "Real-time event 40") -SET (GDB_SIGNAL_REALTIME_41, 53, "SIG41", "Real-time event 41") -SET (GDB_SIGNAL_REALTIME_42, 54, "SIG42", "Real-time event 42") -SET (GDB_SIGNAL_REALTIME_43, 55, "SIG43", "Real-time event 43") -SET (GDB_SIGNAL_REALTIME_44, 56, "SIG44", "Real-time event 44") -SET (GDB_SIGNAL_REALTIME_45, 57, "SIG45", "Real-time event 45") -SET (GDB_SIGNAL_REALTIME_46, 58, "SIG46", "Real-time event 46") -SET (GDB_SIGNAL_REALTIME_47, 59, "SIG47", "Real-time event 47") -SET (GDB_SIGNAL_REALTIME_48, 60, "SIG48", "Real-time event 48") -SET (GDB_SIGNAL_REALTIME_49, 61, "SIG49", "Real-time event 49") -SET (GDB_SIGNAL_REALTIME_50, 62, "SIG50", "Real-time event 50") -SET (GDB_SIGNAL_REALTIME_51, 63, "SIG51", "Real-time event 51") -SET (GDB_SIGNAL_REALTIME_52, 64, "SIG52", "Real-time event 52") -SET (GDB_SIGNAL_REALTIME_53, 65, "SIG53", "Real-time event 53") -SET (GDB_SIGNAL_REALTIME_54, 66, "SIG54", "Real-time event 54") -SET (GDB_SIGNAL_REALTIME_55, 67, "SIG55", "Real-time event 55") -SET (GDB_SIGNAL_REALTIME_56, 68, "SIG56", "Real-time event 56") -SET (GDB_SIGNAL_REALTIME_57, 69, "SIG57", "Real-time event 57") -SET (GDB_SIGNAL_REALTIME_58, 70, "SIG58", "Real-time event 58") -SET (GDB_SIGNAL_REALTIME_59, 71, "SIG59", "Real-time event 59") -SET (GDB_SIGNAL_REALTIME_60, 72, "SIG60", "Real-time event 60") -SET (GDB_SIGNAL_REALTIME_61, 73, "SIG61", "Real-time event 61") -SET (GDB_SIGNAL_REALTIME_62, 74, "SIG62", "Real-time event 62") -SET (GDB_SIGNAL_REALTIME_63, 75, "SIG63", "Real-time event 63") +SET (TARGET_SIGNAL_MSG, 41, "SIGMSG", "Monitor mode data available") +SET (TARGET_SIGNAL_SOUND, 42, "SIGSOUND", "Sound completed") +SET (TARGET_SIGNAL_SAK, 43, "SIGSAK", "Secure attention") +SET (TARGET_SIGNAL_PRIO, 44, "SIGPRIO", "SIGPRIO") +SET (TARGET_SIGNAL_REALTIME_33, 45, "SIG33", "Real-time event 33") +SET (TARGET_SIGNAL_REALTIME_34, 46, "SIG34", "Real-time event 34") +SET (TARGET_SIGNAL_REALTIME_35, 47, "SIG35", "Real-time event 35") +SET (TARGET_SIGNAL_REALTIME_36, 48, "SIG36", "Real-time event 36") +SET (TARGET_SIGNAL_REALTIME_37, 49, "SIG37", "Real-time event 37") +SET (TARGET_SIGNAL_REALTIME_38, 50, "SIG38", "Real-time event 38") +SET (TARGET_SIGNAL_REALTIME_39, 51, "SIG39", "Real-time event 39") +SET (TARGET_SIGNAL_REALTIME_40, 52, "SIG40", "Real-time event 40") +SET (TARGET_SIGNAL_REALTIME_41, 53, "SIG41", "Real-time event 41") +SET (TARGET_SIGNAL_REALTIME_42, 54, "SIG42", "Real-time event 42") +SET (TARGET_SIGNAL_REALTIME_43, 55, "SIG43", "Real-time event 43") +SET (TARGET_SIGNAL_REALTIME_44, 56, "SIG44", "Real-time event 44") +SET (TARGET_SIGNAL_REALTIME_45, 57, "SIG45", "Real-time event 45") +SET (TARGET_SIGNAL_REALTIME_46, 58, "SIG46", "Real-time event 46") +SET (TARGET_SIGNAL_REALTIME_47, 59, "SIG47", "Real-time event 47") +SET (TARGET_SIGNAL_REALTIME_48, 60, "SIG48", "Real-time event 48") +SET (TARGET_SIGNAL_REALTIME_49, 61, "SIG49", "Real-time event 49") +SET (TARGET_SIGNAL_REALTIME_50, 62, "SIG50", "Real-time event 50") +SET (TARGET_SIGNAL_REALTIME_51, 63, "SIG51", "Real-time event 51") +SET (TARGET_SIGNAL_REALTIME_52, 64, "SIG52", "Real-time event 52") +SET (TARGET_SIGNAL_REALTIME_53, 65, "SIG53", "Real-time event 53") +SET (TARGET_SIGNAL_REALTIME_54, 66, "SIG54", "Real-time event 54") +SET (TARGET_SIGNAL_REALTIME_55, 67, "SIG55", "Real-time event 55") +SET (TARGET_SIGNAL_REALTIME_56, 68, "SIG56", "Real-time event 56") +SET (TARGET_SIGNAL_REALTIME_57, 69, "SIG57", "Real-time event 57") +SET (TARGET_SIGNAL_REALTIME_58, 70, "SIG58", "Real-time event 58") +SET (TARGET_SIGNAL_REALTIME_59, 71, "SIG59", "Real-time event 59") +SET (TARGET_SIGNAL_REALTIME_60, 72, "SIG60", "Real-time event 60") +SET (TARGET_SIGNAL_REALTIME_61, 73, "SIG61", "Real-time event 61") +SET (TARGET_SIGNAL_REALTIME_62, 74, "SIG62", "Real-time event 62") +SET (TARGET_SIGNAL_REALTIME_63, 75, "SIG63", "Real-time event 63") /* Used internally by Solaris threads. See signal(5) on Solaris. */ -SET (GDB_SIGNAL_CANCEL, 76, "SIGCANCEL", "LWP internal signal") +SET (TARGET_SIGNAL_CANCEL, 76, "SIGCANCEL", "LWP internal signal") /* Yes, this pains me, too. But LynxOS didn't have SIG32, and now GNU/Linux does, and we can't disturb the numbering, since it's part of the remote protocol. Note that in some GDB's - GDB_SIGNAL_REALTIME_32 is number 76. */ -SET (GDB_SIGNAL_REALTIME_32, 77, "SIG32", "Real-time event 32") + TARGET_SIGNAL_REALTIME_32 is number 76. */ +SET (TARGET_SIGNAL_REALTIME_32, 77, "SIG32", "Real-time event 32") /* Yet another pain, IRIX 6 has SIG64. */ -SET (GDB_SIGNAL_REALTIME_64, 78, "SIG64", "Real-time event 64") +SET (TARGET_SIGNAL_REALTIME_64, 78, "SIG64", "Real-time event 64") /* Yet another pain, GNU/Linux MIPS might go up to 128. */ -SET (GDB_SIGNAL_REALTIME_65, 79, "SIG65", "Real-time event 65") -SET (GDB_SIGNAL_REALTIME_66, 80, "SIG66", "Real-time event 66") -SET (GDB_SIGNAL_REALTIME_67, 81, "SIG67", "Real-time event 67") -SET (GDB_SIGNAL_REALTIME_68, 82, "SIG68", "Real-time event 68") -SET (GDB_SIGNAL_REALTIME_69, 83, "SIG69", "Real-time event 69") -SET (GDB_SIGNAL_REALTIME_70, 84, "SIG70", "Real-time event 70") -SET (GDB_SIGNAL_REALTIME_71, 85, "SIG71", "Real-time event 71") -SET (GDB_SIGNAL_REALTIME_72, 86, "SIG72", "Real-time event 72") -SET (GDB_SIGNAL_REALTIME_73, 87, "SIG73", "Real-time event 73") -SET (GDB_SIGNAL_REALTIME_74, 88, "SIG74", "Real-time event 74") -SET (GDB_SIGNAL_REALTIME_75, 89, "SIG75", "Real-time event 75") -SET (GDB_SIGNAL_REALTIME_76, 90, "SIG76", "Real-time event 76") -SET (GDB_SIGNAL_REALTIME_77, 91, "SIG77", "Real-time event 77") -SET (GDB_SIGNAL_REALTIME_78, 92, "SIG78", "Real-time event 78") -SET (GDB_SIGNAL_REALTIME_79, 93, "SIG79", "Real-time event 79") -SET (GDB_SIGNAL_REALTIME_80, 94, "SIG80", "Real-time event 80") -SET (GDB_SIGNAL_REALTIME_81, 95, "SIG81", "Real-time event 81") -SET (GDB_SIGNAL_REALTIME_82, 96, "SIG82", "Real-time event 82") -SET (GDB_SIGNAL_REALTIME_83, 97, "SIG83", "Real-time event 83") -SET (GDB_SIGNAL_REALTIME_84, 98, "SIG84", "Real-time event 84") -SET (GDB_SIGNAL_REALTIME_85, 99, "SIG85", "Real-time event 85") -SET (GDB_SIGNAL_REALTIME_86, 100, "SIG86", "Real-time event 86") -SET (GDB_SIGNAL_REALTIME_87, 101, "SIG87", "Real-time event 87") -SET (GDB_SIGNAL_REALTIME_88, 102, "SIG88", "Real-time event 88") -SET (GDB_SIGNAL_REALTIME_89, 103, "SIG89", "Real-time event 89") -SET (GDB_SIGNAL_REALTIME_90, 104, "SIG90", "Real-time event 90") -SET (GDB_SIGNAL_REALTIME_91, 105, "SIG91", "Real-time event 91") -SET (GDB_SIGNAL_REALTIME_92, 106, "SIG92", "Real-time event 92") -SET (GDB_SIGNAL_REALTIME_93, 107, "SIG93", "Real-time event 93") -SET (GDB_SIGNAL_REALTIME_94, 108, "SIG94", "Real-time event 94") -SET (GDB_SIGNAL_REALTIME_95, 109, "SIG95", "Real-time event 95") -SET (GDB_SIGNAL_REALTIME_96, 110, "SIG96", "Real-time event 96") -SET (GDB_SIGNAL_REALTIME_97, 111, "SIG97", "Real-time event 97") -SET (GDB_SIGNAL_REALTIME_98, 112, "SIG98", "Real-time event 98") -SET (GDB_SIGNAL_REALTIME_99, 113, "SIG99", "Real-time event 99") -SET (GDB_SIGNAL_REALTIME_100, 114, "SIG100", "Real-time event 100") -SET (GDB_SIGNAL_REALTIME_101, 115, "SIG101", "Real-time event 101") -SET (GDB_SIGNAL_REALTIME_102, 116, "SIG102", "Real-time event 102") -SET (GDB_SIGNAL_REALTIME_103, 117, "SIG103", "Real-time event 103") -SET (GDB_SIGNAL_REALTIME_104, 118, "SIG104", "Real-time event 104") -SET (GDB_SIGNAL_REALTIME_105, 119, "SIG105", "Real-time event 105") -SET (GDB_SIGNAL_REALTIME_106, 120, "SIG106", "Real-time event 106") -SET (GDB_SIGNAL_REALTIME_107, 121, "SIG107", "Real-time event 107") -SET (GDB_SIGNAL_REALTIME_108, 122, "SIG108", "Real-time event 108") -SET (GDB_SIGNAL_REALTIME_109, 123, "SIG109", "Real-time event 109") -SET (GDB_SIGNAL_REALTIME_110, 124, "SIG110", "Real-time event 110") -SET (GDB_SIGNAL_REALTIME_111, 125, "SIG111", "Real-time event 111") -SET (GDB_SIGNAL_REALTIME_112, 126, "SIG112", "Real-time event 112") -SET (GDB_SIGNAL_REALTIME_113, 127, "SIG113", "Real-time event 113") -SET (GDB_SIGNAL_REALTIME_114, 128, "SIG114", "Real-time event 114") -SET (GDB_SIGNAL_REALTIME_115, 129, "SIG115", "Real-time event 115") -SET (GDB_SIGNAL_REALTIME_116, 130, "SIG116", "Real-time event 116") -SET (GDB_SIGNAL_REALTIME_117, 131, "SIG117", "Real-time event 117") -SET (GDB_SIGNAL_REALTIME_118, 132, "SIG118", "Real-time event 118") -SET (GDB_SIGNAL_REALTIME_119, 133, "SIG119", "Real-time event 119") -SET (GDB_SIGNAL_REALTIME_120, 134, "SIG120", "Real-time event 120") -SET (GDB_SIGNAL_REALTIME_121, 135, "SIG121", "Real-time event 121") -SET (GDB_SIGNAL_REALTIME_122, 136, "SIG122", "Real-time event 122") -SET (GDB_SIGNAL_REALTIME_123, 137, "SIG123", "Real-time event 123") -SET (GDB_SIGNAL_REALTIME_124, 138, "SIG124", "Real-time event 124") -SET (GDB_SIGNAL_REALTIME_125, 139, "SIG125", "Real-time event 125") -SET (GDB_SIGNAL_REALTIME_126, 140, "SIG126", "Real-time event 126") -SET (GDB_SIGNAL_REALTIME_127, 141, "SIG127", "Real-time event 127") +SET (TARGET_SIGNAL_REALTIME_65, 79, "SIG65", "Real-time event 65") +SET (TARGET_SIGNAL_REALTIME_66, 80, "SIG66", "Real-time event 66") +SET (TARGET_SIGNAL_REALTIME_67, 81, "SIG67", "Real-time event 67") +SET (TARGET_SIGNAL_REALTIME_68, 82, "SIG68", "Real-time event 68") +SET (TARGET_SIGNAL_REALTIME_69, 83, "SIG69", "Real-time event 69") +SET (TARGET_SIGNAL_REALTIME_70, 84, "SIG70", "Real-time event 70") +SET (TARGET_SIGNAL_REALTIME_71, 85, "SIG71", "Real-time event 71") +SET (TARGET_SIGNAL_REALTIME_72, 86, "SIG72", "Real-time event 72") +SET (TARGET_SIGNAL_REALTIME_73, 87, "SIG73", "Real-time event 73") +SET (TARGET_SIGNAL_REALTIME_74, 88, "SIG74", "Real-time event 74") +SET (TARGET_SIGNAL_REALTIME_75, 89, "SIG75", "Real-time event 75") +SET (TARGET_SIGNAL_REALTIME_76, 90, "SIG76", "Real-time event 76") +SET (TARGET_SIGNAL_REALTIME_77, 91, "SIG77", "Real-time event 77") +SET (TARGET_SIGNAL_REALTIME_78, 92, "SIG78", "Real-time event 78") +SET (TARGET_SIGNAL_REALTIME_79, 93, "SIG79", "Real-time event 79") +SET (TARGET_SIGNAL_REALTIME_80, 94, "SIG80", "Real-time event 80") +SET (TARGET_SIGNAL_REALTIME_81, 95, "SIG81", "Real-time event 81") +SET (TARGET_SIGNAL_REALTIME_82, 96, "SIG82", "Real-time event 82") +SET (TARGET_SIGNAL_REALTIME_83, 97, "SIG83", "Real-time event 83") +SET (TARGET_SIGNAL_REALTIME_84, 98, "SIG84", "Real-time event 84") +SET (TARGET_SIGNAL_REALTIME_85, 99, "SIG85", "Real-time event 85") +SET (TARGET_SIGNAL_REALTIME_86, 100, "SIG86", "Real-time event 86") +SET (TARGET_SIGNAL_REALTIME_87, 101, "SIG87", "Real-time event 87") +SET (TARGET_SIGNAL_REALTIME_88, 102, "SIG88", "Real-time event 88") +SET (TARGET_SIGNAL_REALTIME_89, 103, "SIG89", "Real-time event 89") +SET (TARGET_SIGNAL_REALTIME_90, 104, "SIG90", "Real-time event 90") +SET (TARGET_SIGNAL_REALTIME_91, 105, "SIG91", "Real-time event 91") +SET (TARGET_SIGNAL_REALTIME_92, 106, "SIG92", "Real-time event 92") +SET (TARGET_SIGNAL_REALTIME_93, 107, "SIG93", "Real-time event 93") +SET (TARGET_SIGNAL_REALTIME_94, 108, "SIG94", "Real-time event 94") +SET (TARGET_SIGNAL_REALTIME_95, 109, "SIG95", "Real-time event 95") +SET (TARGET_SIGNAL_REALTIME_96, 110, "SIG96", "Real-time event 96") +SET (TARGET_SIGNAL_REALTIME_97, 111, "SIG97", "Real-time event 97") +SET (TARGET_SIGNAL_REALTIME_98, 112, "SIG98", "Real-time event 98") +SET (TARGET_SIGNAL_REALTIME_99, 113, "SIG99", "Real-time event 99") +SET (TARGET_SIGNAL_REALTIME_100, 114, "SIG100", "Real-time event 100") +SET (TARGET_SIGNAL_REALTIME_101, 115, "SIG101", "Real-time event 101") +SET (TARGET_SIGNAL_REALTIME_102, 116, "SIG102", "Real-time event 102") +SET (TARGET_SIGNAL_REALTIME_103, 117, "SIG103", "Real-time event 103") +SET (TARGET_SIGNAL_REALTIME_104, 118, "SIG104", "Real-time event 104") +SET (TARGET_SIGNAL_REALTIME_105, 119, "SIG105", "Real-time event 105") +SET (TARGET_SIGNAL_REALTIME_106, 120, "SIG106", "Real-time event 106") +SET (TARGET_SIGNAL_REALTIME_107, 121, "SIG107", "Real-time event 107") +SET (TARGET_SIGNAL_REALTIME_108, 122, "SIG108", "Real-time event 108") +SET (TARGET_SIGNAL_REALTIME_109, 123, "SIG109", "Real-time event 109") +SET (TARGET_SIGNAL_REALTIME_110, 124, "SIG110", "Real-time event 110") +SET (TARGET_SIGNAL_REALTIME_111, 125, "SIG111", "Real-time event 111") +SET (TARGET_SIGNAL_REALTIME_112, 126, "SIG112", "Real-time event 112") +SET (TARGET_SIGNAL_REALTIME_113, 127, "SIG113", "Real-time event 113") +SET (TARGET_SIGNAL_REALTIME_114, 128, "SIG114", "Real-time event 114") +SET (TARGET_SIGNAL_REALTIME_115, 129, "SIG115", "Real-time event 115") +SET (TARGET_SIGNAL_REALTIME_116, 130, "SIG116", "Real-time event 116") +SET (TARGET_SIGNAL_REALTIME_117, 131, "SIG117", "Real-time event 117") +SET (TARGET_SIGNAL_REALTIME_118, 132, "SIG118", "Real-time event 118") +SET (TARGET_SIGNAL_REALTIME_119, 133, "SIG119", "Real-time event 119") +SET (TARGET_SIGNAL_REALTIME_120, 134, "SIG120", "Real-time event 120") +SET (TARGET_SIGNAL_REALTIME_121, 135, "SIG121", "Real-time event 121") +SET (TARGET_SIGNAL_REALTIME_122, 136, "SIG122", "Real-time event 122") +SET (TARGET_SIGNAL_REALTIME_123, 137, "SIG123", "Real-time event 123") +SET (TARGET_SIGNAL_REALTIME_124, 138, "SIG124", "Real-time event 124") +SET (TARGET_SIGNAL_REALTIME_125, 139, "SIG125", "Real-time event 125") +SET (TARGET_SIGNAL_REALTIME_126, 140, "SIG126", "Real-time event 126") +SET (TARGET_SIGNAL_REALTIME_127, 141, "SIG127", "Real-time event 127") -SET (GDB_SIGNAL_INFO, 142, "SIGINFO", "Information request") +SET (TARGET_SIGNAL_INFO, 142, "SIGINFO", "Information request") /* Some signal we don't know about. */ -SET (GDB_SIGNAL_UNKNOWN, 143, NULL, "Unknown signal") +SET (TARGET_SIGNAL_UNKNOWN, 143, NULL, "Unknown signal") /* Use whatever signal we use when one is not specifically specified (for passing to proceed and so on). */ -SET (GDB_SIGNAL_DEFAULT, 144, NULL, - "Internal error: printing GDB_SIGNAL_DEFAULT") +SET (TARGET_SIGNAL_DEFAULT, 144, NULL, + "Internal error: printing TARGET_SIGNAL_DEFAULT") /* Mach exceptions. In versions of GDB before 5.2, these were just before - GDB_SIGNAL_INFO if you were compiling on a Mach host (and missing + TARGET_SIGNAL_INFO if you were compiling on a Mach host (and missing otherwise). */ SET (TARGET_EXC_BAD_ACCESS, 145, "EXC_BAD_ACCESS", "Could not access memory") SET (TARGET_EXC_BAD_INSTRUCTION, 146, "EXC_BAD_INSTRUCTION", @@ -197,4 +197,4 @@ SET (TARGET_EXC_BREAKPOINT, 150, "EXC_BREAKPOINT", "Breakpoint") /* If you are adding a new signal, add it just above this comment. */ /* Last and unused enum value, for sizing arrays, etc. */ -SET (GDB_SIGNAL_LAST, 151, NULL, "GDB_SIGNAL_MAGIC") +SET (TARGET_SIGNAL_LAST, 151, NULL, "TARGET_SIGNAL_MAGIC") diff --git a/include/gdb/signals.h b/include/gdb/signals.h index a59d3b5c6..67902c617 100644 --- a/include/gdb/signals.h +++ b/include/gdb/signals.h @@ -45,9 +45,9 @@ etc. are doing to address these issues. */ /* For an explanation of what each signal means, see - gdb_signal_to_string. */ + target_signal_to_string. */ -enum gdb_signal +enum target_signal { #define SET(symbol, constant, name, string) \ symbol = constant, diff --git a/include/leb128.h b/include/leb128.h deleted file mode 100644 index f584f72e5..000000000 --- a/include/leb128.h +++ /dev/null @@ -1,136 +0,0 @@ -/* Utilities for reading leb128 values. - Copyright (C) 2012 Free Software Foundation, Inc. - -This file is part of the libiberty library. -Libiberty is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public -License as published by the Free Software Foundation; either -version 2 of the License, or (at your option) any later version. - -Libiberty 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 -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with libiberty; see the file COPYING.LIB. If not, write -to the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor, -Boston, MA 02110-1301, USA. */ - -/* The functions defined here can be speed critical. - Since they are all pretty small we keep things simple and just define - them all as "static inline". - - WARNING: This file is used by GDB which is stuck at C90. :-( - Though it can use stdint.h, inttypes.h. - Therefore if you want to add support for "long long" you need - to wrap it in #ifdef CC_HAS_LONG_LONG. */ - -#ifndef LEB128_H -#define LEB128_H - -/* Get a definition for inline. */ -#include "ansidecl.h" - -/* Get a definition for NULL, size_t. */ -#include <stddef.h> - -#ifdef HAVE_STDINT_H -#include <stdint.h> -#endif -#ifdef HAVE_INTTYPES_H -#include <inttypes.h> -#endif - -/* Decode the unsigned LEB128 constant at BUF into the variable pointed to - by R, and return the number of bytes read. - If we read off the end of the buffer, zero is returned, - and nothing is stored in R. - - Note: The result is an int instead of a pointer to the next byte to be - read to avoid const-vs-non-const problems. */ - -static inline size_t -read_uleb128_to_uint64 (const unsigned char *buf, const unsigned char *buf_end, - uint64_t *r) -{ - const unsigned char *p = buf; - unsigned int shift = 0; - uint64_t result = 0; - unsigned char byte; - - while (1) - { - if (p >= buf_end) - return 0; - - byte = *p++; - result |= ((uint64_t) (byte & 0x7f)) << shift; - if ((byte & 0x80) == 0) - break; - shift += 7; - } - - *r = result; - return p - buf; -} - -/* Decode the signed LEB128 constant at BUF into the variable pointed to - by R, and return the number of bytes read. - If we read off the end of the buffer, zero is returned, - and nothing is stored in R. - - Note: The result is an int instead of a pointer to the next byte to be - read to avoid const-vs-non-const problems. */ - -static inline size_t -read_sleb128_to_int64 (const unsigned char *buf, const unsigned char *buf_end, - int64_t *r) -{ - const unsigned char *p = buf; - unsigned int shift = 0; - int64_t result = 0; - unsigned char byte; - - while (1) - { - if (p >= buf_end) - return 0; - - byte = *p++; - result |= ((uint64_t) (byte & 0x7f)) << shift; - shift += 7; - if ((byte & 0x80) == 0) - break; - } - if (shift < (sizeof (*r) * 8) && (byte & 0x40) != 0) - result |= -(((uint64_t) 1) << shift); - - *r = result; - return p - buf; -} - -/* Return the number of bytes to read to skip past an LEB128 number in BUF. - If the end isn't found before reaching BUF_END, return zero. - - Note: The result is an int instead of a pointer to the next byte to be - read to avoid const-vs-non-const problems. */ - -static inline size_t -skip_leb128 (const unsigned char *buf, const unsigned char *buf_end) -{ - const unsigned char *p = buf; - unsigned char byte; - - while (1) - { - if (p == buf_end) - return 0; - - byte = *p++; - if ((byte & 0x80) == 0) - return p - buf; - } -} - -#endif /* LEB128_H */ diff --git a/include/mach-o/ChangeLog b/include/mach-o/ChangeLog new file mode 100644 index 000000000..19eacd0c5 --- /dev/null +++ b/include/mach-o/ChangeLog @@ -0,0 +1,51 @@ +2012-02-23 Iain Sandoe <idsandoe@googlemail.com> + + * external.h: Add comments about relocations fields. Add macros + for non-scattered relocations. Move scattered relocation macros to + here. + * reloc.h: Remove macros related to external representation of reloc + fields. + +2012-01-12 Iain Sandoe <idsandoe@googlemail.com> + + * loader.h (BFD_MACH_O_INDIRECT_SYM_LOCAL): New. + (BFD_MACH_O_INDIRECT_SYM_ABS): New + +2012-01-04 Tristan Gingold <gingold@adacore.com> + + * external.h (mach_o_fvmlib_command_external): New structure. + +2012-01-04 Tristan Gingold <gingold@adacore.com> + + * loader.h: Update copyright year. + (bfd_mach_o_cpu_subtype): Add ARM subtypes. + +2012-01-04 Tristan Gingold <gingold@adacore.com> + + * external.h: Update copyright year. + (mach_o_symtab_command_external): Add comments. + (mach_o_encryption_info_command_external): New structure. + +2011-12-16 Tristan Gingold <gingold@adacore.com> + + * codesign.h: New file. + +2011-08-08 Tristan Gingold <gingold@adacore.com> + + * loader.h (bfd_mach_o_load_command_type): Add + BFD_MACH_O_LC_LOAD_UPWARD_DYLIB, BFD_MACH_O_LC_VERSION_MIN_MACOSX, + BFD_MACH_O_LC_VERSION_MIN_IPHONEOS, BFD_MACH_O_LC_FUNCTION_STARTS, + and BFD_MACH_O_LC_DYLD_ENVIRONMENT. + * external.h (mach_o_version_min_command_external): New structure. + +2011-08-08 Tristan Gingold <gingold@adacore.com> + + * loader.h: Reorder declarations. + * x86-64.h: New file. + * external.h: New file. + * reloc.h: New file. + +2011-07-06 Tristan Gingold <gingold@adacore.com> + + * loader.h: New file. + diff --git a/include/mach-o/codesign.h b/include/mach-o/codesign.h new file mode 100644 index 000000000..ee2f792ac --- /dev/null +++ b/include/mach-o/codesign.h @@ -0,0 +1,85 @@ +/* Mach-O support for BFD. + Copyright 2011 + Free Software Foundation, Inc. + + This file is part of BFD, the Binary File Descriptor library. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program 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 a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#ifndef _MACH_O_CODESIGN_H +#define _MACH_O_CODESIGN_H + +/* Codesign blob magics. */ + +/* Superblob containing all the components. */ +#define BFD_MACH_O_CS_MAGIC_EMBEDDED_SIGNATURE 0xfade0cc0 + +/* Individual code requirement. */ +#define BFD_MACH_O_CS_MAGIC_REQUIREMENT 0xfade0c00 + +/* Collection of code requirements, indexed by type. */ +#define BFD_MACH_O_CS_MAGIC_REQUIREMENTS 0xfade0c01 + +/* Directory. */ +#define BFD_MACH_O_CS_MAGIC_CODEDIRECTORY 0xfade0c02 + +/* Entitlements blob. */ +#define BFD_MACH_O_CS_MAGIC_EMBEDDED_ENTITLEMENTS 0xfade7171 + +/* Blob container. */ +#define BFD_MACH_O_CS_MAGIC_BLOB_WRAPPER 0xfade0b01 + +struct mach_o_codesign_codedirectory_external_v1 +{ + /* All the fields are in network byte order (big endian). */ + unsigned char version[4]; + unsigned char flags[4]; + unsigned char hash_offset[4]; + unsigned char ident_offset[4]; + unsigned char nbr_special_slots[4]; + unsigned char nbr_code_slots[4]; + unsigned char code_limit[4]; + unsigned char hash_size[1]; + unsigned char hash_type[1]; + unsigned char spare1[1]; + unsigned char page_size[1]; + unsigned char spare2[4]; +}; + +struct mach_o_codesign_codedirectory_v1 +{ + unsigned int version; + unsigned int flags; + unsigned int hash_offset; + unsigned int ident_offset; + unsigned int nbr_special_slots; + unsigned int nbr_code_slots; + unsigned int code_limit; + unsigned char hash_size; + unsigned char hash_type; + unsigned char spare1; + unsigned char page_size; + unsigned int spare2; +}; + +/* Value for hash_type. */ +#define BFD_MACH_O_CS_NO_HASH 0 +#define BFD_MACH_O_CS_HASH_SHA1 1 +#define BFD_MACH_O_CS_HASH_SHA256 2 +#define BFD_MACH_O_CS_HASH_PRESTANDARD_SKEIN_160x256 32 /* Skein, 160 bits */ +#define BFD_MACH_O_CS_HASH_PRESTANDARD_SKEIN_256x512 33 /* Skein, 256 bits */ + +#endif /* _MACH_O_CODESIGN_H */ diff --git a/include/mach-o/external.h b/include/mach-o/external.h new file mode 100644 index 000000000..41a293250 --- /dev/null +++ b/include/mach-o/external.h @@ -0,0 +1,326 @@ +/* Mach-O support for BFD. + Copyright 2011, 2012 + Free Software Foundation, Inc. + + This file is part of BFD, the Binary File Descriptor library. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program 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 a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#ifndef _MACH_O_EXTERNAL_H +#define _MACH_O_EXTERNAL_H + +struct mach_o_header_external +{ + unsigned char magic[4]; /* Magic number. */ + unsigned char cputype[4]; /* CPU that this object is for. */ + unsigned char cpusubtype[4]; /* CPU subtype. */ + unsigned char filetype[4]; /* Type of file. */ + unsigned char ncmds[4]; /* Number of load commands. */ + unsigned char sizeofcmds[4]; /* Total size of load commands. */ + unsigned char flags[4]; /* Flags. */ + unsigned char reserved[4]; /* Reserved (on 64-bit version only). */ +}; + +#define BFD_MACH_O_HEADER_SIZE 28 +#define BFD_MACH_O_HEADER_64_SIZE 32 + +/* 32-bit section header. */ + +struct mach_o_section_32_external +{ + unsigned char sectname[16]; /* Section name. */ + unsigned char segname[16]; /* Segment that the section belongs to. */ + unsigned char addr[4]; /* Address of this section in memory. */ + unsigned char size[4]; /* Size in bytes of this section. */ + unsigned char offset[4]; /* File offset of this section. */ + unsigned char align[4]; /* log2 of this section's alignment. */ + unsigned char reloff[4]; /* File offset of this section's relocs. */ + unsigned char nreloc[4]; /* Number of relocs for this section. */ + unsigned char flags[4]; /* Section flags/attributes. */ + unsigned char reserved1[4]; + unsigned char reserved2[4]; +}; +#define BFD_MACH_O_SECTION_SIZE 68 + +/* 64-bit section header. */ + +struct mach_o_section_64_external +{ + unsigned char sectname[16]; /* Section name. */ + unsigned char segname[16]; /* Segment that the section belongs to. */ + unsigned char addr[8]; /* Address of this section in memory. */ + unsigned char size[8]; /* Size in bytes of this section. */ + unsigned char offset[4]; /* File offset of this section. */ + unsigned char align[4]; /* log2 of this section's alignment. */ + unsigned char reloff[4]; /* File offset of this section's relocs. */ + unsigned char nreloc[4]; /* Number of relocs for this section. */ + unsigned char flags[4]; /* Section flags/attributes. */ + unsigned char reserved1[4]; + unsigned char reserved2[4]; + unsigned char reserved3[4]; +}; +#define BFD_MACH_O_SECTION_64_SIZE 80 + +struct mach_o_load_command_external +{ + unsigned char cmd[4]; /* The type of load command. */ + unsigned char cmdsize[4]; /* Size in bytes of entire command. */ +}; +#define BFD_MACH_O_LC_SIZE 8 + +struct mach_o_segment_command_32_external +{ + unsigned char segname[16]; /* Name of this segment. */ + unsigned char vmaddr[4]; /* Virtual memory address of this segment. */ + unsigned char vmsize[4]; /* Size there, in bytes. */ + unsigned char fileoff[4]; /* Offset in bytes of the data to be mapped. */ + unsigned char filesize[4]; /* Size in bytes on disk. */ + unsigned char maxprot[4]; /* Maximum permitted vm protection. */ + unsigned char initprot[4]; /* Initial vm protection. */ + unsigned char nsects[4]; /* Number of sections in this segment. */ + unsigned char flags[4]; /* Flags that affect the loading. */ +}; +#define BFD_MACH_O_LC_SEGMENT_SIZE 56 /* Include the header. */ + +struct mach_o_segment_command_64_external +{ + unsigned char segname[16]; /* Name of this segment. */ + unsigned char vmaddr[8]; /* Virtual memory address of this segment. */ + unsigned char vmsize[8]; /* Size there, in bytes. */ + unsigned char fileoff[8]; /* Offset in bytes of the data to be mapped. */ + unsigned char filesize[8]; /* Size in bytes on disk. */ + unsigned char maxprot[4]; /* Maximum permitted vm protection. */ + unsigned char initprot[4]; /* Initial vm protection. */ + unsigned char nsects[4]; /* Number of sections in this segment. */ + unsigned char flags[4]; /* Flags that affect the loading. */ +}; +#define BFD_MACH_O_LC_SEGMENT_64_SIZE 72 /* Include the header. */ + +struct mach_o_reloc_info_external +{ + unsigned char r_address[4]; + unsigned char r_symbolnum[4]; +}; +#define BFD_MACH_O_RELENT_SIZE 8 + +/* Relocations are based on 'address' being a section offset and an assumption + that sections are never more than 2^24-1 bytes in size. Relocation data + also carry information on type/size/PC-relative/extern and whether scattered + or not [stored in the MSB of the r_address]. */ + +#define BFD_MACH_O_SR_SCATTERED 0x80000000 + +/* For a non-scattered reloc, the relocation info is found in r_symbolnum. + Bytes 1 to 3 contain the symbol number (0xffffff, in a non-scattered PAIR). + Byte 4 contains the relocation info - but with differing bit-positions + dependent on target endian-ness - as below. */ + +#define BFD_MACH_O_LE_PCREL 0x01 +#define BFD_MACH_O_LE_LENGTH_SHIFT 1 +#define BFD_MACH_O_LE_EXTERN 0x08 +#define BFD_MACH_O_LE_TYPE_SHIFT 4 + +#define BFD_MACH_O_BE_PCREL 0x80 +#define BFD_MACH_O_BE_LENGTH_SHIFT 5 +#define BFD_MACH_O_BE_EXTERN 0x10 +#define BFD_MACH_O_BE_TYPE_SHIFT 0 + +/* The field sizes are the same for both BE and LE. */ +#define BFD_MACH_O_LENGTH_MASK 0x03 +#define BFD_MACH_O_TYPE_MASK 0x0f + +/* For a scattered reloc entry the info is contained in r_address. There + is no need to discriminate on target endian-ness, since the design was + arranged to produce the same layout on both. Scattered relocations are + only used for local items, therefore there is no 'extern' field. */ + +#define BFD_MACH_O_SR_PCREL 0x40000000 +#define BFD_MACH_O_GET_SR_LENGTH(s) (((s) >> 28) & 0x3) +#define BFD_MACH_O_GET_SR_TYPE(s) (((s) >> 24) & 0x0f) +#define BFD_MACH_O_GET_SR_ADDRESS(s) ((s) & 0x00ffffff) +#define BFD_MACH_O_SET_SR_LENGTH(l) (((l) & 0x3) << 28) +#define BFD_MACH_O_SET_SR_TYPE(t) (((t) & 0xf) << 24) +#define BFD_MACH_O_SET_SR_ADDRESS(s) ((s) & 0x00ffffff) + +struct mach_o_symtab_command_external +{ + unsigned char symoff[4]; /* File offset of the symbol table. */ + unsigned char nsyms[4]; /* Number of symbols. */ + unsigned char stroff[4]; /* File offset of the string table. */ + unsigned char strsize[4]; /* String table size. */ +}; + +struct mach_o_nlist_external +{ + unsigned char n_strx[4]; + unsigned char n_type[1]; + unsigned char n_sect[1]; + unsigned char n_desc[2]; + unsigned char n_value[4]; +}; +#define BFD_MACH_O_NLIST_SIZE 12 + +struct mach_o_nlist_64_external +{ + unsigned char n_strx[4]; + unsigned char n_type[1]; + unsigned char n_sect[1]; + unsigned char n_desc[2]; + unsigned char n_value[8]; +}; +#define BFD_MACH_O_NLIST_64_SIZE 16 + +struct mach_o_thread_command_external +{ + unsigned char flavour[4]; + unsigned char count[4]; +}; + +/* For commands that just have a string or a path. */ +struct mach_o_str_command_external +{ + unsigned char str[4]; +}; + +struct mach_o_dylib_command_external +{ + unsigned char name[4]; + unsigned char timestamp[4]; + unsigned char current_version[4]; + unsigned char compatibility_version[4]; +}; + +struct mach_o_dysymtab_command_external +{ + unsigned char ilocalsym[4]; /* Index of. */ + unsigned char nlocalsym[4]; /* Number of. */ + unsigned char iextdefsym[4]; + unsigned char nextdefsym[4]; + unsigned char iundefsym[4]; + unsigned char nundefsym[4]; + unsigned char tocoff[4]; + unsigned char ntoc[4]; + unsigned char modtaboff[4]; + unsigned char nmodtab[4]; + unsigned char extrefsymoff[4]; + unsigned char nextrefsyms[4]; + unsigned char indirectsymoff[4]; + unsigned char nindirectsyms[4]; + unsigned char extreloff[4]; + unsigned char nextrel[4]; + unsigned char locreloff[4]; + unsigned char nlocrel[4]; +}; + +struct mach_o_dylib_module_external +{ + unsigned char module_name[4]; + unsigned char iextdefsym[4]; + unsigned char nextdefsym[4]; + unsigned char irefsym[4]; + unsigned char nrefsym[4]; + unsigned char ilocalsym[4]; + unsigned char nlocalsym[4]; + unsigned char iextrel[4]; + unsigned char nextrel[4]; + unsigned char iinit_iterm[4]; + unsigned char ninit_nterm[4]; + unsigned char objc_module_info_addr[4]; + unsigned char objc_module_info_size[4]; +}; +#define BFD_MACH_O_DYLIB_MODULE_SIZE 52 + +struct mach_o_dylib_module_64_external +{ + unsigned char module_name[4]; + unsigned char iextdefsym[4]; + unsigned char nextdefsym[4]; + unsigned char irefsym[4]; + unsigned char nrefsym[4]; + unsigned char ilocalsym[4]; + unsigned char nlocalsym[4]; + unsigned char iextrel[4]; + unsigned char nextrel[4]; + unsigned char iinit_iterm[4]; + unsigned char ninit_nterm[4]; + unsigned char objc_module_info_size[4]; + unsigned char objc_module_info_addr[8]; +}; +#define BFD_MACH_O_DYLIB_MODULE_64_SIZE 56 + +struct mach_o_dylib_table_of_contents_external +{ + unsigned char symbol_index[4]; + unsigned char module_index[4]; +}; +#define BFD_MACH_O_TABLE_OF_CONTENT_SIZE 8 + +struct mach_o_linkedit_data_command_external +{ + unsigned char dataoff[4]; + unsigned char datasize[4]; +}; + +struct mach_o_dyld_info_command_external +{ + unsigned char rebase_off[4]; + unsigned char rebase_size[4]; + unsigned char bind_off[4]; + unsigned char bind_size[4]; + unsigned char weak_bind_off[4]; + unsigned char weak_bind_size[4]; + unsigned char lazy_bind_off[4]; + unsigned char lazy_bind_size[4]; + unsigned char export_off[4]; + unsigned char export_size[4]; +}; + +struct mach_o_version_min_command_external +{ + unsigned char version[4]; + unsigned char reserved[4]; +}; + +struct mach_o_encryption_info_command_external +{ + unsigned char cryptoff[4]; /* File offset of the encrypted area. */ + unsigned char cryptsize[4]; /* Size of the encrypted area. */ + unsigned char cryptid[4]; /* Encryption method. */ +}; + +struct mach_o_fvmlib_command_external +{ + unsigned char name[4]; /* Offset of the name. */ + unsigned char minor_version[4]; + unsigned char header_addr[4]; +}; + +struct mach_o_fat_header_external +{ + unsigned char magic[4]; + unsigned char nfat_arch[4]; /* Number of components. */ +}; + +struct mach_o_fat_arch_external +{ + unsigned char cputype[4]; + unsigned char cpusubtype[4]; + unsigned char offset[4]; /* File offset of the member. */ + unsigned char size[4]; /* Size of the member. */ + unsigned char align[4]; /* Power of 2. */ +}; + +#endif /* _MACH_O_EXTERNAL_H */ diff --git a/include/mach-o/loader.h b/include/mach-o/loader.h new file mode 100644 index 000000000..1b9b15efe --- /dev/null +++ b/include/mach-o/loader.h @@ -0,0 +1,360 @@ +/* Mach-O support for BFD. + Copyright 2011, 2012 + Free Software Foundation, Inc. + + This file is part of BFD, the Binary File Descriptor library. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program 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 a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#ifndef _MACH_O_LOADER_H +#define _MACH_O_LOADER_H + +/* Constants for header. */ + +typedef enum bfd_mach_o_mach_header_magic +{ + BFD_MACH_O_MH_MAGIC = 0xfeedface, + BFD_MACH_O_MH_CIGAM = 0xcefaedfe, + BFD_MACH_O_MH_MAGIC_64 = 0xfeedfacf, + BFD_MACH_O_MH_CIGAM_64 = 0xcffaedfe +} +bfd_mach_o_mach_header_magic; + +#define BFD_MACH_O_CPU_IS64BIT 0x1000000 + +typedef enum bfd_mach_o_cpu_type +{ + BFD_MACH_O_CPU_TYPE_VAX = 1, + BFD_MACH_O_CPU_TYPE_MC680x0 = 6, + BFD_MACH_O_CPU_TYPE_I386 = 7, + BFD_MACH_O_CPU_TYPE_MIPS = 8, + BFD_MACH_O_CPU_TYPE_MC98000 = 10, + BFD_MACH_O_CPU_TYPE_HPPA = 11, + BFD_MACH_O_CPU_TYPE_ARM = 12, + BFD_MACH_O_CPU_TYPE_MC88000 = 13, + BFD_MACH_O_CPU_TYPE_SPARC = 14, + BFD_MACH_O_CPU_TYPE_I860 = 15, + BFD_MACH_O_CPU_TYPE_ALPHA = 16, + BFD_MACH_O_CPU_TYPE_POWERPC = 18, + BFD_MACH_O_CPU_TYPE_POWERPC_64 = (BFD_MACH_O_CPU_TYPE_POWERPC | BFD_MACH_O_CPU_IS64BIT), + BFD_MACH_O_CPU_TYPE_X86_64 = (BFD_MACH_O_CPU_TYPE_I386 | BFD_MACH_O_CPU_IS64BIT) +} +bfd_mach_o_cpu_type; + +typedef enum bfd_mach_o_cpu_subtype +{ + /* i386. */ + BFD_MACH_O_CPU_SUBTYPE_X86_ALL = 3, + + /* arm. */ + BFD_MACH_O_CPU_SUBTYPE_ARM_ALL = 0, + BFD_MACH_O_CPU_SUBTYPE_ARM_V4T = 5, + BFD_MACH_O_CPU_SUBTYPE_ARM_V6 = 6, + BFD_MACH_O_CPU_SUBTYPE_ARM_V5TEJ = 7, + BFD_MACH_O_CPU_SUBTYPE_ARM_XSCALE = 8, + BFD_MACH_O_CPU_SUBTYPE_ARM_V7 = 9 +} +bfd_mach_o_cpu_subtype; + +typedef enum bfd_mach_o_filetype +{ + BFD_MACH_O_MH_OBJECT = 0x01, + BFD_MACH_O_MH_EXECUTE = 0x02, + BFD_MACH_O_MH_FVMLIB = 0x03, + BFD_MACH_O_MH_CORE = 0x04, + BFD_MACH_O_MH_PRELOAD = 0x05, + BFD_MACH_O_MH_DYLIB = 0x06, + BFD_MACH_O_MH_DYLINKER = 0x07, + BFD_MACH_O_MH_BUNDLE = 0x08, + BFD_MACH_O_MH_DYLIB_STUB = 0x09, + BFD_MACH_O_MH_DSYM = 0x0a, + BFD_MACH_O_MH_KEXT_BUNDLE = 0x0b +} +bfd_mach_o_filetype; + +typedef enum bfd_mach_o_header_flags +{ + BFD_MACH_O_MH_NOUNDEFS = 0x0000001, + BFD_MACH_O_MH_INCRLINK = 0x0000002, + BFD_MACH_O_MH_DYLDLINK = 0x0000004, + BFD_MACH_O_MH_BINDATLOAD = 0x0000008, + BFD_MACH_O_MH_PREBOUND = 0x0000010, + BFD_MACH_O_MH_SPLIT_SEGS = 0x0000020, + BFD_MACH_O_MH_LAZY_INIT = 0x0000040, + BFD_MACH_O_MH_TWOLEVEL = 0x0000080, + BFD_MACH_O_MH_FORCE_FLAT = 0x0000100, + BFD_MACH_O_MH_NOMULTIDEFS = 0x0000200, + BFD_MACH_O_MH_NOFIXPREBINDING = 0x0000400, + BFD_MACH_O_MH_PREBINDABLE = 0x0000800, + BFD_MACH_O_MH_ALLMODSBOUND = 0x0001000, + BFD_MACH_O_MH_SUBSECTIONS_VIA_SYMBOLS = 0x0002000, + BFD_MACH_O_MH_CANONICAL = 0x0004000, + BFD_MACH_O_MH_WEAK_DEFINES = 0x0008000, + BFD_MACH_O_MH_BINDS_TO_WEAK = 0x0010000, + BFD_MACH_O_MH_ALLOW_STACK_EXECUTION = 0x0020000, + BFD_MACH_O_MH_ROOT_SAFE = 0x0040000, + BFD_MACH_O_MH_SETUID_SAFE = 0x0080000, + BFD_MACH_O_MH_NO_REEXPORTED_DYLIBS = 0x0100000, + BFD_MACH_O_MH_PIE = 0x0200000, + BFD_MACH_O_MH_DEAD_STRIPPABLE_DYLIB = 0x0400000, + BFD_MACH_O_MH_HAS_TLV_DESCRIPTORS = 0x0800000, + BFD_MACH_O_MH_NO_HEAP_EXECUTION = 0x1000000 +} +bfd_mach_o_header_flags; + +/* Load command constants. */ +#define BFD_MACH_O_LC_REQ_DYLD 0x80000000 + +typedef enum bfd_mach_o_load_command_type +{ + BFD_MACH_O_LC_SEGMENT = 0x1, /* File segment to be mapped. */ + BFD_MACH_O_LC_SYMTAB = 0x2, /* Link-edit stab symbol table info (obsolete). */ + BFD_MACH_O_LC_SYMSEG = 0x3, /* Link-edit gdb symbol table info. */ + BFD_MACH_O_LC_THREAD = 0x4, /* Thread. */ + BFD_MACH_O_LC_UNIXTHREAD = 0x5, /* UNIX thread (includes a stack). */ + BFD_MACH_O_LC_LOADFVMLIB = 0x6, /* Load a fixed VM shared library. */ + BFD_MACH_O_LC_IDFVMLIB = 0x7, /* Fixed VM shared library id. */ + BFD_MACH_O_LC_IDENT = 0x8, /* Object identification information (obsolete). */ + BFD_MACH_O_LC_FVMFILE = 0x9, /* Fixed VM file inclusion. */ + BFD_MACH_O_LC_PREPAGE = 0xa, /* Prepage command (internal use). */ + BFD_MACH_O_LC_DYSYMTAB = 0xb, /* Dynamic link-edit symbol table info. */ + BFD_MACH_O_LC_LOAD_DYLIB = 0xc, /* Load a dynamically linked shared library. */ + BFD_MACH_O_LC_ID_DYLIB = 0xd, /* Dynamically linked shared lib identification. */ + BFD_MACH_O_LC_LOAD_DYLINKER = 0xe, /* Load a dynamic linker. */ + BFD_MACH_O_LC_ID_DYLINKER = 0xf, /* Dynamic linker identification. */ + BFD_MACH_O_LC_PREBOUND_DYLIB = 0x10, /* Modules prebound for a dynamically. */ + BFD_MACH_O_LC_ROUTINES = 0x11, /* Image routines. */ + BFD_MACH_O_LC_SUB_FRAMEWORK = 0x12, /* Sub framework. */ + BFD_MACH_O_LC_SUB_UMBRELLA = 0x13, /* Sub umbrella. */ + BFD_MACH_O_LC_SUB_CLIENT = 0x14, /* Sub client. */ + BFD_MACH_O_LC_SUB_LIBRARY = 0x15, /* Sub library. */ + BFD_MACH_O_LC_TWOLEVEL_HINTS = 0x16, /* Two-level namespace lookup hints. */ + BFD_MACH_O_LC_PREBIND_CKSUM = 0x17, /* Prebind checksum. */ + /* Load a dynamically linked shared library that is allowed to be + missing (weak). */ + BFD_MACH_O_LC_LOAD_WEAK_DYLIB = 0x18, + BFD_MACH_O_LC_SEGMENT_64 = 0x19, /* 64-bit segment of this file to be + mapped. */ + BFD_MACH_O_LC_ROUTINES_64 = 0x1a, /* Address of the dyld init routine + in a dylib. */ + BFD_MACH_O_LC_UUID = 0x1b, /* 128-bit UUID of the executable. */ + BFD_MACH_O_LC_RPATH = 0x1c, /* Run path addiions. */ + BFD_MACH_O_LC_CODE_SIGNATURE = 0x1d, /* Local of code signature. */ + BFD_MACH_O_LC_SEGMENT_SPLIT_INFO = 0x1e, /* Local of info to split seg. */ + BFD_MACH_O_LC_REEXPORT_DYLIB = 0x1f, /* Load and re-export lib. */ + BFD_MACH_O_LC_LAZY_LOAD_DYLIB = 0x20, /* Delay load of lib until use. */ + BFD_MACH_O_LC_ENCRYPTION_INFO = 0x21, /* Encrypted segment info. */ + BFD_MACH_O_LC_DYLD_INFO = 0x22, /* Compressed dyld information. */ + BFD_MACH_O_LC_LOAD_UPWARD_DYLIB = 0x23, /* Load upward dylib. */ + BFD_MACH_O_LC_VERSION_MIN_MACOSX = 0x24, /* Minimal MacOSX version. */ + BFD_MACH_O_LC_VERSION_MIN_IPHONEOS = 0x25, /* Minimal IOS version. */ + BFD_MACH_O_LC_FUNCTION_STARTS = 0x26, /* Compressed table of func start. */ + BFD_MACH_O_LC_DYLD_ENVIRONMENT = 0x27 /* Env variable string for dyld. */ +} +bfd_mach_o_load_command_type; + +/* Section constants. */ +/* Constants for the type of a section. */ + +typedef enum bfd_mach_o_section_type +{ + /* Regular section. */ + BFD_MACH_O_S_REGULAR = 0x0, + + /* Zero fill on demand section. */ + BFD_MACH_O_S_ZEROFILL = 0x1, + + /* Section with only literal C strings. */ + BFD_MACH_O_S_CSTRING_LITERALS = 0x2, + + /* Section with only 4 byte literals. */ + BFD_MACH_O_S_4BYTE_LITERALS = 0x3, + + /* Section with only 8 byte literals. */ + BFD_MACH_O_S_8BYTE_LITERALS = 0x4, + + /* Section with only pointers to literals. */ + BFD_MACH_O_S_LITERAL_POINTERS = 0x5, + + /* For the two types of symbol pointers sections and the symbol stubs + section they have indirect symbol table entries. For each of the + entries in the section the indirect symbol table entries, in + corresponding order in the indirect symbol table, start at the index + stored in the reserved1 field of the section structure. Since the + indirect symbol table entries correspond to the entries in the + section the number of indirect symbol table entries is inferred from + the size of the section divided by the size of the entries in the + section. For symbol pointers sections the size of the entries in + the section is 4 bytes and for symbol stubs sections the byte size + of the stubs is stored in the reserved2 field of the section + structure. */ + + /* Section with only non-lazy symbol pointers. */ + BFD_MACH_O_S_NON_LAZY_SYMBOL_POINTERS = 0x6, + + /* Section with only lazy symbol pointers. */ + BFD_MACH_O_S_LAZY_SYMBOL_POINTERS = 0x7, + + /* Section with only symbol stubs, byte size of stub in the reserved2 + field. */ + BFD_MACH_O_S_SYMBOL_STUBS = 0x8, + + /* Section with only function pointers for initialization. */ + BFD_MACH_O_S_MOD_INIT_FUNC_POINTERS = 0x9, + + /* Section with only function pointers for termination. */ + BFD_MACH_O_S_MOD_FINI_FUNC_POINTERS = 0xa, + + /* Section contains symbols that are coalesced by the linkers. */ + BFD_MACH_O_S_COALESCED = 0xb, + + /* Zero fill on demand section (possibly larger than 4 GB). */ + BFD_MACH_O_S_GB_ZEROFILL = 0xc, + + /* Section with only pairs of function pointers for interposing. */ + BFD_MACH_O_S_INTERPOSING = 0xd, + + /* Section with only 16 byte literals. */ + BFD_MACH_O_S_16BYTE_LITERALS = 0xe, + + /* Section contains DTrace Object Format. */ + BFD_MACH_O_S_DTRACE_DOF = 0xf, + + /* Section with only lazy symbol pointers to lazy loaded dylibs. */ + BFD_MACH_O_S_LAZY_DYLIB_SYMBOL_POINTERS = 0x10 +} +bfd_mach_o_section_type; + +/* The flags field of a section structure is separated into two parts a section + type and section attributes. The section types are mutually exclusive (it + can only have one type) but the section attributes are not (it may have more + than one attribute). */ + +#define BFD_MACH_O_SECTION_TYPE_MASK 0x000000ff + +/* Constants for the section attributes part of the flags field of a section + structure. */ +#define BFD_MACH_O_SECTION_ATTRIBUTES_MASK 0xffffff00 +/* System setable attributes. */ +#define BFD_MACH_O_SECTION_ATTRIBUTES_SYS 0x00ffff00 +/* User attributes. */ +#define BFD_MACH_O_SECTION_ATTRIBUTES_USR 0xff000000 + +typedef enum bfd_mach_o_section_attribute +{ + /* Section has no specified attibutes. */ + BFD_MACH_O_S_ATTR_NONE = 0, + + /* Section has local relocation entries. */ + BFD_MACH_O_S_ATTR_LOC_RELOC = 0x00000100, + + /* Section has external relocation entries. */ + BFD_MACH_O_S_ATTR_EXT_RELOC = 0x00000200, + + /* Section contains some machine instructions. */ + BFD_MACH_O_S_ATTR_SOME_INSTRUCTIONS = 0x00000400, + + /* A debug section. */ + BFD_MACH_O_S_ATTR_DEBUG = 0x02000000, + + /* Used with i386 stubs. */ + BFD_MACH_O_S_SELF_MODIFYING_CODE = 0x04000000, + + /* Blocks are live if they reference live blocks. */ + BFD_MACH_O_S_ATTR_LIVE_SUPPORT = 0x08000000, + + /* No dead stripping. */ + BFD_MACH_O_S_ATTR_NO_DEAD_STRIP = 0x10000000, + + /* Section symbols can be stripped in files with MH_DYLDLINK flag. */ + BFD_MACH_O_S_ATTR_STRIP_STATIC_SYMS = 0x20000000, + + /* Section contains coalesced symbols that are not to be in the TOC of an + archive. */ + BFD_MACH_O_S_ATTR_NO_TOC = 0x40000000, + + /* Section contains only true machine instructions. */ + BFD_MACH_O_S_ATTR_PURE_INSTRUCTIONS = 0x80000000 +} +bfd_mach_o_section_attribute; + +/* Symbol constants. */ + +/* Symbol n_type values. */ +#define BFD_MACH_O_N_STAB 0xe0 /* If any of these bits set, a symbolic debugging entry. */ +#define BFD_MACH_O_N_PEXT 0x10 /* Private external symbol bit. */ +#define BFD_MACH_O_N_TYPE 0x0e /* Mask for the type bits. */ +#define BFD_MACH_O_N_EXT 0x01 /* External symbol bit, set for external symbols. */ +#define BFD_MACH_O_N_UNDF 0x00 /* Undefined, n_sect == NO_SECT. */ +#define BFD_MACH_O_N_ABS 0x02 /* Absolute, n_sect == NO_SECT. */ +#define BFD_MACH_O_N_INDR 0x0a /* Indirect. */ +#define BFD_MACH_O_N_PBUD 0x0c /* Prebound undefined (defined in a dylib). */ +#define BFD_MACH_O_N_SECT 0x0e /* Defined in section number n_sect. */ + +#define BFD_MACH_O_NO_SECT 0 /* Symbol not in any section of the image. */ + +/* Symbol n_desc reference flags. */ +#define BFD_MACH_O_REFERENCE_MASK 0x0f +#define BFD_MACH_O_REFERENCE_FLAG_UNDEFINED_NON_LAZY 0x00 +#define BFD_MACH_O_REFERENCE_FLAG_UNDEFINED_LAZY 0x01 +#define BFD_MACH_O_REFERENCE_FLAG_DEFINED 0x02 +#define BFD_MACH_O_REFERENCE_FLAG_PRIVATE_DEFINED 0x03 +#define BFD_MACH_O_REFERENCE_FLAG_PRIVATE_UNDEFINED_NON_LAZY 0x04 +#define BFD_MACH_O_REFERENCE_FLAG_PRIVATE_UNDEFINED_LAZY 0x05 + +#define BFD_MACH_O_REFERENCED_DYNAMICALLY 0x10 +#define BFD_MACH_O_N_DESC_DISCARDED 0x20 +#define BFD_MACH_O_N_NO_DEAD_STRIP 0x20 +#define BFD_MACH_O_N_WEAK_REF 0x40 +#define BFD_MACH_O_N_WEAK_DEF 0x80 + +#define BFD_MACH_O_INDIRECT_SYM_LOCAL 0x80000000 +#define BFD_MACH_O_INDIRECT_SYM_ABS 0x40000000 + +/* Thread constants. */ + +typedef enum bfd_mach_o_ppc_thread_flavour +{ + BFD_MACH_O_PPC_THREAD_STATE = 1, + BFD_MACH_O_PPC_FLOAT_STATE = 2, + BFD_MACH_O_PPC_EXCEPTION_STATE = 3, + BFD_MACH_O_PPC_VECTOR_STATE = 4, + BFD_MACH_O_PPC_THREAD_STATE64 = 5, + BFD_MACH_O_PPC_EXCEPTION_STATE64 = 6, + BFD_MACH_O_PPC_THREAD_STATE_NONE = 7 +} +bfd_mach_o_ppc_thread_flavour; + +/* Defined in <mach/i386/thread_status.h> */ +typedef enum bfd_mach_o_i386_thread_flavour +{ + BFD_MACH_O_x86_THREAD_STATE32 = 1, + BFD_MACH_O_x86_FLOAT_STATE32 = 2, + BFD_MACH_O_x86_EXCEPTION_STATE32 = 3, + BFD_MACH_O_x86_THREAD_STATE64 = 4, + BFD_MACH_O_x86_FLOAT_STATE64 = 5, + BFD_MACH_O_x86_EXCEPTION_STATE64 = 6, + BFD_MACH_O_x86_THREAD_STATE = 7, + BFD_MACH_O_x86_FLOAT_STATE = 8, + BFD_MACH_O_x86_EXCEPTION_STATE = 9, + BFD_MACH_O_x86_DEBUG_STATE32 = 10, + BFD_MACH_O_x86_DEBUG_STATE64 = 11, + BFD_MACH_O_x86_DEBUG_STATE = 12, + BFD_MACH_O_x86_THREAD_STATE_NONE = 13 +} +bfd_mach_o_i386_thread_flavour; + +#endif /* _MACH_O_LOADER_H */ diff --git a/include/mach-o/reloc.h b/include/mach-o/reloc.h new file mode 100644 index 000000000..bab31efeb --- /dev/null +++ b/include/mach-o/reloc.h @@ -0,0 +1,33 @@ +/* Mach-O support for BFD. + Copyright 2011, 2012 + Free Software Foundation, Inc. + + This file is part of BFD, the Binary File Descriptor library. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program 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 a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#ifndef _MACH_O_RELOC_H +#define _MACH_O_RELOC_H + +/* Generic relocation types (used by i386). */ +#define BFD_MACH_O_GENERIC_RELOC_VANILLA 0 +#define BFD_MACH_O_GENERIC_RELOC_PAIR 1 +#define BFD_MACH_O_GENERIC_RELOC_SECTDIFF 2 +#define BFD_MACH_O_GENERIC_RELOC_PB_LA_PTR 3 +#define BFD_MACH_O_GENERIC_RELOC_LOCAL_SECTDIFF 4 +#define BFD_MACH_O_GENERIC_RELOC_TLV 5 + +#endif /* _MACH_O_RELOC_H */ diff --git a/include/mach-o/x86-64.h b/include/mach-o/x86-64.h new file mode 100644 index 000000000..d06bc26a7 --- /dev/null +++ b/include/mach-o/x86-64.h @@ -0,0 +1,37 @@ +/* Mach-O support for BFD. + Copyright 2011 + Free Software Foundation, Inc. + + This file is part of BFD, the Binary File Descriptor library. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program 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 a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#ifndef _MACH_O_X86_64_H +#define _MACH_O_X86_64_H + +/* X86-64 relocations. */ +#define BFD_MACH_O_X86_64_RELOC_UNSIGNED 0 /* Absolute addresses. */ +#define BFD_MACH_O_X86_64_RELOC_SIGNED 1 /* 32-bit disp. */ +#define BFD_MACH_O_X86_64_RELOC_BRANCH 2 /* 32-bit pcrel disp. */ +#define BFD_MACH_O_X86_64_RELOC_GOT_LOAD 3 /* Movq load of a GOT entry. */ +#define BFD_MACH_O_X86_64_RELOC_GOT 4 /* GOT reference. */ +#define BFD_MACH_O_X86_64_RELOC_SUBTRACTOR 5 /* Symbol difference. */ +#define BFD_MACH_O_X86_64_RELOC_SIGNED_1 6 /* 32-bit signed disp -1. */ +#define BFD_MACH_O_X86_64_RELOC_SIGNED_2 7 /* 32-bit signed disp -2. */ +#define BFD_MACH_O_X86_64_RELOC_SIGNED_4 8 /* 32-bit signed disp -4. */ +#define BFD_MACH_O_X86_64_RELOC_TLV 9 /* Thread local variables. */ + +#endif /* _MACH_O_X86_64_H */ diff --git a/include/opcode/ChangeLog b/include/opcode/ChangeLog index 1091973b2..07571e0b0 100644 --- a/include/opcode/ChangeLog +++ b/include/opcode/ChangeLog @@ -1,69 +1,3 @@ -2012-07-31 Chao-Ying Fu <fu@mips.com> - Catherine Moore <clm@codesourcery.com> - Maciej W. Rozycki <macro@codesourcery.com> - - * mips.h: Document microMIPS DSP ASE usage. - (MICROMIPSOP_MASK_DSPACC, MICROMIPSOP_SH_DSPACC): Update for - microMIPS DSP ASE support. - (MICROMIPSOP_MASK_DSPSFT, MICROMIPSOP_SH_DSPSFT): Likewise. - (MICROMIPSOP_MASK_SA3, MICROMIPSOP_SH_SA3): Likewise. - (MICROMIPSOP_MASK_SA4, MICROMIPSOP_SH_SA4): Likewise. - (MICROMIPSOP_MASK_IMM8, MICROMIPSOP_SH_IMM8): Likewise. - (MICROMIPSOP_MASK_IMM10, MICROMIPSOP_SH_IMM10): Likewise. - (MICROMIPSOP_MASK_WRDSP, MICROMIPSOP_SH_WRDSP): Likewise. - (MICROMIPSOP_MASK_BP, MICROMIPSOP_SH_BP): Likewise. - -2012-07-06 Maciej W. Rozycki <macro@codesourcery.com> - - * mips.h: Fix a typo in description. - -2012-06-07 Georg-Johann Lay <avr@gjlay.de> - - * avr.h: (AVR_ISA_XCH): New define. - (AVR_ISA_XMEGA): Use it. - (XCH, LAS, LAT, LAC): New XMEGA opcodes. - -2012-05-15 James Murray <jsm@jsm-net.demon.co.uk> - - * m68hc11.h: Add XGate definitions. - (struct m68hc11_opcode): Add xg_mask field. - -2012-05-14 Catherine Moore <clm@codesourcery.com> - Maciej W. Rozycki <macro@codesourcery.com> - Rhonda Wittels <rhonda@codesourcery.com> - - * ppc.h (PPC_OPCODE_VLE): New definition. - (PPC_OP_SA): New macro. - (PPC_OP_SE_VLE): New macro. - (PPC_OP): Use a variable shift amount. - (powerpc_operand): Update comments. - (PPC_OPSHIFT_INV): New macro. - (PPC_OPERAND_CR): Replace with... - (PPC_OPERAND_CR_BIT): ...this and - (PPC_OPERAND_CR_REG): ...this. - - -2012-05-03 Sean Keys <skeys@ipdatasys.com> - - * xgate.h: Header file for XGATE assembler. - -2012-04-27 David S. Miller <davem@davemloft.net> - - * sparc.h: Document new arg code' )' for crypto RS3 - immediates. - - * sparc.h (struct sparc_opcode): New field 'hwcaps'. - F_MUL32, F_DIV32, F_FDMULD, F_V8PLUS, F_POPC, F_VIS, F_VIS2, - F_ASI_BLK_INIT, F_FMAF, F_VIS3, F_HPC, F_RANDOM, F_TRANS, - F_FJFMAU, F_IMA, F_ASI_CACHE_SPARING, F_HWCAP_MASK): Delete. - (HWCAP_MUL32, HWCAP_DIV32, HWCAP_FSMULD, HWCAP_V8PLUS, HWCAP_POPC, - HWCAP_VIS, HWCAP_VIS2, HWCAP_ASI_BLK_INIT, HWCAP_FMAF, - HWCAP_VIS3, HWCAP_HPC, HWCAP_RANDOM, HWCAP_TRANS, HWCAP_FJFMAU, - HWCAP_IMA, HWCAP_ASI_CACHE_SPARING, HWCAP_AES, HWCAP_DES, - HWCAP_KASUMI, HWCAP_CAMELLIA, HWCAP_MD5, HWCAP_SHA1, - HWCAP_SHA256, HWCAP_SHA512, HWCAP_MPMUL, HWCAP_MONT, HWCAP_PAUSE, - HWCAP_CBCOND, HWCAP_CRC32): New defines. - 2012-03-10 Edmar Wienskoski <edmar@freescale.com> * ppc.h: Add PPC_OPCODE_ALTIVEC2, PPC_OPCODE_E6500, PPC_OPCODE_TMR. diff --git a/include/opcode/avr.h b/include/opcode/avr.h index 6e86c07ba..a6d7b478d 100644 --- a/include/opcode/avr.h +++ b/include/opcode/avr.h @@ -1,6 +1,6 @@ /* Opcode table for the Atmel AVR micro controllers. - Copyright 2000, 2001, 2004, 2006, 2008, 2010, 2012 Free Software Foundation, Inc. + Copyright 2000, 2001, 2004, 2006, 2008, 2010 Free Software Foundation, Inc. Contributed by Denis Chertykov <denisc@overta.ru> This program is free software; you can redistribute it and/or modify @@ -33,7 +33,6 @@ #define AVR_ISA_MOVW 0x1000 /* device has MOVW */ #define AVR_ISA_SPMX 0x2000 /* device has SPM Z[+] */ #define AVR_ISA_DES 0x4000 /* device has DES */ -#define AVR_ISA_XCH 0x8000 /* device has XCH, LAC, LAS, LAT */ #define AVR_ISA_TINY1 (AVR_ISA_1200 | AVR_ISA_LPM) #define AVR_ISA_2xxx (AVR_ISA_TINY1 | AVR_ISA_SRAM) @@ -53,7 +52,7 @@ #define AVR_ISA_M323 (AVR_ISA_M161 | AVR_ISA_BRK) #define AVR_ISA_M128 (AVR_ISA_M323 | AVR_ISA_ELPM | AVR_ISA_ELPMX) #define AVR_ISA_M256 (AVR_ISA_M128 | AVR_ISA_EIND) -#define AVR_ISA_XMEGA (AVR_ISA_M256 | AVR_ISA_SPMX | AVR_ISA_DES | AVR_ISA_XCH) +#define AVR_ISA_XMEGA (AVR_ISA_M256 | AVR_ISA_SPMX | AVR_ISA_DES) #define AVR_ISA_AVR1 AVR_ISA_TINY1 #define AVR_ISA_AVR2 AVR_ISA_2xxx @@ -125,6 +124,7 @@ 0x0001...0x00ff (255) (known to be decoded as `nop' by the old core) "100100xxxxxxx011" (128) 0x9[0-3][0-9a-f][3b] "100100xxxxxx1000" (64) 0x9[0-3][0-9a-f]8 + "1001001xxxxx01xx" (128) 0x9[23][0-9a-f][4-7] "1001010xxxxx0100" (32) 0x9[45][0-9a-f]4 "1001010x001x1001" (4) 0x9[45][23]9 "1001010x01xx1001" (8) 0x9[45][4-7]9 @@ -265,12 +265,6 @@ AVR_INSN (push, "r", "1001001rrrrr1111", 1, AVR_ISA_2xxx, 0x920f) AVR_INSN (ror, "r", "1001010rrrrr0111", 1, AVR_ISA_1200, 0x9407) AVR_INSN (swap, "r", "1001010rrrrr0010", 1, AVR_ISA_1200, 0x9402) - /* Atomic memory operations for XMEGA. List before `sts'. */ -AVR_INSN (xch, "z,r", "1001001rrrrr0100", 1, AVR_ISA_XCH, 0x9204) -AVR_INSN (las, "z,r", "1001001rrrrr0101", 1, AVR_ISA_XCH, 0x9205) -AVR_INSN (lac, "z,r", "1001001rrrrr0110", 1, AVR_ISA_XCH, 0x9206) -AVR_INSN (lat, "z,r", "1001001rrrrr0111", 1, AVR_ISA_XCH, 0x9207) - /* Known to be decoded as `nop' by the old core. */ AVR_INSN (movw, "v,v", "00000001ddddrrrr", 1, AVR_ISA_MOVW, 0x0100) AVR_INSN (muls, "d,d", "00000010ddddrrrr", 1, AVR_ISA_MUL, 0x0200) diff --git a/include/opcode/m68hc11.h b/include/opcode/m68hc11.h index 1a002008c..83f5a9a65 100644 --- a/include/opcode/m68hc11.h +++ b/include/opcode/m68hc11.h @@ -1,6 +1,5 @@ /* m68hc11.h -- Header file for Motorola 68HC11 & 68HC12 opcode table - Copyright 1999, 2000, 2002, 2003, 2010, 2012 - Free Software Foundation, Inc. + Copyright 1999, 2000, 2002, 2003, 2010 Free Software Foundation, Inc. Written by Stephane Carrez (stcarrez@nerim.fr) This file is part of GDB, GAS, and the GNU binutils. @@ -38,7 +37,8 @@ of the M6811_INIT register. At init time, the I/O registers are mapped at 0x1000. Address of registers is then: - 0x1000 + M6811_xxx. */ + 0x1000 + M6811_xxx +*/ #define M6811_PORTA 0x00 /* Port A register */ #define M6811__RES1 0x01 /* Unused/Reserved */ #define M6811_PIOC 0x02 /* Parallel I/O Control register */ @@ -364,26 +364,6 @@ #define M6812_INDEXED 0x20000000 /* n,r n = 5, 9 or 16-bits */ #define M6812_OP_IDX_P2 0x40000000 -/* XGATE defines. - These overlap with HC11/12 as above but not used at the same time. */ -#define M68XG_OP_NONE 0x0001 -#define M68XG_OP_IMM3 0x0002 -#define M68XG_OP_R 0x0004 -#define M68XG_OP_R_R 0x0008 -#define M68XG_OP_R_IMM4 0x0010 -#define M68XG_OP_R_R_R 0x0020 -#define M68XG_OP_REL9 0x0040 -#define M68XG_OP_REL10 0x0080 -#define M68XG_OP_R_R_OFFS5 0x0100 -#define M68XG_OP_RD_RB_RI 0x0200 -#define M68XG_OP_RD_RB_RIp 0x0400 -#define M68XG_OP_RD_RB_mRI 0x0800 -#define M68XG_OP_R_IMM8 0x1000 -#define M68XG_OP_R_IMM16 0x2000 -#define M68XG_OP_REG 0x4000 /* Register operand 1. */ -#define M68XG_OP_REG_2 0x8000 /* Register operand 2. */ -#define M68XG_MAX_OPERANDS 3 /* Max operands of triadic r1, r2, r3. */ - /* Markers to identify some instructions. */ #define M6812_OP_EXG_MARKER 0x01000000 /* exg r1,r2 */ #define M6812_OP_TFR_MARKER 0x02000000 /* tfr r1,r2 */ @@ -394,43 +374,35 @@ #define M6812_OP_IBCC_MARKER 0x02000000 /* ibeq/ibne */ #define M6812_OP_TBCC_MARKER 0x01000000 -/* XGATE markers. */ -#define M68XG_OP_B_MARKER 0x04000000 /* bXX rel9 */ -#define M68XG_OP_BRA_MARKER 0x02000000 /* bra rel10 */ - #define M6812_OP_TRAP_ID 0x80000000 /* trap #N */ #define M6811_OP_HIGH_ADDR 0x01000000 /* Used internally by gas. */ #define M6811_OP_LOW_ADDR 0x02000000 -#define M68HC12_BANK_VIRT 0x010000 -#define M68HC12_BANK_MASK 0x00003fff -#define M68HC12_BANK_BASE 0x00008000 -#define M68HC12_BANK_SHIFT 14 -#define M68HC12_BANK_PAGE_MASK 0x0ff +#define M68HC12_BANK_VIRT 0x010000 +#define M68HC12_BANK_MASK 0x00003fff +#define M68HC12_BANK_BASE 0x00008000 +#define M68HC12_BANK_SHIFT 14 +#define M68HC12_BANK_PAGE_MASK 0x0ff /* CPU identification. */ #define cpu6811 0x01 #define cpu6812 0x02 #define cpu6812s 0x04 -#define cpu9s12x 0x08 /* 9S12X main cpu. */ -#define cpuxgate 0x10 /* The XGATE module itself. */ /* The opcode table is an array of struct m68hc11_opcode. */ -struct m68hc11_opcode -{ - const char * name; /* Op-code name. */ +struct m68hc11_opcode { + const char* name; /* Op-code name */ long format; unsigned char size; - unsigned int opcode; + unsigned char opcode; unsigned char cycles_low; unsigned char cycles_high; unsigned char set_flags_mask; unsigned char clr_flags_mask; unsigned char chg_flags_mask; unsigned char arch; - unsigned int xg_mask; /* Mask with zero in register place for xgate. */ }; /* Alias definition for 68HC12. */ diff --git a/include/opcode/mips.h b/include/opcode/mips.h index 857fc7173..fb9094c26 100644 --- a/include/opcode/mips.h +++ b/include/opcode/mips.h @@ -1494,24 +1494,6 @@ extern const int bfd_mips16_num_opcodes; #define MICROMIPSOP_MASK_IMMY 0x1ff #define MICROMIPSOP_SH_IMMY 1 -/* MIPS DSP ASE */ -#define MICROMIPSOP_MASK_DSPACC 0x3 -#define MICROMIPSOP_SH_DSPACC 14 -#define MICROMIPSOP_MASK_DSPSFT 0x3f -#define MICROMIPSOP_SH_DSPSFT 16 -#define MICROMIPSOP_MASK_SA3 0x7 -#define MICROMIPSOP_SH_SA3 13 -#define MICROMIPSOP_MASK_SA4 0xf -#define MICROMIPSOP_SH_SA4 12 -#define MICROMIPSOP_MASK_IMM8 0xff -#define MICROMIPSOP_SH_IMM8 13 -#define MICROMIPSOP_MASK_IMM10 0x3ff -#define MICROMIPSOP_SH_IMM10 16 -#define MICROMIPSOP_MASK_WRDSP 0x3f -#define MICROMIPSOP_SH_WRDSP 14 -#define MICROMIPSOP_MASK_BP 0x3 -#define MICROMIPSOP_SH_BP 14 - /* Placeholders for fields that only exist in the traditional 32-bit instruction encoding; see the comment above for details. */ #define MICROMIPSOP_MASK_CODE20 0 @@ -1526,12 +1508,28 @@ extern const int bfd_mips16_num_opcodes; #define MICROMIPSOP_SH_VECBYTE 0 #define MICROMIPSOP_MASK_VECALIGN 0 #define MICROMIPSOP_SH_VECALIGN 0 +#define MICROMIPSOP_MASK_DSPACC 0 +#define MICROMIPSOP_SH_DSPACC 0 #define MICROMIPSOP_MASK_DSPACC_S 0 #define MICROMIPSOP_SH_DSPACC_S 0 +#define MICROMIPSOP_MASK_DSPSFT 0 +#define MICROMIPSOP_SH_DSPSFT 0 #define MICROMIPSOP_MASK_DSPSFT_7 0 #define MICROMIPSOP_SH_DSPSFT_7 0 +#define MICROMIPSOP_MASK_SA3 0 +#define MICROMIPSOP_SH_SA3 0 +#define MICROMIPSOP_MASK_SA4 0 +#define MICROMIPSOP_SH_SA4 0 +#define MICROMIPSOP_MASK_IMM8 0 +#define MICROMIPSOP_SH_IMM8 0 +#define MICROMIPSOP_MASK_IMM10 0 +#define MICROMIPSOP_SH_IMM10 0 +#define MICROMIPSOP_MASK_WRDSP 0 +#define MICROMIPSOP_SH_WRDSP 0 #define MICROMIPSOP_MASK_RDDSP 0 #define MICROMIPSOP_SH_RDDSP 0 +#define MICROMIPSOP_MASK_BP 0 +#define MICROMIPSOP_SH_BP 0 #define MICROMIPSOP_MASK_MT_U 0 #define MICROMIPSOP_SH_MT_U 0 #define MICROMIPSOP_MASK_MT_H 0 @@ -1648,7 +1646,7 @@ extern const int bfd_mips16_num_opcodes; "y" 5-bit source 3 register for ALNV.PS (MICROMIPSOP_*_RS3) "z" must be zero register "C" 23-bit coprocessor function code (MICROMIPSOP_*_COPZ) - "B" 10-bit syscall/wait function code (MICROMIPSOP_*_CODE10) + "B" 8-bit syscall/wait function code (MICROMIPSOP_*_CODE10) "K" 5-bit Hardware Register (RDHWR instruction) (MICROMIPSOP_*_RS) "+A" 5-bit INS/EXT/DINS/DEXT/DINSM/DEXTM position, which becomes @@ -1704,18 +1702,6 @@ extern const int bfd_mips16_num_opcodes; "f" 32-bit floating point constant "l" 32-bit floating point constant in .lit4 - DSP ASE usage: - "2" 2-bit unsigned immediate for byte align (MICROMIPSOP_*_BP) - "3" 3-bit unsigned immediate (MICROMIPSOP_*_SA3) - "4" 4-bit unsigned immediate (MICROMIPSOP_*_SA4) - "5" 8-bit unsigned immediate (MICROMIPSOP_*_IMM8) - "6" 5-bit unsigned immediate (MICROMIPSOP_*_RS) - "7" 2-bit DSP accumulator register (MICROMIPSOP_*_DSPACC) - "8" 6-bit unsigned immediate (MICROMIPSOP_*_WRDSP) - "0" 6-bit signed immediate (MICROMIPSOP_*_DSPSFT) - "@" 10-bit signed immediate (MICROMIPSOP_*_IMM10) - "^" 5-bit unsigned immediate (MICROMIPSOP_*_RD) - Other: "()" parens surrounding optional value "," separates operands @@ -1723,8 +1709,8 @@ extern const int bfd_mips16_num_opcodes; "m" start of microMIPS extension sequence Characters used so far, for quick reference when adding more: - "12345678 0" - "<>(),+.@\^|~" + "1234567890" + "<>(),+.\|~" "ABCDEFGHI KLMN RST V " "abcd f hijklmnopqrstuvw yz" diff --git a/include/opcode/ppc.h b/include/opcode/ppc.h index 2e789d6ff..e672502e3 100644 --- a/include/opcode/ppc.h +++ b/include/opcode/ppc.h @@ -65,8 +65,6 @@ struct powerpc_opcode instructions. */ extern const struct powerpc_opcode powerpc_opcodes[]; extern const int powerpc_num_opcodes; -extern const struct powerpc_opcode vle_opcodes[]; -extern const int vle_num_opcodes; /* Values defined for the flags field of a struct powerpc_opcode. */ @@ -185,20 +183,8 @@ extern const int vle_num_opcodes; /* Opcode is supported by Thread management APU */ #define PPC_OPCODE_TMR 0x800000000ull -/* Opcode which is supported by the VLE extension. */ -#define PPC_OPCODE_VLE 0x1000000000ull - /* A macro to extract the major opcode from an instruction. */ #define PPC_OP(i) (((i) >> 26) & 0x3f) - -/* A macro to determine if the instruction is a 2-byte VLE insn. */ -#define PPC_OP_SE_VLE(m) ((m) <= 0xffff) - -/* A macro to extract the major opcode from a VLE instruction. */ -#define VLE_OP(i,m) (((i) >> ((m) <= 0xffff ? 10 : 26)) & 0x3f) - -/* A macro to convert a VLE opcode to a VLE opcode segment. */ -#define VLE_OP_TO_SEG(i) ((i) >> 1) /* The operands table is an array of struct powerpc_operand. */ @@ -207,22 +193,16 @@ struct powerpc_operand /* A bitmask of bits in the operand. */ unsigned int bitm; - /* The shift operation to be applied to the operand. No shift - is made if this is zero. For positive values, the operand - is shifted left by SHIFT. For negative values, the operand - is shifted right by -SHIFT. Use PPC_OPSHIFT_INV to indicate - that BITM and SHIFT cannot be used to determine where the - operand goes in the insn. */ + /* How far the operand is left shifted in the instruction. + -1 to indicate that BITM and SHIFT cannot be used to determine + where the operand goes in the insn. */ int shift; /* Insertion function. This is used by the assembler. To insert an operand value into an instruction, check this field. If it is NULL, execute - if (o->shift >= 0) - i |= (op & o->bitm) << o->shift; - else - i |= (op & o->bitm) >> -o->shift; + i |= (op & o->bitm) << o->shift; (i is the instruction which we are filling in, o is a pointer to this structure, and op is the operand value). @@ -240,10 +220,7 @@ struct powerpc_operand extract this operand type from an instruction, check this field. If it is NULL, compute - if (o->shift >= 0) - op = (i >> o->shift) & o->bitm; - else - op = (i << -o->shift) & o->bitm; + op = (i >> o->shift) & o->bitm; if ((o->flags & PPC_OPERAND_SIGNED) != 0) sign_extend (op); (i is the instruction, o is a pointer to this structure, and op @@ -267,11 +244,6 @@ struct powerpc_operand extern const struct powerpc_operand powerpc_operands[]; extern const unsigned int num_powerpc_operands; -/* Use with the shift field of a struct powerpc_operand to indicate - that BITM and SHIFT cannot be used to determine where the operand - goes in the insn. */ -#define PPC_OPSHIFT_INV (-1 << 31) - /* Values defined for the flags field of a struct powerpc_operand. */ /* This operand takes signed values. */ @@ -305,7 +277,7 @@ extern const unsigned int num_powerpc_operands; cr4 4 cr5 5 cr6 6 cr7 7 These may be combined arithmetically, as in cr2*4+gt. These are only supported on the PowerPC, not the POWER. */ -#define PPC_OPERAND_CR_BIT (0x10) +#define PPC_OPERAND_CR (0x10) /* This operand names a register. The disassembler uses this to print register names with a leading 'r'. */ @@ -370,9 +342,6 @@ extern const unsigned int num_powerpc_operands; /* This operand names a vector-scalar unit register. The disassembler prints these with a leading 'vs'. */ #define PPC_OPERAND_VSR (0x100000) - -/* This is a CR FIELD that does not use symbolic names. */ -#define PPC_OPERAND_CR_REG (0x200000) /* The POWER and PowerPC assemblers use a few macros. We keep them with the operands table for simplicity. The macro table is an diff --git a/include/opcode/sparc.h b/include/opcode/sparc.h index b1c5e42ad..7ae3641cf 100644 --- a/include/opcode/sparc.h +++ b/include/opcode/sparc.h @@ -99,7 +99,6 @@ typedef struct sparc_opcode const char *args; /* This was called "delayed" in versions before the flags. */ unsigned int flags; - unsigned int hwcaps; short architecture; /* Bitmask of sparc_opcode_arch_val's. */ } sparc_opcode; @@ -111,39 +110,25 @@ typedef struct sparc_opcode #define F_JSR 0x00000010 /* Subroutine call. */ #define F_FLOAT 0x00000020 /* Floating point instruction (not a branch). */ #define F_FBR 0x00000040 /* Floating point branch. */ - -/* These must match the HWCAP_* values precisely. */ -#define HWCAP_MUL32 0x00000001 /* umul/umulcc/smul/smulcc insns */ -#define HWCAP_DIV32 0x00000002 /* udiv/udivcc/sdiv/sdivcc insns */ -#define HWCAP_FSMULD 0x00000004 /* 'fsmuld' insn */ -#define HWCAP_V8PLUS 0x00000008 /* v9 insns available to 32bit */ -#define HWCAP_POPC 0x00000010 /* 'popc' insn */ -#define HWCAP_VIS 0x00000020 /* VIS insns */ -#define HWCAP_VIS2 0x00000040 /* VIS2 insns */ -#define HWCAP_ASI_BLK_INIT \ - 0x00000080 /* block init ASIs */ -#define HWCAP_FMAF 0x00000100 /* fused multiply-add */ -#define HWCAP_VIS3 0x00000400 /* VIS3 insns */ -#define HWCAP_HPC 0x00000800 /* HPC insns */ -#define HWCAP_RANDOM 0x00001000 /* 'random' insn */ -#define HWCAP_TRANS 0x00002000 /* transaction insns */ -#define HWCAP_FJFMAU 0x00004000 /* unfused multiply-add */ -#define HWCAP_IMA 0x00008000 /* integer multiply-add */ -#define HWCAP_ASI_CACHE_SPARING \ - 0x00010000 /* cache sparing ASIs */ -#define HWCAP_AES 0x00020000 /* AES crypto insns */ -#define HWCAP_DES 0x00040000 /* DES crypto insns */ -#define HWCAP_KASUMI 0x00080000 /* KASUMI crypto insns */ -#define HWCAP_CAMELLIA 0x00100000 /* CAMELLIA crypto insns */ -#define HWCAP_MD5 0x00200000 /* MD5 hashing insns */ -#define HWCAP_SHA1 0x00400000 /* SHA1 hashing insns */ -#define HWCAP_SHA256 0x00800000 /* SHA256 hashing insns */ -#define HWCAP_SHA512 0x01000000 /* SHA512 hashing insns */ -#define HWCAP_MPMUL 0x02000000 /* Multiple Precision Multiply */ -#define HWCAP_MONT 0x04000000 /* Montgomery Mult/Sqrt */ -#define HWCAP_PAUSE 0x08000000 /* Pause insn */ -#define HWCAP_CBCOND 0x10000000 /* Compare and Branch insns */ -#define HWCAP_CRC32C 0x20000000 /* CRC32C insn */ +#define F_MUL32 0x00000100 /* umul/umulcc/smul/smulcc insns */ +#define F_DIV32 0x00000200 /* udiv/udivcc/sdiv/sdivcc insns */ +#define F_FSMULD 0x00000400 /* 'fsmuld' insn */ +#define F_V8PLUS 0x00000800 /* v9 insns available to 32bit */ +#define F_POPC 0x00001000 /* 'popc' insn */ +#define F_VIS 0x00002000 /* VIS insns */ +#define F_VIS2 0x00004000 /* VIS2 insns */ +#define F_ASI_BLK_INIT 0x00008000 /* block init ASIs */ +#define F_FMAF 0x00010000 /* fused multiply-add */ +#define F_VIS3 0x00020000 /* VIS3 insns */ +#define F_HPC 0x00040000 /* HPC insns */ +#define F_RANDOM 0x00080000 /* 'random' insn */ +#define F_TRANS 0x00100000 /* transaction insns */ +#define F_FJFMAU 0x00200000 /* unfused multiply-add */ +#define F_IMA 0x00400000 /* integer multiply-add */ +#define F_ASI_CACHE_SPARING \ + 0x00800000 /* cache sparing ASIs */ + +#define F_HWCAP_MASK 0x00ffff00 /* All sparc opcodes are 32 bits, except for the `set' instruction (really a macro), which is 64 bits. It is handled as a special case. @@ -223,9 +208,7 @@ typedef struct sparc_opcode 0 32/64 bit immediate for set or setx (v9) insns _ Ancillary state register in rd (v9a) / Ancillary state register in rs1 (v9a) - ( entire floating point state register (%efsr) - ) 5 bit immediate placed in RS3 field - = 2+8 bit PC relative immediate. (v9) */ + ( entire floating point state register (%efsr). */ #define OP2(x) (((x) & 0x7) << 22) /* Op2 field of format2 insns. */ #define OP3(x) (((x) & 0x3f) << 19) /* Op3 field of format3 insns. */ diff --git a/include/opcode/xgate.h b/include/opcode/xgate.h deleted file mode 100644 index 77a521f83..000000000 --- a/include/opcode/xgate.h +++ /dev/null @@ -1,120 +0,0 @@ -/* xgate.h -- Freescale XGATE opcode list - Copyright 2010, 2011, 2012 Free Software Foundation, Inc. - Written by Sean Keys (skeys@ipdatasys.com) - - This file is part of the GNU opcodes library. - - This library is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3, or (at your option) - any later version. - - It 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 a copy of the GNU General Public License - along with this file; see the file COPYING. If not, write to the - Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, - MA 02110-1301, USA. */ - -#ifndef _OPCODE_XGATE_H -#define _OPCODE_XGATE_H - -/* XGATE CCR flag definitions. */ -#define XGATE_N_BIT 0x08 /* XGN - Sign Flag */ -#define XGATE_Z_BIT 0x04 /* XGZ - Zero Flag */ -#define XGATE_V_BIT 0x02 /* XGV - Overflow Flag */ -#define XGATE_C_BIT 0x01 /* XGC - Carry Flag */ - -/* Access Detail Notation - V — Vector fetch: always an aligned word read, lasts for at least one RISC core cycle - P — Program word fetch: always an aligned word read, lasts for at least one RISC core cycle - r — 8-bit data read: lasts for at least one RISC core cycle - R — 16-bit data read: lasts for at least one RISC core cycle - w — 8-bit data write: lasts for at least one RISC core cycle - W — 16-bit data write: lasts for at least one RISC core cycle - A — Alignment cycle: no read or write, lasts for zero or one RISC core cycles - f — Free cycle: no read or write, lasts for one RISC core cycles. */ -#define XGATE_CYCLE_V 0x01 -#define XGATE_CYCLE_P 0x02 -#define XGATE_CYCLE_r 0x04 -#define XGATE_CYCLE_R 0x08 -#define XGATE_CYCLE_w 0x10 -#define XGATE_CYCLE_W 0x20 -#define XGATE_CYCLE_A 0x40 -#define XGATE_CYCLE_f 0x80 - -/* Opcode format abbreviations. */ -#define XG_INH 0x0001 /* Inherent. */ -#define XG_I 0x0002 /* 3-bit immediate address. */ -#define XG_R_I 0x0004 /* Register followed by 4/8-bit immediate value. */ -#define XG_R_R 0x0008 /* Register followed by a register. */ -#define XG_R_R_R 0x0010 /* Register followed by two registers. */ -#define XG_R 0x0020 /* Single register. */ -#define XG_PC 0x0040 /* PC relative 10 or 11 bit. */ -#define XG_R_C 0x0080 /* General register followed by ccr register. */ -#define XG_C_R 0x0100 /* CCR register followed by a general register. */ -#define XG_R_P 0x0200 /* General register followed by pc register. */ -#define XG_R_R_I 0x0400 /* Two general registers followed by an immediate value. */ -#define XG_PCREL 0x0800 /* Immediate value that is relative to the current pc. */ - -/* XGATE operand formats as stored in the XGATE_opcode table. - They are only used by GAS to recognize operands. */ -#define XGATE_OP_INH "" -#define XGATE_OP_TRI "r,r,r" -#define XGATE_OP_DYA "r,r" -#define XGATE_OP_IMM16 "r,if" -#define XGATE_OP_IMM8 "r,i8" -#define XGATE_OP_IMM4 "r,i4" -#define XGATE_OP_IMM3 "i3" -#define XGATE_OP_MON "r" -#define XGATE_OP_MON_R_C "r,c" -#define XGATE_OP_MON_C_R "c,r" -#define XGATE_OP_MON_R_P "r,p" -#define XGATE_OP_IDR "r,r,+" -#define XGATE_OP_IDO5 "r,r,i5" -#define XGATE_OP_REL9 "b9" -#define XGATE_OP_REL10 "ba" -#define XGATE_OP_DYA_MON "=r" -/* Macro definitions. */ -#define XGATE_OP_IMM16mADD "r,if; addl addh" -#define XGATE_OP_IMM16mAND "r,if; andl andh" -#define XGATE_OP_IMM16mCPC "r,if; cmpl cpch" -#define XGATE_OP_IMM16mSUB "r,if; subl subh" -#define XGATE_OP_IMM16mLDW "r,if; ldl ldh" - -/* CPU variant identification. */ -#define XGATE_V1 0x1 -#define XGATE_V2 0x2 -#define XGATE_V3 0x4 - -/* Max opcodes per opcode handle. */ -#define MAX_OPCODES 0x05 - -#define MAX_DETECT_CHARS 0x10 - -/* The opcode table definitions. */ -struct xgate_opcode -{ - char * name; /* Op-code name. */ - char * constraints; /* Constraint chars. */ - char * format; /* Bit definitions. */ - unsigned int sh_format; /* Shorthand format mask. */ - unsigned int size; /* Opcode size in bytes. */ - unsigned int bin_opcode; /* Binary opcode with operands masked off. */ - unsigned char cycles_min; /* Minimum cpu cycles needed. */ - unsigned char cycles_max; /* Maximum cpu cycles needed. */ - unsigned char set_flags_mask; /* CCR flags set. */ - unsigned char clr_flags_mask; /* CCR flags cleared. */ - unsigned char chg_flags_mask; /* CCR flags changed. */ - unsigned char arch; /* CPU variant. */ -}; - -/* The opcode table. The table contains all the opcodes (all pages). - You can't rely on the order. */ -extern const struct xgate_opcode xgate_opcodes[]; -extern const int xgate_num_opcodes; - -#endif /* _OPCODE_XGATE_H */ diff --git a/include/plugin-api.h b/include/plugin-api.h index 3220142dd..122424c6c 100644 --- a/include/plugin-api.h +++ b/include/plugin-api.h @@ -66,8 +66,7 @@ enum ld_plugin_output_file_type { LDPO_REL, LDPO_EXEC, - LDPO_DYN, - LDPO_PIE + LDPO_DYN }; /* An input file managed by the plugin library. */ diff --git a/include/splay-tree.h b/include/splay-tree.h index a26135a09..480b2c43e 100644 --- a/include/splay-tree.h +++ b/include/splay-tree.h @@ -37,11 +37,18 @@ extern "C" { #include "ansidecl.h" -#ifdef HAVE_STDINT_H -#include <stdint.h> +#ifndef _WIN64 + typedef unsigned long int libi_uhostptr_t; + typedef long int libi_shostptr_t; +#else +#ifdef __GNUC__ + __extension__ #endif -#ifdef HAVE_INTTYPES_H -#include <inttypes.h> + typedef unsigned long long libi_uhostptr_t; +#ifdef __GNUC__ + __extension__ +#endif + typedef long long libi_shostptr_t; #endif #ifndef GTY @@ -52,8 +59,8 @@ extern "C" { these types, if necessary. These types should be sufficiently wide that any pointer or scalar can be cast to these types, and then cast back, without loss of precision. */ -typedef uintptr_t splay_tree_key; -typedef uintptr_t splay_tree_value; +typedef libi_uhostptr_t splay_tree_key; +typedef libi_uhostptr_t splay_tree_value; /* Forward declaration for a node in the tree. */ typedef struct splay_tree_node_s *splay_tree_node; |