Mail Archives: cygwin/2004/05/28/07:26:29
Mike,
Please post instead of sending private email.
On Tue, May 25, 2004 at 02:08:49PM -0600, Arms, Mike wrote:
> I began my search trying to get the Perl module GD::Text
> to compile under Cygwin and Cywin Perl 5.8.2-1 .
> The "make" step would fail right away with:
>
> Checking if your kit is complete...
> Looks good
> C:\cygwin\bin\perl.exe (2780): *** unable to remap
> C:\cygwin\bin\cygfreetype-6.dll to same address as parent(0x?) != 0xD00000
> 10 [main] perl 2936 sync_with_child: child 2780(0x27C) died before
> initialization with status code 0x1
> 3880 [main] perl 2936 sync_with_child: *** child state child loading dlls
>
> Note: in the log above, I neglected to grab the hex address so
> I just show it as 0x? .
>
> So I did some googling and found several references to solving
> this problem by using your "rebaseall" utility. I followed the
> procedure (stopped all cygwin processes, fired up a Cygwin bash
> window, and ran "rebaseall -v"). It did not report that it
> changed "/usr/bin/cygfreetype-6.dll" . And no change when I
> ran "make". So I ran the "rebase" program directly with:
>
> rebase -v -b 13631488 /usr/bin/cygfreetype-6.dll
>
> That indicated that it changed the base address to 0xD00000.
> Ran the make again, and it did a similar complaint with
> "/usr/bin/cygz.dll". I ran rebase on it with an offset based
> on the 60000 size from the previous rebase:
>
> rebase -v -b 14024704 /usr/bin/cygz.dll
>
> So now the "make" is complaining:
>
> C:\cygwin\bin\perl.exe (2780): *** unable to remap
> C:\cygwin\bin\cygiconv-2.dll to same address as parent(0xDC0000) != 0xDD0000
>
> I hesitate to do any more rebasing for fear of totally hosing my
> Cywgin installation. I take it that each of these DLL's need
> a separate base address that does not overlap with any others
> (after taking into consideration their size)?
Yes.
> Is there a way to list the mappings for all of the cygwin DLLs?
The following will display the base addresses for all DLLs install via
Cygwin setup.exe:
$ zcat /etc/setup/*.gz | grep '.dll$' | sed 's/^/\//' | xargs objdump -p | egrep 'pei-i386|ImageBase'
> Is this contained in a file somewhere?
No.
> Why would rebaseall when passed the Files arguments choose to skip
> them? (That was from the output, although the names of the additional
> Files were not shown.)
IIRC, because they are read-only, non-existent, etc.
> Hoping for some illumination. Thanks.
Note the following:
1. Rebasing is usually an all or nothing operation. Hence, I typically
only recommend using rebaseall.
2. rebaseall only rebases DLLs installed via Cygwin's setup.exe and the
extra ones possibly specified by the -T option. So, if your make
produces new DLLs that are dlopen-ed by perl then this could be your
problem.
Jason
--
PGP/GPG Key: http://www.tishler.net/jason/pubkey.asc or key servers
Fingerprint: 7A73 1405 7F2B E669 C19D 8784 1AFD E4CC ECF4 8EF6
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -