46 lines
1.2 KiB
Go
46 lines
1.2 KiB
Go
|
package elf
|
||
|
|
||
|
// SectionHeaderSize is equal to the size of a section header in bytes.
|
||
|
const SectionHeaderSize = 64
|
||
|
|
||
|
// SectionHeader points to the data sections of our program.
|
||
|
type SectionHeader struct {
|
||
|
NameIndex int32
|
||
|
Type SectionType
|
||
|
Flags SectionFlags
|
||
|
VirtualAddress int64
|
||
|
Offset int64
|
||
|
SizeInFile int64
|
||
|
Link int32
|
||
|
Info int32
|
||
|
Align int64
|
||
|
EntrySize int64
|
||
|
}
|
||
|
|
||
|
type SectionType int32
|
||
|
|
||
|
const (
|
||
|
SectionTypeNULL SectionType = 0
|
||
|
SectionTypePROGBITS SectionType = 1
|
||
|
SectionTypeSYMTAB SectionType = 2
|
||
|
SectionTypeSTRTAB SectionType = 3
|
||
|
SectionTypeRELA SectionType = 4
|
||
|
SectionTypeHASH SectionType = 5
|
||
|
SectionTypeDYNAMIC SectionType = 6
|
||
|
SectionTypeNOTE SectionType = 7
|
||
|
SectionTypeNOBITS SectionType = 8
|
||
|
SectionTypeREL SectionType = 9
|
||
|
SectionTypeSHLIB SectionType = 10
|
||
|
SectionTypeDYNSYM SectionType = 11
|
||
|
)
|
||
|
|
||
|
type SectionFlags int64
|
||
|
|
||
|
const (
|
||
|
SectionFlagsWritable SectionFlags = 1 << 0
|
||
|
SectionFlagsAllocate SectionFlags = 1 << 1
|
||
|
SectionFlagsExecutable SectionFlags = 1 << 2
|
||
|
SectionFlagsStrings SectionFlags = 1 << 5
|
||
|
SectionFlagsTLS SectionFlags = 1 << 10
|
||
|
)
|