bpf: sim: do not overflow instruction immediates in tests

This patch fixes some instructions in the BPF tests that overflow the
signed immediates.  Note that this happened to work before by chance,
as GAS would silently truncate.

Tested in bpf-unknown-none.

Signed-off-by: Jose E. Marchesi <jose.marchesi@oracle.com>
This commit is contained in:
Jose E. Marchesi 2023-07-31 11:08:32 +02:00
parent 71ddc1cc0b
commit 3b2ffd32d2
5 changed files with 11 additions and 11 deletions

View File

@ -59,7 +59,7 @@ main:
fail_ne %r2, 0x0000000050000000
;; or
or %r2, 0xdeadbeef
or %r2, -559038737 ; 0xdeadbeef
fail_ne %r2, 0xffffffffdeadbeef ; 0xdeadbeef gets sign extended
lddw %r1, 0xdead00000000beef
lddw %r2, 0x0000123456780000
@ -67,7 +67,7 @@ main:
fail_ne %r1, 0xdead12345678beef
;; lsh
mov %r1, 0xdeadbeef
mov %r1, -559038737 ; 0xdeadbeef
lsh %r1, 11
fail_ne %r1, 0xfffffef56df77800 ; because deadbeef gets sign ext.
mov %r2, 21

View File

@ -58,7 +58,7 @@ main:
lsh32 %r1, 4 ; r1 <<= 4 (r1 = 0xf0)
mov32 %r2, 24 ; r2 = 24
lsh32 %r1, %r2
fail_ne32 %r1, 0xf0000000
fail_ne32 %r1, -268435456 ; 0xf0000000
;; rsh (right logical shift)
rsh32 %r1, 2
@ -67,7 +67,7 @@ main:
;; arsh (right arithmetic shift)
arsh32 %r1, 1
or32 %r1, 0x80000000
or32 %r1, -2147483648 ; 0x80000000
mov32 %r2, 3
arsh32 %r1, %r2
fail_ne %r1, 0x00000000F0000003
@ -92,7 +92,7 @@ main:
;; xor
xor32 %r1, %r2
fail_ne32 %r1, 4
xor32 %r1, 0xF000000F
xor32 %r1, -268435441 ; 0xF000000F
fail_ne %r1, 0xF000000B ; Note: check for (bad) sign-extend
xor32 %r1, %r1
fail_ne %r1, 0

View File

@ -34,13 +34,13 @@ main:
;; Write the value 0x7eadbeef into memory at 0x2004
;; i.e. offset 4 within the data buffer pointed to by
;; ((struct sk_buff *)r6)->data
stw [%r6+0x1004], 0xdeadbeef
stw [%r6+0x1004], 0x0eadbeef
;; Now load data[4] into r0 using the ldabsw instruction
ldabsw 0x4
;; ...and compare to what we expect
fail_ne32 %r0, 0xdeadbeef
fail_ne32 %r0, 0x0eadbeef
;; Repeat for a half-word (2-bytes)
sth [%r6+0x1008], 0x1234
@ -62,10 +62,10 @@ main:
;; Now, we do the same for the indirect loads
mov %r7, 0x100
stw [%r6+0x1100], 0xfeedbeef
stw [%r6+0x1100], 0x0eedbeef
ldindw %r7, 0x0
fail_ne32 %r0, 0xfeedbeef
fail_ne32 %r0, 0x0eedbeef
;; half-word
sth [%r6+0x1104], 0x6789

View File

@ -20,7 +20,7 @@ main:
stb [%r2+16], 0x5a
sth [%r2+18], 0xcafe
stw [%r2+20], 0xbeefface
stw [%r2+20], -1091568946 ; 0xbeefface
stdw [%r2+24], 0x7eadbeef
ldxb %r1, [%r2+16]

View File

@ -30,7 +30,7 @@ main:
mov %r2, -1
fail_ne %r2, 0xffffffffffffffff
mov %r3, 0x80000000
mov %r3, -2147483648 ; 0x80000000
;; should NOT sign extend
mov32 %r4, %r3