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

Split Close
Expand all
Collapse all
          --- old/usr/src/cmd/sgs/include/dwarf.h
          +++ new/usr/src/cmd/sgs/include/dwarf.h
↓ open down ↓ 224 lines elided ↑ open up ↑
 225  225   * Dwarf Exception Header application
 226  226   */
 227  227  #define DW_EH_PE_absptr         0x00    /* Value is used with no */
 228  228                                          /*  modification. */
 229  229  #define DW_EH_PE_pcrel          0x10    /* Value is reletive to the location */
 230  230                                          /*  of itself */
 231  231  #define DW_EH_PE_textrel        0x20
 232  232  #define DW_EH_PE_datarel        0x30    /* Value is reletive to the beginning */
 233  233                                          /*  of the eh_frame_hdr segment */
 234  234                                          /*  ( segment type PT_AMD64_UNWIND ) */
      235 +                                        /*  when within that segment, or to */
      236 +                                        /*  the GOT when without. */
 235  237  #define DW_EH_PE_funcrel        0x40
 236  238  #define DW_EH_PE_aligned        0x50    /* value is an aligned void* */
 237  239  #define DW_EH_PE_indirect       0x80    /* bit to signal indirection after */
 238  240                                          /*  relocation */
 239  241  
 240  242  
 241  243  /* language/compiler enumeration */
 242  244  
 243  245  typedef enum _LANG {
 244  246          LANG_UNK = 0,
 245  247          LANG_ANSI_C_V1 = 1
 246  248  } LANG;
 247  249  
 248  250  /*
 249  251   * Little Endian Base 128 (leb128) encoding/decoding routines
 250  252   */
 251  253  extern  uint64_t        uleb_extract(unsigned char *, uint64_t *);
 252  254  extern  int64_t         sleb_extract(unsigned char *, uint64_t *);
 253  255  extern  uint64_t        dwarf_ehe_extract(unsigned char *, uint64_t *,
 254      -                            uint_t, unsigned char *, uint64_t, uint64_t);
      256 +                            uint_t, unsigned char *, boolean_t, uint64_t,
      257 +                            uint64_t, uint64_t);
 255  258  
 256  259  #ifdef  __cplusplus
 257  260  }
 258  261  #endif
 259  262  
 260  263  
 261  264  #endif /* _DWARF_H */
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX