Jakub Jelinek: I'm seeing something which looks like a gdb bug, at least on F15 volatile int v; __attribute__((noinline, noclone)) unsigned long long foo (unsigned long long x) { unsigned long long j = x * -(0x17ULL << 31);/* { dg-final { gdb-test 12 "j" "-(0x17ULL << 31)" } } */ v++; return x; } int main () { return foo (1) - 1; } gdb prints 18446744073709550592 instead of the expected 18446744013580009472 the DWARF has DW_OP_breg5 0 DW_OP_consts -49392123904 DW_OP_mul DW_OP_stack_value for j (gdb) p/x 18446744073709550592LL $1 = 0xfffffffffffffc00 (gdb) p/x 18446744013580009472LL $2 = 0xfffffff200000000
It might be a bug Tom Tromey fixed some time ago in sleb128 parsing in gdb.
[commit] Fix sleb128 reading http://sourceware.org/ml/gdb-patches/2011-07/msg00270.html
gdb-7.3-43.fc15 has been submitted as an update for Fedora 15. https://admin.fedoraproject.org/updates/gdb-7.3-43.fc15
Package gdb-7.3-43.fc15: * should fix your issue, * was pushed to the Fedora 15 testing repository, * should be available at your local mirror within two days. Update it with: # su -c 'yum update --enablerepo=updates-testing gdb-7.3-43.fc15' as soon as you are able to. Please go to the following url: https://admin.fedoraproject.org/updates/gdb-7.3-43.fc15 then log in and leave karma (feedback).
gdb-7.3-43.fc15 has been pushed to the Fedora 15 stable repository. If problems still persist, please make note of it in this bug report.