Hmm, these all seem to be caused by the ugly hack that's needed for mapping
Smalltalk objects to Objective-C objects / SmallInt typedefs. The problem is
that Linux uses a braindead calling convention where a union of two
pointer-sized quantities is passed on the stack, rather than in a register.
I am not sure this is actually needed on 64-bit Linux; you can try commenting
out the #define BRAINDEAD_ABI in LKObject.h.
It is needed on 32-bit Linux, so I'll have a look at the issue there. When the
assertion fails in LoadValueOfTypeAtOffsetFromObject(), can you tell me what
the type encoding is?
David
On 19 Oct 2010, at 11:39, Christopher Armstrong wrote:
> Hi David
>
> Thanks for fixing that error so quickly, but now I have new set :-(. If it
> helps, I'm running Debian 5.0 i686 under VMWare Fusion 2.0 on an Intel
> Macbook. I've tried compiling in debug mode, but the stack traces are useless.
>
> It randomly segfaults, but most of the time I get stuff like this:
>
> ch...@debian:~/etoile/Etoile/Languages/Smalltalk/Tests/TestBlockAssignment$
> edlc -f test.st
> edlc: CodeGenLexicalScope.cpp:1025: llvm::Value
> *CodeGenLexicalScope::LoadValueOfTypeAtOffsetFromObject(const char *, const
> char *, const char *, unsigned int, llvm::Value *): Assertion
> `isLKObject(type)' failed.
> Aborted
> ch...@debian:~/etoile/Etoile/Languages/Smalltalk/Tests/TestBlockAssignment$
> edlc -i -f test.st
> 2010-10-16 23:48:48.230 edlc[26090] <NSException: 0x9460a10>
> NAME:LKInterpreterException REASON:ObjC to FFI type conversion not supported
> for '^' INFO:(nil)
> 2010-10-16 23:48:48.231 edlc[26090] Failed to compile input.
>
> In another case:
>
> ch...@debian:~/etoile/Etoile/Languages/Smalltalk/Tests/TestBlockAssignment$
> cd ../TestBlockReturn
> ch...@debian:~/etoile/Etoile/Languages/Smalltalk/Tests/TestBlockReturn$ edlc
> -f test.st
> edlc: Analysis.cpp:121: llvm::GlobalVariable*
> llvm::ExtractTypeInfo(llvm::Value*): Assertion `(GV ||
> isa<ConstantPointerNull>(V)) && "TypeInfo must be a global variable or NULL"'
> failed.
> Stack dump:
> 0. Running pass 'X86 DAG->DAG Instruction Selection' on function
> '@_i_SmalltalkTool__run'
> Aborted
> ch...@debian:~/etoile/Etoile/Languages/Smalltalk/Tests/TestBlockReturn$
> ch...@debian:~/etoile/Etoile/Languages/Smalltalk/Tests/TestBlockReturn$ edlc
> -i -f test.st
> 2010-10-16 23:50:15.770 edlc[26095] <NSException: 0xb5703538>
> NAME:LKInterpreterException REASON:ObjC to FFI type conversion not supported
> for '^' INFO:(nil)
> 2010-10-16 23:50:15.770 edlc[26095] Failed to compile input.
>
> And another case (with non-deterministic results):
>
> ch...@debian:~/etoile/Etoile/Languages/Smalltalk/Tests/TestCascadedMessages$
> edlc -f test.st
> edlc: Analysis.cpp:121: llvm::GlobalVariable*
> llvm::ExtractTypeInfo(llvm::Value*): Assertion `(GV ||
> isa<ConstantPointerNull>(V)) && "TypeInfo must be a global variable or NULL"'
> failed.
> Stack dump:
> 0. Running pass 'X86 DAG->DAG Instruction Selection' on function
> '@_i_SmalltalkTool__run'
> Aborted
> ch...@debian:~/etoile/Etoile/Languages/Smalltalk/Tests/TestCascadedMessages$
> edlc -i -f test.st
> Segmentation fault
> ch...@debian:~/etoile/Etoile/Languages/Smalltalk/Tests/TestCascadedMessages$
> edlc -i -f test.st
> A simple test?
> ch...@debian:~/etoile/Etoile/Languages/Smalltalk/Tests/TestCascadedMessages$
> edlc -i -f test.st
> Segmentation fault
>
> But interestingly, some stuff seems to work:
>
> ch...@debian:~/etoile/Etoile/Languages/Smalltalk/Tests/TestClassMethods1$
> edlc -f test.st
> edlc: Analysis.cpp:121: llvm::GlobalVariable*
> llvm::ExtractTypeInfo(llvm::Value*): Assertion `(GV ||
> isa<ConstantPointerNull>(V)) && "TypeInfo must be a global variable or NULL"'
> failed.
> Stack dump:
> 0. Running pass 'X86 DAG->DAG Instruction Selection' on function
> '@_i_SmalltalkTool__run'
> Aborted
> ch...@debian:~/etoile/Etoile/Languages/Smalltalk/Tests/TestClassMethods1$
> edlc -i -f test.st
> simple class method invocation
> simple class method invocation 2
> ch...@debian:~/etoile/Etoile/Languages/Smalltalk/Tests/TestClassMethods1$
> edlc -i -f test.st
> simple class method invocation
> simple class method invocation 2
> ch...@debian:~/etoile/Etoile/Languages/Smalltalk/Tests/TestClassMethods1$
> edlc -i -f test.st
> simple class method invocation
> simple class method invocation 2
> ch...@debian:~/etoile/Etoile/Languages/Smalltalk/Tests/TestClassMethods1$
> edlc -i -f test.st
> simple class method invocation
> simple class method invocation 2
>
> Cheers
> Chris
>
> On 18/10/2010, at 22:07 PM, David Chisnall wrote:
>
>> Hi Chris,
>>
>> Sorry about this - it's an issue that only occurs on platforms where int and
>> void* are different sizes, so I didn't see it. It should be fixed in r6444.
>>
>> David
>>
>> On 18 Oct 2010, at 10:03, Christopher Armstrong wrote:
>>
>>> Hi all
>>>
>>> I'm trying to run some of the test Smalltalk scripts in the Etoile
>>> distribution. I have installed the latest SVN versions of GNUstep, Etoile
>>> and LLVM/Clang. Everything has been compiled with clang.
>>>
>>> When I try and run any script, I get the following error:
>>>
>>> ch...@debian:~/etoile/Etoile/Languages/Smalltalk/Tests/TestBlockReturn$
>>> edlc -f test.st
>>> edlc: Constants.cpp:1215: static llvm::Constant*
>>> llvm::ConstantExpr::getPointerCast(llvm::Constant*, const llvm::Type*):
>>> Assertion `S->getType()->isPointerTy() && "Invalid cast"' failed.
>>> Aborted
>>> ch...@debian:~/etoile/Etoile/Languages/Smalltalk/Tests/TestBlockReturn$
>>>
>>> Any clue what this means? If I attach gdb to edlc, the backtrace at the
>>> point the exception is thrown is:
>>> #0 0xb802c424 in __kernel_vsyscall ()
>>> #1 0xb701b640 in raise () from /lib/i686/cmov/libc.so.6
>>> #2 0xb701d018 in abort () from /lib/i686/cmov/libc.so.6
>>> #3 0xb70145be in __assert_fail () from /lib/i686/cmov/libc.so.6
>>> #4 0xb5bb4576 in llvm::ConstantExpr::getPointerCast ()
>>> from
>>> /usr/local/GNUstep/Local/Library/Frameworks/LanguageKitCodeGen.framework/Versions/Current/./LanguageKitCodeGen
>>> #5 0xb5ec84e8 in ?? () from
>>> /usr/local/GNUstep/Local/Library/Frameworks/LanguageKitCodeGen.framework/Versions/Current/./LanguageKitCodeGen
>>> #6 0xb5ec9544 in ?? () from
>>> /usr/local/GNUstep/Local/Library/Frameworks/LanguageKitCodeGen.framework/Versions/Current/./LanguageKitCodeGen
>>> #7 0x000004bf in ?? ()
>>> #8 0xb5ecbf00 in ?? () from
>>> /usr/local/GNUstep/Local/Library/Frameworks/LanguageKitCodeGen.framework/Versions/Current/./LanguageKitCodeGen
>>> #9 0xb5f3c3a0 in ?? () from
>>> /usr/local/GNUstep/Local/Library/Frameworks/LanguageKitCodeGen.framework/Versions/Current/./LanguageKitCodeGen
>>> #10 0x08d9ed50 in ?? ()
>>> #11 0x08ddf49c in ?? ()
>>> #12 0xb54bc018 in CodeGenLexicalScope::InitialiseFunction (this=0x8dcaa40,
>>> humanna...@0xbff45568, symbols=0xbff45680,
>>> MethodTypes=0x8dca3d8 "^{LKObject_hack=(?...@i)}...@0:8", locals=1,
>>> loca...@0x8dcaa50, ar...@0x8dcaa80)
>>> at
>>> /home/chris/etoile/Etoile/Languages/LanguageKit/CodeGen/CodeGenLexicalScope.cpp:665
>>> #13 0xb54b4e86 in CodeGenMethod::CodeGenMethod (Mod=0x0, this=0x8dcaa40,
>>> MethodTypes=0x8dca3d8 "^{LKObject_hack=(?...@i)}...@0:8",
>>> localNames=0xbff45680,
>>> locals=1, MethodName=0x8dca878 "createCounter") at
>>> /home/chris/etoile/Etoile/Languages/LanguageKit/CodeGen/CodeGenModule.cpp:226
>>> #14 0xb54b5089 in CodeGenModule::BeginInstanceMethod (MethodName=0x8dca878
>>> "createCounter", this=0x8d9f038, localNames=0xbff45680, locals=1,
>>> MethodTypes=0x8dca3d8 "^{LKObject_hack=(?...@i)}...@0:8") at
>>> /home/chris/etoile/Etoile/Languages/LanguageKit/CodeGen/CodeGenModule.cpp:242
>>> Segmentation fault
>>>
>>> (The segmentation fault is from GDB)
>>>
>>> Thanks
>>> Chris
>>> --------
>>> Christopher Armstrong
>>> [email protected]
>>>
>>>
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> Etoile-discuss mailing list
>>> [email protected]
>>> https://mail.gna.org/listinfo/etoile-discuss
>>
>> -- Send from my Jacquard Loom
>>
>>
>> _______________________________________________
>> Etoile-discuss mailing list
>> [email protected]
>> https://mail.gna.org/listinfo/etoile-discuss
>
> --------
> Christopher Armstrong
> [email protected]
>
>
>
>
>
>
> _______________________________________________
> Etoile-discuss mailing list
> [email protected]
> https://mail.gna.org/listinfo/etoile-discuss
-- Send from my Jacquard Loom
_______________________________________________
Etoile-discuss mailing list
[email protected]
https://mail.gna.org/listinfo/etoile-discuss