3 libelf: bug fixes for rewriting existing files when using mmap.
5 make all installed headers usable in C++ code.
7 readelf: better output format.
9 libdw, libdwfl: handle files without aranges info.
15 dwarf.h updated for DWARF 3.0 final specification.
17 libdwfl: New function dwfl_version.
19 The license is now GPL for most files. The libelf, libebl, libdw,
20 and libdwfl libraries have additional exceptions. Add reference to
31 libdwfl: New function dwfl_module_register_names.
33 libebl: New backend hook for register names.
37 libdwfl: New function dwfl_module_return_value_location.
39 libebl: Backend improvements for several CPUs.
43 libdw: New functions dwarf_ranges, dwarf_entrypc, dwarf_diecu,
44 dwarf_entry_breakpoints. Removed Dwarf_Func type and functions
45 dwarf_func_name, dwarf_func_lowpc, dwarf_func_highpc,
46 dwarf_func_entrypc, dwarf_func_die; dwarf_getfuncs callback now uses
47 Dwarf_Die, and dwarf_func_file, dwarf_func_line, dwarf_func_col
48 replaced by dwarf_decl_file, dwarf_decl_line, dwarf_decl_column;
49 dwarf_func_inline, dwarf_func_inline_instances now take Dwarf_Die.
50 Type Dwarf_Loc renamed to Dwarf_Op; dwarf_getloclist,
51 dwarf_addrloclists renamed dwarf_getlocation, dwarf_getlocation_addr.
55 libelf: speed-ups of non-mmap reading.
59 Implement --enable-gcov option for configure.
61 libdw: New function dwarf_getscopes_die.
65 libelf: new function elf_getaroff
67 libdw: Added dwarf_func_die, dwarf_func_inline, dwarf_func_inline_instances.
69 libdwfl: New functions dwfl_report_offline, dwfl_offline_section_address,
70 dwfl_linux_kernel_report_offline.
76 elflint: relax a bit. Allow version definitions for defined symbols against
77 DSO versions also for symbols in nobits sections. Allow .rodata section
78 to have STRINGS and MERGE flag set.
80 strip: add some more compatibility with binutils.
84 elfcmp: some more relaxation.
86 elflint: many more tests, especially regarding to symbol versioning.
88 libelf: Add elfXX_offscn and gelf_offscn.
90 libasm: asm_begin interface changes.
92 libebl: Add three new interfaces to directly access machine, class, and
93 data encoding information.
95 objdump: New program. Just the beginning.
99 libdw: now contains all of libdwfl. The latter is not installed anymore.
101 elfcmp: little usability tweak, name and index of differing section is printed.
105 libelf: fix a number of problems with elf_update
107 elfcmp: fix a few bugs. Compare gaps.
109 Fix a few PLT problems and mudflap build issues.
111 libebl: Don't expose Ebl structure definition in libebl.h. It's now private.
115 libebl: Check for matching modules.
117 elflint: Check that copy relocations only happen for OBJECT or NOTYPE symbols.
121 libdwfl: New library.
125 strip: fix bug introduced in last change
127 libdw: records returned by dwarf_getsrclines are now sorted by address
131 readelf: improve DWARF output format
133 strip: support Linux kernel modules
137 libdw: Updated dwarf.h from DWARF3 spec
138 libdw: add new funtions dwarf_func_entrypc, dwarf_func_file, dwarf_func_line,
139 dwarf_func_col, dwarf_getsrc_file
143 addr2line: New program
145 libdw: add new functions: dwarf_addrdie, dwarf_macro_*, dwarf_getfuncs,
148 findtextrel: use dwarf_addrdie
152 findtextrel: New program.
156 libdw: Fix using libdw.h with gcc < 4 and C++ code. Compiler bug.
160 More Makefile and spec file cleanups.
164 Remove most gettext autoconf handling.
168 Fix resulting problems. One actual bug found and fixed this way
172 libebl: Fix x86-64 relocations.
174 Add -Wunused -Wextra warnings.
176 Some cleanups resulting from those additional warnings.
178 Lots of Makefile cleanup.
182 libelf: add gelf_checksum prototype to <libelf.h>
184 libelf: fix elf*_checksum handling of NOBITS sections
186 Finish mudflap support.
188 Fix three bugs found by mudflap.
190 ld: add as_needed support
194 readelf: in section to segment mapping, indicate read-only sections.
196 elflint: more relaxation for GNU ld
200 Fix compiling with gcc 4.0.
201 Some tests called elflint without appropriate LD_LIBRARY_PATH.
205 Fix support for platforms with lib64.
209 libebl: add ppc and ppc64 support
211 readelf: fix minimal memory leak.
213 Add support to compile with mudflap.
215 Modernize configure.ac. Move scripts in config subdir.
217 Modernize *-po directory infrastructure.
219 libelf: Add gelf_getlib and gelf_update_lib
221 readelf: print liblist sections
225 Fix some minimal build problems.
229 ibdw: tons of new functionality and bug fixes. Several interface changes.
231 readelf: use libdw now.
233 libdwarf: removed completely.
237 configuration changes.
241 libdw: fix memory handling. Implement source line handling.
242 nm: use libdw instead of libdwarf.
243 libelf: change to GPL from OSL1 for now.
247 libebl: Recognize a few more section types and dynamic tags and return
252 strip: fix overwriting of symbol table in input file.
256 libebl: Add some ia64 bits.
260 Bug fixes for big endian and some 64-bit machines.
264 strip: fix handling of Alpha and s390x which use incorrect hash bucket sizes.
266 ld: tons of changes, moving towards usability.
270 strip: update section group symbol index if the associated symbol table changed
272 libelf: fix two problems with generating output not via mmap
274 elflint: add probably 10-15 more tests
275 libebl: add support for some of the new tests
277 ld: gazillion changes
281 elflint: deal with .rel.dyn section. Fix a problem with rela platforms.
282 Handle PT_GNU_STACK. Change to write messages to stdout.
284 readelf: fix a problem with version information in the symbol table output.
286 strip: update all version symbol table entries
292 strip: last changed caused problems when the symbol table is before the
293 relocation section. Fixed. This fix also improved the asymptotic
294 behavior if many symbol table sections are present.
298 Run strip tests with the correct libelf and libebl.
300 libelf: fix bug in verneed byte order changing code.
304 strip: Remove unused symbol table entries. This might require updating
305 various other sections.
309 Fix some libelf problems with ET_REL files.
313 More warning changes, mainly by jbj.
315 libdw: yet more new code. dwarf_child and dwarf_sibling should now actually
320 libdw: 10+ new functions. get-pubnames2 works now fully. Almost all the
321 code needed for nm is in place.
325 cleanups to compile cleanly with gcc 3.3 and -Werror.
327 libdw: some new code.
331 libebl: Fix last patch to recognize relocation sections. We must not
336 libebl: .debug_ranges is a DWARF 3 debug section
337 libebl: recognize relocation sections for debug section
338 Patches by Jakub Jelinek.
342 Cleanups and more SPARC support by Tom Callaway <tcallaway@redhat.com>.
346 64-bit cleanups for the programs.
350 libelf: and yet more fun with endian tranformation at output time.
354 libelf: more fun with endian tranformation at output time. Add test for it.
358 libelf: Two little bugs left from previous patch to handle section output
361 libelf: add unlikely in some more places.
365 libelf: fix output routines to handle case where section indeces and
366 ordre in the output file don't match correctly. Patch by Jakub.
368 elflint: fix test of note section content for 64-bit platforms and files
369 with different byte order.
373 libebl: Fix SH_ENTSIZE_HASH definition (patch by Jakub)
377 libelf: correct mistake in error string handling.
379 libelf: Implement ELF_F_PERMISSIVE.
380 strip: Implement --permissive option.
384 strip: Implement -g option.
386 libelf: Handle broken hash table entry sizes.
388 libebl: New function ebl_debugscn_p. Use it where appropriate.
392 libelf: Use correct file size for NOBITS section with ELF_F_LAYOUT set
396 libelf: Make error handling more robust.
397 libelf: Use TLS in error handler if configured with --enable-tls
399 tests: input files are now distributed, not uuencoded in the shell scripts
401 libdw: implement error handling, dwarf_get_pubnames
405 Build (incomplete) libdw.
417 libebl: Handle .gnu.warning.* sections correctly.
419 size: Implement -t option.
421 libebl: Add IA-64 support.
422 libebl: Update SH relocations.
423 libebl: Add Alpha support.
424 libebl: Add Arm support.
425 libebl: Add support for all currently known architecture to the loader.
429 nm: Implement -S option. Correct portable output format. Implement -s option.
431 libelf: Take offset of archive into account in elf_rand.
435 strip: fix handling of ET_REL files.
440 strip: respect layout of input file
444 strip: handle files with large number of sections.
448 libelf: quite a few bug fixes by Alex Larsson.
450 strip: implement -f option to place stripped sections into a separate
451 file. By Alex Larsson.
455 strip: don't let STT_SECTION symbols keeps sections from being removed
457 elflint: local symbols are allowed in .dynsym
458 elflint: special case .rel.dyn a bit
462 elflint: check types and flags of special sections defined in gABI
464 libebl: add x86-64 support
468 Start improvement of debug info handling in nm.
470 libasm: implement asm_adduleb128 and asm_addsleb128 and a test for them
474 Fix build on 64-bit platforms.
478 nm: print file/line number also for local symbols
480 use versions scripts not libtool's useless -export-symbols option
484 Update to autoconf 2.54 and automake 1.7.
486 elflint: check note sections
488 libdwarf: a number of bug fixes
490 readelf: print .debug_info section content
492 dwarf.h: Update from draft 7
498 libelf: new function to read parts of the ELF file
500 libebl: support for note section handling
502 readelf: dump note sections
506 libelf: fix little new section-handling related bugs in elf_getshstrndx
509 elflint: tests for mandatory content of dynamic section
511 libasm: better handling of absolute symbols
515 libasm: rewrite to store Elf_Scn* instead of indices
517 nm: finish many-section support
519 nm: use debug in to print file/line info in sysv format
521 libdwarf: fix a few bugs in DIE handling
525 libelf: major rewrite to keep Elf_Scn references valid until elf_end
529 libasm: Add support for bss, ABS, and COM sections.
531 libebl: ebl_section_name takes now two index arguments to distinguish
532 between special sections and extended sections
536 General: fix a few problem gcc 3.1 had with the code.
538 libelf: implement {gelf,elf32,elf64}_checksum
540 libelf: optimze DSO: fewer relocations, fewer PLTs
544 ld: use correct section header string table index; write correct index
546 add dependencies for *.sym files
550 libelf: add elf_getshnum and elf_getshstrndx
552 libebl: update section type name function
554 elflint: tons of fixes wrt large number of sections. New tests in this area.
555 Same amount of other bug fixes.
557 size, strip, nm: better support for large number of sections. Including
558 using correct section header string table
560 libasm: correctly create data structures for large number of sections
562 new tests asm-tst4 and asm-tst5 to check large number of sections
564 libasm: implement section group generation
566 elflint: more tests on section groups. Improve performance on existing
571 ld: add undefined symbols to dynamic symbol table if --export-dynamic is
574 ld: fix value of e_entry
578 elflint: print section names in error messages
580 elflint: mustn't warn about multiple DT_NULL
582 ld: don't emit all symbols if --export-dynamic is not given
584 ld: correct compute symbol address in output file (section index was off by 1)
586 ld: generate correct version info in dynsym without --export-dynamic and
591 Fix check of various e_*size entries in elflint.
593 Handle text output in asm_newsym.
595 Finish checks in asm-tst3.
599 Update to autoconf 2.53, automake 1.6, gettext 0.11+.
601 Introduce *.sym files to restrict export from DSOs.
603 Use attribute_hidden and internal_function to optimize DSO code.
605 Add TLS definitions in elf.h and handle them in readelf.
607 Fix bug in verdef section generation in ld.
609 Add initial libasm code.
613 Implement better hash size optimization heuristic in ld. It uses a formula
614 taking number of tests into account.
616 Lots of small bug fixes.
618 Improve readelf output format. Respect various sh_link/sh_info values.
619 Correctly print versioning information for symbol tables.
623 Implement preprocessing of linker script. Recognize -z combreloc.
627 Implement -z ignore|record for ld.
629 Implement creating of .gnu.version_r and .gnu.version sections. The
630 .gnu.version does not yet contain correct info for defined and versioned
631 symbols (means .gnu.version_d is not yet implemented).
633 Implement gelf_update_* functions to create versioning data.
637 Add DT_RUNPATH/DT_RPATH entries to dynamic section. Create .plt and
638 .rel.plt sections (completely). Add support for all four PLT related
639 dynamic section entries. Add callback function for PLT creation.
641 More tests in elflint. Add support for very strict checking which for
642 now flags level 2 (deprecated features) usage.
646 Create dynamic symbol table, dynamic string table, and hash table to ld.
648 Add hash table histogram support to readelf.
654 ld now creates the dynamic section and references it. Start adding entries
659 Start implementing elflint.
663 Fix handling of NOBITS sections in elf_getdata.
665 Start implementing generation of executables and DSOs in ld.
666 Generation of program header mostly done. Address computation done.
667 Extension of linker script syntax.
671 Implement section group handling in readelf.
675 Implement section groups. This involved a lot of code moving. The
676 new code is entirely untested since gas/gcc are currently not able to
677 create section groups. ld works fine on files without section groups.
681 Fix problem with adding more section in elf_newscn. The section pointers
682 for the data buffers wasn't adjusted.
684 Fix elf_getdata with nonzero second parameter. Correctly handle creation
685 of internal data buffer for machines without unaligned access.
689 Start adding support to selectively add sections. Includes support for
691 Add --gc-sections/--no-gc-sections options.
692 Add general section merging support.
694 Fix a bug in section group support in strip.
696 Fix some potential problems with hash value in dynamic hash implementation.
700 section merging works in ld.
704 Actually create data structures from version map file and use it to hide
707 Implement -s -s for ld.
711 Improve relocation table output in readelf. Avoid some crashes.
712 Finish many section handling in readelf.
714 Finish: finish implementation of ld -r. At least some simple tests pass.
718 Fix a number of errors in ELF_C_WRITE handling.
720 Almost finished implementation of ld -r. The data sections are all copied.
721 Handling of symbol tables is missing.
725 Handle DSO and archive input files correctly if -r option is given.
727 Gracefully deal with no phdr in new file in libelf.
728 Fix various small error handling problems.
729 Don't mmap file for output unless the command says so.
731 Add code to create ELF section header table to ld finalize routines.
735 Fix some problems with recursive handling of archives in libelf.
737 Improve messages printed by nm.
739 Add symbol binding name handling to libebl. Fix section name handling in
742 readelf and nm use more libebl functions.
744 Handle XINDEX correctly in nm and string.
746 Add first machine ld backend library (i386).
747 Use it. Recognize -r and --shared. Avoid using -lxxx parameters for -r.
748 Create ELF header in output file. Change mode of output file according to
749 output file type. Reorganize callback initialization in ld.
753 Fix some memory leaks in libelf.
757 Implement reading version script. Both inside linker scripts and via the
758 --version-script command line parameter. Uses the same code.
759 What remains to be done is to implement a data structure which allows
760 efficient matching against the version names to decide which pattern
763 Beginning of output generation and output writing functions.
767 Finish implementation for DSO input file handling. Implement rpath, runpath,
768 and LD_LIBRARY_PATH handling.
772 make handling of e_shnum overflow in libelf standard conforming
774 ld now actually can handle DSOs in linker scripts. Handling of DT_RUNPATH,
775 DT_RPATH, -rpath, -rpath-link still remains to be implemented.
777 fix handling of -L parameters. Make actual use of the default_paths element.
779 make re-definition of symbols in and from DSO compatible with existing linker
783 more work on assigning input sections to output sections.
785 Add gelf_xlatetof and gelf_xlatetom which were accidently left out.
787 Fix memory handling of section headers.
791 Add many-section support to ld. Add various new command line parameters.
792 Allow pagesize to be specified in linker script or on the command line.
793 Collect input sections in list for the output section according to the rules
794 specified in the linker script.
798 Fix some problems in the internal list handling which had the result
799 that we didn't look for some of the unresolved symbols.
801 Free some memory if we know we don't need it anymore.
803 Optimize the list of unresolved symbols. Throw out symbols which are
808 Got file reading correct now. The files are all read while parsing
809 the parameters. No creating of data structures to describe the linker
810 command line. The symbol table is built up while reading the files.
811 DSOs are handled now. -( -) handling is optimized.
815 Linker read linker scripts everywhere. Handles --whole-archive. Recognizes
816 --dynamic and --static. Collects defined and undefined symbols. Recognizes
819 libebl now defines functions to call the callbacks. Add generic name handling
820 in these new functions. Remove the code from readelf and call the new
825 Start of linker. Basic argument parsing, finding of input files,
826 linker script reading.
830 Implement dwarf_get_fde_n(), dwarf_get_abbrev(), dwarf_get_abbrev_tag(),
831 dwarf_get_abbrev_code(), dwarf_get_abbrev_children_flag(),
832 dwarf_get_abbrev_entry(), dwarf_get_fde_at_pc(), and tests for it.
836 Implement dwarf_get_fde_list_eh(), dwarf_get_cie_of_fde(),
837 dwarf_get_fde_range(), dwarf_get_cie_info(), dwarf_get_fde_instr_bytes(),
842 Make handling of binaries in other byte order work and add tests for it.
846 Implement dwarf_get_aranges(), dwarf_get_arange(), dwarf_get_cu_die_offset(),
847 dwarf_get_arange_info(), and tests for them.
851 Implement dwarf_get_global(), dwarf_globname(), dwarf_global_die_offset(),
852 dwarf_global_cu_offset(), dwarf_global_name_offsets(), and tests for them
856 Implemented dwarf_srclines(), dwarf_srcfiles(), dwarf_linebeginstatement(),
857 dwarf_lineendsequence(), dwarf_lineno(), dwarf_lineaddr(), dwarf_lineoff(),
858 dwarf_linesrc(), dwarf_lineblock(), dwarf_lineprologueend(),
859 dwarf_lineepiloguebegin(), and tests for them.
863 Implemented dwarf_loclist().
867 Implemented dwarf_dieoffset(), dwarf_die_CU_offset(), dwarf_diename() and
870 Implemented dwarf_attrlist(), dwarf_hasattr(), dwarf_attr(), dwarf_lowpc(),
871 dwarf_highpc(), dwarf_bytesize(), dwarf_bitsize(), dwarf_bitoffset(),
872 dwarf_srclang(), dwarf_arrayorder(), dwarf_hasform(), dwarf_whatform(),
873 dwarf_whatattr(), dwarf_formref(), dwarf_global_formref(), dwarf_formaddr(),
874 dwarf_formflag(), dwarf_formudata(), dwarf_formsdata(), dwarf_formblock,
875 dwarf_formstring() and tests for them.
879 Implemented dwarf_offdie()), dwarf_tag(), dwarf_dieoffset(),
880 dwarf_die_CU_offset(), dwarf_diename() and tests for them.
884 First libdwarf functions work.
888 libelf and parts of libebl are done.