On Thu, 2009-12-31 at 15:14 +0100, Kai Tietz wrote:
> 2009/12/31 Danny Backx <[email protected]>:
> > On Thu, 2009-12-31 at 14:30 +0100, Kai Tietz wrote:
> >> Could you try for the __image_base__ symbol the following hack. Maybe
> >> it is related to an issue in doing base relocation here in instruction
> >> (which could point to some other issue in object relaxing).
> >>
> >> add the following:
> >> static volatile void *_ib_address = &__image_base__;
> >>
> >> and then later instead of '&__image_base__' use '_ib_address'.
> >
> > Don't know why, but this causes my test program to crash. (Get the WM
> > error handling screen.) Should I try to get the info from it ?
> >
> > Danny
> > --
> > Danny Backx ; danny.backx - at - scarlet.be ; http://danny.backx.info
> >
> >
>
> Hmm, well. Could be interesting. One issue before doing this. Is the
> The PE section marked as loaded and allocated?
Not sure which section you mean. Here is the relevant part of objdump :
Idx Name Size VMA LMA File off Algn
0 .text 0000006c 01001000 01001000 00000400 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00010004 01002000 01002000 00000600 2**2
CONTENTS, ALLOC, LOAD, DATA
2 .rdata 00000054 01013000 01013000 00010800 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
3 .reloc 00000018 01014000 01014000 00010a00 2**2
CONTENTS, ALLOC, LOAD, READONLY, DATA
> Possibly you can show me your altered test code, too.
Sure :
http://danny.backx.info/download/cegcc/lib7.c
http://danny.backx.info/download/cegcc/lib7.s
http://danny.backx.info/download/cegcc/lib7.objdump
http://danny.backx.info/download/cegcc/lib7.dll
I just ran this code again, and I'm copying this from the "Error
Reporting" page :
ProcID FramePtr RetAddr
B65F4E82 09BAFC64 7805103C
My ARM assembler knowledge is not too hot, here is that part of the
code :
0100102c <doit>:
100102c: e52db004 push {fp} ; (str fp, [sp,
#-4]!)
1001030: e28db000 add fp, sp, #0
1001034: e24dd004 sub sp, sp, #4
1001038: e59f3018 ldr r3, [pc, #24] ; 1001058 <doit
+0x2c>
100103c: e5933000 ldr r3, [r3]
1001040: e50b3004 str r3, [fp, #-4]
1001044: e51b3004 ldr r3, [fp, #-4]
1001048: e1a00003 mov r0, r3
100104c: e28bd000 add sp, fp, #0
1001050: e8bd0800 pop {fp}
1001054: e1a0f00e mov pc, lr
1001058: 01012000 tsteq r1, r0
Is it trying to dereference a pointer too far ?
Further in the error reporting screens, there's a limited memory dump
that happens to include the right area (copied from above, last line
changed into the version from the dump) :
100104c: e28bd000 add sp, fp, #0
1001050: e8bd0800 pop {fp}
1001054: e1a0f00e mov pc, lr
78051058: 01870000
This is odd, I would have expected 0x78050000 in that field.
Danny
--
Danny Backx ; danny.backx - at - scarlet.be ; http://danny.backx.info
------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev
_______________________________________________
Cegcc-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/cegcc-devel