Francois Gouget : dbghelp: Fix compilation on systems that don' t support nameless unions.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Mar 2 08:51:50 CST 2015


Module: wine
Branch: master
Commit: 11f985541a68239556adc51d227a7f5f662c0637
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=11f985541a68239556adc51d227a7f5f662c0637

Author: Francois Gouget <fgouget at free.fr>
Date:   Sat Feb 28 17:30:04 2015 +0100

dbghelp: Fix compilation on systems that don't support nameless unions.

---

 dlls/dbghelp/cpu_x86_64.c | 50 +++++++++++++++++++++++------------------------
 1 file changed, 25 insertions(+), 25 deletions(-)

diff --git a/dlls/dbghelp/cpu_x86_64.c b/dlls/dbghelp/cpu_x86_64.c
index 94f561c..a5aa03f 100644
--- a/dlls/dbghelp/cpu_x86_64.c
+++ b/dlls/dbghelp/cpu_x86_64.c
@@ -53,7 +53,7 @@ typedef union _UNWIND_CODE
         BYTE CodeOffset;
         BYTE UnwindOp : 4;
         BYTE OpInfo   : 4;
-    };
+    } u;
     USHORT FrameOffset;
 } UNWIND_CODE, *PUNWIND_CODE;
 
@@ -158,14 +158,14 @@ static void dump_unwind_info(struct cpu_stack_walk* csw, ULONG64 base, RUNTIME_F
 
         for (i = 0; i < info->CountOfCodes; i++)
         {
-            TRACE("    0x%x: ", info->UnwindCode[i].CodeOffset);
-            switch (info->UnwindCode[i].UnwindOp)
+            TRACE("    0x%x: ", info->UnwindCode[i].u.CodeOffset);
+            switch (info->UnwindCode[i].u.UnwindOp)
             {
             case UWOP_PUSH_NONVOL:
-                TRACE("pushq %%%s\n", reg_names[info->UnwindCode[i].OpInfo]);
+                TRACE("pushq %%%s\n", reg_names[info->UnwindCode[i].u.OpInfo]);
                 break;
             case UWOP_ALLOC_LARGE:
-                if (info->UnwindCode[i].OpInfo)
+                if (info->UnwindCode[i].u.OpInfo)
                 {
                     count = *(DWORD*)&info->UnwindCode[i+1];
                     i += 2;
@@ -178,7 +178,7 @@ static void dump_unwind_info(struct cpu_stack_walk* csw, ULONG64 base, RUNTIME_F
                 TRACE("subq $0x%x,%%rsp\n", count);
                 break;
             case UWOP_ALLOC_SMALL:
-                count = (info->UnwindCode[i].OpInfo + 1) * 8;
+                count = (info->UnwindCode[i].u.OpInfo + 1) * 8;
                 TRACE("subq $0x%x,%%rsp\n", count);
                 break;
             case UWOP_SET_FPREG:
@@ -187,29 +187,29 @@ static void dump_unwind_info(struct cpu_stack_walk* csw, ULONG64 base, RUNTIME_F
                 break;
             case UWOP_SAVE_NONVOL:
                 count = *(USHORT*)&info->UnwindCode[i+1] * 8;
-                TRACE("movq %%%s,0x%x(%%rsp)\n", reg_names[info->UnwindCode[i].OpInfo], count);
+                TRACE("movq %%%s,0x%x(%%rsp)\n", reg_names[info->UnwindCode[i].u.OpInfo], count);
                 i++;
                 break;
             case UWOP_SAVE_NONVOL_FAR:
                 count = *(DWORD*)&info->UnwindCode[i+1];
-                TRACE("movq %%%s,0x%x(%%rsp)\n", reg_names[info->UnwindCode[i].OpInfo], count);
+                TRACE("movq %%%s,0x%x(%%rsp)\n", reg_names[info->UnwindCode[i].u.OpInfo], count);
                 i += 2;
                 break;
             case UWOP_SAVE_XMM128:
                 count = *(USHORT*)&info->UnwindCode[i+1] * 16;
-                TRACE("movaps %%xmm%u,0x%x(%%rsp)\n", info->UnwindCode[i].OpInfo, count);
+                TRACE("movaps %%xmm%u,0x%x(%%rsp)\n", info->UnwindCode[i].u.OpInfo, count);
                 i++;
                 break;
             case UWOP_SAVE_XMM128_FAR:
                 count = *(DWORD*)&info->UnwindCode[i+1];
-                TRACE("movaps %%xmm%u,0x%x(%%rsp)\n", info->UnwindCode[i].OpInfo, count);
+                TRACE("movaps %%xmm%u,0x%x(%%rsp)\n", info->UnwindCode[i].u.OpInfo, count);
                 i += 2;
                 break;
             case UWOP_PUSH_MACHFRAME:
-                TRACE("PUSH_MACHFRAME %u\n", info->UnwindCode[i].OpInfo);
+                TRACE("PUSH_MACHFRAME %u\n", info->UnwindCode[i].u.OpInfo);
                 break;
             default:
-                FIXME("unknown code %u\n", info->UnwindCode[i].UnwindOp);
+                FIXME("unknown code %u\n", info->UnwindCode[i].u.UnwindOp);
                 break;
             }
         }
@@ -261,10 +261,10 @@ static void set_float_reg(CONTEXT *context, int reg, M128A val)
 
 static int get_opcode_size(UNWIND_CODE op)
 {
-    switch (op.UnwindOp)
+    switch (op.u.UnwindOp)
     {
     case UWOP_ALLOC_LARGE:
-        return 2 + (op.OpInfo != 0);
+        return 2 + (op.u.OpInfo != 0);
     case UWOP_SAVE_NONVOL:
     case UWOP_SAVE_XMM128:
         return 2;
@@ -515,21 +515,21 @@ static BOOL interpret_function_table_entry(struct cpu_stack_walk* csw,
 
         for (i = 0; i < info->CountOfCodes; i += get_opcode_size(info->UnwindCode[i]))
         {
-            if (prolog_offset < info->UnwindCode[i].CodeOffset) continue; /* skip it */
+            if (prolog_offset < info->UnwindCode[i].u.CodeOffset) continue; /* skip it */
 
-            switch (info->UnwindCode[i].UnwindOp)
+            switch (info->UnwindCode[i].u.UnwindOp)
             {
             case UWOP_PUSH_NONVOL:  /* pushq %reg */
                 if (!sw_read_mem(csw, context->Rsp, &value, sizeof(DWORD64))) return FALSE;
-                set_int_reg(context, info->UnwindCode[i].OpInfo, value);
+                set_int_reg(context, info->UnwindCode[i].u.OpInfo, value);
                 context->Rsp += sizeof(ULONG64);
                 break;
             case UWOP_ALLOC_LARGE:  /* subq $nn,%rsp */
-                if (info->UnwindCode[i].OpInfo) context->Rsp += *(DWORD*)&info->UnwindCode[i+1];
+                if (info->UnwindCode[i].u.OpInfo) context->Rsp += *(DWORD*)&info->UnwindCode[i+1];
                 else context->Rsp += *(USHORT*)&info->UnwindCode[i+1] * 8;
                 break;
             case UWOP_ALLOC_SMALL:  /* subq $n,%rsp */
-                context->Rsp += (info->UnwindCode[i].OpInfo + 1) * 8;
+                context->Rsp += (info->UnwindCode[i].u.OpInfo + 1) * 8;
                 break;
             case UWOP_SET_FPREG:  /* leaq nn(%rsp),%framereg */
                 context->Rsp = newframe;
@@ -537,28 +537,28 @@ static BOOL interpret_function_table_entry(struct cpu_stack_walk* csw,
             case UWOP_SAVE_NONVOL:  /* movq %reg,n(%rsp) */
                 off = newframe + *(USHORT*)&info->UnwindCode[i+1] * 8;
                 if (!sw_read_mem(csw, off, &value, sizeof(DWORD64))) return FALSE;
-                set_int_reg(context, info->UnwindCode[i].OpInfo, value);
+                set_int_reg(context, info->UnwindCode[i].u.OpInfo, value);
                 break;
             case UWOP_SAVE_NONVOL_FAR:  /* movq %reg,nn(%rsp) */
                 off = newframe + *(DWORD*)&info->UnwindCode[i+1];
                 if (!sw_read_mem(csw, off, &value, sizeof(DWORD64))) return FALSE;
-                set_int_reg(context, info->UnwindCode[i].OpInfo, value);
+                set_int_reg(context, info->UnwindCode[i].u.OpInfo, value);
                 break;
             case UWOP_SAVE_XMM128:  /* movaps %xmmreg,n(%rsp) */
                 off = newframe + *(USHORT*)&info->UnwindCode[i+1] * 16;
                 if (!sw_read_mem(csw, off, &floatvalue, sizeof(M128A))) return FALSE;
-                set_float_reg(context, info->UnwindCode[i].OpInfo, floatvalue);
+                set_float_reg(context, info->UnwindCode[i].u.OpInfo, floatvalue);
                 break;
             case UWOP_SAVE_XMM128_FAR:  /* movaps %xmmreg,nn(%rsp) */
                 off = newframe + *(DWORD*)&info->UnwindCode[i+1];
                 if (!sw_read_mem(csw, off, &floatvalue, sizeof(M128A))) return FALSE;
-                set_float_reg(context, info->UnwindCode[i].OpInfo, floatvalue);
+                set_float_reg(context, info->UnwindCode[i].u.OpInfo, floatvalue);
                 break;
             case UWOP_PUSH_MACHFRAME:
-                FIXME("PUSH_MACHFRAME %u\n", info->UnwindCode[i].OpInfo);
+                FIXME("PUSH_MACHFRAME %u\n", info->UnwindCode[i].u.OpInfo);
                 break;
             default:
-                FIXME("unknown code %u\n", info->UnwindCode[i].UnwindOp);
+                FIXME("unknown code %u\n", info->UnwindCode[i].u.UnwindOp);
                 break;
             }
         }




More information about the wine-cvs mailing list