Added basic support for arm64

This commit is contained in:
Eduard Urbach 2025-03-06 13:40:17 +01:00
parent cc1c990dc8
commit dfe807c2e2
Signed by: eduard
GPG key ID: 49226B848C78F6C8
25 changed files with 270 additions and 33 deletions

View file

@ -4,6 +4,7 @@ const (
LittleEndian = 1
TypeExecutable = 2
ArchitectureAMD64 = 0x3E
ArchitectureARM64 = 0xB7
)
type ProgramType int32

View file

@ -23,8 +23,16 @@ func Write(writer io.Writer, code []byte, data []byte) {
var (
codeStart, codePadding = fs.Align(HeaderEnd, config.Align)
dataStart, dataPadding = fs.Align(codeStart+len(code), config.Align)
arch int16
)
switch config.TargetArch {
case config.ARM:
arch = ArchitectureARM64
case config.X86:
arch = ArchitectureAMD64
}
elf := &ELF{
Header: Header{
Magic: [4]byte{0x7F, 'E', 'L', 'F'},
@ -34,7 +42,7 @@ func Write(writer io.Writer, code []byte, data []byte) {
OSABI: 0,
ABIVersion: 0,
Type: TypeExecutable,
Architecture: ArchitectureAMD64,
Architecture: arch,
FileVersion: 1,
EntryPointInMemory: int64(config.BaseAddress + codeStart),
ProgramHeaderOffset: HeaderSize,