Martin Storsjö : winedump: Distinguish between 16 and 32 bit nop opcodes in ARM unwind data.

Alexandre Julliard julliard at winehq.org
Tue Nov 9 15:55:08 CST 2021


Module: wine
Branch: master
Commit: 22d2b61a646eda01945b9c282a1cb9b1ea13e968
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=22d2b61a646eda01945b9c282a1cb9b1ea13e968

Author: Martin Storsjö <martin at martin.st>
Date:   Tue Nov  9 16:05:45 2021 +0200

winedump: Distinguish between 16 and 32 bit nop opcodes in ARM unwind data.

Signed-off-by: Martin Storsjö <martin at martin.st>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 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" );




More information about the wine-cvs mailing list