Re: Clang warnings on OS X ML

2013-01-31 Thread Charles Davis

On Jan 30, 2013, at 6:44 PM, C.W. Betts wrote:

 When compiling Wine using Clang, there are a bunch of warnings that pop up, 
 such as:
 ld: warning: could not create compact unwind for .L__wine_spec_call16_p_pw: 
 dwarf uses DW_CFA_same_value
 ld: warning: could not create compact unwind for ___wine_stub_VARBSTRFROMR8: 
 stack subq instruction is too different from dwarf stack size
 
 On win16 DLLs.
 
 And these warnings are with general DLL:
 ld: warning: could not create compact unwind for ___wine_stub__aullshr: stack 
 subq instruction is too different from dwarf stack size
 ld: warning: could not create compact unwind for 
 .L__wine_spec_relay_entry_point_52: stack subq instruction is too different 
 from dwarf stack size
These are all related to compact unwind support--slated for inclusion in DWARF 
5. Don't worry: they're harmless. The linker will just create normal unwind 
info instead... I think. They also all happen in winebuild-generated 
code--normal C code is (largely) unaffected. I'm not sure if we want to fix 
this or not: we don't use DWARF unwind info at all in 32-bit code, and even if 
we did, we certainly don't know how to parse the compact unwind data. 64-bit 
code is another matter, but we're a long way from supporting Wine64 on 
Mac--mostly due to the fact that Wine wants to use the GS segment for itself, 
but Mac OS is already using it. (tl;dr: Don't worry about it for now, even if 
all that went over your head. :)
 
 
 Another worrying warning is that __force_align_arg_pointer__ being an unknown 
 attribute.
Now that's not right. I specifically implemented this attribute in Clang myself 
just so I could build Wine with it. There were some *errors* about this 
attribute being used in a function pointer type, but as of Monday on Clang 
trunk, they're just warnings--really annoying warnings that I'm sure AJ won't 
want to have to turn off. (I know. I tried.) I also recall once that Clang 
didn't always accept the __-bracketed versions of some GNU attributes, which 
should also be fixed (and has been for several LLVM releases now!). I'd be 
surprised if Apple clang doesn't have this latter fix yet, though Xcode 4.5 
still had some pre-LLVM 3.1 version of Clang. Seriously, if you're not running 
the latest Xcode--which as of yesterday is 4.6--you should be. Apple often 
branches their own releases from LLVM/Clang trunk. (I always use Clang trunk 
directly myself, but that's partly because I'm also a part-time Clang 
developer.)
 
 There's also a lot of enum conversion warnings.
They're harmless. Most of them are in Direct3D code, because the client DLLs 
and the WineD3D backend DLL use different (but compatible) enumeration types. A 
few are in tests that try to pass nonsense values like 0xdeadbeef that are 
outside the range of known enumerators. It's just Clang being pedantic about 
the enum rules in C. Don't know if AJ or Henri are willing to take patches to 
silence these warnings.
 
 There was also a linker warning about register usage, but I can't seem to 
 find it again.
I'll bet it's another compact unwind-related warning. I recall seeing something 
to that effect myself--something along the lines of:

  ld: warning: could not create compact unwind for some winebuild-generated 
symbol: %ebp not used for stack frame

or something.

Chip






Clang warnings on OS X ML

2013-01-30 Thread C.W. Betts
When compiling Wine using Clang, there are a bunch of warnings that pop up, 
such as:
ld: warning: could not create compact unwind for .L__wine_spec_call16_p_pw: 
dwarf uses DW_CFA_same_value
ld: warning: could not create compact unwind for ___wine_stub_VARBSTRFROMR8: 
stack subq instruction is too different from dwarf stack size

On win16 DLLs.

And these warnings are with general DLL:
ld: warning: could not create compact unwind for ___wine_stub__aullshr: stack 
subq instruction is too different from dwarf stack size
ld: warning: could not create compact unwind for 
.L__wine_spec_relay_entry_point_52: stack subq instruction is too different 
from dwarf stack size


Another worrying warning is that __force_align_arg_pointer__ being an unknown 
attribute.

There's also a lot of enum conversion warnings.

There was also a linker warning about register usage, but I can't seem to find 
it again.

I could upload the whole log, but it is fairly large: 6.4 MB.