Hi David

I've tried compiling with and without BRAINDEAD_API, but I can't get it to hit 
the breakpoint. The following is my GDB breakpoint (just to confirm I have the 
right function):

(gdb) info breakpoints 
Num     Type           Disp Enb Address    What
1       breakpoint     keep y   0xb54bef60 in 
CodeGenLexicalScope::LoadValueOfTypeAtOffsetFromObject(char const*, char 
const*, char const*, unsigned int, llvm::Value*) at 
/home/chris/etoile/Etoile/Languages/LanguageKit/CodeGen/CodeGenLexicalScope.cpp:12

Cheers
Chris

On 19/10/2010, at 23:02 PM, David Chisnall 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
[email protected]






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

Répondre à