Skip to contentSkip to conversation

qemu fixes

PATCH Applied Christoph Egger 2 participants 2 messages Nov 28, 2008

lore
Share & tools
lore
#0 lore raw

PATCH 2/6 qemu fixes

Hi,

This is a series of four patches which improve support for qemu on NetBSD.

Attached patch fixes warnings in the i386 specific part.

Signature · 12 lines
AMD Saxony, Dresden, Germany
Operating System Research Center

Legal Information:
AMD Saxony Limited Liability Company & Co. KG
Sitz (Geschäftsanschrift):
   Wilschdorfer Landstr. 101, 01109 Dresden, Deutschland
Registergericht Dresden: HRA 4896
vertretungsberechtigter Komplementär:
   AMD Saxony LLC (Sitz Wilmington, Delaware, USA)
Geschäftsführer der AMD Saxony LLC:
   Dr. Hans-R. Deppe, Thomas McCoy
op_helper.c +7 -7
Index: target-i386/op_helper.c
===================================================================
@@ -210,7 +210,7 @@
 /* XXX: merge with load_seg() */
 static void tss_load_seg(int seg_reg, int selector)
 {
-    uint32_t e1, e2;
+    uint32_t e1 = 0, e2 = 0;
     int rpl, dpl, cpl;
 
     if ((selector & 0xfffc) != 0) {
@@ -638,7 +638,7 @@
     target_ulong ptr, ssp;
     int type, dpl, selector, ss_dpl, cpl;
     int has_error_code, new_stack, shift;
-    uint32_t e1, e2, offset, ss, esp, ss_e1, ss_e2;
+    uint32_t e1, e2, offset, ss = 0, esp, ss_e1 = 0, ss_e2 = 0;
     uint32_t old_eip, sp_mask;
 
     has_error_code = 0;
@@ -2159,7 +2159,7 @@
                            int next_eip_addend)
 {
     int gate_cs, type;
-    uint32_t e1, e2, cpl, dpl, rpl, limit;
+    uint32_t e1 = 0, e2 = 0, cpl, dpl, rpl, limit;
     target_ulong next_eip;
 
     if ((new_cs & 0xfffc) == 0)
@@ -2275,8 +2275,8 @@
                             int shift, int next_eip_addend)
 {
     int new_stack, i;
-    uint32_t e1, e2, cpl, dpl, rpl, selector, offset, param_count;
-    uint32_t ss, ss_e1, ss_e2, sp, type, ss_dpl, sp_mask;
+    uint32_t e1 = 0, e2 = 0, cpl, dpl, rpl, selector, offset, param_count;
+    uint32_t ss = 0, ss_e1 = 0, ss_e2 = 0, sp, type, ss_dpl, sp_mask;
     uint32_t val, limit, old_sp_mask;
     target_ulong ssp, old_ssp, next_eip;
 
@@ -2552,7 +2552,7 @@
 {
     uint32_t new_cs, new_eflags, new_ss;
     uint32_t new_es, new_ds, new_fs, new_gs;
-    uint32_t e1, e2, ss_e1, ss_e2;
+    uint32_t e1 = 0, e2 = 0, ss_e1 = 0, ss_e2 = 0;
     int cpl, dpl, rpl, eflags_mask, iopl;
     target_ulong ssp, sp, new_eip, new_esp, sp_mask;
 
@@ -2753,7 +2753,7 @@
 void helper_iret_protected(int shift, int next_eip)
 {
     int tss_selector, type;
-    uint32_t e1, e2;
+    uint32_t e1 = 0, e2 = 0;
 
     /* specific case for TSS */
     if (env->eflags & NT_MASK) {
#1 lore raw
Quoted 9 lines · Christoph Egger

Hi,

This is a series of four patches which improve support for qemu on NetBSD.

Attached patch fixes warnings in the i386 specific part.

Except for ss* in [copy, paste, sigh]...

op_helper.c line 2282

Quoted 11 lines
op_helper.c +2 -2
@@ -2275,8 +2275,8 @@
                             int shift, int next_eip_addend)
 {
     int new_stack, i;
-    uint32_t e1, e2, cpl, dpl, rpl, selector, offset, param_count;
-    uint32_t ss, ss_e1, ss_e2, sp, type, ss_dpl, sp_mask;
+    uint32_t e1 = 0, e2 = 0, cpl, dpl, rpl, selector, offset, param_count;
+    uint32_t ss = 0, ss_e1 = 0, ss_e2 = 0, sp, type, ss_dpl, sp_mask;
     uint32_t val, limit, old_sp_mask;
     target_ulong ssp, old_ssp, next_eip;
 

I have a better patch here that fixes the root of gcc's confusion:
missing noreturn instrumentation. The detection of the initialization of ss* variables falls into the category "gcc isn't smart enough", and one may discuss if we should handle it or wait for gcc getting smarter. BTW, this patch is not BSD specific but gcc4 related.

Nevertheless, warning reduction patches are generally welcome IMHO!

Jan