Eric Pouech : winedump: Fix computation of signed integers in codeview symbol's annotations.
Alexandre Julliard
julliard at winehq.org
Mon Nov 8 15:45:07 CST 2021
Module: wine
Branch: master
Commit: 27b7a96d9b0b4a30345ce82171439f3c5fe6cd59
URL: https://source.winehq.org/git/wine.git/?a=commit;h=27b7a96d9b0b4a30345ce82171439f3c5fe6cd59
Author: Eric Pouech <eric.pouech at gmail.com>
Date: Mon Nov 8 14:57:18 2021 +0100
winedump: Fix computation of signed integers in codeview symbol's annotations.
Signed-off-by: Eric Pouech <eric.pouech at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
tools/winedump/msc.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/tools/winedump/msc.c b/tools/winedump/msc.c
index 79dd022a088..40daf4d50d5 100644
--- a/tools/winedump/msc.c
+++ b/tools/winedump/msc.c
@@ -1221,6 +1221,11 @@ static unsigned binannot_uncompress(const unsigned char** pptr)
return res;
}
+static inline int binannot_getsigned(unsigned i)
+{
+ return (i & 1) ? -(int)(i >> 1) : (i >> 1);
+}
+
static void dump_binannot(const unsigned char* ba, const char* last, const char* pfx)
{
while (ba < (const unsigned char*)last)
@@ -1248,7 +1253,7 @@ static void dump_binannot(const unsigned char* ba, const char* last, const char*
printf("%sChangeFile %u\n", pfx, binannot_uncompress(&ba));
break;
case BA_OP_ChangeLineOffset:
- printf("%sChangeLineOffset %d\n", pfx, binannot_uncompress(&ba));
+ printf("%sChangeLineOffset %d\n", pfx, binannot_getsigned(binannot_uncompress(&ba)));
break;
case BA_OP_ChangeLineEndDelta:
printf("%sChangeLineEndDelta %u\n", pfx, binannot_uncompress(&ba));
@@ -1265,7 +1270,7 @@ static void dump_binannot(const unsigned char* ba, const char* last, const char*
case BA_OP_ChangeCodeOffsetAndLineOffset:
{
unsigned p1 = binannot_uncompress(&ba);
- printf("%sChangeCodeOffsetAndLineOffset %u %u (0x%x)\n", pfx, p1 & 0xf, p1 >> 4, p1);
+ printf("%sChangeCodeOffsetAndLineOffset %u %u (0x%x)\n", pfx, p1 & 0xf, binannot_getsigned(p1 >> 4), p1);
}
break;
case BA_OP_ChangeCodeLengthAndCodeOffset:
More information about the wine-cvs
mailing list