@@ -286,105 +286,111 @@ pub const VER_FLG_BASE = 1;
286286/// Weak version identifier
287287pub const VER_FLG_WEAK = 2 ;
288288
289- /// Program header table entry unused
290- pub const PT_NULL = 0 ;
291- /// Loadable program segment
292- pub const PT_LOAD = 1 ;
293- /// Dynamic linking information
294- pub const PT_DYNAMIC = 2 ;
295- /// Program interpreter
296- pub const PT_INTERP = 3 ;
297- /// Auxiliary information
298- pub const PT_NOTE = 4 ;
299- /// Reserved
300- pub const PT_SHLIB = 5 ;
301- /// Entry for header table itself
302- pub const PT_PHDR = 6 ;
303- /// Thread-local storage segment
304- pub const PT_TLS = 7 ;
305- /// Number of defined types
306- pub const PT_NUM = 8 ;
307- /// Start of OS-specific
308- pub const PT_LOOS = 0x60000000 ;
309- /// GCC .eh_frame_hdr segment
310- pub const PT_GNU_EH_FRAME = 0x6474e550 ;
311- /// Indicates stack executability
312- pub const PT_GNU_STACK = 0x6474e551 ;
313- /// Read-only after relocation
314- pub const PT_GNU_RELRO = 0x6474e552 ;
315- pub const PT_LOSUNW = 0x6ffffffa ;
316- /// Sun specific segment
317- pub const PT_SUNWBSS = 0x6ffffffa ;
318- /// Stack segment
319- pub const PT_SUNWSTACK = 0x6ffffffb ;
320- pub const PT_HISUNW = 0x6fffffff ;
321- /// End of OS-specific
322- pub const PT_HIOS = 0x6fffffff ;
323- /// Start of processor-specific
324- pub const PT_LOPROC = 0x70000000 ;
325- /// End of processor-specific
326- pub const PT_HIPROC = 0x7fffffff ;
289+ /// Deprecated, use `@intFromEnum(std.elf.PT.NULL)`
290+ pub const PT_NULL = @intFromEnum (std .elf .PT .NULL );
291+ /// Deprecated, use `@intFromEnum(std.elf.PT.LOAD)`
292+ pub const PT_LOAD = @intFromEnum (std .elf .PT .LOAD );
293+ /// Deprecated, use `@intFromEnum(std.elf.PT.DYNAMIC)`
294+ pub const PT_DYNAMIC = @intFromEnum (std .elf .PT .DYNAMIC );
295+ /// Deprecated, use `@intFromEnum(std.elf.PT.INTERP)`
296+ pub const PT_INTERP = @intFromEnum (std .elf .PT .INTERP );
297+ /// Deprecated, use `@intFromEnum(std.elf.PT.NOTE)`
298+ pub const PT_NOTE = @intFromEnum (std .elf .PT .NOTE );
299+ /// Deprecated, use `@intFromEnum(std.elf.PT.SHLIB)`
300+ pub const PT_SHLIB = @intFromEnum (std .elf .PT .SHLIB );
301+ /// Deprecated, use `@intFromEnum(std.elf.PT.PHDR)`
302+ pub const PT_PHDR = @intFromEnum (std .elf .PT .PHDR );
303+ /// Deprecated, use `@intFromEnum(std.elf.PT.TLS)`
304+ pub const PT_TLS = @intFromEnum (std .elf .PT .TLS );
305+ /// Deprecated, use `std.elf.PT.NUM`.
306+ pub const PT_NUM = PT .NUM ;
307+ /// Deprecated, use `@intFromEnum(std.elf.PT.LOOS)`
308+ pub const PT_LOOS = @intFromEnum (std .elf .PT .LOOS );
309+ /// Deprecated, use `@intFromEnum(std.elf.PT.GNU_EH_FRAME)`
310+ pub const PT_GNU_EH_FRAME = @intFromEnum (std .elf .PT .GNU_EH_FRAME );
311+ /// Deprecated, use `@intFromEnum(std.elf.PT.GNU_STACK)`
312+ pub const PT_GNU_STACK = @intFromEnum (std .elf .PT .GNU_STACK );
313+ /// Deprecated, use `@intFromEnum(std.elf.PT.GNU_RELRO)`
314+ pub const PT_GNU_RELRO = @intFromEnum (std .elf .PT .GNU_RELRO );
315+ /// Deprecated, use `@intFromEnum(std.elf.PT.LOSUNW)`
316+ pub const PT_LOSUNW = @intFromEnum (std .elf .PT .LOSUNW );
317+ /// Deprecated, use `@intFromEnum(std.elf.PT.SUNWBSS)`
318+ pub const PT_SUNWBSS = @intFromEnum (std .elf .PT .SUNWBSS );
319+ /// Deprecated, use `@intFromEnum(std.elf.PT.SUNWSTACK)`
320+ pub const PT_SUNWSTACK = @intFromEnum (std .elf .PT .SUNWSTACK );
321+ /// Deprecated, use `@intFromEnum(std.elf.PT.HISUNW)`
322+ pub const PT_HISUNW = @intFromEnum (std .elf .PT .HISUNW );
323+ /// Deprecated, use `@intFromEnum(std.elf.PT.HIOS)`
324+ pub const PT_HIOS = @intFromEnum (std .elf .PT .HIOS );
325+ /// Deprecated, use `@intFromEnum(std.elf.PT.LOPROC)`
326+ pub const PT_LOPROC = @intFromEnum (std .elf .PT .LOPROC );
327+ /// Deprecated, use `@intFromEnum(std.elf.PT.HIPROC)`
328+ pub const PT_HIPROC = @intFromEnum (std .elf .PT .HIPROC );
327329
328330pub const PN_XNUM = 0xffff ;
329331
330- /// Section header table entry unused
331- pub const SHT_NULL = 0 ;
332- /// Program data
333- pub const SHT_PROGBITS = 1 ;
334- /// Symbol table
335- pub const SHT_SYMTAB = 2 ;
336- /// String table
337- pub const SHT_STRTAB = 3 ;
338- /// Relocation entries with addends
339- pub const SHT_RELA = 4 ;
340- /// Symbol hash table
341- pub const SHT_HASH = 5 ;
342- /// Dynamic linking information
343- pub const SHT_DYNAMIC = 6 ;
344- /// Notes
345- pub const SHT_NOTE = 7 ;
346- /// Program space with no data (bss)
347- pub const SHT_NOBITS = 8 ;
348- /// Relocation entries, no addends
349- pub const SHT_REL = 9 ;
350- /// Reserved
351- pub const SHT_SHLIB = 10 ;
352- /// Dynamic linker symbol table
353- pub const SHT_DYNSYM = 11 ;
354- /// Array of constructors
355- pub const SHT_INIT_ARRAY = 14 ;
356- /// Array of destructors
357- pub const SHT_FINI_ARRAY = 15 ;
358- /// Array of pre-constructors
359- pub const SHT_PREINIT_ARRAY = 16 ;
360- /// Section group
361- pub const SHT_GROUP = 17 ;
362- /// Extended section indices
363- pub const SHT_SYMTAB_SHNDX = 18 ;
364- /// Start of OS-specific
365- pub const SHT_LOOS = 0x60000000 ;
366- /// LLVM address-significance table
367- pub const SHT_LLVM_ADDRSIG = 0x6fff4c03 ;
368- /// GNU hash table
369- pub const SHT_GNU_HASH = 0x6ffffff6 ;
370- /// GNU version definition table
371- pub const SHT_GNU_VERDEF = 0x6ffffffd ;
372- /// GNU needed versions table
373- pub const SHT_GNU_VERNEED = 0x6ffffffe ;
374- /// GNU symbol version table
375- pub const SHT_GNU_VERSYM = 0x6fffffff ;
376- /// End of OS-specific
377- pub const SHT_HIOS = 0x6fffffff ;
378- /// Start of processor-specific
379- pub const SHT_LOPROC = 0x70000000 ;
380- /// Unwind information
381- pub const SHT_X86_64_UNWIND = 0x70000001 ;
382- /// End of processor-specific
383- pub const SHT_HIPROC = 0x7fffffff ;
384- /// Start of application-specific
385- pub const SHT_LOUSER = 0x80000000 ;
386- /// End of application-specific
387- pub const SHT_HIUSER = 0xffffffff ;
332+ /// Deprecated, use `@intFromEnum(std.elf.SHT.NULL)`
333+ pub const SHT_NULL = @intFromEnum (std .elf .SHT .NULL );
334+ /// Deprecated, use `@intFromEnum(std.elf.SHT.PROGBITS)`
335+ pub const SHT_PROGBITS = @intFromEnum (std .elf .SHT .PROGBITS );
336+ /// Deprecated, use `@intFromEnum(std.elf.SHT.SYMTAB)`
337+ pub const SHT_SYMTAB = @intFromEnum (std .elf .SHT .SYMTAB );
338+ /// Deprecated, use `@intFromEnum(std.elf.SHT.STRTAB)`
339+ pub const SHT_STRTAB = @intFromEnum (std .elf .SHT .STRTAB );
340+ /// Deprecated, use `@intFromEnum(std.elf.SHT.RELA)`
341+ pub const SHT_RELA = @intFromEnum (std .elf .SHT .RELA );
342+ /// Deprecated, use `@intFromEnum(std.elf.SHT.HASH)`
343+ pub const SHT_HASH = @intFromEnum (std .elf .SHT .HASH );
344+ /// Deprecated, use `@intFromEnum(std.elf.SHT.DYNAMIC)`
345+ pub const SHT_DYNAMIC = @intFromEnum (std .elf .SHT .DYNAMIC );
346+ /// Deprecated, use `@intFromEnum(std.elf.SHT.NOTE)`
347+ pub const SHT_NOTE = @intFromEnum (std .elf .SHT .NOTE );
348+ /// Deprecated, use `@intFromEnum(std.elf.SHT.NOBITS)`
349+ pub const SHT_NOBITS = @intFromEnum (std .elf .SHT .NOBITS );
350+ /// Deprecated, use `@intFromEnum(std.elf.SHT.REL)`
351+ pub const SHT_REL = @intFromEnum (std .elf .SHT .REL );
352+ /// Deprecated, use `@intFromEnum(std.elf.SHT.SHLIB)`
353+ pub const SHT_SHLIB = @intFromEnum (std .elf .SHT .SHLIB );
354+ /// Deprecated, use `@intFromEnum(std.elf.SHT.DYNSYM)`
355+ pub const SHT_DYNSYM = @intFromEnum (std .elf .SHT .DYNSYM );
356+ /// Deprecated, use `@intFromEnum(std.elf.SHT.INIT_ARRAY)`
357+ pub const SHT_INIT_ARRAY = @intFromEnum (std .elf .SHT .INIT_ARRAY );
358+ /// Deprecated, use `@intFromEnum(std.elf.SHT.FINI_ARRAY)`
359+ pub const SHT_FINI_ARRAY = @intFromEnum (std .elf .SHT .FINI_ARRAY );
360+ /// Deprecated, use `@intFromEnum(std.elf.SHT.PREINIT_ARRAY)`
361+ pub const SHT_PREINIT_ARRAY = @intFromEnum (std .elf .SHT .PREINIT_ARRAY );
362+ /// Deprecated, use `@intFromEnum(std.elf.SHT.GROUP)`
363+ pub const SHT_GROUP = @intFromEnum (std .elf .SHT .GROUP );
364+ /// Deprecated, use `@intFromEnum(std.elf.SHT.SYMTAB_SHNDX)`
365+ pub const SHT_SYMTAB_SHNDX = @intFromEnum (std .elf .SHT .SYMTAB_SHNDX );
366+ /// Deprecated, use `@intFromEnum(std.elf.SHT.RELR)`
367+ pub const SHT_RELR = @intFromEnum (std .elf .SHT .RELR );
368+ /// Deprecated, use `std.elf.SHT.NUM`.
369+ pub const SHT_NUM = SHT .NUM ;
370+ /// Deprecated, use `@intFromEnum(std.elf.SHT.LOOS)`
371+ pub const SHT_LOOS = @intFromEnum (std .elf .SHT .LOOS );
372+ /// Deprecated, use `@intFromEnum(std.elf.SHT.LLVM_ADDRSIG)`
373+ pub const SHT_LLVM_ADDRSIG = @intFromEnum (std .elf .SHT .LLVM_ADDRSIG );
374+ /// Deprecated, use `@intFromEnum(std.elf.SHT.GNU_HASH)`
375+ pub const SHT_GNU_HASH = @intFromEnum (std .elf .SHT .GNU_HASH );
376+ /// Deprecated, use `@intFromEnum(std.elf.SHT.GNU_VERDEF)`
377+ pub const SHT_GNU_VERDEF = @intFromEnum (std .elf .SHT .GNU_VERDEF );
378+ /// Deprecated, use `@intFromEnum(std.elf.SHT.GNU_VERNEED)`
379+ pub const SHT_GNU_VERNEED = @intFromEnum (std .elf .SHT .GNU_VERNEED );
380+ /// Deprecated, use `@intFromEnum(std.elf.SHT.GNU_VERSYM)`
381+ pub const SHT_GNU_VERSYM = @intFromEnum (std .elf .SHT .GNU_VERSYM );
382+ /// Deprecated, use `@intFromEnum(std.elf.SHT.HIOS)`
383+ pub const SHT_HIOS = @intFromEnum (std .elf .SHT .HIOS );
384+ /// Deprecated, use `@intFromEnum(std.elf.SHT.LOPROC)`
385+ pub const SHT_LOPROC = @intFromEnum (std .elf .SHT .LOPROC );
386+ /// Deprecated, use `@intFromEnum(std.elf.SHT.X86_64_UNWIND)`
387+ pub const SHT_X86_64_UNWIND = @intFromEnum (std .elf .SHT .X86_64_UNWIND );
388+ /// Deprecated, use `@intFromEnum(std.elf.SHT.HIPROC)`
389+ pub const SHT_HIPROC = @intFromEnum (std .elf .SHT .HIPROC );
390+ /// Deprecated, use `@intFromEnum(std.elf.SHT.LOUSER)`
391+ pub const SHT_LOUSER = @intFromEnum (std .elf .SHT .LOUSER );
392+ /// Deprecated, use `@intFromEnum(std.elf.SHT.HIUSER)`
393+ pub const SHT_HIUSER = @intFromEnum (std .elf .SHT .HIUSER );
388394
389395// Note type for .note.gnu.build_id
390396pub const NT_GNU_BUILD_ID = 3 ;
@@ -454,6 +460,127 @@ pub const STT_ARM_TFUNC = @intFromEnum(STT.ARM_TFUNC);
454460/// Deprecated, use `@intFromEnum(std.elf.STT.ARM_16BIT)`
455461pub const STT_ARM_16BIT = @intFromEnum (STT .ARM_16BIT );
456462
463+ pub const PT = enum (Word ) {
464+ /// Program header table entry unused
465+ NULL = 0 ,
466+ /// Loadable program segment
467+ LOAD = 1 ,
468+ /// Dynamic linking information
469+ DYNAMIC = 2 ,
470+ /// Program interpreter
471+ INTERP = 3 ,
472+ /// Auxiliary information
473+ NOTE = 4 ,
474+ /// Reserved
475+ SHLIB = 5 ,
476+ /// Entry for header table itself
477+ PHDR = 6 ,
478+ /// Thread-local storage segment
479+ TLS = 7 ,
480+ _ ,
481+
482+ /// Number of defined types
483+ pub const NUM = @typeInfo (PT ).@"enum" .fields .len ;
484+
485+ /// Start of OS-specific
486+ pub const LOOS : PT = @enumFromInt (0x60000000 );
487+ /// End of OS-specific
488+ pub const HIOS : PT = @enumFromInt (0x6fffffff );
489+
490+ /// GCC .eh_frame_hdr segment
491+ pub const GNU_EH_FRAME : PT = @enumFromInt (0x6474e550 );
492+ /// Indicates stack executability
493+ pub const GNU_STACK : PT = @enumFromInt (0x6474e551 );
494+ /// Read-only after relocation
495+ pub const GNU_RELRO : PT = @enumFromInt (0x6474e552 );
496+
497+ pub const LOSUNW : PT = @enumFromInt (0x6ffffffa );
498+ pub const HISUNW : PT = @enumFromInt (0x6fffffff );
499+
500+ /// Sun specific segment
501+ pub const SUNWBSS : PT = @enumFromInt (0x6ffffffa );
502+ /// Stack segment
503+ pub const SUNWSTACK : PT = @enumFromInt (0x6ffffffb );
504+
505+ /// Start of processor-specific
506+ pub const LOPROC : PT = @enumFromInt (0x70000000 );
507+ /// End of processor-specific
508+ pub const HIPROC : PT = @enumFromInt (0x7fffffff );
509+ };
510+
511+ pub const SHT = enum (Word ) {
512+ /// Section header table entry unused
513+ NULL = 0 ,
514+ /// Program data
515+ PROGBITS = 1 ,
516+ /// Symbol table
517+ SYMTAB = 2 ,
518+ /// String table
519+ STRTAB = 3 ,
520+ /// Relocation entries with addends
521+ RELA = 4 ,
522+ /// Symbol hash table
523+ HASH = 5 ,
524+ /// Dynamic linking information
525+ DYNAMIC = 6 ,
526+ /// Notes
527+ NOTE = 7 ,
528+ /// Program space with no data (bss)
529+ NOBITS = 8 ,
530+ /// Relocation entries, no addends
531+ REL = 9 ,
532+ /// Reserved
533+ SHLIB = 10 ,
534+ /// Dynamic linker symbol table
535+ DYNSYM = 11 ,
536+ /// Array of constructors
537+ INIT_ARRAY = 14 ,
538+ /// Array of destructors
539+ FINI_ARRAY = 15 ,
540+ /// Array of pre-constructors
541+ PREINIT_ARRAY = 16 ,
542+ /// Section group
543+ GROUP = 17 ,
544+ /// Extended section indices
545+ SYMTAB_SHNDX = 18 ,
546+ /// RELR relative relocations
547+ RELR = 19 ,
548+ _ ,
549+
550+ /// Number of defined types
551+ pub const NUM = @typeInfo (SHT ).@"enum" .fields .len ;
552+
553+ /// Start of OS-specific
554+ pub const LOOS : SHT = @enumFromInt (0x60000000 );
555+ /// End of OS-specific
556+ pub const HIOS : SHT = @enumFromInt (0x6fffffff );
557+
558+ /// LLVM address-significance table
559+ pub const LLVM_ADDRSIG : SHT = @enumFromInt (0x6fff4c03 );
560+
561+ /// GNU hash table
562+ pub const GNU_HASH : SHT = @enumFromInt (0x6ffffff6 );
563+ /// GNU version definition table
564+ pub const GNU_VERDEF : SHT = @enumFromInt (0x6ffffffd );
565+ /// GNU needed versions table
566+ pub const GNU_VERNEED : SHT = @enumFromInt (0x6ffffffe );
567+ /// GNU symbol version table
568+ pub const GNU_VERSYM : SHT = @enumFromInt (0x6fffffff );
569+
570+ /// Start of processor-specific
571+ pub const LOPROC : SHT = @enumFromInt (0x70000000 );
572+ /// End of processor-specific
573+ pub const HIPROC : SHT = @enumFromInt (0x7fffffff );
574+
575+ /// Unwind information
576+ pub const X86_64_UNWIND : SHT = @enumFromInt (0x70000001 );
577+
578+ /// Start of application-specific
579+ pub const LOUSER : SHT = @enumFromInt (0x80000000 );
580+ /// End of application-specific
581+ pub const HIUSER : SHT = @enumFromInt (0xffffffff );
582+ };
583+
457584pub const STB = enum (u4 ) {
458585 /// Local symbol
459586 LOCAL = 0 ,
@@ -899,7 +1026,7 @@ pub const Elf32 = struct {
8991026 shstrndx : Half ,
9001027 };
9011028 pub const Phdr = extern struct {
902- type : Word ,
1029+ type : PT ,
9031030 offset : Elf32.Off ,
9041031 vaddr : Elf32.Addr ,
9051032 paddr : Elf32.Addr ,
@@ -910,7 +1037,7 @@ pub const Elf32 = struct {
9101037 };
9111038 pub const Shdr = extern struct {
9121039 name : Word ,
913- type : Word ,
1040+ type : SHT ,
9141041 flags : packed struct { shf : SHF },
9151042 addr : Elf32.Addr ,
9161043 offset : Elf32.Off ,
@@ -989,7 +1116,7 @@ pub const Elf64 = struct {
9891116 shstrndx : Half ,
9901117 };
9911118 pub const Phdr = extern struct {
992- type : Word ,
1119+ type : PT ,
9931120 flags : PF ,
9941121 offset : Elf64.Off ,
9951122 vaddr : Elf64.Addr ,
@@ -1000,7 +1127,7 @@ pub const Elf64 = struct {
10001127 };
10011128 pub const Shdr = extern struct {
10021129 name : Word ,
1003- type : Word ,
1130+ type : SHT ,
10041131 flags : packed struct { shf : SHF , unused : Word = 0 },
10051132 addr : Elf64.Addr ,
10061133 offset : Elf64.Off ,
0 commit comments