Print this page
5688 ELF tools need to be more careful with dwarf data


 230                                         /*  of itself */
 231 #define DW_EH_PE_textrel        0x20
 232 #define DW_EH_PE_datarel        0x30    /* Value is reletive to the beginning */
 233                                         /*  of the eh_frame_hdr segment */
 234                                         /*  ( segment type PT_AMD64_UNWIND ) */
 235                                         /*  when within that segment, or to */
 236                                         /*  the GOT when without. */
 237 #define DW_EH_PE_funcrel        0x40
 238 #define DW_EH_PE_aligned        0x50    /* value is an aligned void* */
 239 #define DW_EH_PE_indirect       0x80    /* bit to signal indirection after */
 240                                         /*  relocation */
 241 
 242 
 243 /* language/compiler enumeration */
 244 
 245 typedef enum _LANG {
 246         LANG_UNK = 0,
 247         LANG_ANSI_C_V1 = 1
 248 } LANG;
 249 






 250 /*
 251  * Little Endian Base 128 (leb128) encoding/decoding routines
 252  */
 253 extern  uint64_t        uleb_extract(unsigned char *, uint64_t *);
 254 extern  int64_t         sleb_extract(unsigned char *, uint64_t *);
 255 extern  uint64_t        dwarf_ehe_extract(unsigned char *, uint64_t *,
 256                             uint_t, unsigned char *, boolean_t, uint64_t,
 257                             uint64_t, uint64_t);


 258 
 259 #ifdef  __cplusplus
 260 }
 261 #endif
 262 
 263 
 264 #endif /* _DWARF_H */


 230                                         /*  of itself */
 231 #define DW_EH_PE_textrel        0x20
 232 #define DW_EH_PE_datarel        0x30    /* Value is reletive to the beginning */
 233                                         /*  of the eh_frame_hdr segment */
 234                                         /*  ( segment type PT_AMD64_UNWIND ) */
 235                                         /*  when within that segment, or to */
 236                                         /*  the GOT when without. */
 237 #define DW_EH_PE_funcrel        0x40
 238 #define DW_EH_PE_aligned        0x50    /* value is an aligned void* */
 239 #define DW_EH_PE_indirect       0x80    /* bit to signal indirection after */
 240                                         /*  relocation */
 241 
 242 
 243 /* language/compiler enumeration */
 244 
 245 typedef enum _LANG {
 246         LANG_UNK = 0,
 247         LANG_ANSI_C_V1 = 1
 248 } LANG;
 249 
 250 typedef enum {
 251         DW_SUCCESS = 0,
 252         DW_BAD_ENCODING,
 253         DW_OVERFLOW,
 254 } dwarf_error_t;
 255 
 256 /*
 257  * Little Endian Base 128 (leb128) encoding/decoding routines
 258  */
 259 extern  dwarf_error_t   uleb_extract(unsigned char *, uint64_t *, size_t,
 260                             uint64_t *);
 261 extern  dwarf_error_t   sleb_extract(unsigned char *, uint64_t *, size_t,
 262                             int64_t *);
 263 extern  dwarf_error_t   dwarf_ehe_extract(unsigned char *, size_t, uint64_t *,
 264                             uint64_t *, uint_t, unsigned char *, boolean_t,
 265                             uint64_t, uint64_t, uint64_t);
 266 
 267 #ifdef  __cplusplus
 268 }
 269 #endif
 270 
 271 
 272 #endif /* _DWARF_H */