Print this page
ld: implement -ztype and rework option parsing

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/sys/link.h
          +++ new/usr/src/uts/common/sys/link.h
↓ open down ↓ 153 lines elided ↑ open up ↑
 154  154  #define DT_SUNW_CAPINFO         0x60000018      /* capabilities symbols */
 155  155  #define DT_SUNW_STRPAD          0x60000019      /* # of unused bytes at the */
 156  156                                                  /*      end of dynstr */
 157  157  #define DT_SUNW_CAPCHAIN        0x6000001a      /* capabilities chain info */
 158  158  #define DT_SUNW_LDMACH          0x6000001b      /* EM_ machine code of linker */
 159  159                                                  /*      that produced object */
 160  160  #define DT_SUNW_CAPCHAINENT     0x6000001d      /* capabilities chain entry */
 161  161  #define DT_SUNW_CAPCHAINSZ      0x6000001f      /* capabilities chain size */
 162  162  /* 0x60000021 would be DT_SUNW_PARENT */
 163  163  #define DT_SUNW_ASLR            0x60000023      /* executable ASLR desire */
      164 +#define DT_SUNW_KMOD            0x60000027      /* object is a kernel module */
 164  165  
 165  166  /*
 166  167   * DT_* encoding rules do not apply between DT_HIOS and DT_LOPROC
 167  168   */
 168  169  #define DT_HIOS                 0x6ffff000
 169  170  
 170  171  /*
 171  172   * The following values have been deprecated and remain here to allow
 172  173   * compatibility with older binaries.
 173  174   */
↓ open down ↓ 49 lines elided ↑ open up ↑
 223  224   */
 224  225  #define DT_VERSYM       0x6ffffff0      /* version symbol table - unused by */
 225  226                                          /*      Solaris (see libld/update.c) */
 226  227  
 227  228  #define DT_RELACOUNT    0x6ffffff9      /* number of RELATIVE relocations */
 228  229  #define DT_RELCOUNT     0x6ffffffa      /* number of RELATIVE relocations */
 229  230  #define DT_FLAGS_1      0x6ffffffb      /* state flags - see DF_1_* defs */
 230  231  #define DT_VERDEF       0x6ffffffc      /* version definition table and */
 231  232  #define DT_VERDEFNUM    0x6ffffffd      /*      associated no. of entries */
 232  233  #define DT_VERNEED      0x6ffffffe      /* version needed table and */
 233      -#define DT_VERNEEDNUM   0x6fffffff      /*      associated no. of entries */
      234 +#define DT_VERNEEDNUM   0x6fffffff      /*      associated no. of entries */
 234  235  
 235  236  /*
 236  237   * DT_* entries between DT_HIPROC and DT_LOPROC are reserved for processor
 237  238   * specific semantics.
 238  239   *
 239  240   * DT_* encoding rules apply to all tag values larger than DT_LOPROC.
 240  241   */
 241  242  #define DT_LOPROC       0x70000000      /* processor specific range */
 242  243  #define DT_AUXILIARY    0x7ffffffd      /* shared library auxiliary name */
 243  244  #define DT_USED         0x7ffffffe      /* ignored - same as needed */
↓ open down ↓ 115 lines elided ↑ open up ↑
 359  360  } Elf32_Verneed;                        /*      verneed to next verneed entry */
 360  361  
 361  362  typedef struct {                        /* Verneed Auxiliary Structure. */
 362  363          Elf32_Word      vna_hash;       /* version name hash value */
 363  364          Elf32_Half      vna_flags;      /* version information */
 364  365          Elf32_Half      vna_other;
 365  366          Elf32_Word      vna_name;       /* version name */
 366  367          Elf32_Word      vna_next;       /* no. of bytes from start of this */
 367  368  } Elf32_Vernaux;                        /*      vernaux to next vernaux entry */
 368  369  
 369      -typedef Elf32_Half      Elf32_Versym;   /* Version symbol index array */
      370 +typedef Elf32_Half      Elf32_Versym;   /* Version symbol index array */
 370  371  
 371  372  typedef struct {
 372  373          Elf32_Half      si_boundto;     /* direct bindings - symbol bound to */
 373  374          Elf32_Half      si_flags;       /* per symbol flags */
 374  375  } Elf32_Syminfo;
 375  376  
 376  377  
 377  378  #if defined(_LP64) || defined(_LONGLONG_TYPE)
 378  379  typedef struct {
 379  380          Elf64_Half      vd_version;     /* this structures version revision */
↓ open down ↓ 77 lines elided ↑ open up ↑
 457  458  #define VER_NEED_CURRENT        1
 458  459  #define VER_NEED_NUM            2
 459  460  
 460  461  
 461  462  /*
 462  463   * Syminfo flag values
 463  464   */
 464  465  #define SYMINFO_FLG_DIRECT      0x0001  /* symbol ref has direct association */
 465  466                                          /*      to object containing defn. */
 466  467  #define SYMINFO_FLG_FILTER      0x0002  /* symbol ref is associated to a */
 467      -                                        /*      standard filter */
      468 +                                        /*      standard filter */
 468  469  #define SYMINFO_FLG_PASSTHRU    SYMINFO_FLG_FILTER /* unused obsolete name */
 469  470  #define SYMINFO_FLG_COPY        0x0004  /* symbol is a copy-reloc */
 470  471  #define SYMINFO_FLG_LAZYLOAD    0x0008  /* object containing defn. should be */
 471  472                                          /*      lazily-loaded */
 472  473  #define SYMINFO_FLG_DIRECTBIND  0x0010  /* ref should be bound directly to */
 473  474                                          /*      object containing defn. */
 474  475  #define SYMINFO_FLG_NOEXTDIRECT 0x0020  /* don't let an external reference */
 475  476                                          /*      directly bind to this symbol */
 476  477  #define SYMINFO_FLG_AUXILIARY   0x0040  /* symbol ref is associated to a */
 477      -                                        /*      auxiliary filter */
      478 +                                        /*      auxiliary filter */
 478  479  #define SYMINFO_FLG_INTERPOSE   0x0080  /* symbol defines an interposer */
 479  480  #define SYMINFO_FLG_CAP         0x0100  /* symbol is capabilities specific */
 480  481  #define SYMINFO_FLG_DEFERRED    0x0200  /* symbol should not be included in */
 481  482                                          /*      BIND_NOW relocations */
 482  483  
 483  484  /*
 484  485   * Syminfo.si_boundto values.
 485  486   */
 486  487  #define SYMINFO_BT_SELF         0xffff  /* symbol bound to self */
 487  488  #define SYMINFO_BT_PARENT       0xfffe  /* symbol bound to parent */
↓ open down ↓ 11 lines elided ↑ open up ↑
 499  500  
 500  501  /*
 501  502   * Public structure defined and maintained within the runtime linker
 502  503   */
 503  504  #ifndef _ASM
 504  505  
 505  506  typedef struct link_map Link_map;
 506  507  
 507  508  struct link_map {
 508  509          unsigned long   l_addr;         /* address at which object is mapped */
 509      -        char            *l_name;        /* full name of loaded object */
      510 +        char            *l_name;        /* full name of loaded object */
 510  511  #ifdef _LP64
 511  512          Elf64_Dyn       *l_ld;          /* dynamic structure of object */
 512  513  #else
 513  514          Elf32_Dyn       *l_ld;          /* dynamic structure of object */
 514  515  #endif
 515  516          Link_map        *l_next;        /* next link object */
 516  517          Link_map        *l_prev;        /* previous link object */
 517  518          char            *l_refname;     /* filters reference name */
 518  519  };
 519  520  
↓ open down ↓ 122 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX