Cleanup BPF helper symbols (#9804)

This commit is contained in:
Jack May
2020-04-30 11:29:11 -07:00
committed by GitHub
parent 217931479b
commit 7678af6300
2 changed files with 27 additions and 23 deletions

View File

@ -72,28 +72,30 @@ pub fn register_syscalls<'a>(
vm: &mut EbpfVm<'a, BPFError>, vm: &mut EbpfVm<'a, BPFError>,
invoke_context: &'a mut dyn InvokeContext, invoke_context: &'a mut dyn InvokeContext,
) -> Result<MemoryRegion, EbpfError<BPFError>> { ) -> Result<MemoryRegion, EbpfError<BPFError>> {
// Syscall function common across languages
vm.register_syscall_ex("abort", syscall_abort)?; vm.register_syscall_ex("abort", syscall_abort)?;
vm.register_syscall_ex("sol_panic", syscall_sol_panic)?;
vm.register_syscall_ex("sol_panic_", syscall_sol_panic)?; vm.register_syscall_ex("sol_panic_", syscall_sol_panic)?;
vm.register_syscall_ex("sol_log", syscall_sol_log)?;
vm.register_syscall_ex("sol_log_", syscall_sol_log)?; vm.register_syscall_ex("sol_log_", syscall_sol_log)?;
vm.register_syscall_ex("sol_log_64", syscall_sol_log_u64)?;
vm.register_syscall_ex("sol_log_64_", syscall_sol_log_u64)?; vm.register_syscall_ex("sol_log_64_", syscall_sol_log_u64)?;
let invoke_context = Rc::new(RefCell::new(invoke_context)); // Cross-program invocation syscalls
vm.register_syscall_with_context_ex( {
"sol_invoke_signed_rust", let invoke_context = Rc::new(RefCell::new(invoke_context));
Box::new(SyscallProcessInstructionRust { vm.register_syscall_with_context_ex(
invoke_context: invoke_context.clone(), "sol_invoke_signed_c",
}), Box::new(SyscallProcessSolInstructionC {
)?; invoke_context: invoke_context.clone(),
vm.register_syscall_with_context_ex( }),
"sol_invoke_signed_c", )?;
Box::new(SyscallProcessSolInstructionC { vm.register_syscall_with_context_ex(
invoke_context: invoke_context.clone(), "sol_invoke_signed_rust",
}), Box::new(SyscallProcessInstructionRust {
)?; invoke_context: invoke_context.clone(),
}),
)?;
}
// Memory allocator
let heap = vec![0_u8; DEFAULT_HEAP_SIZE]; let heap = vec![0_u8; DEFAULT_HEAP_SIZE];
let heap_region = MemoryRegion::new_from_slice(&heap, MM_HEAP_START); let heap_region = MemoryRegion::new_from_slice(&heap, MM_HEAP_START);
vm.register_syscall_with_context_ex( vm.register_syscall_with_context_ex(
@ -191,8 +193,9 @@ fn translate_string_and_do(
} }
/// Abort syscall functions, called when the BPF program calls `abort()` /// Abort syscall functions, called when the BPF program calls `abort()`
/// The verify function returns an error which will cause the BPF program /// LLVM will insert calls to `abort()` if it detects an untenable situation,
/// to be halted immediately /// `abort()` is not intended to be called explicitly by the program.
/// Causes the BPF program to be halted immediately
pub fn syscall_abort( pub fn syscall_abort(
_arg1: u64, _arg1: u64,
_arg2: u64, _arg2: u64,
@ -205,9 +208,8 @@ pub fn syscall_abort(
Err(SyscallError::Abort.into()) Err(SyscallError::Abort.into())
} }
/// Panic syscall functions, called when the BPF program calls 'sol_panic_()` /// Panic syscall function, called when the BPF program calls 'sol_panic_()`
/// The verify function returns an error which will cause the BPF program /// Causes the BPF program to be halted immediately
/// to be halted immediately
pub fn syscall_sol_panic( pub fn syscall_sol_panic(
file: u64, file: u64,
len: u64, len: u64,
@ -241,7 +243,7 @@ pub fn syscall_sol_log(
Ok(0) Ok(0)
} }
/// Log 5 u64 values /// Log 5 64-bit values
pub fn syscall_sol_log_u64( pub fn syscall_sol_log_u64(
arg1: u64, arg1: u64,
arg2: u64, arg2: u64,

View File

@ -134,7 +134,9 @@ void sol_log_(const char *, uint64_t);
/** /**
* Prints a 64 bit values represented in hexadecimal to stdout * Prints a 64 bit values represented in hexadecimal to stdout
*/ */
void sol_log_64(uint64_t, uint64_t, uint64_t, uint64_t, uint64_t); void sol_log_64_(uint64_t, uint64_t, uint64_t, uint64_t, uint64_t);
#define sol_log_64 sol_log_64_
/** /**
* Size of Public key in bytes * Size of Public key in bytes