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/
#!/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
--
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