Excuse me for asking a newbie question, but what are linker scripts and why are they important? I don't recall anyone ever having requested this feature before.
--Guido On Wed, Sep 7, 2011 at 12:33 PM, Howard B. Golden <howard_b_gol...@yahoo.com> wrote: > Hi, > > In Haskell I experienced a situation where dynamically loaded modules > were experiencing "invalid ELF header" errors. This was caused by the > module names actually referring to linker scripts rather than ELF > binaries. I patched the GHC runtime system to deal with these scripts. > > I noticed that this same patch has been ported to Ruby and Node.js, so I > suggested to the libc developers that they might wish to incorporate the > patch into their library, making it available to all languages. They > rejected this suggestion, so I am making the suggestion to the Python > devs in case it is of interest to you. > > Basically, when a linker script is loaded by dlopen, an "invalid ELF > header" error occurs. The patch checks to see if the file is a linker > script. If so, it finds the name of the real ELF binary with a regular > expression and tries to dlopen it. If successful, processing proceeds. > Otherwise, the original "invalid ELF error" message is returned. > > If you want to add this code to Python, you can look at my original > patch (http://hackage.haskell.org/trac/ghc/ticket/2615) or the Ruby > version (https://github.com/ffi/ffi/pull/117) or the Node.js version > (https://github.com/rbranson/node-ffi/pull/5) to help port it. > > Note that the GHC version in GHC 7.2.1 has been enhanced to also handle > another possible error when the linker script is too short, so you might > also want to add this enhancement also (see > https://github.com/ghc/blob/master/rts/Linker.c line 1191 for the > revised regular expression): > > "(([^ \t()])+\\.so([^ \t:()])*):([ \t])*(invalid ELF header|file too > short)" > > At this point, I don't have the free time to write the Python patch > myself, so I apologize in advance for not providing it to you. > > HTH, > > Howard B. Golden > Northridge, California, USA > > _______________________________________________ > Python-Dev mailing list > Python-Dev@python.org > http://mail.python.org/mailman/listinfo/python-dev > Unsubscribe: > http://mail.python.org/mailman/options/python-dev/guido%40python.org > -- --Guido van Rossum (python.org/~guido) _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com