mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
tools/tests/x86_emulator: fix 'shifting a negative signed value is undefined'
clang-21 refuses to compile this:
```
test_x86_emulator.c:1164:24: error: shifting a negative signed value is undefined [-Werror,-Wshift-negative-value]
1164 | regs.r8 = (-1L << 40) + 1;
| ~~~ ^
1 error generated.
```
The shift could also exceed the width of the type on some systems.
I confirmed that both the old and the new code would produce the same value
with GCC on x86-64: `0xffffff0000000001`.
Signed-off-by: Edwin Török <edwin.torok@citrix.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
This commit is contained in:
1 parent
8766915716
commit
5a37699956
1 file changed
+1
-1
@@ -1161,7 +1161,7 @@ int main(int argc, char **argv)
|
||||
instr[0] = 0x4d; instr[1] = 0x0f; instr[2] = 0xbb; instr[3] = 0x03;
|
||||
regs.eflags = EFLAGS_ALWAYS_SET;
|
||||
regs.rip = (unsigned long)&instr[0];
|
||||
regs.r8 = (-1L << 40) + 1;
|
||||
regs.r8 = (~0UL << 40) + 1;
|
||||
regs.r11 = (unsigned long)(res + (1L << 35));
|
||||
rc = x86_emulate(&ctxt, &emulops);
|
||||
if ( (rc != X86EMUL_OKAY) ||
|
||||
|
||||