From 22d2b61a646eda01945b9c282a1cb9b1ea13e968 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Tue, 9 Nov 2021 16:05:45 +0200 Subject: [PATCH] winedump: Distinguish between 16 and 32 bit nop opcodes in ARM unwind data. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Martin Storsjö Signed-off-by: Alexandre Julliard --- tools/winedump/pe.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tools/winedump/pe.c b/tools/winedump/pe.c index 4629c3082f9..5d325fba3da 100644 --- a/tools/winedump/pe.c +++ b/tools/winedump/pe.c @@ -1171,13 +1171,20 @@ static void dump_armnt_unwind_info( const struct runtime_function_armnt *fnc ) excode = (code << 24) | (excodes[0] << 16) | (excodes[1] << 8) | excodes[2]; printf( "%s sp, sp, #%u\n", inepilogue ? "add" : "sub", (excode & 0xffffff) * 4 ); } - else if (code <= 0xfc) + else if (code <= 0xfb) printf( "nop\n" ); - else if (code <= 0xfe) + else if (code <= 0xfc) + printf( "nop.w\n" ); + else if (code <= 0xfd) { printf( "(end) nop\n" ); inepilogue = TRUE; } + else if (code <= 0xfe) + { + printf( "(end) nop.w\n" ); + inepilogue = TRUE; + } else { printf( "end\n" );