forked from Nalen98/eBPF-for-Ghidra
-
Notifications
You must be signed in to change notification settings - Fork 3
/
solana_syscalls.txt
106 lines (75 loc) · 3.04 KB
/
solana_syscalls.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
/// Receives raw transaction data as argument.
/// Generally the entrypoint! macro takes care of deserializing this data and
/// calls the user-supplied process_instruction on it.
/// Function calls are usually in this order:
/// - entrypoint::deserialize()
/// - instruction_data.as_slice()
/// - process_instruction()
/// Function signatures for deserialize/process_instruction can be found under
/// the SOLANA category in the DataType manager. They need to be applied
/// manually via right click, edit, copy the signature and paste it into
/// function signature.
u64 entrypoint(u8 *transaction_data)
/// TODO
u64 abort()
/// TODO
u64 sol_panic_(char *file, u64 len, u64 line, u64 column)
/// TODO
u64 sol_log_(char *str, u64 len)
/// TODO
u64 sol_log_64_(u64 arg1, u64 arg2, u64 arg3, u64 arg4, u64 arg5)
/// TODO
u64 sol_log_compute_units_()
/// TODO
u64 sol_log_pubkey(Pubkey *pubkey)
/// TODO
u64 sol_create_program_address(u8 *seeds_addr, u64 seeds_len, Pubkey *program_id, Pubkey *address_out)
/// TODO
u64 sol_try_find_program_address(u8 *seeds_addr, u64 seeds_len, Pubkey *program_id, Pubkey *address_out, u8 *bump_seed_out)
/// TODO
u64 sol_sha256(u8 *data, u64 data_len, u8[32] hash_out)
/// TODO
u64 sol_keccak256(u8 *data, u64 data_len, u8[32] hash_out)
/// TODO
u64 sol_secp256k1_recover(u8[32] hash_data, u8 recovery_id, u8[64] signature, u8[64] pubkey_out)
/// TODO
u64 sol_blake3(u8 *data, u64 data_len, u8[32] hash_out)
/// TODO
u64 sol_zk_token_elgamal_op(u64 operation, u8[64] ciphertext0, u8[64] cipertext1, u8[64] ciphertext_out)
/// TODO
u64 sol_zk_token_elgamal_op_with_lo_hi(u64 operation, u8[64] ciphertext0, u8[64] ciphertext1_lo, u8[64] ciphertext1_hi, u8[64] ciphertext_out)
/// TODO
u64 sol_zk_token_elgamal_op_with_scalar(u64 operation, u8[64] ciphertext, u64 scalar, u8[64] ciphertext_out)
/// TODO
u64 sol_get_clock_sysvar(void *clock_out)
/// TODO
u64 sol_get_epoch_schedule_sysvar(void *epoch_schedule_out)
/// TODO
u64 sol_get_fees_sysvar(void *fees_out)
/// TODO
u64 sol_get_rent_sysvar(void *rent_out)
/// TODO
u64 sol_memcpy_(u8 *dst, u8 *src, u64 len)
/// TODO
u64 sol_memmove_(u8 *dst, u8 *src, u64 len)
/// TODO
u64 sol_memcmp_(u8 *s1, u8 *s2, u64 len)
/// TODO
u64 sol_memset_(u8 *dst, u8 val, u64 len)
/// TODO: better types
u64 sol_invoke_signed_c(void *instruction, void *account_infos, u64 account_infos_len, void *signer_seeds, u64 signer_seeds_len)
/// TODO: better types
u64 sol_invoke_signed_rust(void *instruction, void *account_infos, u64 account_infos_len, void *signer_seeds, u64 signer_seeds_len)
/// free_addr=0 will allocate and return the allocated pointer
/// otherwise free_addr must be a pointer previously returned by this function
void *sol_alloc_free_(u64 size, void *free_addr)
/// TODO
u64 sol_set_return_data(u8 *data, u64 len)
/// TODO
u64 sol_get_return_data(u8 *data_out, u64 len, Pubkey *program_id)
/// TODO
u64 sol_log_data(u8 **data, u64 len)
/// TODO
u64 sol_get_processed_sibling_instruction(u64 index, void *meta, Pubkey *program_id, u8 *data, void *accounts)
/// TODO
u64 sol_get_stack_height()