[Vm-dev] another GCC issue?
Eliot Miranda
eliot.miranda at gmail.com
Wed Mar 28 15:55:39 UTC 2012
Hi Igor,
On Wed, Mar 28, 2012 at 5:43 AM, Igor Stasenko <siguctua at gmail.com> wrote:
>
> or perhaps not..
> i am trying to build the cog cocoa VMs using configs made by Esteban..
>
> CogCocoaIOSConfig new
> " generateForDebug;"
> generateForRelease;
> addExternalPlugins: #( FT2Plugin );
> addInternalPlugins: #( UnixOSProcessPlugin );
> generateSources; generate.
>
>
> it is not a functional bug.. because if i use #generateForDebug,
> everything works fine (but slow ;)
> but if i do #genearateForRelease, VM crashes with following:
>
> Program received signal EXC_BAD_ACCESS, Could not access memory.
> Reason: KERN_INVALID_ADDRESS at address: 0x5eedca7a
>
0x5eedca7a = 5EEDCA5E + a little, one orf my bad hex puns. This is early
in initialization in Cogit>compileClosedPICPrototype. 5EEDCA5E is used as
a branch target in the PIC prototype. The concretize methods need to know
whether a jump target is pointing to a fixup or is some real address to
jump to. Look at the code generated for Cogit>addressIsInInstructions: in
the various concretize methods for jumps. Looks like the optimizer is
decidging that addressIsInInstructions: is always true.
e.g. what if you redefine Cogit>addressIsInInstructions: so that instead of
^self cCode: 'address >= (void *)&abstractOpcodes[0] && address < (void
*)&abstractOpcodes[opcodeIndex]'
we use
^self cCode: '(unsigned long)(address) >= (unsigned long)&abstractOpcodes[0]
&& address < (unsigned long)&abstractOpcodes[opcodeIndex]'
?
HTH
Eliot
0x0000dfb6 in concretizeAt ()
> (gdb) bt
> #0 0x0000dfb6 in concretizeAt ()
> #1 0x00014996 in generateInstructionsAt ()
> #2 0x000000c9 in ?? ()
>
> i am not sure how to squeeze more info about this crash point..
> because stack trace is cut by gdb,
> which /.another rant here./ stupidly stops scanning stack frames once
> it discovers a frame which code is outside of memory covered by debug
> information..
>
> Ah.. yes.. and addition info.. the difference between generateForDebug
> and generateForRelease
>
> compilerFlagsRelease
> ^#(
> "'-fobjc-direct-dispatch'"
> '-msse3'
> "'-msse4.1'"
> "'-msse4.2'"
> "'-mdynamic-no-pic'"
> "'-fwritable-strings'"
> '-Os'
> '-fvisibility=hidden'
> '-funroll-loops'
> "'-fno-asm'"
> '-fasm-blocks'
> '-finline-functions'
> '-mfpmath=sse'
> '-fomit-frame-pointer'
> '-march=pentium-m'
> '-mtune=prescott'
> '-falign-functions=16'
> '-fno-gcse'
> '-fno-cse-follow-jumps'
> '-std=gnu99'
> '-DBUILD_FOR_OSX'
> '-DUSE_INLINE_MEMORY_ACCESSORS'
> '-DLSB_FIRST'
> '-DUSE_INLINE_MEMORY_ACCESSORS'
> '-DHAVE_SYS_TIME_H'
> '-DHAVE_NANOSLEEP'
> '-DICC_DEBUG=0'
> '-DICC_OPTLEVEL="speedHLO"'
> '-DICC_OPT_IPO_FOR_SINGLE_FILE_COMPILATION=1'
> '-DICC_OPT_PARALLEL=0'
> '-DICC_OPT_PREFETCH_INSERTION=1'
> '-DICC_OPT_PROVIDE_FRAME_PTR=0'
> '-DICC_OPT_USE_ARCH_IA32="SSE42"')
>
>
> compilerFlagsDebug
> ^#(
> '-g3'
> '-O0'
> '-DDEBUGVM=1')
>
> --
> Best regards,
> Igor Stasenko.
>
--
best,
Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20120328/07275f7d/attachment.htm
More information about the Vm-dev
mailing list