Clang warnings on OS X ML
cdavis5x at gmail.com
Thu Jan 31 02:33:48 CST 2013
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
More information about the wine-devel