http://bugs.winehq.org/show_bug.cgi?id=13601
Summary: wine build incompatible with iPhone SDK Product: Wine Version: 1.0-rc3 Platform: Macintosh OS/Version: Mac OS X 10.5 Status: UNCONFIRMED Severity: major Priority: P2 Component: build-env AssignedTo: wine-bugs@winehq.org ReportedBy: wine-2008@ryandesign.com
wine (versions 0.9.44 thru 1.0-rc3 at least) compiles fine with Xcode 3.0 on Mac OS X 10.5.3 Intel, but fails with the iPhone SDK beta 5 or beta 6 (a.k.a. Xcode 3.1 beta).
/usr/bin/gcc-4.0 -c -I. -I. -I../../include -I../../include -D__WINESRC__ -D_COMCTL32_ -D_REENTRANT -fPIC -Wall -pipe -fno-strict-aliasing -Wdeclaration-after-statement -Wwrite-strings -Wpointer-arith -I/mp/include -O2 -o status.o status.c ../../tools/winegcc/winegcc -B../../tools/winebuild -shared ./crtdll.spec crtdll_main.o -o crtdll.dll.so -lmsvcrt -lkernel32 ../../libs/port/libwine_port.a -L/mp/lib -framework CoreServices -lz ./crtdll.spec:44: external symbol 'CRTDLL__basemajor_dll' is not a function ./crtdll.spec:45: external symbol 'CRTDLL__baseminor_dll' is not a function ./crtdll.spec:46: external symbol 'CRTDLL__baseversion_dll' is not a function ./crtdll.spec:66: external symbol 'CRTDLL__cpumode_dll' is not a function ./crtdll.spec:243: external symbol 'CRTDLL__osmajor_dll' is not a function ./crtdll.spec:244: external symbol 'CRTDLL__osminor_dll' is not a function ./crtdll.spec:245: external symbol 'CRTDLL__osmode_dll' is not a function ./crtdll.spec:247: external symbol 'CRTDLL__osversion_dll' is not a function winegcc: ../../tools/winebuild/winebuild failed make[2]: *** [crtdll.dll.so] Error 2 make[1]: *** [crtdll] Error 2
Here's the MacPorts ticket for this issue:
http://trac.macports.org/ticket/13000
http://bugs.winehq.org/show_bug.cgi?id=13601
--- Comment #1 from Dmitry Timoshkov dmitry@codeweavers.com 2008-06-02 07:10:09 --- Isn't that exactly the case when you should report this to Apple, not here?
http://bugs.winehq.org/show_bug.cgi?id=13601
Juan Lang juan_lang@yahoo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|wine build incompatible with|can't compile wine with |iPhone SDK |latest iPhone SDK installed
--- Comment #2 from Juan Lang juan_lang@yahoo.com 2008-06-02 10:18:00 --- Since using XCode version 3.0 works, this seems much more likely to be an Apple bug than a Wine one. I'm adjusting the summary at least to be clearer.
http://bugs.winehq.org/show_bug.cgi?id=13601
--- Comment #3 from wine-2008@ryandesign.com 2008-06-02 14:57:53 --- I've now filed rdar://problem/5979712 with Apple, so we'll see what they say.
http://bugs.winehq.org/show_bug.cgi?id=13601
wine-2008@ryandesign.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|can't compile wine with |can't compile wine with |latest iPhone SDK installed |Xcode 3.1 or iPhone SDK Version|1.0-rc3 |1.0.0
--- Comment #4 from wine-2008@ryandesign.com 2008-07-14 05:18:17 --- Xcode 3.1 has been released in final form, as has the iPhone SDK (which includes Xcode 3.1) and the issue remains. Since this is now labeled as final release-quality Apple software, and also no longer limited to just iPhone developers, this issue may start affecting more users. Apple has not responded to my bug report. The problem remains on Mac OS X 10.5.4 and with wine 1.0.0 and 1.1.1. The beginnings of a workaround are posted here:
http://trac.macports.org/ticket/13000#comment:48
I will try to write a patch for wine for MacPorts to use to work around this problem.
http://bugs.winehq.org/show_bug.cgi?id=13601
James Hawkins truiken@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Version|1.0.0 |1.0-rc3
--- Comment #5 from James Hawkins truiken@gmail.com 2008-07-15 13:30:01 --- Don't change the original reported version.
http://bugs.winehq.org/show_bug.cgi?id=13601
--- Comment #6 from wine-2008@ryandesign.com 2008-07-15 16:45:59 --- Apple Worldwide Developer Relations has responded to the bug I filed with them and closed it, saying it is a bug in wine. Here is their response:
---- Begin Apple response -----
This is wine's own tool complaining about crtdll_main.o which seems correctly compiled to us:
[wine-1.0-rc3/dlls/crtdll]> nm -m crtdll_main.o | grep CRTDLL__bas 00000004 (common) (alignment 2^2) external _CRTDLL__basemajor_dll 00000004 (common) (alignment 2^2) external _CRTDLL__baseminor_dll 00000004 (common) (alignment 2^2) external _CRTDLL__baseversion_dll
which matches the source code which declares these as tentative definitions (uninitialized global variables).
Note: that tentative definitions are not really needed in source code. They are a remnant of pre-ANSI C. When the keyword "extern" was introduced, there was no longer any need for ambiguity about what "int foo;'" meant. If it is a declaration, you could write it as "extern int foo;". If it is a definition you could write it as "int foo=0;".
----- End Apple response -----
http://bugs.winehq.org/show_bug.cgi?id=13601
--- Comment #7 from Alexandre Julliard julliard@winehq.org 2008-07-18 14:04:59 --- (In reply to comment #6)
This is wine's own tool complaining about crtdll_main.o which seems correctly compiled to us:
[wine-1.0-rc3/dlls/crtdll]> nm -m crtdll_main.o | grep CRTDLL__bas 00000004 (common) (alignment 2^2) external _CRTDLL__basemajor_dll 00000004 (common) (alignment 2^2) external _CRTDLL__baseminor_dll 00000004 (common) (alignment 2^2) external _CRTDLL__baseversion_dll
which matches the source code which declares these as tentative definitions (uninitialized global variables).
The file is compiled properly, the problem is that nm -u reports the common symbols as undefined. I think that's a bug in nm or in the linker, I'd suggest to reopen the bug with Apple.
Note also that Xcode 3.0 and 3.1 both miscompile the 16-bit relay code, so currently the only way to get a fully functional Wine is to build with Xcode 2.x.
http://bugs.winehq.org/show_bug.cgi?id=13601
--- Comment #8 from wine-2008@ryandesign.com 2008-07-18 14:25:10 --- (In reply to comment #7)
The file is compiled properly, the problem is that nm -u reports the common symbols as undefined. I think that's a bug in nm or in the linker, I'd suggest to reopen the bug with Apple.
I've relayed this information to Apple.
Note also that Xcode 3.0 and 3.1 both miscompile the 16-bit relay code, so currently the only way to get a fully functional Wine is to build with Xcode 2.x.
How might this problem manifest itself? The wine compile does at least complete with Xcode 3.0 so I didn't know about this problem.
Xcode 2.x is only available on Tiger; this means wine cannot be compiled properly on Leopard? This sounds like a separate issue. Is there a separate Wine and/or Radar issue number for this?
http://bugs.winehq.org/show_bug.cgi?id=13601
--- Comment #9 from Alexandre Julliard julliard@winehq.org 2008-07-19 03:38:24 --- (In reply to comment #8)
How might this problem manifest itself? The wine compile does at least complete with Xcode 3.0 so I didn't know about this problem.
It will crash as soon as you try to run 16-bit code.
Xcode 2.x is only available on Tiger; this means wine cannot be compiled properly on Leopard? This sounds like a separate issue. Is there a separate Wine and/or Radar issue number for this?
I filed Radar bug 5935237 a couple of months ago, but I haven't heard anything back.
http://bugs.winehq.org/show_bug.cgi?id=13601
Zhangrong Huang hzhrong@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |hzhrong@gmail.com
--- Comment #10 from Zhangrong Huang hzhrong@gmail.com 2008-07-23 12:53:20 --- damn apple!
I think it's an issue of ld:
Try the test:
1. compile test1.o from asm code test1.s: $ cat test1.s .data .long _CRTDLL__basemajor_dll .long _CRTDLL__baseminor_dll
$ as -o test1.o test1.s $ nm test1.o U _CRTDLL__basemajor_dll U _CRTDLL__baseminor_dll
2. compile test2.o from C code test2.c: $ cat test2.c unsigned int CRTDLL__basemajor_dll; unsigned int CRTDLL__baseminor_dll;
$ gcc -g -c -o test2.o test2.c $ nm test2.o 00000004 C _CRTDLL__basemajor_dll 00000004 C _CRTDLL__baseminor_dll
3. merge test1.o and test2.o to test.o
using new iPhone SDK ld: $ ld -r -o test.o test1.o test2.o $ nm test.o 00000004 C _CRTDLL__basemajor_dll U _CRTDLL__basemajor_dll 00000004 C _CRTDLL__baseminor_dll U _CRTDLL__baseminor_dll
using old ld from iPhone SDK beta1: $ ~/bin/ld -r -o test.o test1.o test2.o $ nm test.o 00000004 C _CRTDLL__basemajor_dll 00000004 C _CRTDLL__baseminor_dll
http://bugs.winehq.org/show_bug.cgi?id=13601
--- Comment #11 from wine-2008@ryandesign.com 2008-08-04 16:02:54 --- wine 1.1.2 compiles properly on Xcode 3.1. It looks like you've applied workarounds for this problem in your source?
http://bugs.winehq.org/show_bug.cgi?id=13601
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |FIXED
--- Comment #12 from Alexandre Julliard julliard@winehq.org 2008-08-04 16:19:20 --- (In reply to comment #11)
wine 1.1.2 compiles properly on Xcode 3.1. It looks like you've applied workarounds for this problem in your source?
Yes, I committed a workaround for the common symbols bug. Note that 16-bit code will still be miscompiled, I don't have a workaround for that one.
http://bugs.winehq.org/show_bug.cgi?id=13601
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #13 from Alexandre Julliard julliard@winehq.org 2008-08-22 10:47:22 --- Closing bugs fixed in 1.1.3.
http://bugs.winehq.org/show_bug.cgi?id=13601
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |1.0.1
--- Comment #14 from Alexandre Julliard julliard@winehq.org 2008-10-16 07:37:56 --- Fixed by 9c29dbd9873b41f5334a858d8806a256bf00f880, nominating for 1.0.1.
http://bugs.winehq.org/show_bug.cgi?id=13601
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Platform|Macintosh |PC
http://bugs.winehq.org/show_bug.cgi?id=13601
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- OS/Version|Mac OS X 10.5 |Mac OS X