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 : %ebp not used for stack frame
or something.
Chip