freebsd-dev/contrib/elftoolchain
Ed Maste 573456a931 libelf: add compression header support
GNU and Oracle libelf implementations added support for section
compression, intended to reduce the size of DWARF debug info (which
might be an order of magnitude larger than the code).

There are two compressed ELF section formats:

1. Old GNU - sections are renmaed to start with 'z'.  Section contains
   a magic number, uncompressed size, and compressed data.

2. Oracle and New GNU - compressed sections use the SHF_COMPRESSED flag.
   The compression header contains the compression type, uncompressed
   size, and uncompressed alignment.

The second style is preferred and this change implements only that one.

Submitted by:	Tiger Gao <tig@FreeBSDFoundation.org>
Reviewed by:	markj
MFC after:	2 weeks
Relnotes:	Yes
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D24566
2020-10-23 16:35:23 +00:00
..
addr2line addr2line: use stdbool.h header for bool 2020-02-13 16:17:05 +00:00
ar Update to ELF Tool Chain r3668 2019-01-10 14:35:23 +00:00
brandelf Use the in-tree sys/elf_common.h to build libelftc. 2016-06-05 23:05:14 +00:00
common Update ELF Tool Chain to upstream r3769 2019-12-05 13:20:15 +00:00
cxxfilt Capsicumize c++filt(1). 2019-09-30 16:10:42 +00:00
elfcopy objcopy: add new sections also when there is no .shstrtab 2020-03-20 15:50:37 +00:00
elfdump Update ELF Tool Chain to upstream r3769 2019-12-05 13:20:15 +00:00
libdwarf libdwarf: Hide SHT_NOBITS sections. 2020-07-20 18:22:38 +00:00
libelf libelf: add compression header support 2020-10-23 16:35:23 +00:00
libelftc libelftc: Fix a memory leak in cpp_demangle_read_type(). 2020-03-20 16:25:06 +00:00
libpe libpe: Avoid a potential use-after-free in pe_update_symtab(). 2020-03-20 16:24:23 +00:00
nm Update ELF Tool Chain to upstream r3769 2019-12-05 13:20:15 +00:00
readelf readelf: add more DT_FLAGS_1 flags 2020-05-31 15:31:47 +00:00
size size: Avoid returning a stack pointer from xlatetom(). 2020-02-04 21:17:59 +00:00
strings strings: extends rights 2019-07-16 04:17:25 +00:00
.cirrus.yml Update ELF Tool Chain to upstream r3769 2019-12-05 13:20:15 +00:00
README.rst Update ELF Tool Chain to upstream r3769 2019-12-05 13:20:15 +00:00

The Elftoolchain Project
========================

.. contents:: Table of Contents

Description
-----------

This software implements essential compilation tools and libraries for:

- managing program objects conforming to the ELF_ object format, and
- for managing DWARF_ debugging information in ELF objects.

The project currently implements the following utilities and
libraries:

=========== ============================================
Name        Description
=========== ============================================
ar          Archive manager.
addr2line   Debug tool.
brandelf    Manage the ELF brand on executables.
c++filt     Translate encoded symbols.
elfcopy     Copy and translate between object formats.
elfdump     Diagnostic tool.
findtextrel Find undesired text relocations.
libdwarf    DWARF access library.
libelf      ELF access library.
mcs         Manage comment sections.
nm          List symbols in an ELF object.
ranlib      Add archive symbol tables to an archive.
readelf     Display ELF information.
size        List object sizes.
strings     Extract printable strings.
strip       Discard information from ELF objects.
=========== ============================================

.. _ELF: http://en.wikipedia.org/wiki/Executable_and_Linkable_Format
.. _DWARF: http://www.dwarfstd.org/


Project Documentation
---------------------

- Release notes for released versions of this software are present in
  the file ``RELEASE-NOTES`` in the current directory.
- The file ``INSTALL`` in the current directory contains instructions
  on building and installing this software.
- Reference documentation in the form of manual pages is provided for
  the utilities and libraries developed by the project.
- Additional tutorial documentation is present in the
  ``documentation`` directory.


Tracking Ongoing Development
----------------------------

The project uses subversion_ for its version control system.

.. _subversion: https://subversion.apache.org/

The subversion branch for the current set of sources may be accessed
at the following URL::

    https://sourceforge.net/p/elftoolchain/code/HEAD/tree/trunk/

The project's source tree may be checked out from its repository by
using the ``svn checkout`` command::

    % svn checkout https://svn.code.sf.net/p/elftoolchain/code/trunk

Checked-out sources may be kept upto-date by running ``svn update``
inside the source directory::

    % svn update


Instructions on building and installing the software are given in the
file ``INSTALL`` in the current directory.

Downloading Released Software
-----------------------------

Released versions of the project's software may also be downloaded
from SourceForge's `file release system`_.

.. _file release system: http://sourceforge.net/projects/elftoolchain/files/

Copyright and License
---------------------

This code is copyright its authors, and is distributed under the `BSD
License`_.

.. _BSD License: http://www.opensource.org/licenses/bsd-license.php


Developer Community
-------------------

The project's developers may be contacted using the mailing list:
``<elftoolchain-developers@lists.sourceforge.net>``.


Reporting Bugs
--------------

Please use our `bug tracker`_ for viewing existing bug reports and
for submitting new bug reports.

.. _`bug tracker`: https://sourceforge.net/p/elftoolchain/tickets/


Additional Information
----------------------

Additional information about the project may be found on the `project
website`_.

.. _project website:  http://elftoolchain.sourceforge.net/

.. $Id: README.rst 3677 2019-02-11 09:37:09Z jkoshy $

.. Local Variables:
.. mode: rst
.. End: