From 34c3a854a362c254b541747bac99d1eb222e8bc6 Mon Sep 17 00:00:00 2001 From: Richard Patel Date: Sun, 5 Mar 2023 17:41:33 +0000 Subject: [PATCH] rename sbf to sbpf --- fixtures/{sbf => sbpf}/bss_section.so | Bin fixtures/{sbf => sbpf}/empty_rodata.so | Bin fixtures/{sbf => sbpf}/multiple_file.so | Bin fixtures/{sbf => sbpf}/noop.so | Bin fixtures/{sbf => sbpf}/noro.so | Bin .../{sbf => sbpf}/pass_stack_reference.so | Bin .../{sbf => sbpf}/program_headers_overflow.so | Bin fixtures/{sbf => sbpf}/relative_call.so | Bin fixtures/{sbf => sbpf}/reloc_64_64.so | Bin .../{sbf => sbpf}/reloc_64_64_high_vaddr.so | Bin fixtures/{sbf => sbpf}/reloc_64_relative.so | Bin .../{sbf => sbpf}/reloc_64_relative_data.so | Bin .../reloc_64_relative_data_high_vaddr.so | Bin .../reloc_64_relative_data_pre_sbfv2.so | Bin .../reloc_64_relative_high_vaddr.so | Bin fixtures/{sbf => sbpf}/rodata.so | Bin fixtures/{sbf => sbpf}/rodata_high_vaddr.so | Bin fixtures/{sbf => sbpf}/scratch_registers.so | Bin fixtures/{sbf => sbpf}/syscall_static.so | Bin .../{sbf => sbpf}/syscall_static_unknown.so | Bin fixtures/{sbf => sbpf}/unresolved_syscall.so | Bin .../{sbf => sbpf}/writable_data_section.so | Bin pkg/{sbf => sbpf}/asm.go | 2 +- pkg/{sbf => sbpf}/cu/cu.go | 0 pkg/{sbf => sbpf}/interpreter.go | 2 +- pkg/{sbf => sbpf}/loader/arithmetic.go | 0 pkg/{sbf => sbpf}/loader/copy.go | 6 ++-- pkg/{sbf => sbpf}/loader/loader.go | 10 +++--- pkg/{sbf => sbpf}/loader/loader_test.go | 4 +-- pkg/{sbf => sbpf}/loader/parse.go | 0 pkg/{sbf => sbpf}/loader/relocate.go | 32 +++++++++--------- pkg/{sbf => sbpf}/loader/relocate_test.go | 4 +-- pkg/{sbf => sbpf}/opcode.go | 2 +- pkg/{sbf => sbpf}/opcode_test.go | 2 +- pkg/{sbf => sbpf}/program.go | 2 +- pkg/{sbf/sbf.go => sbpf/sbpf.go} | 4 +-- pkg/{sbf => sbpf}/stack.go | 2 +- pkg/{sbf => sbpf}/syscalls.go | 2 +- pkg/{sbf => sbpf}/verifier.go | 2 +- pkg/{sbf => sbpf}/vm.go | 2 +- pkg/sealevel/sealevel.go | 6 ++-- pkg/sealevel/sealevel_test.go | 14 ++++---- pkg/sealevel/syscalls.go | 10 +++--- pkg/sealevel/syscalls_log.go | 20 +++++------ pkg/sealevel/syscalls_misc.go | 6 ++-- 45 files changed, 68 insertions(+), 66 deletions(-) rename fixtures/{sbf => sbpf}/bss_section.so (100%) rename fixtures/{sbf => sbpf}/empty_rodata.so (100%) rename fixtures/{sbf => sbpf}/multiple_file.so (100%) rename fixtures/{sbf => sbpf}/noop.so (100%) rename fixtures/{sbf => sbpf}/noro.so (100%) rename fixtures/{sbf => sbpf}/pass_stack_reference.so (100%) rename fixtures/{sbf => sbpf}/program_headers_overflow.so (100%) rename fixtures/{sbf => sbpf}/relative_call.so (100%) rename fixtures/{sbf => sbpf}/reloc_64_64.so (100%) rename fixtures/{sbf => sbpf}/reloc_64_64_high_vaddr.so (100%) rename fixtures/{sbf => sbpf}/reloc_64_relative.so (100%) rename fixtures/{sbf => sbpf}/reloc_64_relative_data.so (100%) rename fixtures/{sbf => sbpf}/reloc_64_relative_data_high_vaddr.so (100%) rename fixtures/{sbf => sbpf}/reloc_64_relative_data_pre_sbfv2.so (100%) rename fixtures/{sbf => sbpf}/reloc_64_relative_high_vaddr.so (100%) rename fixtures/{sbf => sbpf}/rodata.so (100%) rename fixtures/{sbf => sbpf}/rodata_high_vaddr.so (100%) rename fixtures/{sbf => sbpf}/scratch_registers.so (100%) rename fixtures/{sbf => sbpf}/syscall_static.so (100%) rename fixtures/{sbf => sbpf}/syscall_static_unknown.so (100%) rename fixtures/{sbf => sbpf}/unresolved_syscall.so (100%) rename fixtures/{sbf => sbpf}/writable_data_section.so (100%) rename pkg/{sbf => sbpf}/asm.go (99%) rename pkg/{sbf => sbpf}/cu/cu.go (100%) rename pkg/{sbf => sbpf}/interpreter.go (99%) rename pkg/{sbf => sbpf}/loader/arithmetic.go (100%) rename pkg/{sbf => sbpf}/loader/copy.go (95%) rename pkg/{sbf => sbpf}/loader/loader.go (91%) rename pkg/{sbf => sbpf}/loader/loader_test.go (97%) rename pkg/{sbf => sbpf}/loader/parse.go (100%) rename pkg/{sbf => sbpf}/loader/relocate.go (87%) rename pkg/{sbf => sbpf}/loader/relocate_test.go (54%) rename pkg/{sbf => sbpf}/opcode.go (99%) rename pkg/{sbf => sbpf}/opcode_test.go (99%) rename pkg/{sbf => sbpf}/program.go (96%) rename pkg/{sbf/sbf.go => sbpf/sbpf.go} (95%) rename pkg/{sbf => sbpf}/stack.go (99%) rename pkg/{sbf => sbpf}/syscalls.go (99%) rename pkg/{sbf => sbpf}/verifier.go (99%) rename pkg/{sbf => sbpf}/vm.go (99%) diff --git a/fixtures/sbf/bss_section.so b/fixtures/sbpf/bss_section.so similarity index 100% rename from fixtures/sbf/bss_section.so rename to fixtures/sbpf/bss_section.so diff --git a/fixtures/sbf/empty_rodata.so b/fixtures/sbpf/empty_rodata.so similarity index 100% rename from fixtures/sbf/empty_rodata.so rename to fixtures/sbpf/empty_rodata.so diff --git a/fixtures/sbf/multiple_file.so b/fixtures/sbpf/multiple_file.so similarity index 100% rename from fixtures/sbf/multiple_file.so rename to fixtures/sbpf/multiple_file.so diff --git a/fixtures/sbf/noop.so b/fixtures/sbpf/noop.so similarity index 100% rename from fixtures/sbf/noop.so rename to fixtures/sbpf/noop.so diff --git a/fixtures/sbf/noro.so b/fixtures/sbpf/noro.so similarity index 100% rename from fixtures/sbf/noro.so rename to fixtures/sbpf/noro.so diff --git a/fixtures/sbf/pass_stack_reference.so b/fixtures/sbpf/pass_stack_reference.so similarity index 100% rename from fixtures/sbf/pass_stack_reference.so rename to fixtures/sbpf/pass_stack_reference.so diff --git a/fixtures/sbf/program_headers_overflow.so b/fixtures/sbpf/program_headers_overflow.so similarity index 100% rename from fixtures/sbf/program_headers_overflow.so rename to fixtures/sbpf/program_headers_overflow.so diff --git a/fixtures/sbf/relative_call.so b/fixtures/sbpf/relative_call.so similarity index 100% rename from fixtures/sbf/relative_call.so rename to fixtures/sbpf/relative_call.so diff --git a/fixtures/sbf/reloc_64_64.so b/fixtures/sbpf/reloc_64_64.so similarity index 100% rename from fixtures/sbf/reloc_64_64.so rename to fixtures/sbpf/reloc_64_64.so diff --git a/fixtures/sbf/reloc_64_64_high_vaddr.so b/fixtures/sbpf/reloc_64_64_high_vaddr.so similarity index 100% rename from fixtures/sbf/reloc_64_64_high_vaddr.so rename to fixtures/sbpf/reloc_64_64_high_vaddr.so diff --git a/fixtures/sbf/reloc_64_relative.so b/fixtures/sbpf/reloc_64_relative.so similarity index 100% rename from fixtures/sbf/reloc_64_relative.so rename to fixtures/sbpf/reloc_64_relative.so diff --git a/fixtures/sbf/reloc_64_relative_data.so b/fixtures/sbpf/reloc_64_relative_data.so similarity index 100% rename from fixtures/sbf/reloc_64_relative_data.so rename to fixtures/sbpf/reloc_64_relative_data.so diff --git a/fixtures/sbf/reloc_64_relative_data_high_vaddr.so b/fixtures/sbpf/reloc_64_relative_data_high_vaddr.so similarity index 100% rename from fixtures/sbf/reloc_64_relative_data_high_vaddr.so rename to fixtures/sbpf/reloc_64_relative_data_high_vaddr.so diff --git a/fixtures/sbf/reloc_64_relative_data_pre_sbfv2.so b/fixtures/sbpf/reloc_64_relative_data_pre_sbfv2.so similarity index 100% rename from fixtures/sbf/reloc_64_relative_data_pre_sbfv2.so rename to fixtures/sbpf/reloc_64_relative_data_pre_sbfv2.so diff --git a/fixtures/sbf/reloc_64_relative_high_vaddr.so b/fixtures/sbpf/reloc_64_relative_high_vaddr.so similarity index 100% rename from fixtures/sbf/reloc_64_relative_high_vaddr.so rename to fixtures/sbpf/reloc_64_relative_high_vaddr.so diff --git a/fixtures/sbf/rodata.so b/fixtures/sbpf/rodata.so similarity index 100% rename from fixtures/sbf/rodata.so rename to fixtures/sbpf/rodata.so diff --git a/fixtures/sbf/rodata_high_vaddr.so b/fixtures/sbpf/rodata_high_vaddr.so similarity index 100% rename from fixtures/sbf/rodata_high_vaddr.so rename to fixtures/sbpf/rodata_high_vaddr.so diff --git a/fixtures/sbf/scratch_registers.so b/fixtures/sbpf/scratch_registers.so similarity index 100% rename from fixtures/sbf/scratch_registers.so rename to fixtures/sbpf/scratch_registers.so diff --git a/fixtures/sbf/syscall_static.so b/fixtures/sbpf/syscall_static.so similarity index 100% rename from fixtures/sbf/syscall_static.so rename to fixtures/sbpf/syscall_static.so diff --git a/fixtures/sbf/syscall_static_unknown.so b/fixtures/sbpf/syscall_static_unknown.so similarity index 100% rename from fixtures/sbf/syscall_static_unknown.so rename to fixtures/sbpf/syscall_static_unknown.so diff --git a/fixtures/sbf/unresolved_syscall.so b/fixtures/sbpf/unresolved_syscall.so similarity index 100% rename from fixtures/sbf/unresolved_syscall.so rename to fixtures/sbpf/unresolved_syscall.so diff --git a/fixtures/sbf/writable_data_section.so b/fixtures/sbpf/writable_data_section.so similarity index 100% rename from fixtures/sbf/writable_data_section.so rename to fixtures/sbpf/writable_data_section.so diff --git a/pkg/sbf/asm.go b/pkg/sbpf/asm.go similarity index 99% rename from pkg/sbf/asm.go rename to pkg/sbpf/asm.go index 1ee233d..dbc508a 100644 --- a/pkg/sbf/asm.go +++ b/pkg/sbpf/asm.go @@ -1,4 +1,4 @@ -package sbf +package sbpf import "fmt" diff --git a/pkg/sbf/cu/cu.go b/pkg/sbpf/cu/cu.go similarity index 100% rename from pkg/sbf/cu/cu.go rename to pkg/sbpf/cu/cu.go diff --git a/pkg/sbf/interpreter.go b/pkg/sbpf/interpreter.go similarity index 99% rename from pkg/sbf/interpreter.go rename to pkg/sbpf/interpreter.go index fac60aa..c03e4f5 100644 --- a/pkg/sbf/interpreter.go +++ b/pkg/sbpf/interpreter.go @@ -1,4 +1,4 @@ -package sbf +package sbpf import ( "fmt" diff --git a/pkg/sbf/loader/arithmetic.go b/pkg/sbpf/loader/arithmetic.go similarity index 100% rename from pkg/sbf/loader/arithmetic.go rename to pkg/sbpf/loader/arithmetic.go diff --git a/pkg/sbf/loader/copy.go b/pkg/sbpf/loader/copy.go similarity index 95% rename from pkg/sbf/loader/copy.go rename to pkg/sbpf/loader/copy.go index 1e48f4e..6c4a82e 100644 --- a/pkg/sbf/loader/copy.go +++ b/pkg/sbpf/loader/copy.go @@ -5,7 +5,7 @@ import ( "fmt" "io" - "go.firedancer.io/radiance/pkg/sbf" + "go.firedancer.io/radiance/pkg/sbpf" ) // The following ELF loading rules seem mostly arbitrary. @@ -90,9 +90,9 @@ func (l *Loader) checkSectionAddrs(sh *elf.Section64) error { } // Ensure section within VM program range - vaddr := clampAddUint64(sbf.VaddrProgram, sh.Addr) + vaddr := clampAddUint64(sbpf.VaddrProgram, sh.Addr) vaddrEnd := vaddr + sh.Size - if vaddrEnd < vaddr || vaddrEnd > sbf.VaddrStack { + if vaddrEnd < vaddr || vaddrEnd > sbpf.VaddrStack { return fmt.Errorf("section virtual address out-of-bounds") } diff --git a/pkg/sbf/loader/loader.go b/pkg/sbpf/loader/loader.go similarity index 91% rename from pkg/sbf/loader/loader.go rename to pkg/sbpf/loader/loader.go index ff939c4..646990d 100644 --- a/pkg/sbf/loader/loader.go +++ b/pkg/sbpf/loader/loader.go @@ -9,7 +9,7 @@ import ( "fmt" "io" - "go.firedancer.io/radiance/pkg/sbf" + "go.firedancer.io/radiance/pkg/sbpf" ) // TODO Fuzz @@ -81,7 +81,7 @@ func NewLoaderFromBytes(buf []byte) (*Loader, error) { // // This loader differs from rbpf in a few ways: // We don't support spec bugs, we relocate after loading. -func (l *Loader) Load() (*sbf.Program, error) { +func (l *Loader) Load() (*sbpf.Program, error) { if err := l.parse(); err != nil { return nil, err } @@ -94,11 +94,11 @@ func (l *Loader) Load() (*sbf.Program, error) { return l.getProgram(), nil } -func (l *Loader) getProgram() *sbf.Program { - return &sbf.Program{ +func (l *Loader) getProgram() *sbpf.Program { + return &sbpf.Program{ RO: l.program, Text: l.text, - TextVA: sbf.VaddrProgram + l.textRange.min, + TextVA: sbpf.VaddrProgram + l.textRange.min, Entrypoint: l.entrypoint, Funcs: l.funcs, } diff --git a/pkg/sbf/loader/loader_test.go b/pkg/sbpf/loader/loader_test.go similarity index 97% rename from pkg/sbf/loader/loader_test.go rename to pkg/sbpf/loader/loader_test.go index c42fca6..045357a 100644 --- a/pkg/sbf/loader/loader_test.go +++ b/pkg/sbpf/loader/loader_test.go @@ -11,7 +11,7 @@ import ( ) func TestLoader_Noop(t *testing.T) { - soNoop := fixtures.Load(t, "sbf", "noop.so") + soNoop := fixtures.Load(t, "sbpf", "noop.so") loader, err := NewLoaderFromBytes(soNoop) require.NoError(t, err) @@ -201,7 +201,7 @@ func isZeroBytes(b []byte) bool { } func TestVerifier(t *testing.T) { - loader, err := NewLoaderFromBytes(fixtures.Load(t, "sbf", "noop.so")) + loader, err := NewLoaderFromBytes(fixtures.Load(t, "sbpf", "noop.so")) require.NoError(t, err) program, err := loader.Load() diff --git a/pkg/sbf/loader/parse.go b/pkg/sbpf/loader/parse.go similarity index 100% rename from pkg/sbf/loader/parse.go rename to pkg/sbpf/loader/parse.go diff --git a/pkg/sbf/loader/relocate.go b/pkg/sbpf/loader/relocate.go similarity index 87% rename from pkg/sbf/loader/relocate.go rename to pkg/sbpf/loader/relocate.go index f75634b..910c9ff 100644 --- a/pkg/sbf/loader/relocate.go +++ b/pkg/sbpf/loader/relocate.go @@ -5,7 +5,7 @@ import ( "encoding/binary" "fmt" - "go.firedancer.io/radiance/pkg/sbf" + "go.firedancer.io/radiance/pkg/sbpf" ) // relocate applies ELF relocations (for syscalls and position-independent code). @@ -25,13 +25,13 @@ func (l *Loader) relocate() error { func (l *Loader) fixupRelativeCalls() error { // TODO does invariant text.size%8 == 0 hold? - insCount := l.textRange.len() / sbf.SlotSize + insCount := l.textRange.len() / sbpf.SlotSize buf := l.getRange(l.textRange) for i := uint64(0); i < insCount; i++ { - off := i * sbf.SlotSize - slot := sbf.GetSlot(buf[off : off+sbf.SlotSize]) + off := i * sbpf.SlotSize + slot := sbpf.GetSlot(buf[off : off+sbpf.SlotSize]) - isCall := slot.Op() == sbf.OpCall && slot.Imm() != -1 + isCall := slot.Op() == sbpf.OpCall && slot.Imm() != -1 if !isCall { continue } @@ -54,7 +54,7 @@ func (l *Loader) fixupRelativeCalls() error { } func (l *Loader) registerFunc(target uint64) (uint32, error) { - hash := sbf.PCHash(target) + hash := sbpf.PCHash(target) // TODO check for collision with syscalls //if _, ok := l.funcs[hash]; ok { // return 0, fmt.Errorf("symbol hash collision for func at=%d hash=%#08x", target, hash) @@ -95,8 +95,8 @@ func (l *Loader) applyReloc(reloc *elf.Rel64) error { relAddr := binary.LittleEndian.Uint32(l.program[rOff+4 : rOff+8]) addr := clampAddUint64(sym.Value, uint64(relAddr)) - if addr < sbf.VaddrProgram { - addr += sbf.VaddrProgram + if addr < sbpf.VaddrProgram { + addr += sbpf.VaddrProgram } // Write to imm field of two slots @@ -111,8 +111,8 @@ func (l *Loader) applyReloc(reloc *elf.Rel64) error { if addr == 0 { return fmt.Errorf("invalid R_BPF_64_RELATIVE") } - if addr < sbf.VaddrProgram { - addr += sbf.VaddrProgram + if addr < sbpf.VaddrProgram { + addr += sbpf.VaddrProgram } // Write to imm field of two slots @@ -122,13 +122,13 @@ func (l *Loader) applyReloc(reloc *elf.Rel64) error { var addr uint64 if l.eh.Flags == EF_SBF_V2 { addr = binary.LittleEndian.Uint64(l.program[rOff : rOff+8]) - if addr < sbf.VaddrProgram { - addr += sbf.VaddrProgram + if addr < sbpf.VaddrProgram { + addr += sbpf.VaddrProgram } } else { // lol addr = uint64(binary.LittleEndian.Uint32(l.program[rOff+4 : rOff+8])) - addr = clampAddUint64(addr, sbf.VaddrProgram) + addr = clampAddUint64(addr, sbpf.VaddrProgram) } binary.LittleEndian.PutUint64(l.program[rOff:rOff+8], addr) } @@ -155,7 +155,7 @@ func (l *Loader) applyReloc(reloc *elf.Rel64) error { } } else { // Syscall - hash = sbf.SymbolHash(name) + hash = sbpf.SymbolHash(name) // TODO check whether syscall is known } @@ -168,10 +168,10 @@ func (l *Loader) applyReloc(reloc *elf.Rel64) error { func (l *Loader) getEntrypoint() error { offset := l.eh.Entry - l.shText.Addr - if offset%sbf.SlotSize != 0 { + if offset%sbpf.SlotSize != 0 { return fmt.Errorf("invalid entrypoint") } - l.entrypoint = offset / sbf.SlotSize + l.entrypoint = offset / sbpf.SlotSize return nil } diff --git a/pkg/sbf/loader/relocate_test.go b/pkg/sbpf/loader/relocate_test.go similarity index 54% rename from pkg/sbf/loader/relocate_test.go rename to pkg/sbpf/loader/relocate_test.go index 4e20669..1d8667e 100644 --- a/pkg/sbf/loader/relocate_test.go +++ b/pkg/sbpf/loader/relocate_test.go @@ -4,9 +4,9 @@ import ( "testing" "github.com/stretchr/testify/assert" - "go.firedancer.io/radiance/pkg/sbf" + "go.firedancer.io/radiance/pkg/sbpf" ) func TestSymbolHash_Entrypoint(t *testing.T) { - assert.Equal(t, sbf.EntrypointHash, sbf.SymbolHash("entrypoint")) + assert.Equal(t, sbpf.EntrypointHash, sbpf.SymbolHash("entrypoint")) } diff --git a/pkg/sbf/opcode.go b/pkg/sbpf/opcode.go similarity index 99% rename from pkg/sbf/opcode.go rename to pkg/sbpf/opcode.go index e10b39a..36952f2 100644 --- a/pkg/sbf/opcode.go +++ b/pkg/sbpf/opcode.go @@ -1,4 +1,4 @@ -package sbf +package sbpf // Op classes const ( diff --git a/pkg/sbf/opcode_test.go b/pkg/sbpf/opcode_test.go similarity index 99% rename from pkg/sbf/opcode_test.go rename to pkg/sbpf/opcode_test.go index a4dd1e4..8404f6f 100644 --- a/pkg/sbf/opcode_test.go +++ b/pkg/sbpf/opcode_test.go @@ -1,4 +1,4 @@ -package sbf +package sbpf import ( "fmt" diff --git a/pkg/sbf/program.go b/pkg/sbpf/program.go similarity index 96% rename from pkg/sbf/program.go rename to pkg/sbpf/program.go index bf59242..6486c5d 100644 --- a/pkg/sbf/program.go +++ b/pkg/sbpf/program.go @@ -1,4 +1,4 @@ -package sbf +package sbpf // Program is a loaded SBF program. type Program struct { diff --git a/pkg/sbf/sbf.go b/pkg/sbpf/sbpf.go similarity index 95% rename from pkg/sbf/sbf.go rename to pkg/sbpf/sbpf.go index f5a4142..f71c267 100644 --- a/pkg/sbf/sbf.go +++ b/pkg/sbpf/sbpf.go @@ -1,5 +1,5 @@ -// Package sbf implements the Solana Bytecode Format. -package sbf +// Package sbpf implements the Solana Bytecode Format. +package sbpf import "encoding/binary" diff --git a/pkg/sbf/stack.go b/pkg/sbpf/stack.go similarity index 99% rename from pkg/sbf/stack.go rename to pkg/sbpf/stack.go index f754713..546f2fa 100644 --- a/pkg/sbf/stack.go +++ b/pkg/sbpf/stack.go @@ -1,4 +1,4 @@ -package sbf +package sbpf // Stack is the VM's call frame stack. // diff --git a/pkg/sbf/syscalls.go b/pkg/sbpf/syscalls.go similarity index 99% rename from pkg/sbf/syscalls.go rename to pkg/sbpf/syscalls.go index c64f5f9..d6454b7 100644 --- a/pkg/sbf/syscalls.go +++ b/pkg/sbpf/syscalls.go @@ -1,4 +1,4 @@ -package sbf +package sbpf import ( "encoding/binary" diff --git a/pkg/sbf/verifier.go b/pkg/sbpf/verifier.go similarity index 99% rename from pkg/sbf/verifier.go rename to pkg/sbpf/verifier.go index b459821..2d6cae8 100644 --- a/pkg/sbf/verifier.go +++ b/pkg/sbpf/verifier.go @@ -1,4 +1,4 @@ -package sbf +package sbpf import "fmt" diff --git a/pkg/sbf/vm.go b/pkg/sbpf/vm.go similarity index 99% rename from pkg/sbf/vm.go rename to pkg/sbpf/vm.go index 83180c1..c0aff9c 100644 --- a/pkg/sbf/vm.go +++ b/pkg/sbpf/vm.go @@ -1,4 +1,4 @@ -package sbf +package sbpf import ( "errors" diff --git a/pkg/sealevel/sealevel.go b/pkg/sealevel/sealevel.go index 1f57e0f..239fc19 100644 --- a/pkg/sealevel/sealevel.go +++ b/pkg/sealevel/sealevel.go @@ -3,7 +3,7 @@ package sealevel import ( "bytes" - "go.firedancer.io/radiance/pkg/sbf" + "go.firedancer.io/radiance/pkg/sbpf" ) type TxContext struct{} @@ -12,13 +12,13 @@ type Execution struct { Log Logger } -func (t *TxContext) newVMOpts(params *Params) *sbf.VMOpts { +func (t *TxContext) newVMOpts(params *Params) *sbpf.VMOpts { execution := &Execution{ Log: new(LogRecorder), } var buf bytes.Buffer params.Serialize(&buf) - return &sbf.VMOpts{ + return &sbpf.VMOpts{ HeapSize: 32 * 1024, Syscalls: registry, Context: execution, diff --git a/pkg/sealevel/sealevel_test.go b/pkg/sealevel/sealevel_test.go index 64e62cb..83b3a8c 100644 --- a/pkg/sealevel/sealevel_test.go +++ b/pkg/sealevel/sealevel_test.go @@ -12,8 +12,8 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.firedancer.io/radiance/fixtures" - "go.firedancer.io/radiance/pkg/sbf" - "go.firedancer.io/radiance/pkg/sbf/loader" + "go.firedancer.io/radiance/pkg/sbpf" + "go.firedancer.io/radiance/pkg/sbpf/loader" ) func TestExecute_Memo(t *testing.T) { @@ -34,7 +34,7 @@ func TestExecute_Memo(t *testing.T) { require.NoError(t, program.Verify()) - interpreter := sbf.NewInterpreter(program, opts) + interpreter := sbpf.NewInterpreter(program, opts) require.NotNil(t, interpreter) err = interpreter.Run() @@ -48,7 +48,7 @@ func TestExecute_Memo(t *testing.T) { func TestInterpreter_Noop(t *testing.T) { // TODO simplify API? - loader, err := loader.NewLoaderFromBytes(fixtures.Load(t, "sbf", "noop.so")) + loader, err := loader.NewLoaderFromBytes(fixtures.Load(t, "sbpf", "noop.so")) require.NoError(t, err) require.NotNil(t, loader) @@ -58,13 +58,13 @@ func TestInterpreter_Noop(t *testing.T) { require.NoError(t, program.Verify()) - syscalls := sbf.NewSyscallRegistry() + syscalls := sbpf.NewSyscallRegistry() syscalls.Register("log", SyscallLog) syscalls.Register("log_64", SyscallLog64) var log LogRecorder - interpreter := sbf.NewInterpreter(program, &sbf.VMOpts{ + interpreter := sbpf.NewInterpreter(program, &sbpf.VMOpts{ HeapSize: 32 * 1024, Input: nil, MaxCU: 10000, @@ -104,7 +104,7 @@ func (e *executeCase) run(t *testing.T) { opts := tx.newVMOpts(&e.Params) opts.Tracer = testLogger{t} - interpreter := sbf.NewInterpreter(program, opts) + interpreter := sbpf.NewInterpreter(program, opts) require.NotNil(t, interpreter) err = interpreter.Run() diff --git a/pkg/sealevel/syscalls.go b/pkg/sealevel/syscalls.go index ec51661..556f384 100644 --- a/pkg/sealevel/syscalls.go +++ b/pkg/sealevel/syscalls.go @@ -1,12 +1,14 @@ package sealevel -import "go.firedancer.io/radiance/pkg/sbf" +import ( + "go.firedancer.io/radiance/pkg/sbpf" +) var registry = Syscalls() // Syscalls creates a registry of all Sealevel syscalls. -func Syscalls() sbf.SyscallRegistry { - reg := sbf.NewSyscallRegistry() +func Syscalls() sbpf.SyscallRegistry { + reg := sbpf.NewSyscallRegistry() reg.Register("abort", SyscallAbort) reg.Register("sol_log_", SyscallLog) reg.Register("sol_log_64_", SyscallLog64) @@ -15,6 +17,6 @@ func Syscalls() sbf.SyscallRegistry { return reg } -func syscallCtx(vm sbf.VM) *Execution { +func syscallCtx(vm sbpf.VM) *Execution { return vm.VMContext().(*Execution) } diff --git a/pkg/sealevel/syscalls_log.go b/pkg/sealevel/syscalls_log.go index 7766e6c..4d5c342 100644 --- a/pkg/sealevel/syscalls_log.go +++ b/pkg/sealevel/syscalls_log.go @@ -4,11 +4,11 @@ import ( "fmt" "github.com/gagliardetto/solana-go" - "go.firedancer.io/radiance/pkg/sbf" - "go.firedancer.io/radiance/pkg/sbf/cu" + "go.firedancer.io/radiance/pkg/sbpf" + "go.firedancer.io/radiance/pkg/sbpf/cu" ) -func SyscallLogImpl(vm sbf.VM, ptr, strlen uint64, cuIn int) (r0 uint64, cuOut int, err error) { +func SyscallLogImpl(vm sbpf.VM, ptr, strlen uint64, cuIn int) (r0 uint64, cuOut int, err error) { if strlen > (1 << 30) { cuOut = -1 return @@ -26,9 +26,9 @@ func SyscallLogImpl(vm sbf.VM, ptr, strlen uint64, cuIn int) (r0 uint64, cuOut i return } -var SyscallLog = sbf.SyscallFunc2(SyscallLogImpl) +var SyscallLog = sbpf.SyscallFunc2(SyscallLogImpl) -func SyscallLog64Impl(vm sbf.VM, r1, r2, r3, r4, r5 uint64, cuIn int) (r0 uint64, cuOut int, err error) { +func SyscallLog64Impl(vm sbpf.VM, r1, r2, r3, r4, r5 uint64, cuIn int) (r0 uint64, cuOut int, err error) { cuOut = cuIn - CUSyscallBaseCost if cuOut < 0 { return @@ -39,9 +39,9 @@ func SyscallLog64Impl(vm sbf.VM, r1, r2, r3, r4, r5 uint64, cuIn int) (r0 uint64 return } -var SyscallLog64 = sbf.SyscallFunc5(SyscallLog64Impl) +var SyscallLog64 = sbpf.SyscallFunc5(SyscallLog64Impl) -func SyscallLogCUsImpl(vm sbf.VM, cuIn int) (r0 uint64, cuOut int, err error) { +func SyscallLogCUsImpl(vm sbpf.VM, cuIn int) (r0 uint64, cuOut int, err error) { cuOut = cuIn - CUSyscallBaseCost if cuOut < 0 { return @@ -52,9 +52,9 @@ func SyscallLogCUsImpl(vm sbf.VM, cuIn int) (r0 uint64, cuOut int, err error) { return } -var SyscallLogCUs = sbf.SyscallFunc0(SyscallLogCUsImpl) +var SyscallLogCUs = sbpf.SyscallFunc0(SyscallLogCUsImpl) -func SyscallLogPubkeyImpl(vm sbf.VM, pubkeyAddr uint64, cuIn int) (r0 uint64, cuOut int, err error) { +func SyscallLogPubkeyImpl(vm sbpf.VM, pubkeyAddr uint64, cuIn int) (r0 uint64, cuOut int, err error) { cuOut = cuIn - CUSyscallBaseCost if cuOut < 0 { return @@ -70,4 +70,4 @@ func SyscallLogPubkeyImpl(vm sbf.VM, pubkeyAddr uint64, cuIn int) (r0 uint64, cu return } -var SyscallLogPubkey = sbf.SyscallFunc1(SyscallLogPubkeyImpl) +var SyscallLogPubkey = sbpf.SyscallFunc1(SyscallLogPubkeyImpl) diff --git a/pkg/sealevel/syscalls_misc.go b/pkg/sealevel/syscalls_misc.go index abe16c7..fa62dd9 100644 --- a/pkg/sealevel/syscalls_misc.go +++ b/pkg/sealevel/syscalls_misc.go @@ -3,12 +3,12 @@ package sealevel import ( "errors" - "go.firedancer.io/radiance/pkg/sbf" + "go.firedancer.io/radiance/pkg/sbpf" ) -func SyscallAbortImpl(_ sbf.VM, _ int) (r0 uint64, cuOut int, err error) { +func SyscallAbortImpl(_ sbpf.VM, _ int) (r0 uint64, cuOut int, err error) { err = errors.New("aborted") return } -var SyscallAbort = sbf.SyscallFunc0(SyscallAbortImpl) +var SyscallAbort = sbpf.SyscallFunc0(SyscallAbortImpl)