I've narrowed the demo DLL down to the minimal source I can trigger the
problem with. Doesn't need to compile with any of the runtime modules,
so the compile boils down to :
arm-mingw32ce-gcc -c lib7.c
arm-mingw32ce-ld --shared -Bdynamic -e DllMainCRTStartup -o lib7.dll
lib7.o -lcoredll
Note all the support libraries are effectively gone in the ld command
line.
Source is attached. By commenting the declaration of big_buf, Windows
Mobile sees a small executable, doesn't relocate it, so it works.
With big_buf, the new functionality in WM 6.1 kicks in to relocate, and
the DLL fails.
Well, it fails if you select the first of the three assigments - where
_image_base__ is used. The others do work.
The objdump now contains only one relocation, which causes the problem.
An objdump of the faulty dll is at
http://danny.backx.info/download/cegcc/lib7a.objdump , and of a working
one (another assignment selected) is at
http://danny.backx.info/download/cegcc/lib7b.objdump .
The test program that attempts to load this with LoadLibrary and then
executes doit and prints the result shows this result :
Started processing DLL(lib7.dll)
lib7.dll implements doit (0x780F102C)
Trying to call doit()
doit -> 0x780f1000
or, for the faulty version :
LoadLibrary(lib7.dll) : cannot load DLL -> error 1114
Help ?
Danny
--
Danny Backx ; danny.backx - at - scarlet.be ; http://danny.backx.info
#include <windows.h>
BOOL WINAPI
DllMainCRTStartup (HANDLE hDll, DWORD dwReason, LPVOID lpReserved)
{
return TRUE;
}
#if 0
do_pseudo_reloc (&__RUNTIME_PSEUDO_RELOC_LIST__,
&__RUNTIME_PSEUDO_RELOC_LIST_END__,
&__U(_image_base__));
#endif
static char big_buf[0x010000] = { '1' };
extern DWORD __U(__RUNTIME_PSEUDO_RELOC_LIST__);
extern DWORD __U(__RUNTIME_PSEUDO_RELOC_LIST_END__);
extern DWORD __U(_image_base__);
__declspec (dllexport)
int doit (void)
{
void *p;
p = &__U(_image_base__);
// p = &__U(__RUNTIME_PSEUDO_RELOC_LIST__);
// p = DllMainCRTStartup;
return (int)p;
}
------------------------------------------------------------------------------
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