Vincent R. wrote:

>> So Dave, question coundn't we manually change .idata section 
>> characteristics for instance instead of disabling auto-import ?
> 
> 
> Ok I just tried to modify .idata section characteristics by removing write 
> attributes and of course now I don't even have an error message, nothing
> happens.

  Yep; if you are using auto-import, you have to have writeable .rodata
sections, and since WM/CE doesn't allow that, it looks like auto-import is
screwed on WMCE and your choices are either 1) annotate all w32api headers
with dllimport, or 2) get v2 pseudo-relocs working.

> .idata section BUT IAT needs to have write access. In french we have an
> expression that could be translated by "a snake swallowing its own tail"...

  In Liverpool we talk about Our Rob or Ross ...

> Second issue is .bss and from my limited knowledge of low level stuff this 
> is the place where should go uninitialized data but of course they might be
> received a value during program execution so once again they need write
> attribute. So I would recommend to put .bss in .data. Of course I cannot
> guarantee it will sove our issue but this is the only thing I can propose
> for now.

  The real problem here (I think, without having recently built cegcc and
tested it) is that auto-import works by scattering little import tables
throughout the .text, .data and even (and this is a particular part of the
problem) .rodata section(s) of your exe.  That means they have to be made
writable, otherwise when the run-time loader tries to fix up all the IAT
entries, it will SEGV - it knows enough to make the .idata section writeable,
but that doesn't help because auto-import works by putting import tables in
other places.

  That's not a problem on (e.g.) the windows PE platforms, because the runtime
loader there is less strict, but what I think we've all found out over the
past little while is that the WMCE loader is much more rigorous about the
executable image file format.

  Pseudo-relocs v2. solves this problem by not (ab)using the runtime loader's
import resolution facility at all, but by keeping track of all the imported
addresses in a list, and running a bit of code at CRT startup time that
switches the relevant pages into read/write mode before relocating the
imports, thus avoiding the access violation that crashes the runtime loader.
I would expect that to solve the problem on WMCE too.

    cheers,
      DaveK



------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Cegcc-devel mailing list
Cegcc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/cegcc-devel

Reply via email to