[Python-Dev] Handling linker scripts reached when dynamically loading a module (original) (raw)
Guido van Rossum guido at python.org
Sat Sep 10 23:39:15 CEST 2011
- Previous message: [Python-Dev] Handling linker scripts reached when dynamically loading a module
- Next message: [Python-Dev] Handling linker scripts reached when dynamically loading a module
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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_golden at 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 at 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)
- Previous message: [Python-Dev] Handling linker scripts reached when dynamically loading a module
- Next message: [Python-Dev] Handling linker scripts reached when dynamically loading a module
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]