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
|
|
)
|