mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-30 12:44:10 +08:00
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:
parent
71ddc1cc0b
commit
3b2ffd32d2
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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]
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user