delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2010/12/17/12:12:41

X-Recipient: archive-cygwin AT delorie DOT com
X-SWARE-Spam-Status: No, hits=-0.9 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,TW_YG
X-Spam-Check-By: sourceware.org
Message-ID: <4D0B99EE.4010200@x-ray.at>
Date: Fri, 17 Dec 2010 18:12:14 +0100
From: Reini Urban <rurban AT x-ray DOT at>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.16) Gecko/20101123 SeaMonkey/2.0.11
MIME-Version: 1.0
To: cygwin AT cygwin DOT com
Subject: Re: rebase, perl
References: <AANLkTim53RYbGH8yU=HbqYHkwc5H0+5NU6A0sPsJH+2H AT mail DOT gmail DOT com> <AANLkTinu+c5EBeyctm5Ggv+9KPM9wjbtTpj6e3oQ4RJy AT mail DOT gmail DOT com> <AANLkTin6gy87SRM0UgCSZhPxr9F+NP3kD_7RYoC4jRYy AT mail DOT gmail DOT com> <B2473940-6B02-46E6-BAA0-7A91409D23E0 AT pobox DOT com>
In-Reply-To: <B2473940-6B02-46E6-BAA0-7A91409D23E0@pobox.com>
X-IsSubscribed: yes
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

--------------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 -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019