Skip to main content

Mach-O header analysis and editing

Project description

macholib can be used to analyze and edit Mach-O headers, the executable
format used by Mac OS X.

It's typically used as a dependency analysis tool, and also to rewrite dylib
references in Mach-O headers to be @executable_path relative.

Though this tool targets a platform specific file format, it is pure python
code that is platform and endian independent.


Release history
===============

macholib 1.4.1
------------

macholib 1.4.1 is a minor feature release

Features:

- Add support for a number of new MachO load commands that were added
during the lifetime of OSX 10.6: ``LC_LOAD_UPWARD_DYLIB``,
``LC_VERSION_MIN_MACOSX``, ``LC_VERSION_MIN_IPHONEOS`` and
``LC_FUNCTION_STARTS``.

macholib 1.4
-------------

macholib 1.4 is a feature release

Features:

- Documentation is now generated using `sphinx <http://pypi.python.org/pypi/sphinx>`_
and can be viewed at <http://packages.python.org/macholib>.

- The repository has moved to bitbucket

- There now is a testsuite

- Private functionality inside modules was renamed to
a name starting with an underscore.

.. note:: if this change affects your code you are relying on undefined
implementation features, please stop using private functions.

- The basic packable types in ``macholib.ptypes`` were renamed to better
represent the corresponding C type. The table below lists the old
an new names (the old names are still available, but are deprecated and
will be removed in a future release).

+--------------+--------------+
| **Old name** | **New name** |
+==============+==============+
| p_byte | p_int8 |
+--------------+--------------+
| p_ubyte | p_uint8 |
+--------------+--------------+
| p_short | p_int16 |
+--------------+--------------+
| p_ushort | p_uint16 |
+--------------+--------------+
| p_int | p_int32 |
+--------------+--------------+
| p_uint | p_uint32 |
+--------------+--------------+
| p_long | p_int32 |
+--------------+--------------+
| p_ulong | p_uint32 |
+--------------+--------------+
| p_longlong | p_int64 |
+--------------+--------------+
| p_ulonglong | p_uint64 |
+--------------+--------------+

``Macholib.ptypes.p_ptr`` is no longer present as it had an unclear
definition and isn't actually used in the codebase.


Bug fixes:

- The semantics of ``dyld.dyld_default_search`` were changed a bit,
it now first searches the framework path (if appropriate) and then
the linker path, irrespective of the value of the ``DYLD_FALLBACK*``
environment variables.

Previous versions would change the search order when those variables
was set, which is odd and doesn't correspond with the documented
behaviour of the system dyld.

- It is once again possible to install using python2.5

- The source distribution includes all files, this was broken
due to the switch to mercurial (which confused setuptools)

macholib 1.3
------------

macholib 1.3 is a feature release.

Features:

- Experimental Python 3.x support

This version contains lightly tested support for Python 3.

macholib 1.2.2
--------------

macholib 1.2.2 is a bugfix release.

Bug fixes:

- Macholib should work better with 64-bit code
(patch by Marc-Antoine Parent)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

macholib-1.4.1.tar.gz (374.5 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page