Hi David

I think I'm running 32bit Linux, as uname -a gives me i686. It is an SMP
kernel.

I compiled clang in release mode, but tried compiling LanguageKit in
debug mode. When I attach GDB to edlc, I can't seem to get the type
encoding parameter for LoadValueOfTypeAtOffsetFromObject(), as my call
stack is corrupted. Should I try LLVM/Clang in debug mode?

If you note below when I run edlc in interpreter mode, the exception
thrown if about not supporting type conversion for '^' - is this what
you were looking for?

Interestingly, some stuff works with the interpreter, but not always
i.e. it sometimes just segmentation faults.

I'll take a better look tonight.

Thanks again
Chris

On Tue, 19 Oct 2010 13:02 +0100, "David Chisnall" <[email protected]>
wrote:
> 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
> 
-- 
  Christopher Armstrong
  carmstrong ^^AT^ fastmail dOT com /Dot/ au


_______________________________________________
Etoile-discuss mailing list
[email protected]
https://mail.gna.org/listinfo/etoile-discuss

Répondre à