gecko-dev/build/unix/elfhack
Mike Hommey 97164d67cd Bug 1353661 - Don't build elfhack/inject during export. r=mshal
When the clang plugin is used, building something during export needs to
happen after the plugin is built. But there is no dependency ensuring
this happens.

OTOH, these sources in elfhack/inject don't need to be built that early,
so we'll just leave to the build system to build it at a proper time.

--HG--
extra : rebase_source : a6bef8ec6eece3a1b0e45f84c907c2fbc0800863
2017-04-05 18:01:33 +09:00
..
inject Bug 1353661 - Don't build elfhack/inject during export. r=mshal 2017-04-05 18:01:33 +09:00
Makefile.in Bug 1194603 - Remove INTERNAL_TOOLS; r=mshal 2015-09-10 13:49:19 +02:00
README
dummy.c
elf.cpp Bug 1233963 - Work around recent GNU gold behavior with segments starting before the first section they contain. r=froydnj 2016-01-21 13:54:03 +09:00
elfhack.cpp Bug 982014 - Fix what sections are copied from injection object after bug 932737. r=nfroyd 2014-04-04 14:56:36 +09:00
elfxx.h Bug 1120062 - Part 1: Remove most Nullptr.h includes. r=waldo 2015-01-11 11:34:52 +09:00
inject.c Bug 932737 - Change elfhack such that it doesn't require two injection objects. r=nfroyd 2013-11-02 08:47:24 +09:00
moz.build Bug 1286877 - do not set c-basic-offset for python-mode; r=gps 2016-07-14 10:16:42 -06:00
test-array.c
test-ctors.c
test.c Bug 654087 - Don't error out on gold special treatment of PT_TLS segment memsize. r=nfroyd 2013-01-16 09:15:07 +01:00

README

Elfhack is a program to optimize ELF binaries for size and cold startup
speed.

Presently, it is quite experimental, though it works well for the target
it was created for: Firefox's libxul.so.

Elfhack currently only does one thing: packing dynamic relocations ;
which ends up being a quite complex task, that can be summarized this
way:
- Remove RELATIVE relocations from the .rel.dyn/.rela.dyn section.
- Inject a small code able to apply relative relocations "by hand"
  after the .rel.dyn/.rela.dyn section.
- Inject a section containing relocative relocations in a different
  and more packed format, after the small code.
- Register the small code as DT_INIT function. Make the small code call
  what was initially the DT_INIT function, if there was one.
- Remove the hole between the new section containing relative
  relocations and the following sections, adjusting offsets and base
  addresses accordingly.
- Adjust PT_LOAD entries to fit new offsets, and add an additional
  PT_LOAD entry when that is necessary to handle the discrepancy between
  offsets and base addresses, meaning the section offsets may yet again
  need adjustments.
- Adjust various DT_* dynamic tags to fit the new ELF layout.
- Adjust section headers.
- Adjust ELF headers.

See http://glandium.org/blog/?p=1177#relocations for some figures.