]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - include/elf/common.h
Update year range in copyright notice of binutils files
[thirdparty/binutils-gdb.git] / include / elf / common.h
index d48c32c87885c2a2dc143e00bac71cda12f9500d..e7d55ae07825dab8adbbda044e7c89e469052427 100644 (file)
@@ -1,7 +1,5 @@
 /* ELF support for BFD.
-   Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-   2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-   Free Software Foundation, Inc.
+   Copyright (C) 1991-2021 Free Software Foundation, Inc.
 
    Written by Fred Fish @ Cygnus Support, from information published
    in "UNIX System V Release 4, Programmers Guide: ANSI C and
@@ -62,8 +60,8 @@
 #define ELFOSABI_NONE        0 /* UNIX System V ABI */
 #define ELFOSABI_HPUX        1 /* HP-UX operating system */
 #define ELFOSABI_NETBSD              2 /* NetBSD */
-#define ELFOSABI_LINUX       3 /* GNU/Linux */
-#define ELFOSABI_HURD        4 /* GNU/Hurd */
+#define ELFOSABI_GNU         3 /* GNU */
+#define ELFOSABI_LINUX       3 /* Alias for ELFOSABI_GNU */
 #define ELFOSABI_SOLARIS      6        /* Solaris */
 #define ELFOSABI_AIX         7 /* AIX */
 #define ELFOSABI_IRIX        8 /* IRIX */
 #define ELFOSABI_NSK        14 /* Hewlett-Packard Non-Stop Kernel */
 #define ELFOSABI_AROS       15 /* AROS */
 #define ELFOSABI_FENIXOS     16 /* FenixOS */
+#define ELFOSABI_CLOUDABI    17 /* Nuxi CloudABI */
+#define ELFOSABI_OPENVOS     18 /* Stratus Technologies OpenVOS */
+
 #define ELFOSABI_C6000_ELFABI 64 /* Bare-metal TMS320C6000 */
 #define ELFOSABI_C6000_LINUX 65 /* Linux TMS320C6000 */
+#define ELFOSABI_ARM_FDPIC   65 /* ARM FDPIC */
 #define ELFOSABI_ARM        97 /* ARM */
 #define ELFOSABI_STANDALONE 255        /* Standalone (embedded) application */
 
@@ -89,8 +91,9 @@
 
 #define ET_NONE                0       /* No file type */
 #define ET_REL         1       /* Relocatable file */
-#define ET_EXEC                2       /* Executable file */
-#define ET_DYN         3       /* Shared object file */
+#define ET_EXEC                2       /* Position-dependent executable file */
+#define ET_DYN         3       /* Position-independent executable or
+                                  shared object file */
 #define ET_CORE                4       /* Core file */
 #define ET_LOOS                0xFE00  /* Operating system-specific */
 #define ET_HIOS                0xFEFF  /* Operating system-specific */
 #define EM_386           3     /* Intel 80386 */
 #define EM_68K           4     /* Motorola m68k family */
 #define EM_88K           5     /* Motorola m88k family */
-#define EM_486           6     /* Intel 80486 *//* Reserved for future use */
+#define EM_IAMCU         6     /* Intel MCU */
 #define EM_860           7     /* Intel 80860 */
 #define EM_MIPS                  8     /* MIPS R3000 (officially, big-endian only) */
 #define EM_S370                  9     /* IBM System/370 */
-#define EM_MIPS_RS3_LE  10     /* MIPS R3000 little-endian (Oct 4 1999 Draft) Deprecated */
+#define EM_MIPS_RS3_LE  10     /* MIPS R3000 little-endian (Oct 4 1999 Draft).  Deprecated.  */
+#define EM_OLD_SPARCV9  11     /* Old version of Sparc v9, from before the ABI.  Deprecated.  */
 #define EM_res011       11     /* Reserved */
 #define EM_res012       12     /* Reserved */
 #define EM_res013       13     /* Reserved */
 #define EM_res014       14     /* Reserved */
 #define EM_PARISC       15     /* HPPA */
 #define EM_res016       16     /* Reserved */
+#define EM_PPC_OLD      17     /* Old version of PowerPC.  Deprecated.  */
 #define EM_VPP550       17     /* Fujitsu VPP500 */
 #define EM_SPARC32PLUS  18     /* Sun's "v8plus" */
 #define EM_960          19     /* Intel 80960 */
 #define EM_MMA          54     /* Fujitsu Multimedia Accelerator */
 #define EM_PCP          55     /* Siemens PCP */
 #define EM_NCPU                 56     /* Sony nCPU embedded RISC processor */
-#define EM_NDR1                 57     /* Denso NDR1 microprocesspr */
+#define EM_NDR1                 57     /* Denso NDR1 microprocessor */
 #define EM_STARCORE     58     /* Motorola Star*Core processor */
 #define EM_ME16                 59     /* Toyota ME16 processor */
 #define EM_ST100        60     /* STMicroelectronics ST100 processor */
 #define EM_MN10300      89     /* Matsushita MN10300 */
 #define EM_MN10200      90     /* Matsushita MN10200 */
 #define EM_PJ           91     /* picoJava */
-#define EM_OPENRISC     92     /* OpenRISC 32-bit embedded processor */
-#define EM_ARC_A5       93     /* ARC Cores Tangent-A5 */
+#define EM_OR1K                 92     /* OpenRISC 1000 32-bit embedded processor */
+#define EM_ARC_COMPACT  93     /* ARC International ARCompact processor */
 #define EM_XTENSA       94     /* Tensilica Xtensa Architecture */
+#define EM_SCORE_OLD    95     /* Old Sunplus S+core7 backend magic number. Written in the absence of an ABI.  */
 #define EM_VIDEOCORE    95     /* Alphamosaic VideoCore processor */
 #define EM_TMM_GPP      96     /* Thompson Multimedia General Purpose Processor */
 #define EM_NS32K        97     /* National Semiconductor 32000 series */
 #define EM_TPC          98     /* Tenor Network TPC processor */
+#define EM_PJ_OLD       99     /* Old value for picoJava.  Deprecated.  */
 #define EM_SNP1K        99     /* Trebia SNP 1000 processor */
 #define EM_ST200       100     /* STMicroelectronics ST200 microcontroller */
 #define EM_IP2K                101     /* Ubicom IP2022 micro controller */
 #define EM_DXP         112     /* Icera Semiconductor Inc. Deep Execution Processor */
 #define EM_ALTERA_NIOS2        113     /* Altera Nios II soft-core processor */
 #define EM_CRX         114     /* National Semiconductor CRX */
+#define EM_CR16_OLD    115     /* Old, value for National Semiconductor CompactRISC.  Deprecated.  */
 #define EM_XGATE       115     /* Motorola XGATE embedded processor */
 #define EM_C166                116     /* Infineon C16x/XC16x processor */
 #define EM_M16C                117     /* Renesas M16C series microprocessors */
 #define EM_TI_C2000    141     /* Texas Instruments TMS320C2000 DSP family */
 #define EM_TI_C5500    142     /* Texas Instruments TMS320C55x DSP family */
 #define EM_res143      143     /* Reserved */
-#define EM_res144      144     /* Reserved */
+#define EM_TI_PRU      144     /* Texas Instruments Programmable Realtime Unit */
 #define EM_res145      145     /* Reserved */
 #define EM_res146      146     /* Reserved */
 #define EM_res147      147     /* Reserved */
 #define EM_MANIK       171     /* M2000 Reconfigurable RISC Microprocessor */
 #define EM_CRAYNV2     172     /* Cray Inc. NV2 vector architecture */
 #define EM_RX          173     /* Renesas RX family */
-#define EM_METAG       174     /* Imagination Technologies META processor architecture */
+#define EM_METAG       174     /* Imagination Technologies Meta processor architecture */
 #define EM_MCST_ELBRUS 175     /* MCST Elbrus general purpose hardware architecture */
 #define EM_ECOG16      176     /* Cyan Technology eCOG16 family */
 #define EM_CR16                177     /* National Semiconductor CompactRISC 16-bit processor */
 #define EM_ETPU                178     /* Freescale Extended Time Processing Unit */
 #define EM_SLE9X       179     /* Infineon Technologies SLE9X core */
 #define EM_L1OM                180     /* Intel L1OM */
-#define EM_INTEL181    181     /* Reserved by Intel */
+#define EM_K1OM                181     /* Intel K1OM */
 #define EM_INTEL182    182     /* Reserved by Intel */
-#define EM_res183      183     /* Reserved by ARM */
-#define EM_res184      184     /* Reserved by ARM */
+#define EM_AARCH64     183     /* ARM 64-bit architecture */
+#define EM_ARM184      184     /* Reserved by ARM */
 #define EM_AVR32       185     /* Atmel Corporation 32-bit microprocessor family */
-#define EM_STM8        186     /* STMicroeletronics STM8 8-bit microcontroller */
+#define EM_STM8                186     /* STMicroeletronics STM8 8-bit microcontroller */
 #define EM_TILE64      187     /* Tilera TILE64 multicore architecture family */
 #define EM_TILEPRO     188     /* Tilera TILEPro multicore architecture family */
 #define EM_MICROBLAZE  189     /* Xilinx MicroBlaze 32-bit RISC soft processor core */
 #define EM_CUDA                190     /* NVIDIA CUDA architecture */
+#define EM_TILEGX      191     /* Tilera TILE-Gx multicore architecture family */
+#define EM_CLOUDSHIELD         192     /* CloudShield architecture family */
+#define EM_COREA_1ST   193     /* KIPO-KAIST Core-A 1st generation processor family */
+#define EM_COREA_2ND   194     /* KIPO-KAIST Core-A 2nd generation processor family */
+#define EM_ARC_COMPACT2 195    /* Synopsys ARCompact V2 */
+#define EM_OPEN8       196     /* Open8 8-bit RISC soft processor core */
+#define EM_RL78                197     /* Renesas RL78 family.  */
+#define EM_VIDEOCORE5  198     /* Broadcom VideoCore V processor */
+#define EM_78K0R       199     /* Renesas 78K0R.  */
+#define EM_56800EX     200     /* Freescale 56800EX Digital Signal Controller (DSC) */
+#define EM_BA1                 201     /* Beyond BA1 CPU architecture */
+#define EM_BA2                 202     /* Beyond BA2 CPU architecture */
+#define EM_XCORE       203     /* XMOS xCORE processor family */
+#define EM_MCHP_PIC    204     /* Microchip 8-bit PIC(r) family */
+#define EM_INTEL205    205     /* Reserved by Intel */
+#define EM_INTEL206    206     /* Reserved by Intel */
+#define EM_INTEL207    207     /* Reserved by Intel */
+#define EM_INTEL208    208     /* Reserved by Intel */
+#define EM_INTEL209    209     /* Reserved by Intel */
+#define EM_KM32        210     /* KM211 KM32 32-bit processor */
+#define EM_KMX32       211     /* KM211 KMX32 32-bit processor */
+#define EM_KMX16       212     /* KM211 KMX16 16-bit processor */
+#define EM_KMX8        213     /* KM211 KMX8 8-bit processor */
+#define EM_KVARC       214     /* KM211 KVARC processor */
+#define EM_CDP                 215     /* Paneve CDP architecture family */
+#define EM_COGE        216     /* Cognitive Smart Memory Processor */
+#define EM_COOL        217     /* Bluechip Systems CoolEngine */
+#define EM_NORC        218     /* Nanoradio Optimized RISC */
+#define EM_CSR_KALIMBA         219     /* CSR Kalimba architecture family */
+#define EM_Z80                 220     /* Zilog Z80 */
+#define EM_VISIUM      221     /* Controls and Data Services VISIUMcore processor */
+#define EM_FT32         222     /* FTDI Chip FT32 high performance 32-bit RISC architecture */
+#define EM_MOXIE        223     /* Moxie processor family */
+#define EM_AMDGPU      224     /* AMD GPU architecture */
+#define EM_RISCV       243     /* RISC-V */
+#define EM_LANAI       244     /* Lanai 32-bit processor.  */
+#define EM_CEVA                245     /* CEVA Processor Architecture Family */
+#define EM_CEVA_X2     246     /* CEVA X2 Processor Family */
+#define EM_BPF         247     /* Linux BPF – in-kernel virtual machine.  */
+#define EM_GRAPHCORE_IPU 248   /* Graphcore Intelligent Processing Unit */
+#define EM_IMG1                249     /* Imagination Technologies */
+#define EM_NFP         250     /* Netronome Flow Processor.  */
+#define EM_VE          251     /* NEC Vector Engine */
+#define EM_CSKY                252     /* C-SKY processor family.  */
+#define EM_ARC_COMPACT3_64 253 /* Synopsys ARCv2.3 64-bit */
+#define EM_MCS6502     254     /* MOS Technology MCS 6502 processor */
+#define EM_ARC_COMPACT3        255     /* Synopsys ARCv2.3 32-bit */
+#define EM_KVX         256     /* Kalray VLIW core of the MPPA processor family */
+#define EM_65816       257     /* WDC 65816/65C816 */
+#define EM_LOONGARCH   258     /* Loongson Loongarch */
+#define EM_KF32                259     /* ChipON KungFu32 */
 
 /* If it is necessary to assign new unofficial EM_* values, please pick large
    random numbers (0x8523, 0xa7f2, etc.) to minimize the chances of collision
    unofficial e_machine number should eventually ask registry@sco.com for
    an officially blessed number to be added to the list above. */
 
-/* Old version of Sparc v9, from before the ABI;
-   This should be removed shortly.  */
-#define EM_OLD_SPARCV9         11
-
-/* Old version of PowerPC, this should be removed shortly. */
-#define EM_PPC_OLD             17
-
-/* picoJava */
-#define EM_PJ_OLD              99
-
-/* Old, unofficial value for National Semiconductor CompactRISC - CR16 */
-#define EM_CR16_OLD            115
-
 /* AVR magic number.  Written in the absense of an ABI.  */
 #define EM_AVR_OLD             0x1057
 
 /* FR30 magic number - no EABI available.  */
 #define EM_CYGNUS_FR30         0x3330
 
-/* OpenRISC magic number.  Written in the absense of an ABI.  */
-#define EM_OPENRISC_OLD                0x3426
+/* Unofficial value for Web Assembly binaries, as used by LLVM.  */
+#define EM_WEBASSEMBLY         0x4157
+
+/* Freescale S12Z.   The Freescale toolchain generates elf files with this value.  */
+#define EM_S12Z               0x4DEF
 
 /* DLX magic number.  Written in the absense of an ABI.  */
 #define EM_DLX                 0x5aa5
 /* Ubicom IP2xxx;   Written in the absense of an ABI.  */
 #define EM_IP2K_OLD            0x8217
 
-/* (Deprecated) Temporary number for the OpenRISC processor.  */
-#define EM_OR32                        0x8472
-
 /* Cygnus PowerPC ELF backend.  Written in the absence of an ABI.  */
 #define EM_CYGNUS_POWERPC      0x9025
 
 
 #define EM_CYGNUS_MEP          0xF00D  /* Toshiba MeP */
 
-#define EM_MOXIE                0xFEED  /* Moxie */
-
-/* Old Sunplus S+core7 backend magic number. Written in the absence of an ABI.  */
-#define EM_SCORE_OLD            95
+/* Old, unofficial value for Moxie.  */
+#define EM_MOXIE_OLD            0xFEED
 
 #define EM_MICROBLAZE_OLD      0xbaab  /* Old MicroBlaze */
 
+#define EM_ADAPTEVA_EPIPHANY   0x1223  /* Adapteva's Epiphany architecture.  */
+
+/* Old constant that might be in use by some software. */
+#define EM_OPENRISC            EM_OR1K
+
+/* C-SKY historically used 39, the same value as MCORE, from which the
+   architecture was derived.  */
+#define EM_CSKY_OLD            EM_MCORE
+
 /* See the above comment before you add a new EM_* value here.  */
 
 /* Values for e_version.  */
 #define PT_SUNW_EH_FRAME PT_GNU_EH_FRAME      /* Solaris uses the same value */
 #define PT_GNU_STACK   (PT_LOOS + 0x474e551) /* Stack flags */
 #define PT_GNU_RELRO   (PT_LOOS + 0x474e552) /* Read-only after relocation */
+#define PT_GNU_PROPERTY        (PT_LOOS + 0x474e553) /* GNU property */
+
+/* OpenBSD segment types.  */
+#define PT_OPENBSD_RANDOMIZE (PT_LOOS + 0x5a3dbe6)  /* Fill with random data.  */
+#define PT_OPENBSD_WXNEEDED  (PT_LOOS + 0x5a3dbe7)  /* Program does W^X violations.  */
+#define PT_OPENBSD_BOOTDATA  (PT_LOOS + 0x5a41be6)  /* Section for boot arguments.  */
+
+/* Mbind segments */
+#define PT_GNU_MBIND_NUM 4096
+#define PT_GNU_MBIND_LO (PT_LOOS + 0x474e555)
+#define PT_GNU_MBIND_HI (PT_GNU_MBIND_LO + PT_GNU_MBIND_NUM - 1)
 
 /* Program segment permissions, in program header p_flags field.  */
 
 #define SHT_FINI_ARRAY   15            /* Array of ptrs to finish functions */
 #define SHT_PREINIT_ARRAY 16           /* Array of ptrs to pre-init funcs */
 #define SHT_GROUP        17            /* Section contains a section group */
-#define SHT_SYMTAB_SHNDX  18           /* Indicies for SHN_XINDEX entries */
+#define SHT_SYMTAB_SHNDX  18           /* Indices for SHN_XINDEX entries */
 
 #define SHT_LOOS       0x60000000      /* First of OS specific semantics */
 #define SHT_HIOS       0x6fffffff      /* Last of OS specific semantics */
 #define SHF_OS_NONCONFORMING (1 << 8)  /* OS specific processing required */
 #define SHF_GROUP      (1 << 9)        /* Member of a section group */
 #define SHF_TLS                (1 << 10)       /* Thread local storage section */
+#define SHF_COMPRESSED (1 << 11)       /* Section with compressed data */
 
 /* #define SHF_MASKOS  0x0F000000    *//* OS-specific semantics */
 #define SHF_MASKOS     0x0FF00000      /* New value, Oct 4, 1999 Draft */
+#define SHF_GNU_RETAIN       (1 << 21) /* Section should not be garbage collected by the linker.  */
 #define SHF_MASKPROC   0xF0000000      /* Processor-specific semantics */
 
 /* This used to be implemented as a processor specific section flag.
                                           are not to be further
                                           relocated.  */
 
+#define SHF_GNU_MBIND  0x01000000      /* Mbind section.  */
+
+/* Compression types.  */
+#define ELFCOMPRESS_ZLIB   1           /* Compressed with zlib.  */
+#define ELFCOMPRESS_LOOS   0x60000000  /* OS-specific semantics, lo */
+#define ELFCOMPRESS_HIOS   0x6FFFFFFF  /* OS-specific semantics, hi */
+#define ELFCOMPRESS_LOPROC 0x70000000  /* Processor-specific semantics, lo */
+#define ELFCOMPRESS_HIPROC 0x7FFFFFFF  /* Processor-specific semantics, hi */
+
 /* Values of note segment descriptor types for core files.  */
 
 #define NT_PRSTATUS    1               /* Contains copy of prstatus struct */
                                        /*   note name must be "LINUX".  */
 #define NT_PPC_VSX     0x102           /* PowerPC VSX registers */
                                        /*   note name must be "LINUX".  */
+#define NT_PPC_TAR     0x103           /* PowerPC Target Address Register */
+                                       /*   note name must be "LINUX".  */
+#define NT_PPC_PPR     0x104           /* PowerPC Program Priority Register */
+                                       /*   note name must be "LINUX".  */
+#define NT_PPC_DSCR    0x105           /* PowerPC Data Stream Control Register */
+                                       /*   note name must be "LINUX".  */
+#define NT_PPC_EBB     0x106           /* PowerPC Event Based Branch Registers */
+                                       /*   note name must be "LINUX".  */
+#define NT_PPC_PMU     0x107           /* PowerPC Performance Monitor Registers */
+                                       /*   note name must be "LINUX".  */
+#define NT_PPC_TM_CGPR 0x108           /* PowerPC TM checkpointed GPR Registers */
+                                       /*   note name must be "LINUX".  */
+#define NT_PPC_TM_CFPR 0x109           /* PowerPC TM checkpointed FPR Registers */
+                                       /*   note name must be "LINUX".  */
+#define NT_PPC_TM_CVMX 0x10a           /* PowerPC TM checkpointed VMX Registers */
+                                       /*   note name must be "LINUX".  */
+#define NT_PPC_TM_CVSX 0x10b           /* PowerPC TM checkpointed VSX Registers */
+                                       /*   note name must be "LINUX".  */
+#define NT_PPC_TM_SPR  0x10c           /* PowerPC TM Special Purpose Registers */
+                                       /*   note name must be "LINUX".  */
+#define NT_PPC_TM_CTAR 0x10d           /* PowerPC TM checkpointed TAR */
+                                       /*   note name must be "LINUX".  */
+#define NT_PPC_TM_CPPR 0x10e           /* PowerPC TM checkpointed PPR */
+                                       /*   note name must be "LINUX".  */
+#define NT_PPC_TM_CDSCR        0x10f           /* PowerPC TM checkpointed Data SCR */
+                                       /*   note name must be "LINUX".  */
+#define NT_386_TLS     0x200           /* x86 TLS information */
+                                       /*   note name must be "LINUX".  */
+#define NT_386_IOPERM  0x201           /* x86 io permissions */
+                                       /*   note name must be "LINUX".  */
 #define NT_X86_XSTATE  0x202           /* x86 XSAVE extended state */
                                        /*   note name must be "LINUX".  */
+#define NT_X86_CET     0x203           /* x86 CET state.  */
+                                       /*   note name must be "LINUX".  */
 #define NT_S390_HIGH_GPRS 0x300                /* S/390 upper halves of GPRs  */
                                        /*   note name must be "LINUX".  */
 #define NT_S390_TIMER  0x301           /* S390 timer */
                                        /*   note name must be "LINUX".  */
 #define NT_S390_PREFIX 0x305           /* S390 prefix register */
                                        /*   note name must be "LINUX".  */
+#define NT_S390_LAST_BREAK      0x306   /* S390 breaking event address */
+                                       /*   note name must be "LINUX".  */
+#define NT_S390_SYSTEM_CALL     0x307   /* S390 system call restart data */
+                                       /*   note name must be "LINUX".  */
+#define NT_S390_TDB    0x308           /* S390 transaction diagnostic block */
+                                       /*   note name must be "LINUX".  */
+#define NT_S390_VXRS_LOW       0x309   /* S390 vector registers 0-15 upper half */
+                                       /*   note name must be "LINUX".  */
+#define NT_S390_VXRS_HIGH      0x30a   /* S390 vector registers 16-31 */
+                                       /*   note name must be "LINUX".  */
+#define NT_S390_GS_CB  0x30b           /* s390 guarded storage registers */
+                                       /*   note name must be "LINUX".  */
+#define NT_S390_GS_BC  0x30c           /* s390 guarded storage broadcast control block */
+                                       /*   note name must be "LINUX".  */
+#define NT_ARM_VFP     0x400           /* ARM VFP registers */
+/* The following definitions should really use NT_AARCH_..., but defined
+   this way for compatibility with Linux.  */
+#define NT_ARM_TLS     0x401           /* AArch TLS registers */
+                                       /*   note name must be "LINUX".  */
+#define NT_ARM_HW_BREAK        0x402           /* AArch hardware breakpoint registers */
+                                       /*   note name must be "LINUX".  */
+#define NT_ARM_HW_WATCH        0x403           /* AArch hardware watchpoint registers */
+                                       /*   note name must be "LINUX".  */
+#define NT_ARM_SVE     0x405           /* AArch SVE registers.  */
+                                       /*   note name must be "LINUX".  */
+#define NT_ARM_PAC_MASK        0x406           /* AArch pointer authentication code masks */
+                                       /*   note name must be "LINUX".  */
+#define NT_ARC_V2      0x600           /* ARC HS accumulator/extra registers.  */
+                                       /*   note name must be "LINUX".  */
+#define NT_SIGINFO     0x53494749      /* Fields of siginfo_t.  */
+#define NT_FILE                0x46494c45      /* Description of mapped files.  */
 
 /* Note segments for core files on dir-style procfs systems.  */
 
 /* Note segment for SystemTap probes.  */
 #define NT_STAPSDT     3
 
+/* Note segments for core files on FreeBSD systems.  Note name is
+   "FreeBSD".  */
+
+#define        NT_FREEBSD_THRMISC      7       /* Thread miscellaneous info. */
+#define        NT_FREEBSD_PROCSTAT_PROC        8       /* Procstat proc data. */
+#define        NT_FREEBSD_PROCSTAT_FILES       9       /* Procstat files data. */
+#define        NT_FREEBSD_PROCSTAT_VMMAP       10      /* Procstat vmmap data. */
+#define        NT_FREEBSD_PROCSTAT_GROUPS      11      /* Procstat groups data. */
+#define        NT_FREEBSD_PROCSTAT_UMASK       12      /* Procstat umask data. */
+#define        NT_FREEBSD_PROCSTAT_RLIMIT      13      /* Procstat rlimit data. */
+#define        NT_FREEBSD_PROCSTAT_OSREL       14      /* Procstat osreldate data. */
+#define        NT_FREEBSD_PROCSTAT_PSSTRINGS   15      /* Procstat ps_strings data. */
+#define        NT_FREEBSD_PROCSTAT_AUXV        16      /* Procstat auxv data. */
+#define        NT_FREEBSD_PTLWPINFO    17      /* Thread ptrace miscellaneous info. */
+
 /* Note segments for core files on NetBSD systems.  Note name
    must start with "NetBSD-CORE".  */
 
 #define NT_NETBSDCORE_PROCINFO 1       /* Has a struct procinfo */
+#define NT_NETBSDCORE_AUXV     2       /* Has auxv data */
+#define NT_NETBSDCORE_LWPSTATUS        24      /* Has LWPSTATUS data */
 #define NT_NETBSDCORE_FIRSTMACH        32      /* start of machdep note types */
 
 
 #define NT_GNU_HWCAP           2       /* Used by ld.so and kernel vDSO.  */
 #define NT_GNU_BUILD_ID                3       /* Generated by ld --build-id.  */
 #define NT_GNU_GOLD_VERSION    4       /* Generated by gold.  */
+#define NT_GNU_PROPERTY_TYPE_0  5      /* Generated by gcc.  */
+
+#define NT_GNU_BUILD_ATTRIBUTE_OPEN    0x100
+#define NT_GNU_BUILD_ATTRIBUTE_FUNC    0x101
+
+#define GNU_BUILD_ATTRIBUTE_TYPE_NUMERIC       '*'
+#define GNU_BUILD_ATTRIBUTE_TYPE_STRING                '$'
+#define GNU_BUILD_ATTRIBUTE_TYPE_BOOL_TRUE     '+'
+#define GNU_BUILD_ATTRIBUTE_TYPE_BOOL_FALSE    '!'
+
+#define GNU_BUILD_ATTRIBUTE_VERSION    1
+#define GNU_BUILD_ATTRIBUTE_STACK_PROT 2
+#define GNU_BUILD_ATTRIBUTE_RELRO      3
+#define GNU_BUILD_ATTRIBUTE_STACK_SIZE 4
+#define GNU_BUILD_ATTRIBUTE_TOOL       5
+#define GNU_BUILD_ATTRIBUTE_ABI                6
+#define GNU_BUILD_ATTRIBUTE_PIC                7
+#define GNU_BUILD_ATTRIBUTE_SHORT_ENUM 8
+
+#define NOTE_GNU_PROPERTY_SECTION_NAME ".note.gnu.property"
+#define GNU_BUILD_ATTRS_SECTION_NAME   ".gnu.build.attributes"
+
+/* Values used in GNU .note.gnu.property notes (NT_GNU_PROPERTY_TYPE_0).  */
+#define GNU_PROPERTY_STACK_SIZE                        1
+#define GNU_PROPERTY_NO_COPY_ON_PROTECTED      2
+
+/* Processor-specific semantics, lo */
+#define GNU_PROPERTY_LOPROC  0xc0000000
+/* Processor-specific semantics, hi */
+#define GNU_PROPERTY_HIPROC  0xdfffffff
+/* Application-specific semantics, lo */
+#define GNU_PROPERTY_LOUSER  0xe0000000
+/* Application-specific semantics, hi */
+#define GNU_PROPERTY_HIUSER  0xffffffff
+
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_USED     0xc0000000
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_NEEDED   0xc0000001
+
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_486      (1U << 0)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_586      (1U << 1)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_686      (1U << 2)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_SSE      (1U << 3)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_SSE2     (1U << 4)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_SSE3     (1U << 5)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_SSSE3    (1U << 6)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_SSE4_1   (1U << 7)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_SSE4_2   (1U << 8)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_AVX      (1U << 9)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_AVX2     (1U << 10)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_AVX512F  (1U << 11)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_AVX512CD (1U << 12)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_AVX512ER (1U << 13)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_AVX512PF (1U << 14)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_AVX512VL (1U << 15)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_AVX512DQ (1U << 16)
+#define GNU_PROPERTY_X86_COMPAT_ISA_1_AVX512BW (1U << 17)
+
+/* A 4-byte unsigned integer property: A bit is set if it is set in all
+   relocatable inputs.  */
+#define GNU_PROPERTY_X86_UINT32_AND_LO         0xc0000002
+#define GNU_PROPERTY_X86_UINT32_AND_HI         0xc0007fff
+
+/* A 4-byte unsigned integer property: A bit is set if it is set in any
+   relocatable inputs.  */
+#define GNU_PROPERTY_X86_UINT32_OR_LO          0xc0008000
+#define GNU_PROPERTY_X86_UINT32_OR_HI          0xc000ffff
+
+/* A 4-byte unsigned integer property: A bit is set if it is set in any
+   relocatable inputs and the property is present in all relocatable
+   inputs.  */
+#define GNU_PROPERTY_X86_UINT32_OR_AND_LO      0xc0010000
+#define GNU_PROPERTY_X86_UINT32_OR_AND_HI      0xc0017fff
+
+#define GNU_PROPERTY_X86_FEATURE_1_AND \
+  (GNU_PROPERTY_X86_UINT32_AND_LO + 0)
+
+#define GNU_PROPERTY_X86_ISA_1_NEEDED \
+  (GNU_PROPERTY_X86_UINT32_OR_LO + 2)
+#define GNU_PROPERTY_X86_FEATURE_2_NEEDED \
+  (GNU_PROPERTY_X86_UINT32_OR_LO + 1)
+
+#define GNU_PROPERTY_X86_ISA_1_USED \
+  (GNU_PROPERTY_X86_UINT32_OR_AND_LO + 2)
+#define GNU_PROPERTY_X86_FEATURE_2_USED \
+  (GNU_PROPERTY_X86_UINT32_OR_AND_LO + 1)
+
+/* GNU_PROPERTY_X86_ISA_1_BASELINE: CMOV, CX8 (cmpxchg8b), FPU (fld),
+   MMX, OSFXSR (fxsave), SCE (syscall), SSE and SSE2.  */
+#define GNU_PROPERTY_X86_ISA_1_BASELINE                (1U << 0)
+/* GNU_PROPERTY_X86_ISA_1_V2: GNU_PROPERTY_X86_ISA_1_BASELINE,
+   CMPXCHG16B (cmpxchg16b), LAHF-SAHF (lahf), POPCNT (popcnt), SSE3,
+   SSSE3, SSE4.1 and SSE4.2.  */
+#define GNU_PROPERTY_X86_ISA_1_V2              (1U << 1)
+/* GNU_PROPERTY_X86_ISA_1_V3: GNU_PROPERTY_X86_ISA_1_V2, AVX, AVX2, BMI1,
+   BMI2, F16C, FMA, LZCNT, MOVBE, XSAVE.  */
+#define GNU_PROPERTY_X86_ISA_1_V3              (1U << 2)
+/* GNU_PROPERTY_X86_ISA_1_V4: GNU_PROPERTY_X86_ISA_1_V3, AVX512F,
+   AVX512BW, AVX512CD, AVX512DQ and AVX512VL.  */
+#define GNU_PROPERTY_X86_ISA_1_V4              (1U << 3)
+
+#define GNU_PROPERTY_X86_FEATURE_1_IBT         (1U << 0)
+#define GNU_PROPERTY_X86_FEATURE_1_SHSTK       (1U << 1)
+#define GNU_PROPERTY_X86_FEATURE_1_LAM_U48     (1U << 2)
+#define GNU_PROPERTY_X86_FEATURE_1_LAM_U57     (1U << 3)
+
+#define GNU_PROPERTY_X86_FEATURE_2_X86         (1U << 0)
+#define GNU_PROPERTY_X86_FEATURE_2_X87         (1U << 1)
+#define GNU_PROPERTY_X86_FEATURE_2_MMX         (1U << 2)
+#define GNU_PROPERTY_X86_FEATURE_2_XMM         (1U << 3)
+#define GNU_PROPERTY_X86_FEATURE_2_YMM         (1U << 4)
+#define GNU_PROPERTY_X86_FEATURE_2_ZMM         (1U << 5)
+#define GNU_PROPERTY_X86_FEATURE_2_FXSR                (1U << 6)
+#define GNU_PROPERTY_X86_FEATURE_2_XSAVE       (1U << 7)
+#define GNU_PROPERTY_X86_FEATURE_2_XSAVEOPT    (1U << 8)
+#define GNU_PROPERTY_X86_FEATURE_2_XSAVEC      (1U << 9)
+#define GNU_PROPERTY_X86_FEATURE_2_TMM         (1U << 10)
+#define GNU_PROPERTY_X86_FEATURE_2_MASK                (1U << 11)
+
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_NEEDED \
+  (GNU_PROPERTY_X86_UINT32_OR_LO + 0)
+
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_USED \
+  (GNU_PROPERTY_X86_UINT32_OR_AND_LO + 0)
+
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_CMOV           (1U << 0)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE            (1U << 1)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE2           (1U << 2)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE3           (1U << 3)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSSE3          (1U << 4)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE4_1         (1U << 5)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_SSE4_2         (1U << 6)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX            (1U << 7)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX2           (1U << 8)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_FMA            (1U << 9)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512F                (1U << 10)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512CD       (1U << 11)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512ER       (1U << 12)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512PF       (1U << 13)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512VL       (1U << 14)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512DQ       (1U << 15)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512BW       (1U << 16)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_4FMAPS  (1U << 17)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_4VNNIW  (1U << 18)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_BITALG  (1U << 19)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_IFMA    (1U << 20)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_VBMI    (1U << 21)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_VBMI2   (1U << 22)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_VNNI    (1U << 23)
+#define GNU_PROPERTY_X86_COMPAT_2_ISA_1_AVX512_BF16    (1U << 24)
+
+/* AArch64 specific GNU PROPERTY.  */
+#define GNU_PROPERTY_AARCH64_FEATURE_1_AND     0xc0000000
+
+#define GNU_PROPERTY_AARCH64_FEATURE_1_BTI     (1U << 0)
+#define GNU_PROPERTY_AARCH64_FEATURE_1_PAC     (1U << 1)
 
 /* Values used in GNU .note.ABI-tag notes (NT_GNU_ABI_TAG).  */
 #define GNU_ABI_TAG_LINUX      0
 #define GNU_ABI_TAG_SOLARIS    2
 #define GNU_ABI_TAG_FREEBSD    3
 #define GNU_ABI_TAG_NETBSD     4
+#define GNU_ABI_TAG_SYLLABLE   5
+#define GNU_ABI_TAG_NACL       6
 
 /* Values for NetBSD .note.netbsd.ident notes.  Note name is "NetBSD".  */
 
 #define NT_NETBSD_IDENT                1
+#define NT_NETBSD_MARCH                5
 
 /* Values for OpenBSD .note.openbsd.ident notes.  Note name is "OpenBSD".  */
 
 
 #define ELF32_R_SYM(i)         ((i) >> 8)
 #define ELF32_R_TYPE(i)                ((i) & 0xff)
-#define ELF32_R_INFO(s,t)      (((s) << 8) + ((t) & 0xff))
+#define ELF32_R_INFO(s,t)      (((unsigned) (s) << 8) + ((t) & 0xff))
 
 #define ELF64_R_SYM(i)         ((i) >> 32)
 #define ELF64_R_TYPE(i)                ((i) & 0xffffffff)
 #define DT_ENCODING    32
 #define DT_PREINIT_ARRAY   32
 #define DT_PREINIT_ARRAYSZ 33
+#define DT_SYMTAB_SHNDX    34
 
 /* Note, the Oct 4, 1999 draft of the ELF ABI changed the values
    for DT_LOOS and DT_HIOS.  Some implementations however, use
    deliberate special case and we maintain it for backwards compatability.
  */
 #define DT_VALRNGLO    0x6ffffd00
+#define DT_GNU_FLAGS_1  0x6ffffdf4
 #define DT_GNU_PRELINKED 0x6ffffdf5
 #define DT_GNU_CONFLICTSZ 0x6ffffdf6
 #define DT_GNU_LIBLISTSZ 0x6ffffdf7
 #define DF_P1_LAZYLOAD 0x00000001
 #define DF_P1_GROUPPERM        0x00000002
 
+/* Flag value in the DT_GNU_FLAGS_1 /dynamic entry.  */
+#define DF_GNU_1_UNIQUE 0x00000001
+
 /* Flag value in in the DT_FLAGS_1 .dynamic entry.  */
 #define DF_1_NOW       0x00000001
 #define DF_1_GLOBAL    0x00000002
 #define DF_1_INTERPOSE 0x00000400
 #define DF_1_NODEFLIB  0x00000800
 #define DF_1_NODUMP    0x00001000
-#define DF_1_CONLFAT   0x00002000
+#define DF_1_CONFALT   0x00002000
+#define DF_1_ENDFILTEE 0x00004000
+#define        DF_1_DISPRELDNE 0x00008000
+#define        DF_1_DISPRELPND 0x00010000
+#define        DF_1_NODIRECT   0x00020000
+#define        DF_1_IGNMULDEF  0x00040000
+#define        DF_1_NOKSYMS    0x00080000
+#define        DF_1_NOHDR      0x00100000
+#define        DF_1_EDITED     0x00200000
+#define        DF_1_NORELOC    0x00400000
+#define        DF_1_SYMINTPOSE 0x00800000
+#define        DF_1_GLOBAUDIT  0x01000000
+#define        DF_1_SINGLETON  0x02000000
+#define        DF_1_STUB       0x04000000
+#define        DF_1_PIE        0x08000000
+#define        DF_1_KMOD       0x10000000
+#define        DF_1_WEAKFILTER 0x20000000
+#define        DF_1_NOCOMMON   0x40000000
 
 /* Flag values for the DT_FLAGS entry. */
 #define DF_ORIGIN      (1 << 0)
 /* Section Group Flags.         */
 
 #define GRP_COMDAT             0x1     /* A COMDAT group */
+#define GRP_MASKOS      0x0ff00000     /* Bits in this range reserved for OS specific use.  */
+#define GRP_MASKPROC    0xf0000000     /* Bits in this range reserved for processor use.  */
 
 /* Auxv a_type values.  */
 
 #define AT_BASE_PLATFORM 24            /* String identifying real platform,
                                           may differ from AT_PLATFORM.  */
 #define AT_RANDOM      25              /* Address of 16 random bytes.  */
+#define AT_HWCAP2      26              /* Extension of AT_HWCAP.  */
 #define AT_EXECFN      31              /* Filename of executable.  */
 /* Pointer to the global system page used for system calls and other
    nice things.  */
 #define AT_SYSINFO     32
 #define AT_SYSINFO_EHDR        33 /* Pointer to ELF header of system-supplied DSO.  */
 
+/* More complete cache descriptions than AT_[DIU]CACHEBSIZE.  If the
+   value is -1, then the cache doesn't exist.  Otherwise:
+
+   bit 0-3:  Cache set-associativity; 0 means fully associative.
+   bit 4-7:  Log2 of cacheline size.
+   bit 8-31:  Size of the entire cache >> 8.  */
+
+#define AT_L1I_CACHESHAPE 34
+#define AT_L1D_CACHESHAPE 35
+#define AT_L2_CACHESHAPE  36
+#define AT_L3_CACHESHAPE  37
+
+/* Shapes of the caches, with more room to describe them.
+   *GEOMETRY are comprised of cache line size in bytes in the bottom 16 bits
+   and the cache associativity in the next 16 bits.  */
+#define AT_L1I_CACHESIZE       40
+#define AT_L1I_CACHEGEOMETRY   41
+#define AT_L1D_CACHESIZE       42
+#define AT_L1D_CACHEGEOMETRY   43
+#define AT_L2_CACHESIZE                44
+#define AT_L2_CACHEGEOMETRY    45
+#define AT_L3_CACHESIZE                46
+#define AT_L3_CACHEGEOMETRY    47
+
+#define AT_MINSIGSTKSZ         51 /* Stack needed for signal delivery
+                                     (AArch64).  */
+
+#define AT_FREEBSD_EXECPATH     15      /* Path to the executable. */
+#define AT_FREEBSD_CANARY       16      /* Canary for SSP. */
+#define AT_FREEBSD_CANARYLEN    17      /* Length of the canary. */
+#define AT_FREEBSD_OSRELDATE    18      /* OSRELDATE. */
+#define AT_FREEBSD_NCPUS        19      /* Number of CPUs. */
+#define AT_FREEBSD_PAGESIZES    20      /* Pagesizes. */
+#define AT_FREEBSD_PAGESIZESLEN 21      /* Number of pagesizes. */
+#define AT_FREEBSD_TIMEKEEP     22      /* Pointer to timehands. */
+#define AT_FREEBSD_STACKPROT    23      /* Initial stack protection. */
+#define AT_FREEBSD_EHDRFLAGS    24      /* e_flags field from ELF header. */
+#define AT_FREEBSD_HWCAP        25      /* CPU feature flags. */
+#define AT_FREEBSD_HWCAP2       26      /* CPU feature flags 2. */
+#define AT_FREEBSD_BSDFLAGS     27      /* ELF BSD Flags. */
+#define AT_FREEBSD_ARGC         28      /* Argument count. */
+#define AT_FREEBSD_ARGV         29      /* Argument vector. */
+#define AT_FREEBSD_ENVC         30      /* Environment count. */
+#define AT_FREEBSD_ENVV         31      /* Environment vvector. */
+#define AT_FREEBSD_PS_STRINGS   32      /* struct ps_strings. */
+
 #define AT_SUN_UID      2000    /* Effective user ID.  */
 #define AT_SUN_RUID     2001    /* Real user ID.  */
 #define AT_SUN_GID      2002    /* Effective group ID.  */
 #define AT_SUN_LDNAME   2006    /* String giving name of dynamic linker.  */
 #define AT_SUN_LPAGESZ  2007    /* Large pagesize.   */
 #define AT_SUN_PLATFORM 2008    /* Platform name string.  */
-#define AT_SUN_HWCAP    2009   /* Machine dependent hints about
+#define AT_SUN_CAP_HW1 2009    /* Machine dependent hints about
                                   processor capabilities.  */
+#define AT_SUN_HWCAP   AT_SUN_CAP_HW1 /* For backward compat only.  */
 #define AT_SUN_IFLUSH   2010    /* Should flush icache? */
 #define AT_SUN_CPU      2011    /* CPU name string.  */
 #define AT_SUN_EMUL_ENTRY 2012 /* COFF entry point address.  */
 #define AT_SUN_MMU      2015    /* String for name of MMU module.   */
 #define AT_SUN_LDDATA   2016    /* Dynamic linker's data segment address.  */
 #define AT_SUN_AUXFLAGS        2017    /* AF_SUN_ flags passed from the kernel.  */
-
+#define        AT_SUN_EMULATOR 2018    /* Name of emulation binary for runtime
+                                  linker.  */
+#define        AT_SUN_BRANDNAME 2019   /* Name of brand library.  */
+#define        AT_SUN_BRAND_AUX1 2020  /* Aux vectors for brand modules.  */
+#define        AT_SUN_BRAND_AUX2 2021
+#define        AT_SUN_BRAND_AUX3 2022
+#define        AT_SUN_CAP_HW2  2023    /* Extension of AT_SUN_CAP_HW1.  */
 
 #endif /* _ELF_COMMON_H */