Mail Archives: cygwin/2010/12/17/12:12:41
--------------040309020103020003040209
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
>> Yes. Adding a -d0 solved so far the problems on Win7 for me.
>>
>> diff -u /usr/bin/perlrebase~ /usr/bin/perlrebase
>> --- /usr/bin/perlrebase~ 2010-11-27 10:13:07.806866000 +0100
>> +++ /usr/bin/perlrebase 2010-12-01 07:50:13.843953700 +0100
>> @@ -39,5 +39,5 @@
>>
>> /usr/bin/rebase -v -b $baseaddr -T rebase$suff.lst
>>
>> -[ -e /usr/bin/peflags.exe ]&& /usr/bin/grep .dll rebase$suff.lst |
>> /usr/bin/peflags -d -T ->/dev/null
>> +[ -e /usr/bin/peflags.exe ]&& /usr/bin/grep .dll rebase$suff.lst |
>> /usr/bin/peflags -d0 -T ->/dev/null
>> /usr/bin/cat rebase$suff.lst | /usr/bin/xargs chmod g-w
>
> Reini, this diff implies that the version of perlrebase I have is out of date since it doesn't use peflags anywhere. I also found an old post from back in July where you stated that its "baseaddr=0x5400000" is missing a 0, suggesting it is at least that old.
> http://cygwin.com/ml/cygwin/2010-07/msg00146.html
>
> Where do I get an updated perlrebase? I've tried performing updates from the latest released cygwin installer (no snapshots), but I still have what appears to be an outdated version.
perlrebase is in perl.
latest is perl-5.10.1-4
> Perhaps this is part of my current cpan/rebase hell....
Looks like so.
Attached is my latest and greatest version,
you don't need to install the complete perl, as not much changed there.
Now I'm trying starting from 56000000 as base, this seems to a bit
better on win7 with lots of apps open.
--
Reini Urban
http://phpwiki.org/ http://murbreak.at/
--------------040309020103020003040209
Content-Type: text/plain;
name="perlrebase"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="perlrebase"
#!/bin/sh
# The default perl modules are properly rebased, a rebase clash is very unlikely.
# However with more and more CPAN XS extensions being added over time,
# *** fatal error - unable to remap some.dll to same address as parent
# will become more likely, and those new DLLs are not rebased by a normal rebaseall.
# perlrebase starts afresh all perl DLLs from a pretty low base upwards.
suff=$1
suff=${suff:=5.10.1}
baseaddr=$2
# use a rather low base and go upwards, might clash with some Win7 system dlls
baseaddr=${baseaddr:=0x56000000}
perl=/usr/local/bin/perl$suff.exe
if [ ! -f $perl ]; then
perl=/usr/bin/perl$suff.exe
if [ ! -f $perl ]; then
echo "$perl and /usr/local/bin/perl$suff.exe not found"
echo "usage: perlrebase [5.13.5 [baseaddr]]"
exit
fi
fi
dll=$(ldd $perl | $perl -anle 'print $F[2] if /cygperl/')
# ldd was broken in 1.7.6
if [ -z $dll ]; then
cygcheck $perl | $perl -anle 'print $F[0] if /cygperl/' >/tmp/$$
dll=$(cygpath `cat /tmp/$$`)
rm /tmp/$$
fi
arch=$($perl -MConfig -MFile::Basename -e'print basename($Config{archlib})')
ver=$($perl -MConfig -MFile::Basename -e'print basename(dirname $Config{archlib})')
# write to a local .lst to be able to re-order dlls locally
echo $perl > rebase$suff.lst
if [ ! -d /usr/lib/perl5/$ver/$arch/auto ]; then
echo "no archlib found for $perl"
exit
fi
if [ ! -e /usr/bin/rebase.exe ]; then
echo "/usr/bin/rebase.exe not found. Install the rebase package"
exit
fi
echo $dll >> rebase$suff.lst
/usr/bin/find /usr/lib/perl5/{,site_perl/,vendor_perl/}$ver/$arch/auto/ -name \*.dll >> rebase$suff.lst
/usr/bin/cat rebase$suff.lst | /usr/bin/xargs chmod ug+w
[ -e /usr/bin/peflags.exe ] && /usr/bin/peflags -t $perl
/usr/bin/rebase -v -b $baseaddr -T rebase$suff.lst
[ -e /usr/bin/peflags.exe ] && /usr/bin/grep .dll rebase$suff.lst | /usr/bin/peflags -d0 -T - >/dev/null
/usr/bin/cat rebase$suff.lst | /usr/bin/xargs chmod g-w
--------------040309020103020003040209
Content-Type: text/plain; charset=us-ascii
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
--------------040309020103020003040209--
- Raw text -