"Fossies" - the Fresh Open Source Software Archive

Member "file-5.35/src/readelf.h" (11 Sep 2018, 17159 Bytes) of package /linux/misc/file-5.35.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "readelf.h" see the Fossies "Dox" file reference documentation and the last Fossies "Diffs" side-by-side code changes report: 5.33_vs_5.34.

    1 /*
    2  * Copyright (c) Christos Zoulas 2003.
    3  * All Rights Reserved.
    4  *
    5  * Redistribution and use in source and binary forms, with or without
    6  * modification, are permitted provided that the following conditions
    7  * are met:
    8  * 1. Redistributions of source code must retain the above copyright
    9  *    notice immediately at the beginning of the file, without modification,
   10  *    this list of conditions, and the following disclaimer.
   11  * 2. Redistributions in binary form must reproduce the above copyright
   12  *    notice, this list of conditions and the following disclaimer in the
   13  *    documentation and/or other materials provided with the distribution.
   14  *
   15  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   16  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   18  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
   19  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   20  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   21  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   22  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   23  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   24  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   25  * SUCH DAMAGE.
   26  */
   27 /*
   28  * @(#)Id: readelf.h,v 1.9 2002/05/16 18:45:56 christos Exp
   29  *
   30  * Provide elf data structures for non-elf machines, allowing file
   31  * non-elf hosts to determine if an elf binary is stripped.
   32  * Note: cobbled from the linux header file, with modifications
   33  */
   34 #ifndef __fake_elf_h__
   35 #define __fake_elf_h__
   36 
   37 #if HAVE_STDINT_H
   38 #include <stdint.h>
   39 #endif
   40 
   41 typedef uint32_t    Elf32_Addr;
   42 typedef uint32_t    Elf32_Off;
   43 typedef uint16_t    Elf32_Half;
   44 typedef uint32_t    Elf32_Word;
   45 typedef uint8_t     Elf32_Char;
   46 
   47 typedef uint64_t    Elf64_Addr;
   48 typedef uint64_t    Elf64_Off;
   49 typedef uint64_t    Elf64_Xword;
   50 typedef uint16_t    Elf64_Half;
   51 typedef uint32_t    Elf64_Word;
   52 typedef uint8_t     Elf64_Char;
   53 
   54 #define EI_NIDENT   16
   55 
   56 typedef struct {
   57     Elf32_Word  a_type;     /* 32-bit id */
   58     Elf32_Word  a_v;        /* 32-bit id */
   59 } Aux32Info;
   60 
   61 typedef struct {
   62     Elf64_Xword a_type;     /* 64-bit id */
   63     Elf64_Xword a_v;        /* 64-bit id */
   64 } Aux64Info;
   65 
   66 #define AT_NULL   0     /* end of vector */
   67 #define AT_IGNORE 1     /* entry should be ignored */
   68 #define AT_EXECFD 2     /* file descriptor of program */
   69 #define AT_PHDR   3     /* program headers for program */
   70 #define AT_PHENT  4     /* size of program header entry */
   71 #define AT_PHNUM  5     /* number of program headers */
   72 #define AT_PAGESZ 6     /* system page size */
   73 #define AT_BASE   7     /* base address of interpreter */
   74 #define AT_FLAGS  8     /* flags */
   75 #define AT_ENTRY  9     /* entry point of program */
   76 #define AT_LINUX_NOTELF 10    /* program is not ELF */
   77 #define AT_LINUX_UID    11    /* real uid */
   78 #define AT_LINUX_EUID   12    /* effective uid */
   79 #define AT_LINUX_GID    13    /* real gid */
   80 #define AT_LINUX_EGID   14    /* effective gid */
   81 #define AT_LINUX_PLATFORM 15  /* string identifying CPU for optimizations */
   82 #define AT_LINUX_HWCAP  16    /* arch dependent hints at CPU capabilities */
   83 #define AT_LINUX_CLKTCK 17    /* frequency at which times() increments */
   84 /* AT_* values 18 through 22 are reserved */
   85 #define AT_LINUX_SECURE 23   /* secure mode boolean */
   86 #define AT_LINUX_BASE_PLATFORM 24     /* string identifying real platform, may
   87                                  * differ from AT_PLATFORM. */
   88 #define AT_LINUX_RANDOM 25    /* address of 16 random bytes */
   89 #define AT_LINUX_HWCAP2 26    /* extension of AT_HWCAP */
   90 #define AT_LINUX_EXECFN 31   /* filename of program */
   91 
   92 typedef struct {
   93     Elf32_Char  e_ident[EI_NIDENT];
   94     Elf32_Half  e_type;
   95     Elf32_Half  e_machine;
   96     Elf32_Word  e_version;
   97     Elf32_Addr  e_entry;  /* Entry point */
   98     Elf32_Off   e_phoff;
   99     Elf32_Off   e_shoff;
  100     Elf32_Word  e_flags;
  101     Elf32_Half  e_ehsize;
  102     Elf32_Half  e_phentsize;
  103     Elf32_Half  e_phnum;
  104     Elf32_Half  e_shentsize;
  105     Elf32_Half  e_shnum;
  106     Elf32_Half  e_shstrndx;
  107 } Elf32_Ehdr;
  108 
  109 typedef struct {
  110     Elf64_Char  e_ident[EI_NIDENT];
  111     Elf64_Half  e_type;
  112     Elf64_Half  e_machine;
  113     Elf64_Word  e_version;
  114     Elf64_Addr  e_entry;  /* Entry point */
  115     Elf64_Off   e_phoff;
  116     Elf64_Off   e_shoff;
  117     Elf64_Word  e_flags;
  118     Elf64_Half  e_ehsize;
  119     Elf64_Half  e_phentsize;
  120     Elf64_Half  e_phnum;
  121     Elf64_Half  e_shentsize;
  122     Elf64_Half  e_shnum;
  123     Elf64_Half  e_shstrndx;
  124 } Elf64_Ehdr;
  125 
  126 /* e_type */
  127 #define ET_REL      1
  128 #define ET_EXEC     2
  129 #define ET_DYN      3
  130 #define ET_CORE     4
  131 
  132 /* e_machine (used only for SunOS 5.x hardware capabilities) */
  133 #define EM_SPARC    2
  134 #define EM_386      3
  135 #define EM_SPARC32PLUS  18
  136 #define EM_SPARCV9  43
  137 #define EM_IA_64    50
  138 #define EM_AMD64    62
  139 
  140 /* sh_type */
  141 #define SHT_SYMTAB  2
  142 #define SHT_NOTE    7
  143 #define SHT_DYNSYM  11
  144 #define SHT_SUNW_cap    0x6ffffff5  /* SunOS 5.x hw/sw capabilities */
  145 
  146 /* elf type */
  147 #define ELFDATANONE 0       /* e_ident[EI_DATA] */
  148 #define ELFDATA2LSB 1
  149 #define ELFDATA2MSB 2
  150 
  151 /* elf class */
  152 #define ELFCLASSNONE    0
  153 #define ELFCLASS32  1
  154 #define ELFCLASS64  2
  155 
  156 /* magic number */
  157 #define EI_MAG0     0       /* e_ident[] indexes */
  158 #define EI_MAG1     1
  159 #define EI_MAG2     2
  160 #define EI_MAG3     3
  161 #define EI_CLASS    4
  162 #define EI_DATA     5
  163 #define EI_VERSION  6
  164 #define EI_PAD      7
  165 
  166 #define ELFMAG0     0x7f        /* EI_MAG */
  167 #define ELFMAG1     'E'
  168 #define ELFMAG2     'L'
  169 #define ELFMAG3     'F'
  170 #define ELFMAG      "\177ELF"
  171 
  172 #define OLFMAG1     'O'
  173 #define OLFMAG      "\177OLF"
  174 
  175 typedef struct {
  176     Elf32_Word  p_type;
  177     Elf32_Off   p_offset;
  178     Elf32_Addr  p_vaddr;
  179     Elf32_Addr  p_paddr;
  180     Elf32_Word  p_filesz;
  181     Elf32_Word  p_memsz;
  182     Elf32_Word  p_flags;
  183     Elf32_Word  p_align;
  184 } Elf32_Phdr;
  185 
  186 typedef struct {
  187     Elf64_Word  p_type;
  188     Elf64_Word  p_flags;
  189     Elf64_Off   p_offset;
  190     Elf64_Addr  p_vaddr;
  191     Elf64_Addr  p_paddr;
  192     Elf64_Xword p_filesz;
  193     Elf64_Xword p_memsz;
  194     Elf64_Xword p_align;
  195 } Elf64_Phdr;
  196 
  197 #define PT_NULL     0       /* p_type */
  198 #define PT_LOAD     1
  199 #define PT_DYNAMIC  2
  200 #define PT_INTERP   3
  201 #define PT_NOTE     4
  202 #define PT_SHLIB    5
  203 #define PT_PHDR     6
  204 #define PT_NUM      7
  205 
  206 typedef struct {
  207     Elf32_Word  sh_name;
  208     Elf32_Word  sh_type;
  209     Elf32_Word  sh_flags;
  210     Elf32_Addr  sh_addr;
  211     Elf32_Off   sh_offset;
  212     Elf32_Word  sh_size;
  213     Elf32_Word  sh_link;
  214     Elf32_Word  sh_info;
  215     Elf32_Word  sh_addralign;
  216     Elf32_Word  sh_entsize;
  217 } Elf32_Shdr;
  218 
  219 typedef struct {
  220     Elf64_Word  sh_name;
  221     Elf64_Word  sh_type;
  222     Elf64_Off   sh_flags;
  223     Elf64_Addr  sh_addr;
  224     Elf64_Off   sh_offset;
  225     Elf64_Off   sh_size;
  226     Elf64_Word  sh_link;
  227     Elf64_Word  sh_info;
  228     Elf64_Off   sh_addralign;
  229     Elf64_Off   sh_entsize;
  230 } Elf64_Shdr;
  231 
  232 #define NT_NETBSD_CORE_PROCINFO     1
  233 #define NT_NETBSD_CORE_AUXV     2
  234 
  235 struct NetBSD_elfcore_procinfo {
  236     /* Version 1 fields start here. */
  237     uint32_t    cpi_version;        /* our version */
  238     uint32_t    cpi_cpisize;        /* sizeof(this struct) */
  239     uint32_t    cpi_signo;      /* killing signal */
  240     uint32_t    cpi_sigcode;        /* signal code */
  241     uint32_t    cpi_sigpend[4];     /* pending signals */
  242     uint32_t    cpi_sigmask[4];     /* blocked signals */
  243     uint32_t    cpi_sigignore[4];   /* ignored signals */
  244     uint32_t    cpi_sigcatch[4];    /* caught signals */
  245     int32_t     cpi_pid;        /* process ID */
  246     int32_t     cpi_ppid;       /* parent process ID */
  247     int32_t     cpi_pgrp;       /* process group ID */
  248     int32_t     cpi_sid;        /* session ID */
  249     uint32_t    cpi_ruid;       /* real user ID */
  250     uint32_t    cpi_euid;       /* effective user ID */
  251     uint32_t    cpi_svuid;      /* saved user ID */
  252     uint32_t    cpi_rgid;       /* real group ID */
  253     uint32_t    cpi_egid;       /* effective group ID */
  254     uint32_t    cpi_svgid;      /* saved group ID */
  255     uint32_t    cpi_nlwps;      /* number of LWPs */
  256     int8_t      cpi_name[32];       /* copy of p->p_comm */
  257     /* Add version 2 fields below here. */
  258     int32_t     cpi_siglwp; /* LWP target of killing signal */
  259 };
  260 
  261 /* Note header in a PT_NOTE section */
  262 typedef struct elf_note {
  263     Elf32_Word  n_namesz;   /* Name size */
  264     Elf32_Word  n_descsz;   /* Content size */
  265     Elf32_Word  n_type;     /* Content type */
  266 } Elf32_Nhdr;
  267 
  268 typedef struct {
  269     Elf64_Word  n_namesz;
  270     Elf64_Word  n_descsz;
  271     Elf64_Word  n_type;
  272 } Elf64_Nhdr;
  273 
  274 /* Notes used in ET_CORE */
  275 #define NT_PRSTATUS 1
  276 #define NT_PRFPREG  2
  277 #define NT_PRPSINFO 3
  278 #define NT_PRXREG   4
  279 #define NT_TASKSTRUCT   4
  280 #define NT_PLATFORM 5
  281 #define NT_AUXV     6
  282 
  283 /* Note types used in executables */
  284 /* NetBSD executables (name = "NetBSD") */
  285 #define NT_NETBSD_VERSION   1
  286 #define NT_NETBSD_EMULATION 2
  287 #define NT_FREEBSD_VERSION  1
  288 #define NT_OPENBSD_VERSION  1
  289 #define NT_DRAGONFLY_VERSION    1
  290 /*
  291  * GNU executables (name = "GNU")
  292  * word[0]: GNU OS tags
  293  * word[1]: major version
  294  * word[2]: minor version
  295  * word[3]: tiny version
  296  */
  297 #define NT_GNU_VERSION      1
  298 
  299 /* GNU OS tags */
  300 #define GNU_OS_LINUX    0
  301 #define GNU_OS_HURD 1
  302 #define GNU_OS_SOLARIS  2
  303 #define GNU_OS_KFREEBSD 3
  304 #define GNU_OS_KNETBSD  4
  305 
  306 /*
  307  * GNU Hardware capability information
  308  * word[0]: Number of entries
  309  * word[1]: Bitmask of enabled entries
  310  * Followed by a byte id, and a NUL terminated string per entry
  311  */
  312 #define NT_GNU_HWCAP        2
  313 
  314 /*
  315  * GNU Build ID generated by ld
  316  * 160 bit SHA1 [default]
  317  * 128 bit md5 or uuid
  318  */
  319 #define NT_GNU_BUILD_ID     3
  320 
  321 /*
  322  * NetBSD-specific note type: PaX.
  323  * There should be 1 NOTE per executable.
  324  * name: PaX\0
  325  * namesz: 4
  326  * desc:
  327  *  word[0]: capability bitmask
  328  * descsz: 4
  329  */
  330 #define NT_NETBSD_PAX       3
  331 #define NT_NETBSD_PAX_MPROTECT      0x01    /* Force enable Mprotect */
  332 #define NT_NETBSD_PAX_NOMPROTECT    0x02    /* Force disable Mprotect */
  333 #define NT_NETBSD_PAX_GUARD     0x04    /* Force enable Segvguard */
  334 #define NT_NETBSD_PAX_NOGUARD       0x08    /* Force disable Servguard */
  335 #define NT_NETBSD_PAX_ASLR      0x10    /* Force enable ASLR */
  336 #define NT_NETBSD_PAX_NOASLR        0x20    /* Force disable ASLR */
  337 
  338 /*
  339  * NetBSD-specific note type: MACHINE_ARCH.
  340  * There should be 1 NOTE per executable.
  341  * name:    NetBSD\0
  342  * namesz:  7
  343  * desc:    string
  344  * descsz:  variable
  345  */
  346 #define NT_NETBSD_MARCH     5
  347 
  348 /*
  349  * NetBSD-specific note type: COMPILER MODEL.
  350  * There should be 1 NOTE per executable.
  351  * name:    NetBSD\0
  352  * namesz:  7
  353  * desc:    string
  354  * descsz:  variable
  355  */
  356 #define NT_NETBSD_CMODEL    6
  357 
  358 /*
  359  * Golang-specific note type
  360  * name: Go\0\0
  361  * namesz: 4
  362  * desc: base-64 build id.
  363  * descsz: < 128
  364  */
  365 #define NT_GO_BUILD_ID  4
  366 
  367 /*
  368  * FreeBSD specific notes
  369  */
  370 #define NT_FREEBSD_PROCSTAT_AUXV    16
  371 
  372 #if !defined(ELFSIZE) && defined(ARCH_ELFSIZE)
  373 #define ELFSIZE ARCH_ELFSIZE
  374 #endif
  375 /* SunOS 5.x hardware/software capabilities */
  376 typedef struct {
  377     Elf32_Word  c_tag;
  378     union {
  379         Elf32_Word  c_val;
  380         Elf32_Addr  c_ptr;
  381     } c_un;
  382 } Elf32_Cap;
  383 
  384 typedef struct {
  385     Elf64_Xword c_tag;
  386     union {
  387         Elf64_Xword c_val;
  388         Elf64_Addr  c_ptr;
  389     } c_un;
  390 } Elf64_Cap;
  391 
  392 /* SunOS 5.x hardware/software capability tags */
  393 #define CA_SUNW_NULL    0
  394 #define CA_SUNW_HW_1    1
  395 #define CA_SUNW_SF_1    2
  396 
  397 /* SunOS 5.x software capabilities */
  398 #define SF1_SUNW_FPKNWN 0x01
  399 #define SF1_SUNW_FPUSED 0x02
  400 #define SF1_SUNW_MASK   0x03
  401 
  402 /* SunOS 5.x hardware capabilities: sparc */
  403 #define AV_SPARC_MUL32      0x0001
  404 #define AV_SPARC_DIV32      0x0002
  405 #define AV_SPARC_FSMULD     0x0004
  406 #define AV_SPARC_V8PLUS     0x0008
  407 #define AV_SPARC_POPC       0x0010
  408 #define AV_SPARC_VIS        0x0020
  409 #define AV_SPARC_VIS2       0x0040
  410 #define AV_SPARC_ASI_BLK_INIT   0x0080
  411 #define AV_SPARC_FMAF       0x0100
  412 #define AV_SPARC_FJFMAU     0x4000
  413 #define AV_SPARC_IMA        0x8000
  414 
  415 /* SunOS 5.x hardware capabilities: 386 */
  416 #define AV_386_FPU      0x00000001
  417 #define AV_386_TSC      0x00000002
  418 #define AV_386_CX8      0x00000004
  419 #define AV_386_SEP      0x00000008
  420 #define AV_386_AMD_SYSC     0x00000010
  421 #define AV_386_CMOV     0x00000020
  422 #define AV_386_MMX      0x00000040
  423 #define AV_386_AMD_MMX      0x00000080
  424 #define AV_386_AMD_3DNow    0x00000100
  425 #define AV_386_AMD_3DNowx   0x00000200
  426 #define AV_386_FXSR     0x00000400
  427 #define AV_386_SSE      0x00000800
  428 #define AV_386_SSE2     0x00001000
  429 #define AV_386_PAUSE        0x00002000
  430 #define AV_386_SSE3     0x00004000
  431 #define AV_386_MON      0x00008000
  432 #define AV_386_CX16     0x00010000
  433 #define AV_386_AHF      0x00020000
  434 #define AV_386_TSCP     0x00040000
  435 #define AV_386_AMD_SSE4A    0x00080000
  436 #define AV_386_POPCNT       0x00100000
  437 #define AV_386_AMD_LZCNT    0x00200000
  438 #define AV_386_SSSE3        0x00400000
  439 #define AV_386_SSE4_1       0x00800000
  440 #define AV_386_SSE4_2       0x01000000
  441 
  442 /*
  443  * Dynamic Section structure array
  444  */
  445 typedef struct {
  446     Elf32_Word      d_tag;  /* entry tag value */
  447     union {
  448         Elf32_Addr  d_ptr;
  449         Elf32_Word  d_val;
  450     } d_un;
  451 } Elf32_Dyn;
  452 
  453 typedef struct {
  454     Elf64_Xword     d_tag;  /* entry tag value */
  455     union {
  456         Elf64_Addr  d_ptr;
  457         Elf64_Xword d_val;
  458     } d_un;
  459 } Elf64_Dyn;
  460 
  461 /* d_tag */
  462 #define DT_NULL     0   /* Marks end of dynamic array */
  463 #define DT_NEEDED   1   /* Name of needed library (DT_STRTAB offset) */
  464 #define DT_PLTRELSZ 2   /* Size, in bytes, of relocations in PLT */
  465 #define DT_PLTGOT   3   /* Address of PLT and/or GOT */
  466 #define DT_HASH     4   /* Address of symbol hash table */
  467 #define DT_STRTAB   5   /* Address of string table */
  468 #define DT_SYMTAB   6   /* Address of symbol table */
  469 #define DT_RELA     7   /* Address of Rela relocation table */
  470 #define DT_RELASZ   8   /* Size, in bytes, of DT_RELA table */
  471 #define DT_RELAENT  9   /* Size, in bytes, of one DT_RELA entry */
  472 #define DT_STRSZ    10  /* Size, in bytes, of DT_STRTAB table */
  473 #define DT_SYMENT   11  /* Size, in bytes, of one DT_SYMTAB entry */
  474 #define DT_INIT     12  /* Address of initialization function */
  475 #define DT_FINI     13  /* Address of termination function */
  476 #define DT_SONAME   14  /* Shared object name (DT_STRTAB offset) */
  477 #define DT_RPATH    15  /* Library search path (DT_STRTAB offset) */
  478 #define DT_SYMBOLIC 16  /* Start symbol search within local object */
  479 #define DT_REL      17  /* Address of Rel relocation table */
  480 #define DT_RELSZ    18  /* Size, in bytes, of DT_REL table */
  481 #define DT_RELENT   19  /* Size, in bytes, of one DT_REL entry */
  482 #define DT_PLTREL   20  /* Type of PLT relocation entries */
  483 #define DT_DEBUG    21  /* Used for debugging; unspecified */
  484 #define DT_TEXTREL  22  /* Relocations might modify non-writable seg */
  485 #define DT_JMPREL   23  /* Address of relocations associated with PLT */
  486 #define DT_BIND_NOW 24  /* Process all relocations at load-time */
  487 #define DT_INIT_ARRAY   25  /* Address of initialization function array */
  488 #define DT_FINI_ARRAY   26  /* Size, in bytes, of DT_INIT_ARRAY array */
  489 #define DT_INIT_ARRAYSZ 27  /* Address of termination function array */
  490 #define DT_FINI_ARRAYSZ 28  /* Size, in bytes, of DT_FINI_ARRAY array*/
  491 #define DT_RUNPATH  29  /* overrides DT_RPATH */
  492 #define DT_FLAGS    30  /* Encodes ORIGIN, SYMBOLIC, TEXTREL, BIND_NOW, STATIC_TLS */
  493 #define DT_ENCODING 31  /* ??? */
  494 #define DT_PREINIT_ARRAY 32 /* Address of pre-init function array */
  495 #define DT_PREINIT_ARRAYSZ 33   /* Size, in bytes, of DT_PREINIT_ARRAY array */
  496 #define DT_NUM      34
  497 
  498 #define DT_LOOS     0x60000000  /* Operating system specific range */
  499 #define DT_VERSYM   0x6ffffff0  /* Symbol versions */
  500 #define DT_FLAGS_1  0x6ffffffb  /* ELF dynamic flags */
  501 #define DT_VERDEF   0x6ffffffc  /* Versions defined by file */
  502 #define DT_VERDEFNUM    0x6ffffffd  /* Number of versions defined by file */
  503 #define DT_VERNEED  0x6ffffffe  /* Versions needed by file */
  504 #define DT_VERNEEDNUM   0x6fffffff  /* Number of versions needed by file */
  505 #define DT_HIOS     0x6fffffff
  506 #define DT_LOPROC   0x70000000  /* Processor-specific range */
  507 #define DT_HIPROC   0x7fffffff
  508 
  509 /* Flag values for DT_FLAGS */
  510 #define DF_ORIGIN   0x00000001  /* uses $ORIGIN */
  511 #define DF_SYMBOLIC 0x00000002  /* */
  512 #define DF_TEXTREL  0x00000004  /* */
  513 #define DF_BIND_NOW 0x00000008  /* */
  514 #define DF_STATIC_TLS   0x00000010  /* */
  515 
  516 /* Flag values for DT_FLAGS_1 */
  517 #define DF_1_NOW    0x00000001  /* Same as DF_BIND_NOW */
  518 #define DF_1_GLOBAL 0x00000002  /* Unused */
  519 #define DF_1_GROUP  0x00000004  /* Is member of group */
  520 #define DF_1_NODELETE   0x00000008  /* Cannot be deleted from process */
  521 #define DF_1_LOADFLTR   0x00000010  /* Immediate loading of filters */
  522 #define DF_1_INITFIRST  0x00000020  /* init/fini takes priority */
  523 #define DF_1_NOOPEN 0x00000040  /* Do not allow loading on dlopen() */
  524 #define DF_1_ORIGIN 0x00000080  /* Require $ORIGIN processing */
  525 #define DF_1_DIRECT 0x00000100  /* Enable direct bindings */
  526 #define DF_1_INTERPOSE  0x00000400  /* Is an interposer */
  527 #define DF_1_NODEFLIB   0x00000800  /* Ignore default library search path */
  528 #define DF_1_NODUMP 0x00001000  /* Cannot be dumped with dldump(3C) */
  529 #define DF_1_CONFALT    0x00002000  /* Configuration alternative */
  530 #define DF_1_ENDFILTEE  0x00004000  /* Filtee ends filter's search */
  531 #define DF_1_DISPRELDNE 0x00008000  /* Did displacement relocation */
  532 #define DF_1_DISPRELPND 0x00010000  /* Pending displacement relocation */
  533 #define DF_1_NODIRECT   0x00020000  /* Has non-direct bindings */
  534 #define DF_1_IGNMULDEF  0x00040000  /* Used internally */
  535 #define DF_1_NOKSYMS    0x00080000  /* Used internally */
  536 #define DF_1_NOHDR  0x00100000  /* Used internally */
  537 #define DF_1_EDITED 0x00200000  /* Has been modified since build */
  538 #define DF_1_NORELOC    0x00400000  /* Used internally */
  539 #define DF_1_SYMINTPOSE 0x00800000  /* Has individual symbol interposers */
  540 #define DF_1_GLOBAUDIT  0x01000000  /* Require global auditing */
  541 #define DF_1_SINGLETON  0x02000000  /* Has singleton symbols */
  542 #define DF_1_STUB   0x04000000  /* Stub */
  543 #define DF_1_PIE    0x08000000  /* Position Independent Executable */
  544 
  545 #endif