00001 /* 00002 * Copyright 2003, 2004, 2005 PathScale, Inc. All Rights Reserved. 00003 */ 00004 00005 /* 00006 00007 Copyright (C) 2000,2004 Silicon Graphics, Inc. All Rights Reserved. 00008 00009 This program is free software; you can redistribute it and/or modify it 00010 under the terms of version 2.1 of the GNU Lesser General Public License 00011 as published by the Free Software Foundation. 00012 00013 This program is distributed in the hope that it would be useful, but 00014 WITHOUT ANY WARRANTY; without even the implied warranty of 00015 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00016 00017 Further, this software is distributed without any warranty that it is 00018 free of the rightful claim of any third person regarding infringement 00019 or the like. Any license provided herein, whether implied or 00020 otherwise, applies only to this software file. Patent licenses, if 00021 any, provided herein do not apply to combinations of this program with 00022 other software, or any other product whatsoever. 00023 00024 You should have received a copy of the GNU Lesser General Public 00025 License along with this program; if not, write the Free Software 00026 Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, 00027 USA. 00028 00029 Contact information: Silicon Graphics, Inc., 1500 Crittenden Lane, 00030 Mountain View, CA 94043, or: 00031 00032 http://www.sgi.com 00033 00034 For further information regarding this notice, see: 00035 00036 http://oss.sgi.com/projects/GenInfo/NoticeExplan 00037 00038 */ 00039 00040 00041 00042 /* 00043 Largest register value that can be coded into 00044 the opcode since there are only 6 bits in the 00045 register field. 00046 */ 00047 #define MAX_6_BIT_VALUE 0x3f 00048 00049 /* 00050 This struct holds debug_frame instructions 00051 */ 00052 typedef struct Dwarf_P_Frame_Pgm_s *Dwarf_P_Frame_Pgm; 00053 00054 struct Dwarf_P_Frame_Pgm_s { 00055 Dwarf_Ubyte dfp_opcode; /* opcode - includes reg # */ 00056 char *dfp_args; /* operands */ 00057 int dfp_nbytes; /* number of bytes in args */ 00058 #if 0 00059 Dwarf_Unsigned dfp_sym_index; /* 0 unless reloc needed */ 00060 #endif 00061 Dwarf_P_Frame_Pgm dfp_next; 00062 }; 00063 00064 00065 /* 00066 This struct has cie related information. Used to gather data 00067 from user program, and later to transform to disk form 00068 */ 00069 struct Dwarf_P_Cie_s { 00070 Dwarf_Ubyte cie_version; 00071 const char *cie_aug; /* augmentation */ 00072 Dwarf_Ubyte cie_code_align; /* alignment of code */ 00073 Dwarf_Sbyte cie_data_align; 00074 Dwarf_Ubyte cie_ret_reg; /* return register # */ 00075 Dwarf_Unsigned cie_personality; /* personality routine */ 00076 char *cie_inst; /* initial instruction */ 00077 long cie_inst_bytes; 00078 /* no of init_inst */ 00079 Dwarf_P_Cie cie_next; 00080 }; 00081 00082 00083 /* producer fields */ 00084 struct Dwarf_P_Fde_s { 00085 Dwarf_Unsigned fde_unused1; 00086 00087 /* function/subr die for this fde */ 00088 Dwarf_P_Die fde_die; 00089 00090 /* index to asso. cie */ 00091 Dwarf_Word fde_cie; 00092 00093 /* Address of first location of the code this frame applies to If 00094 fde_end_symbol non-zero, this represents the offset from the 00095 symbol indicated by fde_r_symidx */ 00096 Dwarf_Addr fde_initloc; 00097 00098 /* Relocation symbol for address of the code this frame applies to. 00099 */ 00100 Dwarf_Unsigned fde_r_symidx; 00101 00102 /* Bytes of instr for this fde, if known */ 00103 Dwarf_Unsigned fde_addr_range; 00104 00105 /* linked list of instructions we will put in fde. */ 00106 Dwarf_P_Frame_Pgm fde_inst; 00107 00108 /* number of instructions in fde */ 00109 long fde_n_inst; 00110 00111 /* number of bytes of inst in fde */ 00112 long fde_n_bytes; 00113 00114 /* offset into exception table for this function. */ 00115 Dwarf_Signed fde_offset_into_exception_tables; 00116 00117 /* The symbol for the exception table elf section. */ 00118 Dwarf_Unsigned fde_exception_table_symbol; 00119 00120 /* pointer to last inst */ 00121 Dwarf_P_Frame_Pgm fde_last_inst; 00122 00123 Dwarf_P_Fde fde_next; 00124 00125 /* The symbol and offset of the end symbol. When fde_end_symbol is 00126 non-zero we must represent the */ 00127 Dwarf_Addr fde_end_symbol_offset; 00128 Dwarf_Unsigned fde_end_symbol; 00129 00130 int fde_uwordb_size; 00131 };
1.5.6