|
View:
New views
3 Messages
—
Rating Filter:
Alert me
|
|
|
LanguageKit on 64bit platformsHello guys,
after not having updated for a while, I checked out llvm (+clang) trunk yesterday and was able to build LanguageKit with it so that it actually seems to work on 64bit platforms. I've already added a 64bit version of the small integer message bitcode to trunk so now people on 64bit platforms can give LK a spin without installing clang and recompiling MsgSendSmallint.m. Unfortunately some kinks still need to be worked out: Quite a few tests from the Smalltalk testsuite are failing for me (list attached) and need further investigation... Cheers, Niels ------------------------------------------------------ Test: TestBlockAssignment TestBlockAssignment: OK ------------------------------------------------------ Test: TestBlockReturn TestBlockReturn: OK ------------------------------------------------------ Test: TestBlockReturningABlock TestBlockReturningABlock: OK ------------------------------------------------------ Test: TestCascadedMessages TestCascadedMessages: OK ------------------------------------------------------ Test: TestClassMethods1 TestClassMethods1: OK ------------------------------------------------------ Test: TestClassMethods2 TestClassMethods2: OK ------------------------------------------------------ Test: TestClassMethods3 TestClassMethods3: OK ------------------------------------------------------ Test: TestClassVariables TestClassVariables: OK ------------------------------------------------------ Test: TestCommaOperator TestCommaOperator: OK ------------------------------------------------------ Test: TestCountingWhileTrue TestCountingWhileTrue: OK ------------------------------------------------------ Test: TestDeeplyNestedBlocks TestDeeplyNestedBlocks: OK ------------------------------------------------------ Test: TestFloatBoxing TestFloatBoxing: OK ------------------------------------------------------ Test: TestIntArithmetic TestIntArithmetic: OK ------------------------------------------------------ Test: TestIntegerAddition TestIntegerAddition: OK ------------------------------------------------------ Test: TestIntegerUpTo TestIntegerUpTo: OK ------------------------------------------------------ Test: TestJustAnInteger TestJustAnInteger: OK ------------------------------------------------------ Test: TestMutRecursiveClassDefs TestMutRecursiveClassDefs: FAIL (crash) == 2009-10-04 14:14:53.981 edlc[8362] ERROR: Unrecognised symbol: SuffixList 2009-10-04 14:14:53.982 edlc[8362] Warning: Selector 'objectAtIndex:' is polymorphic. Assuming @20@0:8i16 2009-10-04 14:14:53.982 edlc[8362] Warning: Selector 'count' is polymorphic. Assuming I8@0:4 2009-10-04 14:14:53.982 edlc[8362] Failed to compile input. == ------------------------------------------------------ Test: TestNSPointBoxing TestNSPointBoxing: FAIL result | expected Boxing: Boxing: {x = 8.65376e-38; y = 0} | {x = 1.1; y = 10.2} Unboxing: Unboxing: 0 | 1 ------------------------------------------------------ Test: TestNSRangeBoxing runtest.sh: line 25: 8293 Aborted ( edlc -f test.st > results.txt 2> /dev/null ) TestNSRangeBoxing: FAIL (crash) == (gdb) run Starting program: /home/thebeing/GNUstep/Tools/x86_64/linux-gnu/gnu-gnu-gnu/edlc -f test.st [Thread debugging using libthread_db enabled] Create range: {location=0, length=9} Program received signal SIGABRT, Aborted. 0x00007ffff5aedd25 in raise () from /lib/libc.so.6 (gdb) bt #0 0x00007ffff5aedd25 in raise () from /lib/libc.so.6 #1 0x00007ffff5af0de1 in abort () from /lib/libc.so.6 #2 0x00007ffff62bcdc0 in objc_exception_throw (value=0xbf2cc0) at /build/buildd/gcc-4.4-4.4.1/src/libobjc/exception.c:496 #3 0x00007ffff68cb4fb in -[NSException raise] (self=0xbf2cc0, _cmd=0x20ae) at NSException.m:342 #4 0x00007ffff68cba95 in +[NSException raise:format:] (self=0x7ffff6c9dc00, _cmd=<value optimized out>, name=0x7ffff6c9e400, format=0x7ffff6c70120) at NSException.m:261 #5 0x00007ffff684b58f in -[GSCString substringWithRange:] (self=0x7ffff7f715f0, _cmd=0x7ffff7f71300, aRange=<value optimized out>) at GSString.m:3150 #6 0x00007ffff7eb96f4 in ?? () #7 0x0000000000b50280 in ?? () #8 0x00007ffff7eb9698 in ?? () #9 0x0000000000000000 in ?? () (gdb) frame 3 #3 0x00007ffff68cb4fb in -[NSException raise] (self=0xbf2cc0, _cmd=0x20ae) at NSException.m:342 342 @throw self; (gdb) print-object self <NSException: 0xbf2cc0> NAME:NSRangeException REASON:in substringWithRange:, range { 11862656, 0 } extends beyond size (26) INFO:(nil) = ------------------------------------------------------ Test: TestNSRectBoxing TestNSRectBoxing: FAIL result | expected Boxing: Boxing: {x = 8.30499e-38; y = 0; width = 0; height = 0} | {x = 1.2; y = 2.7; width = 3.032; height = -5e+09} Unboxing: Unboxing: 0 | 1 ------------------------------------------------------ Test: TestNSSizeBoxing TestNSSizeBoxing: FAIL result | expected Boxing: Boxing: {width = 9.99968e-38; height = 0} | {width = 13.1; height = 50.5} Unboxing: Unboxing: 0 | 1 ------------------------------------------------------ Test: TestNestedBlocks TestNestedBlocks: OK ------------------------------------------------------ Test: TestNonLocalReturn TestNonLocalReturn: FAIL result | expected test failed | test succeeded ------------------------------------------------------ Test: TestNonLocalReturn2 TestNonLocalReturn2: FAIL result | expected test failed | test succeeded ------------------------------------------------------ Test: TestOperatorDefinition TestOperatorDefinition: OK ------------------------------------------------------ Test: TestPolymorphicSelectors TestPolymorphicSelectors: FAIL result | expected 42 42 31614112 \ 12345 ------------------------------------------------------ Test: TestPrototypes TestPrototypes: OK ------------------------------------------------------ Test: TestRetainOnlyOnce runtest.sh: line 25: 8332 Segmentation fault ( edlc -f test.st > results.txt 2> /dev/null ) TestRetainOnlyOnce: FAIL (crash) == (Problem as described in test.st) == ------------------------------------------------------ Test: TestSimpleSelect TestSimpleSelect: OK ------------------------------------------------------ Test: TestTimesRepeat TestTimesRepeat: OK ------------------------------------------------------ Test: TestTranscript TestTranscript: OK _______________________________________________ Etoile-dev mailing list Etoile-dev@... https://mail.gna.org/listinfo/etoile-dev |
|
|
Re: LanguageKit on 64bit platformsHi Niels,
A few of these are expected fails. Those that are not are the result of ABI mismatch (calling functions with the wrong calling convention). You can fix this quite easily by adding the correct values for x86-64 to ABI.h in LanguageKit; the slight catch is that I have no idea what the correct values are, but hopefully you can work it out using the power of guesswork... David On 4 Oct 2009, at 13:26, Niels Grewe wrote: > Hello guys, > > after not having updated for a while, I checked out llvm (+clang) > trunk > yesterday and was able to build LanguageKit with it so that it > actually > seems to work on 64bit platforms. I've already added a 64bit version > of > the small integer message bitcode to trunk so now people on 64bit > platforms can give LK a spin without installing clang and recompiling > MsgSendSmallint.m. > Unfortunately some kinks still need to be worked out: Quite a few > tests > from the Smalltalk testsuite are failing for me (list attached) and > need > further investigation... > > Cheers, > > > Niels > <st64.txt>_______________________________________________ > Etoile-dev mailing list > Etoile-dev@... > https://mail.gna.org/listinfo/etoile-dev -- Sent from my Cray X1 _______________________________________________ Etoile-dev mailing list Etoile-dev@... https://mail.gna.org/listinfo/etoile-dev |
|
|
Re: LanguageKit on 64bit platformsOn Sun, Oct 04, 2009 at 03:31:57PM +0100, David Chisnall wrote:
> A few of these are expected fails. Okay. Are the expected failures documented somewhere? I somehow figure that the unexpected fails are at least the *Boxing tests. > Those that are not are the result of ABI mismatch (calling functions > with the wrong calling convention). You can fix this quite easily by > adding the correct values for x86-64 to ABI.h in LanguageKit; the > slight catch is that I have no idea what the correct values are, but > hopefully you can work it out using the power of guesswork... The x86_64 ABI documentation is available online [0]. But the conventions for passing arguments are a bit beyond me. (There is an algorithm to be followed in order to determine whether you need to pass a structure on the stack, but it's to late tonight for me to grok that.) At least I think I could successfully determine that you use 6 registers for passing integers and 8 for passing floats. Also setting SMALL_FLOAT_STRUCTS_ON_STACK and PASS_STRUCTS_AS_POINTER to 'true' (just guessing) seems to improve things, but still fails for some boxing tests (i.e. NS(Range|Rect)). Anyways: Thanks for the pointer. I think I know where I need to be heading... Cheers, Niels [0] http://www.x86-64.org/documentation.html _______________________________________________ Etoile-dev mailing list Etoile-dev@... https://mail.gna.org/listinfo/etoile-dev |
| Free embeddable forum powered by Nabble | Forum Help |