Finding out if a python binary has been compiled with or without pymalloc

Skip Montanaro skip at pobox.com
Tue Dec 11 10:56:07 EST 2001


    Rémi> I'd like to know if there is a way to find out if a python binary
    Rémi> distribution has been compiled with or without pymalloc.  My
    Rémi> website hosting machine has python2.1 installed on it, but I don't
    Rémi> know where this distribution comes from. I only have access to the
    Rémi> python2.1 binary, and I'd like to check if it uses pymalloc or
    Rémi> not.

The strings command is a crude, but often effective way to search for
symbols in an executable.  My normal Python executable is compiled with
threads and without pymalloc:

    % strings -a /usr/local/bin/python | egrep -i malloc | sort -u
    malloc
    malloc@@GLIBC_2.0
    PyMem_Malloc
    _PyObject_GC_Malloc
    PyObject_Malloc

I also have a without-threads with-pymalloc version, however:

    % strings -a python | egrep -i malloc | sort -u
    malloc
    malloc@@GLIBC_2.0
    malloc_hook
    _PyCore_ObjectMalloc
    _PyCore_ObjectMalloc_FetchHooks
    _PyCore_ObjectMalloc_SetHooks
    PyMem_Malloc
    _PyObject_GC_Malloc
    PyObject_Malloc

Note the extra *ObjectMalloc* symbols.

This is on a recent Linux system using gcc and neither executable was
stripped.  YMMV.

-- 
Skip Montanaro (skip at pobox.com - http://www.mojam.com/)




More information about the Python-list mailing list