/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _UAPI_LINUX_ELF_H
#define _UAPI_LINUX_ELF_H
#include <linux/types.h>
#include <linux/elf-em.h>
/* 32-bit ELF base types. */
typedef __u32 Elf32_Addr;
typedef __u16 Elf32_Half;
typedef __u32 Elf32_Off;
typedef __s32 Elf32_Sword;
typedef __u32 Elf32_Word;
typedef __u16 Elf32_Versym;
/* 64-bit ELF base types. */
typedef __u64 Elf64_Addr;
typedef __u16 Elf64_Half;
typedef __s16 Elf64_SHalf;
typedef __u64 Elf64_Off;
typedef __s32 Elf64_Sword;
typedef __u32 Elf64_Word;
typedef __u64 Elf64_Xword;
typedef __s64 Elf64_Sxword;
typedef __u16 Elf64_Versym;
/* These constants are for the segment types stored in the image headers */
#define PT_NULL
0
#define PT_LOAD
1
#define PT_DYNAMIC
2
#define PT_INTERP
3
#define PT_NOTE
4
#define PT_SHLIB
5
#define PT_PHDR
6
#define PT_TLS
7 /* Thread local storage segment */
#define PT_LOOS
0 x60000000
/* OS-specific */
#define PT_HIOS
0 x6fffffff
/* OS-specific */
#define PT_LOPROC
0 x70000000
#define PT_HIPROC
0 x7fffffff
#define PT_GNU_EH_FRAME (PT_LOOS +
0 x474e550)
#define PT_GNU_STACK (PT_LOOS +
0 x474e551)
#define PT_GNU_RELRO (PT_LOOS +
0 x474e552)
#define PT_GNU_PROPERTY (PT_LOOS +
0 x474e553)
/* ARM MTE memory tag segment type */
#define PT_AARCH64_MEMTAG_MTE (PT_LOPROC +
0 x2)
/*
* Extended Numbering
*
* If the real number of program header table entries is larger than
* or equal to PN_XNUM(0xffff), it is set to sh_info field of the
* section header at index 0, and PN_XNUM is set to e_phnum
* field. Otherwise, the section header at index 0 is zero
* initialized, if it exists.
*
* Specifications are available in:
*
* - Oracle: Linker and Libraries.
* Part No: 817–1984–19, August 2011.
* https://docs.oracle.com/cd/E18752_01/pdf/817-1984.pdf
*
* - System V ABI AMD64 Architecture Processor Supplement
* Draft Version 0.99.4,
* January 13, 2010.
* http://www.cs.washington.edu/education/courses/cse351/12wi/supp-docs/abi.pdf
*/
#define PN_XNUM
0 xffff
/* These constants define the different elf file types */
#define ET_NONE
0
#define ET_REL
1
#define ET_EXEC
2
#define ET_DYN
3
#define ET_CORE
4
#define ET_LOPROC
0 xff00
#define ET_HIPROC
0 xffff
/* This is the info that is needed to parse the dynamic section of the file */
#define DT_NULL
0
#define DT_NEEDED
1
#define DT_PLTRELSZ
2
#define DT_PLTGOT
3
#define DT_HASH
4
#define DT_STRTAB
5
#define DT_SYMTAB
6
#define DT_RELA
7
#define DT_RELASZ
8
#define DT_RELAENT
9
#define DT_STRSZ
10
#define DT_SYMENT
11
#define DT_INIT
12
#define DT_FINI
13
#define DT_SONAME
14
#define DT_RPATH
15
#define DT_SYMBOLIC
16
#define DT_REL
17
#define DT_RELSZ
18
#define DT_RELENT
19
#define DT_PLTREL
20
#define DT_DEBUG
21
#define DT_TEXTREL
22
#define DT_JMPREL
23
#define DT_ENCODING
32
#define OLD_DT_LOOS
0 x60000000
#define DT_LOOS
0 x6000000d
#define DT_HIOS
0 x6ffff000
#define DT_VALRNGLO
0 x6ffffd00
#define DT_VALRNGHI
0 x6ffffdff
#define DT_ADDRRNGLO
0 x6ffffe00
#define DT_GNU_HASH
0 x6ffffef5
#define DT_ADDRRNGHI
0 x6ffffeff
#define DT_VERSYM
0 x6ffffff0
#define DT_RELACOUNT
0 x6ffffff9
#define DT_RELCOUNT
0 x6ffffffa
#define DT_FLAGS_1
0 x6ffffffb
#define DT_VERDEF
0 x6ffffffc
#define DT_VERDEFNUM
0 x6ffffffd
#define DT_VERNEED
0 x6ffffffe
#define DT_VERNEEDNUM
0 x6fffffff
#define OLD_DT_HIOS
0 x6fffffff
#define DT_LOPROC
0 x70000000
#define DT_HIPROC
0 x7fffffff
/* This info is needed when parsing the symbol table */
#define STB_LOCAL
0
#define STB_GLOBAL
1
#define STB_WEAK
2
#define STN_UNDEF
0
#define STT_NOTYPE
0
#define STT_OBJECT
1
#define STT_FUNC
2
#define STT_SECTION
3
#define STT_FILE
4
#define STT_COMMON
5
#define STT_TLS
6
#define VER_FLG_BASE
0 x1
#define VER_FLG_WEAK
0 x2
#define ELF_ST_BIND(x) ((x) >>
4 )
#define ELF_ST_TYPE(x) ((x) &
0 xf)
#define ELF32_ST_BIND(x) ELF_ST_BIND(x)
#define ELF32_ST_TYPE(x) ELF_ST_TYPE(x)
#define ELF64_ST_BIND(x) ELF_ST_BIND(x)
#define ELF64_ST_TYPE(x) ELF_ST_TYPE(x)
typedef struct {
Elf32_Sword d_tag;
union {
Elf32_Sword d_val;
Elf32_Addr d_ptr;
} d_un;
} Elf32_Dyn;
typedef struct {
Elf64_Sxword d_tag;
/* entry tag value */
union {
Elf64_Xword d_val;
Elf64_Addr d_ptr;
} d_un;
} Elf64_Dyn;
/* The following are used with relocations */
#define ELF32_R_SYM(x) ((x) >>
8 )
#define ELF32_R_TYPE(x) ((x) &
0 xff)
#define ELF64_R_SYM(i) ((i) >>
32 )
#define ELF64_R_TYPE(i) ((i) &
0 xffffffff)
typedef struct elf32_rel {
Elf32_Addr r_offset;
Elf32_Word r_info;
} Elf32_Rel;
typedef struct elf64_rel {
Elf64_Addr r_offset;
/* Location at which to apply the action */
Elf64_Xword r_info;
/* index and type of relocation */
} Elf64_Rel;
typedef struct elf32_rela {
Elf32_Addr r_offset;
Elf32_Word r_info;
Elf32_Sword r_addend;
} Elf32_Rela;
typedef struct elf64_rela {
Elf64_Addr r_offset;
/* Location at which to apply the action */
Elf64_Xword r_info;
/* index and type of relocation */
Elf64_Sxword r_addend;
/* Constant addend used to compute value */
} Elf64_Rela;
typedef struct elf32_sym {
Elf32_Word st_name;
Elf32_Addr st_value;
Elf32_Word st_size;
unsigned char st_info;
unsigned char st_other;
Elf32_Half st_shndx;
} Elf32_Sym;
typedef struct elf64_sym {
Elf64_Word st_name;
/* Symbol name, index in string tbl */
unsigned char st_info;
/* Type and binding attributes */
unsigned char st_other;
/* No defined meaning, 0 */
Elf64_Half st_shndx;
/* Associated section index */
Elf64_Addr st_value;
/* Value of the symbol */
Elf64_Xword st_size;
/* Associated symbol size */
} Elf64_Sym;
#define EI_NIDENT
16
typedef struct elf32_hdr {
unsigned char e_ident[EI_NIDENT];
Elf32_Half e_type;
Elf32_Half e_machine;
Elf32_Word e_version;
Elf32_Addr e_entry;
/* Entry point */
Elf32_Off e_phoff;
Elf32_Off e_shoff;
Elf32_Word e_flags;
Elf32_Half e_ehsize;
Elf32_Half e_phentsize;
Elf32_Half e_phnum;
Elf32_Half e_shentsize;
Elf32_Half e_shnum;
Elf32_Half e_shstrndx;
} Elf32_Ehdr;
typedef struct elf64_hdr {
unsigned char e_ident[EI_NIDENT];
/* ELF "magic number" */
Elf64_Half e_type;
Elf64_Half e_machine;
Elf64_Word e_version;
Elf64_Addr e_entry;
/* Entry point virtual address */
Elf64_Off e_phoff;
/* Program header table file offset */
Elf64_Off e_shoff;
/* Section header table file offset */
Elf64_Word e_flags;
Elf64_Half e_ehsize;
Elf64_Half e_phentsize;
Elf64_Half e_phnum;
Elf64_Half e_shentsize;
Elf64_Half e_shnum;
Elf64_Half e_shstrndx;
} Elf64_Ehdr;
/* These constants define the permissions on sections in the program
header, p_flags. */
#define PF_R
0 x4
#define PF_W
0 x2
#define PF_X
0 x1
typedef struct elf32_phdr {
Elf32_Word p_type;
Elf32_Off p_offset;
Elf32_Addr p_vaddr;
Elf32_Addr p_paddr;
Elf32_Word p_filesz;
Elf32_Word p_memsz;
Elf32_Word p_flags;
Elf32_Word p_align;
} Elf32_Phdr;
typedef struct elf64_phdr {
Elf64_Word p_type;
Elf64_Word p_flags;
Elf64_Off p_offset;
/* Segment file offset */
Elf64_Addr p_vaddr;
/* Segment virtual address */
Elf64_Addr p_paddr;
/* Segment physical address */
Elf64_Xword p_filesz;
/* Segment size in file */
Elf64_Xword p_memsz;
/* Segment size in memory */
Elf64_Xword p_align;
/* Segment alignment, file & memory */
} Elf64_Phdr;
/* sh_type */
#define SHT_NULL
0
#define SHT_PROGBITS
1
#define SHT_SYMTAB
2
#define SHT_STRTAB
3
#define SHT_RELA
4
#define SHT_HASH
5
#define SHT_DYNAMIC
6
#define SHT_NOTE
7
#define SHT_NOBITS
8
#define SHT_REL
9
#define SHT_SHLIB
10
#define SHT_DYNSYM
11
#define SHT_NUM
12
#define SHT_LOPROC
0 x70000000
#define SHT_HIPROC
0 x7fffffff
#define SHT_LOUSER
0 x80000000
#define SHT_HIUSER
0 xffffffff
/* sh_flags */
#define SHF_WRITE
0 x1
#define SHF_ALLOC
0 x2
#define SHF_EXECINSTR
0 x4
#define SHF_MERGE
0 x10
#define SHF_STRINGS
0 x20
#define SHF_INFO_LINK
0 x40
#define SHF_LINK_ORDER
0 x80
#define SHF_OS_NONCONFORMING
0 x100
#define SHF_GROUP
0 x200
#define SHF_TLS
0 x400
#define SHF_RELA_LIVEPATCH
0 x00100000
#define SHF_RO_AFTER_INIT
0 x00200000
#define SHF_ORDERED
0 x04000000
#define SHF_EXCLUDE
0 x08000000
#define SHF_MASKOS
0 x0ff00000
#define SHF_MASKPROC
0 xf0000000
/* special section indexes */
#define SHN_UNDEF
0
#define SHN_LORESERVE
0 xff00
#define SHN_LOPROC
0 xff00
#define SHN_HIPROC
0 xff1f
#define SHN_LIVEPATCH
0 xff20
#define SHN_ABS
0 xfff1
#define SHN_COMMON
0 xfff2
#define SHN_HIRESERVE
0 xffff
typedef struct elf32_shdr {
Elf32_Word sh_name;
Elf32_Word sh_type;
Elf32_Word sh_flags;
Elf32_Addr sh_addr;
Elf32_Off sh_offset;
Elf32_Word sh_size;
Elf32_Word sh_link;
Elf32_Word sh_info;
Elf32_Word sh_addralign;
Elf32_Word sh_entsize;
} Elf32_Shdr;
typedef struct elf64_shdr {
Elf64_Word sh_name;
/* Section name, index in string tbl */
Elf64_Word sh_type;
/* Type of section */
Elf64_Xword sh_flags;
/* Miscellaneous section attributes */
Elf64_Addr sh_addr;
/* Section virtual addr at execution */
Elf64_Off sh_offset;
/* Section file offset */
Elf64_Xword sh_size;
/* Size of section in bytes */
Elf64_Word sh_link;
/* Index of another section */
Elf64_Word sh_info;
/* Additional section information */
Elf64_Xword sh_addralign;
/* Section alignment */
Elf64_Xword sh_entsize;
/* Entry size if section holds table */
} Elf64_Shdr;
#define EI_MAG0
0 /* e_ident[] indexes */
#define EI_MAG1
1
#define EI_MAG2
2
#define EI_MAG3
3
#define EI_CLASS
4
#define EI_DATA
5
#define EI_VERSION
6
#define EI_OSABI
7
#define EI_PAD
8
#define ELFMAG0
0 x7f
/* EI_MAG */
#define ELFMAG1
'E'
#define ELFMAG2
'L'
#define ELFMAG3
'F'
#define ELFMAG
"\177ELF"
#define SELFMAG
4
#define ELFCLASSNONE
0 /* EI_CLASS */
#define ELFCLASS32
1
#define ELFCLASS64
2
#define ELFCLASSNUM
3
#define ELFDATANONE
0 /* e_ident[EI_DATA] */
#define ELFDATA2LSB
1
#define ELFDATA2MSB
2
#define EV_NONE
0 /* e_version, EI_VERSION */
#define EV_CURRENT
1
#define EV_NUM
2
#define ELFOSABI_NONE
0
#define ELFOSABI_LINUX
3
#ifndef ELF_OSABI
#define ELF_OSABI ELFOSABI_NONE
#endif
/* Note definitions: NN_ defines names. NT_ defines types. */
#define NN_GNU_PROPERTY_TYPE_0
"GNU"
#define NT_GNU_PROPERTY_TYPE_0
5
/*
* Notes used in ET_CORE. Architectures export some of the arch register sets
* using the corresponding note types via the PTRACE_GETREGSET and
* PTRACE_SETREGSET requests.
*/
#define NN_PRSTATUS
"CORE"
#define NT_PRSTATUS
1
#define NN_PRFPREG
"CORE"
#define NT_PRFPREG
2
#define NN_PRPSINFO
"CORE"
#define NT_PRPSINFO
3
#define NN_TASKSTRUCT
"CORE"
#define NT_TASKSTRUCT
4
#define NN_AUXV
"CORE"
#define NT_AUXV
6
/*
* Note to userspace developers: size of NT_SIGINFO note may increase
* in the future to accomodate more fields, don't assume it is fixed!
*/
#define NN_SIGINFO
"CORE"
#define NT_SIGINFO
0 x53494749
#define NN_FILE
"CORE"
#define NT_FILE
0 x46494c45
#define NN_PRXFPREG
"LINUX"
#define NT_PRXFPREG
0 x46e62b7f
/* copied from gdb5.1/include/elf/common.h */
#define NN_PPC_VMX
"LINUX"
#define NT_PPC_VMX
0 x100
/* PowerPC Altivec/VMX registers */
#define NN_PPC_SPE
"LINUX"
#define NT_PPC_SPE
0 x101
/* PowerPC SPE/EVR registers */
#define NN_PPC_VSX
"LINUX"
#define NT_PPC_VSX
0 x102
/* PowerPC VSX registers */
#define NN_PPC_TAR
"LINUX"
#define NT_PPC_TAR
0 x103
/* Target Address Register */
#define NN_PPC_PPR
"LINUX"
#define NT_PPC_PPR
0 x104
/* Program Priority Register */
#define NN_PPC_DSCR
"LINUX"
#define NT_PPC_DSCR
0 x105
/* Data Stream Control Register */
#define NN_PPC_EBB
"LINUX"
#define NT_PPC_EBB
0 x106
/* Event Based Branch Registers */
#define NN_PPC_PMU
"LINUX"
#define NT_PPC_PMU
0 x107
/* Performance Monitor Registers */
#define NN_PPC_TM_CGPR
"LINUX"
#define NT_PPC_TM_CGPR
0 x108
/* TM checkpointed GPR Registers */
#define NN_PPC_TM_CFPR
"LINUX"
#define NT_PPC_TM_CFPR
0 x109
/* TM checkpointed FPR Registers */
#define NN_PPC_TM_CVMX
"LINUX"
#define NT_PPC_TM_CVMX
0 x10a
/* TM checkpointed VMX Registers */
#define NN_PPC_TM_CVSX
"LINUX"
#define NT_PPC_TM_CVSX
0 x10b
/* TM checkpointed VSX Registers */
#define NN_PPC_TM_SPR
"LINUX"
#define NT_PPC_TM_SPR
0 x10c
/* TM Special Purpose Registers */
#define NN_PPC_TM_CTAR
"LINUX"
#define NT_PPC_TM_CTAR
0 x10d
/* TM checkpointed Target Address Register */
#define NN_PPC_TM_CPPR
"LINUX"
#define NT_PPC_TM_CPPR
0 x10e
/* TM checkpointed Program Priority Register */
#define NN_PPC_TM_CDSCR
"LINUX"
#define NT_PPC_TM_CDSCR
0 x10f
/* TM checkpointed Data Stream Control Register */
#define NN_PPC_PKEY
"LINUX"
#define NT_PPC_PKEY
0 x110
/* Memory Protection Keys registers */
#define NN_PPC_DEXCR
"LINUX"
#define NT_PPC_DEXCR
0 x111
/* PowerPC DEXCR registers */
#define NN_PPC_HASHKEYR
"LINUX"
#define NT_PPC_HASHKEYR
0 x112
/* PowerPC HASHKEYR register */
#define NN_386_TLS
"LINUX"
#define NT_386_TLS
0 x200
/* i386 TLS slots (struct user_desc) */
#define NN_386_IOPERM
"LINUX"
#define NT_386_IOPERM
0 x201
/* x86 io permission bitmap (1=deny) */
#define NN_X86_XSTATE
"LINUX"
#define NT_X86_XSTATE
0 x202
/* x86 extended state using xsave */
/* Old binutils treats 0x203 as a CET state */
#define NN_X86_SHSTK
"LINUX"
#define NT_X86_SHSTK
0 x204
/* x86 SHSTK state */
#define NN_X86_XSAVE_LAYOUT
"LINUX"
#define NT_X86_XSAVE_LAYOUT
0 x205
/* XSAVE layout description */
#define NN_S390_HIGH_GPRS
"LINUX"
#define NT_S390_HIGH_GPRS
0 x300
/* s390 upper register halves */
#define NN_S390_TIMER
"LINUX"
#define NT_S390_TIMER
0 x301
/* s390 timer register */
#define NN_S390_TODCMP
"LINUX"
#define NT_S390_TODCMP
0 x302
/* s390 TOD clock comparator register */
#define NN_S390_TODPREG
"LINUX"
#define NT_S390_TODPREG
0 x303
/* s390 TOD programmable register */
#define NN_S390_CTRS
"LINUX"
#define NT_S390_CTRS
0 x304
/* s390 control registers */
#define NN_S390_PREFIX
"LINUX"
#define NT_S390_PREFIX
0 x305
/* s390 prefix register */
#define NN_S390_LAST_BREAK
"LINUX"
#define NT_S390_LAST_BREAK
0 x306
/* s390 breaking event address */
#define NN_S390_SYSTEM_CALL
"LINUX"
#define NT_S390_SYSTEM_CALL
0 x307
/* s390 system call restart data */
#define NN_S390_TDB
"LINUX"
#define NT_S390_TDB
0 x308
/* s390 transaction diagnostic block */
#define NN_S390_VXRS_LOW
"LINUX"
#define NT_S390_VXRS_LOW
0 x309
/* s390 vector registers 0-15 upper half */
#define NN_S390_VXRS_HIGH
"LINUX"
#define NT_S390_VXRS_HIGH
0 x30a
/* s390 vector registers 16-31 */
#define NN_S390_GS_CB
"LINUX"
#define NT_S390_GS_CB
0 x30b
/* s390 guarded storage registers */
#define NN_S390_GS_BC
"LINUX"
#define NT_S390_GS_BC
0 x30c
/* s390 guarded storage broadcast control block */
#define NN_S390_RI_CB
"LINUX"
#define NT_S390_RI_CB
0 x30d
/* s390 runtime instrumentation */
#define NN_S390_PV_CPU_DATA
"LINUX"
#define NT_S390_PV_CPU_DATA
0 x30e
/* s390 protvirt cpu dump data */
#define NN_ARM_VFP
"LINUX"
#define NT_ARM_VFP
0 x400
/* ARM VFP/NEON registers */
#define NN_ARM_TLS
"LINUX"
#define NT_ARM_TLS
0 x401
/* ARM TLS register */
#define NN_ARM_HW_BREAK
"LINUX"
#define NT_ARM_HW_BREAK
0 x402
/* ARM hardware breakpoint registers */
#define NN_ARM_HW_WATCH
"LINUX"
#define NT_ARM_HW_WATCH
0 x403
/* ARM hardware watchpoint registers */
#define NN_ARM_SYSTEM_CALL
"LINUX"
#define NT_ARM_SYSTEM_CALL
0 x404
/* ARM system call number */
#define NN_ARM_SVE
"LINUX"
#define NT_ARM_SVE
0 x405
/* ARM Scalable Vector Extension registers */
#define NN_ARM_PAC_MASK
"LINUX"
#define NT_ARM_PAC_MASK
0 x406
/* ARM pointer authentication code masks */
#define NN_ARM_PACA_KEYS
"LINUX"
#define NT_ARM_PACA_KEYS
0 x407
/* ARM pointer authentication address keys */
#define NN_ARM_PACG_KEYS
"LINUX"
#define NT_ARM_PACG_KEYS
0 x408
/* ARM pointer authentication generic key */
#define NN_ARM_TAGGED_ADDR_CTRL
"LINUX"
#define NT_ARM_TAGGED_ADDR_CTRL
0 x409
/* arm64 tagged address control (prctl()) */
#define NN_ARM_PAC_ENABLED_KEYS
"LINUX"
#define NT_ARM_PAC_ENABLED_KEYS
0 x40a
/* arm64 ptr auth enabled keys (prctl()) */
#define NN_ARM_SSVE
"LINUX"
#define NT_ARM_SSVE
0 x40b
/* ARM Streaming SVE registers */
#define NN_ARM_ZA
"LINUX"
#define NT_ARM_ZA
0 x40c
/* ARM SME ZA registers */
#define NN_ARM_ZT
"LINUX"
#define NT_ARM_ZT
0 x40d
/* ARM SME ZT registers */
#define NN_ARM_FPMR
"LINUX"
#define NT_ARM_FPMR
0 x40e
/* ARM floating point mode register */
#define NN_ARM_POE
"LINUX"
#define NT_ARM_POE
0 x40f
/* ARM POE registers */
#define NN_ARM_GCS
"LINUX"
#define NT_ARM_GCS
0 x410
/* ARM GCS state */
#define NN_ARC_V2
"LINUX"
#define NT_ARC_V2
0 x600
/* ARCv2 accumulator/extra registers */
#define NN_VMCOREDD
"LINUX"
#define NT_VMCOREDD
0 x700
/* Vmcore Device Dump Note */
#define NN_MIPS_DSP
"LINUX"
#define NT_MIPS_DSP
0 x800
/* MIPS DSP ASE registers */
#define NN_MIPS_FP_MODE
"LINUX"
#define NT_MIPS_FP_MODE
0 x801
/* MIPS floating-point mode */
#define NN_MIPS_MSA
"LINUX"
#define NT_MIPS_MSA
0 x802
/* MIPS SIMD registers */
#define NN_RISCV_CSR
"LINUX"
#define NT_RISCV_CSR
0 x900
/* RISC-V Control and Status Registers */
#define NN_RISCV_VECTOR
"LINUX"
#define NT_RISCV_VECTOR
0 x901
/* RISC-V vector registers */
#define NN_RISCV_TAGGED_ADDR_CTRL
"LINUX"
#define NT_RISCV_TAGGED_ADDR_CTRL
0 x902
/* RISC-V tagged address control (prctl()) */
#define NN_LOONGARCH_CPUCFG
"LINUX"
#define NT_LOONGARCH_CPUCFG
0 xa00
/* LoongArch CPU config registers */
#define NN_LOONGARCH_CSR
"LINUX"
#define NT_LOONGARCH_CSR
0 xa01
/* LoongArch control and status registers */
#define NN_LOONGARCH_LSX
"LINUX"
#define NT_LOONGARCH_LSX
0 xa02
/* LoongArch Loongson SIMD Extension registers */
#define NN_LOONGARCH_LASX
"LINUX"
#define NT_LOONGARCH_LASX
0 xa03
/* LoongArch Loongson Advanced SIMD Extension registers */
#define NN_LOONGARCH_LBT
"LINUX"
#define NT_LOONGARCH_LBT
0 xa04
/* LoongArch Loongson Binary Translation registers */
#define NN_LOONGARCH_HW_BREAK
"LINUX"
#define NT_LOONGARCH_HW_BREAK
0 xa05
/* LoongArch hardware breakpoint registers */
#define NN_LOONGARCH_HW_WATCH
"LINUX"
#define NT_LOONGARCH_HW_WATCH
0 xa06
/* LoongArch hardware watchpoint registers */
/* Note header in a PT_NOTE section */
typedef struct elf32_note {
Elf32_Word n_namesz;
/* Name size */
Elf32_Word n_descsz;
/* Content size */
Elf32_Word n_type;
/* Content type */
} Elf32_Nhdr;
/* Note header in a PT_NOTE section */
typedef struct elf64_note {
Elf64_Word n_namesz;
/* Name size */
Elf64_Word n_descsz;
/* Content size */
Elf64_Word n_type;
/* Content type */
} Elf64_Nhdr;
/* .note.gnu.property types for EM_AARCH64: */
#define GNU_PROPERTY_AARCH64_FEATURE_1_AND
0 xc0000000
/* Bits for GNU_PROPERTY_AARCH64_FEATURE_1_BTI */
#define GNU_PROPERTY_AARCH64_FEATURE_1_BTI (
1 U <<
0 )
typedef struct {
Elf32_Half vd_version;
Elf32_Half vd_flags;
Elf32_Half vd_ndx;
Elf32_Half vd_cnt;
Elf32_Word vd_hash;
Elf32_Word vd_aux;
Elf32_Word vd_next;
} Elf32_Verdef;
typedef struct {
Elf64_Half vd_version;
Elf64_Half vd_flags;
Elf64_Half vd_ndx;
Elf64_Half vd_cnt;
Elf64_Word vd_hash;
Elf64_Word vd_aux;
Elf64_Word vd_next;
} Elf64_Verdef;
typedef struct {
Elf32_Word vda_name;
Elf32_Word vda_next;
} Elf32_Verdaux;
typedef struct {
Elf64_Word vda_name;
Elf64_Word vda_next;
} Elf64_Verdaux;
#endif /* _UAPI_LINUX_ELF_H */
Messung V0.5 in Prozent C=95 H=95 G=94
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-07)
¤
*© Formatika GbR, Deutschland