This is the mail archive of the cygwin-apps@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: rebase for setup.


Rob,

On Fri, Dec 28, 2001 at 11:10:31AM +1100, Robert Collins wrote:
> ----- Original Message -----
> From: "Jason Tishler" <jason@tishler.net>
> > If so, then I don't fully grok it -- please try again.
> > Specifically,
> > I don't understand what is install (or how it differs from setup).
> 
> install = /bin/install - I'm suggesting that this gets updated as
> well,
> so that make install in python works without needing to run rebase.

Ah, I get it now -- I didn't even think of the make install case.

Unfortunately, it does not actually handle pathological (or should I say
incestuous) programs such as Python that use freshly built components
(i.e., DLLs) during the build process itself.

Does it make any sense to change Cygwin's ld to rebase on the fly
instead?

> > Also, the rebase algorithm seems more complicated than mine (and
> > MS's)
> > simplicity one.  So, I must be missing something -- please help me
> > understand the issues.
> 
> Well as I understand yours it's "rebase EVERYTHING on the system" "x
> bytes apart".

Correct, but...

> Mine is "rebase everything that appears linked" "x bytes apart". The
> goal being to avoid rebasing 1000 .dll and .exe's when you run setup
> and
> install fortune.exe :}.

Do we really need to rebase the .exe's?  If not, then the I only count
113 Cygwin DLLs in my system.  Besides rebasing seems to be quick.

> That requires persistent storage of the used
> address range, thus storing the info in /etc/setup.

I understood this part, given that your rebase algorithm is used --
I just wasn't sure why the simple one wouldn't work.

> loadable modules probably need some thought in this context though.

By "loadable," do you mean dlopen-ed DLLs?  If so, then definitely --
Python has a bunch of them.

A couple of more issues to deal with:

1. Determine why cygcurl-2.dll and possibly other DLLs do not tolerate
rebasing.
2. Make sure whatever algorithm that we use can handle non-relocatable
DLLs without getting confused or wasting address space.  (The current
version of rebase would waste the offset value (e.g., 0x10000) of address
space on cygtclpip80.dll).

Jason


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]