Print this page
3265 link-editor builds bogus .eh_frame_hdr on ia32


 215 #define DW_EH_PE_udata8         0x04    /* An 8 bytes unsigned value. */
 216 #define DW_EH_PE_signed         0x08    /* bit on for all signed encodings */
 217 #define DW_EH_PE_sleb128        0x09    /* Signed value is encoded using */
 218                                         /*   the Little Endian */
 219                                         /*   Base 128 (LEB128) */
 220 #define DW_EH_PE_sdata2         0x0a    /* A 2 bytes signed value. */
 221 #define DW_EH_PE_sdata4         0x0b    /* A 4 bytes signed value. */
 222 #define DW_EH_PE_sdata8         0x0c    /* An 8 bytes signed value. */
 223 
 224 /*
 225  * Dwarf Exception Header application
 226  */
 227 #define DW_EH_PE_absptr         0x00    /* Value is used with no */
 228                                         /*  modification. */
 229 #define DW_EH_PE_pcrel          0x10    /* Value is reletive to the location */
 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 #define DW_EH_PE_funcrel        0x40
 236 #define DW_EH_PE_aligned        0x50    /* value is an aligned void* */
 237 #define DW_EH_PE_indirect       0x80    /* bit to signal indirection after */
 238                                         /*  relocation */
 239 
 240 
 241 /* language/compiler enumeration */
 242 
 243 typedef enum _LANG {
 244         LANG_UNK = 0,
 245         LANG_ANSI_C_V1 = 1
 246 } LANG;
 247 
 248 /*
 249  * Little Endian Base 128 (leb128) encoding/decoding routines
 250  */
 251 extern  uint64_t        uleb_extract(unsigned char *, uint64_t *);
 252 extern  int64_t         sleb_extract(unsigned char *, uint64_t *);
 253 extern  uint64_t        dwarf_ehe_extract(unsigned char *, uint64_t *,
 254                             uint_t, unsigned char *, uint64_t, uint64_t);

 255 
 256 #ifdef  __cplusplus
 257 }
 258 #endif
 259 
 260 
 261 #endif /* _DWARF_H */


 215 #define DW_EH_PE_udata8         0x04    /* An 8 bytes unsigned value. */
 216 #define DW_EH_PE_signed         0x08    /* bit on for all signed encodings */
 217 #define DW_EH_PE_sleb128        0x09    /* Signed value is encoded using */
 218                                         /*   the Little Endian */
 219                                         /*   Base 128 (LEB128) */
 220 #define DW_EH_PE_sdata2         0x0a    /* A 2 bytes signed value. */
 221 #define DW_EH_PE_sdata4         0x0b    /* A 4 bytes signed value. */
 222 #define DW_EH_PE_sdata8         0x0c    /* An 8 bytes signed value. */
 223 
 224 /*
 225  * Dwarf Exception Header application
 226  */
 227 #define DW_EH_PE_absptr         0x00    /* Value is used with no */
 228                                         /*  modification. */
 229 #define DW_EH_PE_pcrel          0x10    /* Value is reletive to the location */
 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 */