objc compilation fails on 32bit OS X
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"
Trac metadata
Trac field | Value |
---|---|
Version | 7.0.3 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |