377 lines
10 KiB
Plaintext
377 lines
10 KiB
Plaintext
Version 0.46:
|
|
|
|
libasm: rewrite to store Elf_Scn* instead of indeces
|
|
|
|
nm: finish many-section support
|
|
|
|
nm: use debug in to print file/line info in sysv format
|
|
|
|
libdwarf: fix a few bugs in DIE handling
|
|
|
|
Version 0.45:
|
|
|
|
libelf: major rewrite to keep Elf_Scn references valid until elf_end
|
|
|
|
Version 0.44:
|
|
|
|
libasm: Add support for bss, ABS, and COM sections.
|
|
|
|
libebl: ebl_section_name takes now two index arguments to distinguish
|
|
between special sections and extended sections
|
|
|
|
Version 0.43:
|
|
|
|
General: fix a few problem gcc 3.1 had with the code.
|
|
|
|
libelf: implement {gelf,elf32,elf64}_checksum
|
|
|
|
libelf: optimze DSO: fewer relocations, fewer PLTs
|
|
|
|
add msg_tst test
|
|
|
|
ld: use correct section header string table index; write correct index
|
|
|
|
add dependencies for *.sym files
|
|
|
|
Version 0.42:
|
|
|
|
libelf: add elf_getshnum and elf_getshstrndx
|
|
|
|
libebl: update section type name function
|
|
|
|
elflint: tons of fixes wrt large number of sections. New tests in this area.
|
|
Same amount of other bug fixes.
|
|
|
|
size, strip, nm: better support for large number of sections. Including
|
|
using correct section header string table
|
|
|
|
libasm: correctly create data structures for large number of sections
|
|
|
|
new tests asm-tst4 and asm-tst5 to check large number of sections
|
|
|
|
libasm: implement section group generation
|
|
|
|
elflint: more tests on section groups. Improve performance on existing
|
|
section group tests
|
|
|
|
Version 0.41:
|
|
|
|
ld: add undefined symbols to dynamic symbol table if --export-dynamic is
|
|
not given
|
|
|
|
ld: fix value of e_entry
|
|
|
|
Version 0.40:
|
|
|
|
elflint: print section names in error messages
|
|
|
|
elflint: mustn't warn about multiple DT_NULL
|
|
|
|
ld: don't emit all symbols if --export-dynamic is not given
|
|
|
|
ld: correct compute symbol address in output file (section index was off by 1)
|
|
|
|
ld: generate correct version info in dynsym without --export-dynamic and
|
|
in symtab
|
|
|
|
Version 0.39:
|
|
|
|
Fix check of various e_*size entries in elflint.
|
|
|
|
Handle text output in asm_newsym.
|
|
|
|
Finish checks in asm-tst3.
|
|
|
|
Version 0.38:
|
|
|
|
Update to autoconf 2.53, automake 1.6, gettext 0.11+.
|
|
|
|
Introduce *.sym files to restrict export from DSOs.
|
|
|
|
Use attribute_hidden and internal_function to optimize DSO code.
|
|
|
|
Add TLS definitions in elf.h and handle them in readelf.
|
|
|
|
Fix bug in verdef section generation in ld.
|
|
|
|
Add initial libasm code.
|
|
|
|
Version 0.37:
|
|
|
|
Implement better hash size optimization heuristic in ld. It uses a formula
|
|
taking number of tests into account.
|
|
|
|
Lots of small bug fixes.
|
|
|
|
Improve readelf output format. Respect various sh_link/sh_info values.
|
|
Correctly print versioning information for symbol tables.
|
|
|
|
Version 0.36:
|
|
|
|
Implement preprocessing of linker script. Recognize -z combreloc.
|
|
|
|
Version 0.35:
|
|
|
|
Implement -z ignore|record for ld.
|
|
|
|
Implement creating of .gnu.version_r and .gnu.version sections. The
|
|
.gnu.version does not yet contain correct info for defined and versioned
|
|
symbols (means .gnu.version_d is not yet implemented).
|
|
|
|
Implement gelf_update_* functions to create versioning data.
|
|
|
|
Version 0.34:
|
|
|
|
Add DT_RUNPATH/DT_RPATH entries to dynamic section. Create .plt and
|
|
.rel.plt sections (completely). Add support for all four PLT related
|
|
dynamic section entries. Add callback function for PLT creation.
|
|
|
|
More tests in elflint. Add support for very strict checking which for
|
|
now flags level 2 (deprecated features) usage.
|
|
|
|
Version 0.33:
|
|
|
|
Create dynamic symbol table, dynamic string table, and hash table to ld.
|
|
|
|
Add hash table histogram support to readelf.
|
|
|
|
Version 0.32:
|
|
|
|
more work on elflint
|
|
|
|
ld now creates the dynamic section and references it. Start adding entries
|
|
to dynamic section.
|
|
|
|
Version 0.31:
|
|
|
|
Start implementing elflint.
|
|
|
|
Version 0.30:
|
|
|
|
Fix handling of NOBITS sections in elf_getdata.
|
|
|
|
Start implementing generation of executables and DSOs in ld.
|
|
Generation of program header mostly done. Address computation done.
|
|
Extension of linker script syntax.
|
|
|
|
Various cleanups.
|
|
|
|
Implement section group handling in readelf.
|
|
|
|
Version 0.29:
|
|
|
|
Implement section groups. This involved a lot of code moving. The
|
|
new code is entirely untested since gas/gcc are currently not able to
|
|
create section groups. ld works fine on files without section groups.
|
|
|
|
Version 0.28:
|
|
|
|
Fix problem with adding more section in elf_newscn. The section pointers
|
|
for the data buffers wasn't adjusted.
|
|
|
|
Fix elf_getdata with nonzero second parameter. Correctly handle creation
|
|
of internal data buffer for machines without unaligned access.
|
|
|
|
Version 0.27:
|
|
|
|
Start adding support to selectively add sections. Includes support for
|
|
section groups.
|
|
Add --gc-sections/--no-gc-sections options.
|
|
Add general section merging support.
|
|
|
|
Fix a bug in section group support in strip.
|
|
|
|
Fix some potential problems with hash value in dynamic hash implementation.
|
|
|
|
Version 0.26:
|
|
|
|
section merging works in ld.
|
|
|
|
Version 0.25:
|
|
|
|
Actually create data structures from version map file and use it to hide
|
|
symbols in ld.
|
|
|
|
Implement -s -s for ld.
|
|
|
|
Version 0.24:
|
|
|
|
Improve relocation table output in readelf. Avoid some crashes.
|
|
Finish many section handling in readelf.
|
|
|
|
Finish: finish implementation of ld -r. At least some simple tests pass.
|
|
|
|
Version 0.23:
|
|
|
|
Fix a number of errors in ELF_C_WRITE handling.
|
|
|
|
Almost finished implementation of ld -r. The data sections are all copied.
|
|
Handling of symbol tables is missing.
|
|
|
|
Version 0.22:
|
|
|
|
Handle DSO and archive input files correctly if -r option is given.
|
|
|
|
Gracefully deal with no phdr in new file in libelf.
|
|
Fix various small error handling problems.
|
|
Don't mmap file for output unless the command says so.
|
|
|
|
Add code to create ELF section header table to ld finalize routines.
|
|
|
|
Version 0.21:
|
|
|
|
Fix some problems with recursive handling of archives in libelf.
|
|
|
|
Improve messages printed by nm.
|
|
|
|
Add symbol binding name handling to libebl. Fix section name handling in
|
|
libebl.
|
|
|
|
readelf and nm use more libebl functions.
|
|
|
|
Handle XINDEX correctly in nm and string.
|
|
|
|
Add first machine ld backend library (i386).
|
|
Use it. Recognize -r and --shared. Avoid using -lxxx parameters for -r.
|
|
Create ELF header in output file. Change mode of output file according to
|
|
output file type. Reorganize callback initialization in ld.
|
|
|
|
Version 0.20:
|
|
|
|
Fix some memory leaks in libelf.
|
|
|
|
Version 0.19:
|
|
|
|
Implement reading version script. Both inside linker scripts and via the
|
|
--version-script command line parameter. Uses the same code.
|
|
What remains to be done is to implement a data structure which allows
|
|
efficient matching against the version names to decide which pattern
|
|
matches.
|
|
|
|
Beginning of output generation and output writing functions.
|
|
|
|
Version 0.18:
|
|
|
|
Finish implementation for DSO input file handling. Implement rpath, runpath,
|
|
and LD_LIBRARY_PATH handling.
|
|
|
|
Version 0.17:
|
|
|
|
make handling of e_shnum overflow in libelf standard conforming
|
|
|
|
ld now actually can handle DSOs in linker scripts. Handling of DT_RUNPATH,
|
|
DT_RPATH, -rpath, -rpath-link still remains to be implemented.
|
|
|
|
fix handling of -L parameters. Make actual use of the default_paths element.
|
|
|
|
make re-definition of symbols in and from DSO compatible with existing linker
|
|
|
|
Version 0.16:
|
|
|
|
more work on assigning input sections to output sections.
|
|
|
|
Add gelf_xlatetof and gelf_xlatetom which were accidently left out.
|
|
|
|
Fix memory handling of section headers.
|
|
|
|
Version 0.15:
|
|
|
|
Add many-section support to ld. Add various new command line parameters.
|
|
Allow pagesize to be specified in linker script or on the command line.
|
|
Collect input sections in list for the output section according to the rules
|
|
specified in the linker script.
|
|
|
|
Version 0.14:
|
|
|
|
Fix some problems in the internal list handling which had the result
|
|
that we didn't look for some of the unresolved symbols.
|
|
|
|
Free some memory if we know we don't need it anymore.
|
|
|
|
Optimize the list of unresolved symbols. Throw out symbols which are
|
|
meanwhile resolved.
|
|
|
|
Version 0.13:
|
|
|
|
Got file reading correct now. The files are all read while parsing
|
|
the parameters. No creating of data structures to describe the linker
|
|
command line. The symbol table is built up while reading the files.
|
|
DSOs are handled now. -( -) handling is optimized.
|
|
|
|
Version 0.12:
|
|
|
|
Linker read linker scripts everywhere. Handles --whole-archive. Recognizes
|
|
--dynamic and --static. Collects defined and undefined symbols. Recognizes
|
|
conflicts.
|
|
|
|
libebl now defines functions to call the callbacks. Add generic name handling
|
|
in these new functions. Remove the code from readelf and call the new
|
|
functions.
|
|
|
|
Version 0.11:
|
|
|
|
Start of linker. Basic argument parsing, finding of input files,
|
|
linker script reading.
|
|
|
|
Version 0.10:
|
|
|
|
Implement dwarf_get_fde_n(), dwarf_get_abbrev(), dwarf_get_abbrev_tag(),
|
|
dwarf_get_abbrev_code(), dwarf_get_abbrev_children_flag(),
|
|
dwarf_get_abbrev_entry(), dwarf_get_fde_at_pc(), and tests for it.
|
|
|
|
Version 0.9:
|
|
|
|
Implement dwarf_get_fde_list_eh(), dwarf_get_cie_of_fde(),
|
|
dwarf_get_fde_range(), dwarf_get_cie_info(), dwarf_get_fde_instr_bytes(),
|
|
and tests for them.
|
|
|
|
Version 0.8:
|
|
|
|
Make handling of binaries in other byte order work and add tests for it.
|
|
|
|
Version 0.7:
|
|
|
|
Implement dwarf_get_aranges(), dwarf_get_arange(), dwarf_get_cu_die_offset(),
|
|
dwarf_get_arange_info(), and tests for them.
|
|
|
|
Version 0.6:
|
|
|
|
Implement dwarf_get_global(), dwarf_globname(), dwarf_global_die_offset(),
|
|
dwarf_global_cu_offset(), dwarf_global_name_offsets(), and tests for them
|
|
|
|
Version 0.5:
|
|
|
|
Implemented dwarf_srclines(), dwarf_srcfiles(), dwarf_linebeginstatement(),
|
|
dwarf_lineendsequence(), dwarf_lineno(), dwarf_lineaddr(), dwarf_lineoff(),
|
|
dwarf_linesrc(), dwarf_lineblock(), dwarf_lineprologueend(),
|
|
dwarf_lineepiloguebegin(), and tests for them.
|
|
|
|
Version 0.4:
|
|
|
|
Implemented dwarf_loclist().
|
|
|
|
Version 0.3:
|
|
|
|
Implemented dwarf_dieoffset(), dwarf_die_CU_offset(), dwarf_diename() and
|
|
tests.
|
|
|
|
Implemented dwarf_attrlist(), dwarf_hasattr(), dwarf_attr(), dwarf_lowpc(),
|
|
dwarf_highpc(), dwarf_bytesize(), dwarf_bitsize(), dwarf_bitoffset(),
|
|
dwarf_srclang(), dwarf_arrayorder(), dwarf_hasform(), dwarf_whatform(),
|
|
dwarf_whatattr(), dwarf_formref(), dwarf_global_formref(), dwarf_formaddr(),
|
|
dwarf_formflag(), dwarf_formudata(), dwarf_formsdata(), dwarf_formblock,
|
|
dwarf_formstring() and tests for them.
|
|
|
|
Version 0.2:
|
|
|
|
Implemented dwarf_offdie()), dwarf_tag(), dwarf_dieoffset(),
|
|
dwarf_die_CU_offset(), dwarf_diename() and tests for them.
|
|
|
|
Version 0.1:
|
|
|
|
First libdwarf functions work.
|
|
|
|
Version 0.0:
|
|
|
|
libelf and parts of libebl are done.
|