#5106: objc compilation fails on 32bit OS X
---------------------------------+------------------------------------------
    Reporter:  igloo             |        Owner:              
        Type:  bug               |       Status:  new         
    Priority:  normal            |    Milestone:              
   Component:  Compiler          |      Version:  7.0.3       
    Keywords:                    |     Testcase:              
   Blockedby:                    |   Difficulty:              
          Os:  Unknown/Multiple  |     Blocking:              
Architecture:  Unknown/Multiple  |      Failure:  None/Unknown
---------------------------------+------------------------------------------
 With `objc-hi.m`:
 {{{
 #import <Foundation/Foundation.h>
 #import <stdio.h>

 @interface HelloWorld : NSObject {
   // no instance variables
 }

 // methods
 - (void)sayHello;

 @end

 @implementation HelloWorld

 - (void)sayHello
 {
   printf("Hello world\n");
 }

 @end

 #import <Foundation/Foundation.h>

 int main (int argc, const char * argv[]) {
   NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

   // my stuff
   HelloWorld *hw = [[HelloWorld alloc] init];
   [hw autorelease];

   [hw sayHello];

   [pool release];
   return 0;
 }
 }}}

 compilation fails with a 32bit GHC on OS X. Here's the essence, using
 `gcc` to compile:
 {{{
 $ /usr/bin/gcc -x objective-c -c objc-hi.m -march=i686 -m32
 In file included from
 
/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h:29,
                  from
 
/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverServices.h:32,
                  from
 
/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h:125,
                  from
 
/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AE.h:20,
                  from
 /System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h:21,
                  from
 /System/Library/Frameworks/Foundation.framework/Headers/NSURLError.h:17,
                  from
 /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:81,
                  from objc-hi.m:1:
 /usr/lib/gcc/i686-apple-darwin10/4.2.1/include/xmmintrin.h:36:3: error:
 #error "SSE instruction set not enabled"
 In file included from
 
/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/DriverServices.h:32,
                  from
 
/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/CarbonCore.h:125,
                  from
 
/System/Library/Frameworks/CoreServices.framework/Frameworks/AE.framework/Headers/AE.h:20,
                  from
 /System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h:21,
                  from
 /System/Library/Frameworks/Foundation.framework/Headers/NSURLError.h:17,
                  from
 /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:81,
                  from objc-hi.m:1:
 
/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h:216:
 error: expected specifier-qualifier-list before '__m128'
 }}}

 Compilation succeeds if we use `-march=pentium4` instead, but `aclocal.m4`
 says (note the comment):
 {{{
     i386-apple-darwin)
         # By default, gcc on OS X will generate SSE
         # instructions, which need things 16-byte aligned,
         # but we don't 16-byte align things. Thus drop
         # back to generic i686 compatibility. Trac #2983.
         $2="$$2 -march=i686 -m32"
         $3="$$3 -march=i686 -m32"
         $4="$$4 -arch i386"
         $5="$$5 -march=i686 -m32"
 }}}

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/5106>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler

_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to