1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-24 05:23:45 +02:00
llvm-mirror/test/CodeGen/BPF
Alexei Starovoitov 51781c98c2 [bpf] Fix memory offset check for loads and stores
If the offset cannot fit into the instruction, an addition to the
pointer is emitted before the actual access. However, BPF offsets are
16-bit but LLVM considers them to be, for the matter of this check,
to be 32-bit long.

This causes the following program:

int bpf_prog1(void *ign)
{

volatile unsigned long t = 0x8983984739ull;
return *(unsigned long *)((0xffffffff8fff0002ull) + t);

}

To generate the following (wrong) code:

0: 18 01 00 00 39 47 98 83 00 00 00 00 89 00 00 00

r1 = 590618314553ll

2: 7b 1a f8 ff 00 00 00 00 *(u64 *)(r10 - 8) = r1
3: 79 a1 f8 ff 00 00 00 00 r1 = *(u64 *)(r10 - 8)
4: 79 10 02 00 00 00 00 00 r0 = *(u64 *)(r1 + 2)
5: 95 00 00 00 00 00 00 00 exit

Fix it by changing the offset check to 16-bit.

Patch by Nadav Amit <nadav.amit@gmail.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Differential Revision: https://reviews.llvm.org/D32055

llvm-svn: 300269
2017-04-13 22:24:13 +00:00
..
alu8.ll convert bpf assembler to look like kernel verifier output 2016-11-18 02:32:35 +00:00
atomics.ll [bpf] add BPF disassembler 2016-11-20 02:25:00 +00:00
basictest.ll convert bpf assembler to look like kernel verifier output 2016-11-18 02:32:35 +00:00
byval.ll
cc_args_be.ll [bpf] error when unknown bpf helper is called 2017-01-17 07:26:17 +00:00
cc_args.ll [bpf] error when unknown bpf helper is called 2017-01-17 07:26:17 +00:00
cc_ret.ll [bpf] error when unknown bpf helper is called 2017-01-17 07:26:17 +00:00
cmp.ll convert bpf assembler to look like kernel verifier output 2016-11-18 02:32:35 +00:00
dwarfdump.ll Renumber testcase metadata nodes after r290153. 2016-12-22 00:45:21 +00:00
ex1.ll convert bpf assembler to look like kernel verifier output 2016-11-18 02:32:35 +00:00
fi_ri.ll [bpf] error when unknown bpf helper is called 2017-01-17 07:26:17 +00:00
intrinsics.ll [bpf] error when unknown bpf helper is called 2017-01-17 07:26:17 +00:00
lit.local.cfg
load.ll convert bpf assembler to look like kernel verifier output 2016-11-18 02:32:35 +00:00
loops.ll convert bpf assembler to look like kernel verifier output 2016-11-18 02:32:35 +00:00
many_args1.ll
many_args2.ll
mem_offset.ll [bpf] Fix memory offset check for loads and stores 2017-04-13 22:24:13 +00:00
objdump_atomics.ll [bpf] add BPF disassembler 2016-11-20 02:25:00 +00:00
objdump_intrinsics.ll [bpf] error when unknown bpf helper is called 2017-01-17 07:26:17 +00:00
objdump_trivial.ll [bpf] error when unknown bpf helper is called 2017-01-17 07:26:17 +00:00
sanity.ll [bpf] error when unknown bpf helper is called 2017-01-17 07:26:17 +00:00
sdiv_error.ll
setcc.ll convert bpf assembler to look like kernel verifier output 2016-11-18 02:32:35 +00:00
shifts.ll convert bpf assembler to look like kernel verifier output 2016-11-18 02:32:35 +00:00
sockex2.ll convert bpf assembler to look like kernel verifier output 2016-11-18 02:32:35 +00:00
struct_ret1.ll [BPF] Remove exit-on-error from tests (PR27768, PR27769) 2016-05-30 08:28:34 +00:00
struct_ret2.ll [BPF] Remove exit-on-error from tests (PR27768, PR27769) 2016-05-30 08:28:34 +00:00
undef.ll In visitSTORE, always use FindBetterChain, rather than only when UseAA is enabled. 2017-03-14 00:34:14 +00:00
vararg1.ll
warn-call.ll [bpf] error when unknown bpf helper is called 2017-01-17 07:26:17 +00:00
warn-stack.ll Add address space mangling to lifetime intrinsics 2017-04-10 20:18:21 +00:00