void bpf_store_byte(void *skb, u64 off, u64 val) asm("llvm.bpf.store.byte");
void bpf_store_half(void *skb, u64 off, u64 val) asm("llvm.bpf.store.half");
void bpf_store_word(void *skb, u64 off, u64 val) asm("llvm.bpf.store.word");
-void *bpf_pseudo_fd(u64, u64) asm("llvm.bpf.pseudo");
+u64 bpf_pseudo_fd(u64, u64) asm("llvm.bpf.pseudo");
static inline void __attribute__((always_inline))
bpf_store_dword(void *skb, u64 off, u64 val) {
string pre, post;
pre = "({ typeof(" + E->getType().getAsString() + ") _val; __builtin_memset(&_val, 0, sizeof(_val));";
if (has_overlap_kuaddr_)
- pre += " bpf_probe_read_kernel(&_val, sizeof(_val), (char *)";
+ pre += " bpf_probe_read_kernel(&_val, sizeof(_val), (u64)";
else
- pre += " bpf_probe_read(&_val, sizeof(_val), (char *)";
+ pre += " bpf_probe_read(&_val, sizeof(_val), (u64)";
post = "); _val; })";
rewriter_.ReplaceText(expansionLoc(E->getOperatorLoc()), 1, pre);
rewriter_.InsertTextAfterToken(expansionLoc(GET_ENDLOC(sub)), post);
string pre, post;
pre = "({ typeof(" + E->getType().getAsString() + ") _val; __builtin_memset(&_val, 0, sizeof(_val));";
if (has_overlap_kuaddr_)
- pre += " bpf_probe_read_kernel(&_val, sizeof(_val), (char *)&";
+ pre += " bpf_probe_read_kernel(&_val, sizeof(_val), (u64)&";
else
- pre += " bpf_probe_read(&_val, sizeof(_val), (char *)&";
+ pre += " bpf_probe_read(&_val, sizeof(_val), (u64)&";
post = rhs + "); _val; })";
rewriter_.InsertText(expansionLoc(GET_BEGINLOC(E)), pre);
rewriter_.ReplaceText(expansionRange(SourceRange(member, GET_ENDLOC(E))), post);