Charles Wilson wrote: > > Only it's a pity that you gave me the advice to use Cygwin's > > /proc/self/maps, > > which I did [2], and now we discover that it is much slower than the Win32 > > API calls that I had originally. > ... > The problem is, it can really cause issues for "the rest of cygwin" if > an app uses the Win32 API "behind cygwin's back". Given cygwin's > existing code and algorithm structure, the Win32 calls that > old-relocation was using were not (and are not) problematic AFAICT (*) > -- but that could change in the future, in unpredictable ways. It would > be bad if cygwin found itself constrained in its ongoing development, > because some important libraries were using Win32 calls in ways that > prevented cygwin from making some optimization or other.
I understand all that. I'm only saying that - My need was to have the file name behind one particular address in the current process. - The Cygwin API only allows me to get _all_ file names behind all addresses across the entire current process, and this is slow. - It would be useful to have a Cygwin API that gives me the file file name behind one particular address in the current process. This should not be that slow. > > 2011-10-03 Bruno Haible <br...@clisp.org> > > > > relocatable-lib[-lgpl]: Avoid expensive /proc access on Linux, Cygwin. > > * lib/relocatable.c (ENABLE_COSTLY_RELOCATABLE): New macro. > > (compute_curr_prefix, shared_library_fullname, > > find_shared_library_fullname, get_shared_library_fullname, relocate): > > Use it together with PIC && INSTALLDIR. > > Reported by <jojel...@gmail.com> > > via Charles Wilson <cyg...@cwilson.fastmail.fm>. > > Basically, this patch means that even if I **DO** configure with > --enable-relocation, I won't actually get it. That's not the right fix. > If I do --enable-relocatable, then by george I ought to get it, slow > 5ms operation and all. No, you misunderstand it. I have split the relocatable support into a cheap part and an expensive part. The cheap part is for people who configure one package with --enable-relocatable, or several packages with --enable-relocatable and the same prefix. This will continue to work. The expensive part is support for people who combine two packages, built with different --prefix options. This one is costly, because every library has to parse /proc/self/maps. On Cygwin, many packages come through Cygwin itself, therefore people have no need to repackage and redistribute a library that they have not built themselves. Only on native Windows it is likely that people will redistribute libraries that they have not built themselves. That's why I kept the expensive part enabled by default only on native Windows. Bruno -- In memoriam Annalena Tonelli <http://en.wikipedia.org/wiki/Annalena_Tonelli>