3 libdw: Various convenience functions for individual attributes now use
4 dwarf_attr_integrate to look up indirect inherited attributes.
5 Location expression handling now supports DW_OP_implicit_value.
7 libdwfl: Support automatic decompression of files in XZ format,
8 and of Linux kernel images made with bzip2 or LZMA (as well as gzip).
12 libelf: Add elf_getshdrnum alias for elf_getshnum and elf_getshdrstrndx alias
13 for elf_getshstrndx and deprecate original names. Sun screwed up
14 their implementation and asked for a solution.
16 libebl: Add support for STB_GNU_UNIQUE.
18 elflint: Add support for STB_GNU_UNIQUE.
20 readelf: Add -N option, speeds up DWARF printing without address->name lookups.
22 libdw: Add support for decoding DWARF CFI into location description form.
23 Handle some new DWARF 3 expression operations previously omitted.
24 Basic handling of some new encodings slated for DWARF 4.
28 libebl: sparc backend fixes;
29 some more arm backend support
31 libdwfl: fix dwfl_module_build_id for prelinked DSO case;
32 fixes in core file support;
33 dwfl_module_getsym interface improved for non-address symbols
35 strip: fix infinite loop on strange inputs with -f
37 addr2line: take -j/--section=NAME option for binutils compatibility
38 (same effect as '(NAME)0x123' syntax already supported)
42 libelf: Fix regression in creation of section header
44 libdwfl: Less strict behavior if DWARF reader ist just used to display data
48 libcpu: Add Intel SSE4 disassembler support
50 readelf: Implement call frame information and exception handling dumping.
51 Add -e option. Enable it implicitly for -a.
53 elflint: Check PT_GNU_EH_FRAME program header entry.
55 libdwfl: Support automatic gzip/bzip2 decompression of ELF files.
59 Install <elfutils/version.h> header file for applications to use in source
60 version compatibility checks.
62 libebl: backend fixes for i386 TLS relocs; backend support for NT_386_IOPERM
64 libcpu: disassembler fixes
70 nm: bug fixes for handling corrupt input files
74 Minor fixes for unreleased 0.136 release.
78 libdwfl: bug fixes; new "segment" interfaces;
79 all the libdwfl-based tools now support --core=COREFILE option
85 strip: changed handling of ET_REL files wrt symbol tables and relocs
89 elflint: backend improvements for sparc, alpha
91 libdwfl, libelf: bug fixes
95 readelf, elflint, libebl: SHT_GNU_ATTRIBUTE section handling (readelf -A)
97 readelf: core note handling for NT_386_TLS, NT_PPC_SPE, Alpha NT_AUXV
99 libdwfl: bug fixes and optimization in relocation handling
101 elfcmp: bug fix for non-allocated section handling
103 ld: implement newer features of binutils linker.
107 libcpu: Implement x86 and x86-64 disassembler.
108 libasm: Add interface for disassembler.
110 all programs: add debugging of branch prediction.
112 libelf: new function elf_scnshndx.
116 libdw: DW_FORM_ref_addr support; dwarf_formref entry point now deprecated;
117 bug fixes for oddly-formatted DWARF
119 libdwfl: bug fixes in offline archive support, symbol table handling;
120 apply partial relocations for dwfl_module_address_section on ET_REL
122 libebl: powerpc backend support for Altivec registers
126 readelf: -p option can take an argument like -x for one section,
127 or no argument (as before) for all SHF_STRINGS sections;
128 new option --archive-index (or -c);
129 improved -n output for core files, on many machines
131 libelf: new function elf_getdata_rawchunk, replaces gelf_rawchunk;
132 new functions gelf_getnote, gelf_getauxv, gelf_update_auxv
134 readelf, elflint: handle SHT_NOTE sections without requiring phdrs
136 elflint: stricter checks on debug sections
138 libdwfl: new functions dwfl_build_id_find_elf, dwfl_build_id_find_debuginfo,
139 dwfl_module_build_id, dwfl_module_report_build_id;
140 support dynamic symbol tables found via phdrs;
141 dwfl_standard_find_debuginfo now uses build IDs when available
143 unstrip: new option --list (or -n)
145 libebl: backend improvements for sparc, alpha, powerpc
149 readelf: new options --hex-dump (or -x), --strings (or -p)
151 addr2line: new option --symbols (or -S)
157 elfcmp: new option --hash-inexact
161 libdw: new function dwarf_getsrcdirs
163 libdwfl: new functions dwfl_module_addrsym, dwfl_report_begin_add,
164 dwfl_module_address_section
172 elflint: Compare DT_GNU_HASH tests.
174 move archives into -static RPMs
176 libelf, elflint: better support for core file handling
180 libebl: sparc backend support for return value location
182 libebl, libdwfl: backend register name support extended with more info
184 libelf, libdw: bug fixes for unaligned accesses on machines that care
186 readelf, elflint: trivial bugs fixed
190 libebl: Backend build fixes, thanks to Stepan Kasal.
192 libebl: ia64 backend support for register names, return value location
194 libdwfl: Handle truncated linux kernel module section names.
196 libdwfl: Look for linux kernel "vmlinux" files with ".debug" suffix.
198 elflint: Fix checks to permit --hash-style=gnu format.
202 libebl: add function to test for relative relocation
204 elflint: fix and extend DT_RELCOUNT/DT_RELACOUNT checks
206 elflint, readelf: add support for DT_GNU_HASH
207 libelf: add elf_gnu_hash
209 elflint, readelf: add support for 64-bit SysV-style hash tables
211 libdwfl: new functions dwfl_module_getsymtab, dwfl_module_getsym.
215 libelf: bug fixes for rewriting existing files when using mmap.
217 make all installed headers usable in C++ code.
219 readelf: better output format.
221 elflint: fix tests of dynamic section content.
223 ld: Implement --as-needed, --execstack, PT_GNU_STACK. Many small patches.
225 libdw, libdwfl: handle files without aranges info.
231 dwarf.h updated for DWARF 3.0 final specification.
233 libdwfl: New function dwfl_version.
235 The license is now GPL for most files. The libelf, libebl, libdw,
236 and libdwfl libraries have additional exceptions. Add reference to
247 libdwfl: New function dwfl_module_register_names.
249 libebl: New backend hook for register names.
253 libdwfl: New function dwfl_module_return_value_location.
255 libebl: Backend improvements for several CPUs.
259 libdw: New functions dwarf_ranges, dwarf_entrypc, dwarf_diecu,
260 dwarf_entry_breakpoints. Removed Dwarf_Func type and functions
261 dwarf_func_name, dwarf_func_lowpc, dwarf_func_highpc,
262 dwarf_func_entrypc, dwarf_func_die; dwarf_getfuncs callback now uses
263 Dwarf_Die, and dwarf_func_file, dwarf_func_line, dwarf_func_col
264 replaced by dwarf_decl_file, dwarf_decl_line, dwarf_decl_column;
265 dwarf_func_inline, dwarf_func_inline_instances now take Dwarf_Die.
266 Type Dwarf_Loc renamed to Dwarf_Op; dwarf_getloclist,
267 dwarf_addrloclists renamed dwarf_getlocation, dwarf_getlocation_addr.
271 libelf: speed-ups of non-mmap reading.
273 strings: New program.
275 Implement --enable-gcov option for configure.
277 libdw: New function dwarf_getscopes_die.
281 libelf: new function elf_getaroff
283 libdw: Added dwarf_func_die, dwarf_func_inline, dwarf_func_inline_instances.
285 libdwfl: New functions dwfl_report_offline, dwfl_offline_section_address,
286 dwfl_linux_kernel_report_offline.
292 elflint: relax a bit. Allow version definitions for defined symbols against
293 DSO versions also for symbols in nobits sections. Allow .rodata section
294 to have STRINGS and MERGE flag set.
296 strip: add some more compatibility with binutils.
300 elfcmp: some more relaxation.
302 elflint: many more tests, especially regarding to symbol versioning.
304 libelf: Add elfXX_offscn and gelf_offscn.
306 libasm: asm_begin interface changes.
308 libebl: Add three new interfaces to directly access machine, class, and
309 data encoding information.
311 objdump: New program. Just the beginning.
315 libdw: now contains all of libdwfl. The latter is not installed anymore.
317 elfcmp: little usability tweak, name and index of differing section is printed.
321 libelf: fix a number of problems with elf_update
323 elfcmp: fix a few bugs. Compare gaps.
325 Fix a few PLT problems and mudflap build issues.
327 libebl: Don't expose Ebl structure definition in libebl.h. It's now private.
331 libebl: Check for matching modules.
333 elflint: Check that copy relocations only happen for OBJECT or NOTYPE symbols.
337 libdwfl: New library.
341 strip: fix bug introduced in last change
343 libdw: records returned by dwarf_getsrclines are now sorted by address
347 readelf: improve DWARF output format
349 strip: support Linux kernel modules
353 libdw: Updated dwarf.h from DWARF3 spec
354 libdw: add new funtions dwarf_func_entrypc, dwarf_func_file, dwarf_func_line,
355 dwarf_func_col, dwarf_getsrc_file
359 addr2line: New program
361 libdw: add new functions: dwarf_addrdie, dwarf_macro_*, dwarf_getfuncs,
364 findtextrel: use dwarf_addrdie
368 findtextrel: New program.
372 libdw: Fix using libdw.h with gcc < 4 and C++ code. Compiler bug.
376 More Makefile and spec file cleanups.
380 Remove most gettext autoconf handling.
384 Fix resulting problems. One actual bug found and fixed this way
388 libebl: Fix x86-64 relocations.
390 Add -Wunused -Wextra warnings.
392 Some cleanups resulting from those additional warnings.
394 Lots of Makefile cleanup.
398 libelf: add gelf_checksum prototype to <libelf.h>
400 libelf: fix elf*_checksum handling of NOBITS sections
402 Finish mudflap support.
404 Fix three bugs found by mudflap.
406 ld: add as_needed support
410 readelf: in section to segment mapping, indicate read-only sections.
412 elflint: more relaxation for GNU ld
416 Fix compiling with gcc 4.0.
417 Some tests called elflint without appropriate LD_LIBRARY_PATH.
421 Fix support for platforms with lib64.
425 libebl: add ppc and ppc64 support
427 readelf: fix minimal memory leak.
429 Add support to compile with mudflap.
431 Modernize configure.ac. Move scripts in config subdir.
433 Modernize *-po directory infrastructure.
435 libelf: Add gelf_getlib and gelf_update_lib
437 readelf: print liblist sections
441 Fix some minimal build problems.
445 ibdw: tons of new functionality and bug fixes. Several interface changes.
447 readelf: use libdw now.
449 libdwarf: removed completely.
453 configuration changes.
457 libdw: fix memory handling. Implement source line handling.
458 nm: use libdw instead of libdwarf.
459 libelf: change to GPL from OSL1 for now.
463 libebl: Recognize a few more section types and dynamic tags and return
468 strip: fix overwriting of symbol table in input file.
472 libebl: Add some ia64 bits.
476 Bug fixes for big endian and some 64-bit machines.
480 strip: fix handling of Alpha and s390x which use incorrect hash bucket sizes.
482 ld: tons of changes, moving towards usability.
486 strip: update section group symbol index if the associated symbol table changed
488 libelf: fix two problems with generating output not via mmap
490 elflint: add probably 10-15 more tests
491 libebl: add support for some of the new tests
493 ld: gazillion changes
497 elflint: deal with .rel.dyn section. Fix a problem with rela platforms.
498 Handle PT_GNU_STACK. Change to write messages to stdout.
500 readelf: fix a problem with version information in the symbol table output.
502 strip: update all version symbol table entries
508 strip: last changed caused problems when the symbol table is before the
509 relocation section. Fixed. This fix also improved the asymptotic
510 behavior if many symbol table sections are present.
514 Run strip tests with the correct libelf and libebl.
516 libelf: fix bug in verneed byte order changing code.
520 strip: Remove unused symbol table entries. This might require updating
521 various other sections.
525 Fix some libelf problems with ET_REL files.
529 More warning changes, mainly by jbj.
531 libdw: yet more new code. dwarf_child and dwarf_sibling should now actually
536 libdw: 10+ new functions. get-pubnames2 works now fully. Almost all the
537 code needed for nm is in place.
541 cleanups to compile cleanly with gcc 3.3 and -Werror.
543 libdw: some new code.
547 libebl: Fix last patch to recognize relocation sections. We must not
552 libebl: .debug_ranges is a DWARF 3 debug section
553 libebl: recognize relocation sections for debug section
554 Patches by Jakub Jelinek.
558 Cleanups and more SPARC support by Tom Callaway <tcallaway@redhat.com>.
562 64-bit cleanups for the programs.
566 libelf: and yet more fun with endian tranformation at output time.
570 libelf: more fun with endian tranformation at output time. Add test for it.
574 libelf: Two little bugs left from previous patch to handle section output
577 libelf: add unlikely in some more places.
581 libelf: fix output routines to handle case where section indeces and
582 ordre in the output file don't match correctly. Patch by Jakub.
584 elflint: fix test of note section content for 64-bit platforms and files
585 with different byte order.
589 libebl: Fix SH_ENTSIZE_HASH definition (patch by Jakub)
593 libelf: correct mistake in error string handling.
595 libelf: Implement ELF_F_PERMISSIVE.
596 strip: Implement --permissive option.
600 strip: Implement -g option.
602 libelf: Handle broken hash table entry sizes.
604 libebl: New function ebl_debugscn_p. Use it where appropriate.
608 libelf: Use correct file size for NOBITS section with ELF_F_LAYOUT set
612 libelf: Make error handling more robust.
613 libelf: Use TLS in error handler if configured with --enable-tls
615 tests: input files are now distributed, not uuencoded in the shell scripts
617 libdw: implement error handling, dwarf_get_pubnames
621 Build (incomplete) libdw.
633 libebl: Handle .gnu.warning.* sections correctly.
635 size: Implement -t option.
637 libebl: Add IA-64 support.
638 libebl: Update SH relocations.
639 libebl: Add Alpha support.
640 libebl: Add Arm support.
641 libebl: Add support for all currently known architecture to the loader.
645 nm: Implement -S option. Correct portable output format. Implement -s option.
647 libelf: Take offset of archive into account in elf_rand.
651 strip: fix handling of ET_REL files.
656 strip: respect layout of input file
660 strip: handle files with large number of sections.
664 libelf: quite a few bug fixes by Alex Larsson.
666 strip: implement -f option to place stripped sections into a separate
667 file. By Alex Larsson.
671 strip: don't let STT_SECTION symbols keeps sections from being removed
673 elflint: local symbols are allowed in .dynsym
674 elflint: special case .rel.dyn a bit
678 elflint: check types and flags of special sections defined in gABI
680 libebl: add x86-64 support
684 Start improvement of debug info handling in nm.
686 libasm: implement asm_adduleb128 and asm_addsleb128 and a test for them
690 Fix build on 64-bit platforms.
694 nm: print file/line number also for local symbols
696 use versions scripts not libtool's useless -export-symbols option
700 Update to autoconf 2.54 and automake 1.7.
702 elflint: check note sections
704 libdwarf: a number of bug fixes
706 readelf: print .debug_info section content
708 dwarf.h: Update from draft 7
714 libelf: new function to read parts of the ELF file
716 libebl: support for note section handling
718 readelf: dump note sections
722 libelf: fix little new section-handling related bugs in elf_getshstrndx
725 elflint: tests for mandatory content of dynamic section
727 libasm: better handling of absolute symbols
731 libasm: rewrite to store Elf_Scn* instead of indices
733 nm: finish many-section support
735 nm: use debug in to print file/line info in sysv format
737 libdwarf: fix a few bugs in DIE handling
741 libelf: major rewrite to keep Elf_Scn references valid until elf_end
745 libasm: Add support for bss, ABS, and COM sections.
747 libebl: ebl_section_name takes now two index arguments to distinguish
748 between special sections and extended sections
752 General: fix a few problem gcc 3.1 had with the code.
754 libelf: implement {gelf,elf32,elf64}_checksum
756 libelf: optimze DSO: fewer relocations, fewer PLTs
760 ld: use correct section header string table index; write correct index
762 add dependencies for *.sym files
766 libelf: add elf_getshnum and elf_getshstrndx
768 libebl: update section type name function
770 elflint: tons of fixes wrt large number of sections. New tests in this area.
771 Same amount of other bug fixes.
773 size, strip, nm: better support for large number of sections. Including
774 using correct section header string table
776 libasm: correctly create data structures for large number of sections
778 new tests asm-tst4 and asm-tst5 to check large number of sections
780 libasm: implement section group generation
782 elflint: more tests on section groups. Improve performance on existing
787 ld: add undefined symbols to dynamic symbol table if --export-dynamic is
790 ld: fix value of e_entry
794 elflint: print section names in error messages
796 elflint: mustn't warn about multiple DT_NULL
798 ld: don't emit all symbols if --export-dynamic is not given
800 ld: correct compute symbol address in output file (section index was off by 1)
802 ld: generate correct version info in dynsym without --export-dynamic and
807 Fix check of various e_*size entries in elflint.
809 Handle text output in asm_newsym.
811 Finish checks in asm-tst3.
815 Update to autoconf 2.53, automake 1.6, gettext 0.11+.
817 Introduce *.sym files to restrict export from DSOs.
819 Use attribute_hidden and internal_function to optimize DSO code.
821 Add TLS definitions in elf.h and handle them in readelf.
823 Fix bug in verdef section generation in ld.
825 Add initial libasm code.
829 Implement better hash size optimization heuristic in ld. It uses a formula
830 taking number of tests into account.
832 Lots of small bug fixes.
834 Improve readelf output format. Respect various sh_link/sh_info values.
835 Correctly print versioning information for symbol tables.
839 Implement preprocessing of linker script. Recognize -z combreloc.
843 Implement -z ignore|record for ld.
845 Implement creating of .gnu.version_r and .gnu.version sections. The
846 .gnu.version does not yet contain correct info for defined and versioned
847 symbols (means .gnu.version_d is not yet implemented).
849 Implement gelf_update_* functions to create versioning data.
853 Add DT_RUNPATH/DT_RPATH entries to dynamic section. Create .plt and
854 .rel.plt sections (completely). Add support for all four PLT related
855 dynamic section entries. Add callback function for PLT creation.
857 More tests in elflint. Add support for very strict checking which for
858 now flags level 2 (deprecated features) usage.
862 Create dynamic symbol table, dynamic string table, and hash table to ld.
864 Add hash table histogram support to readelf.
870 ld now creates the dynamic section and references it. Start adding entries
875 Start implementing elflint.
879 Fix handling of NOBITS sections in elf_getdata.
881 Start implementing generation of executables and DSOs in ld.
882 Generation of program header mostly done. Address computation done.
883 Extension of linker script syntax.
887 Implement section group handling in readelf.
891 Implement section groups. This involved a lot of code moving. The
892 new code is entirely untested since gas/gcc are currently not able to
893 create section groups. ld works fine on files without section groups.
897 Fix problem with adding more section in elf_newscn. The section pointers
898 for the data buffers wasn't adjusted.
900 Fix elf_getdata with nonzero second parameter. Correctly handle creation
901 of internal data buffer for machines without unaligned access.
905 Start adding support to selectively add sections. Includes support for
907 Add --gc-sections/--no-gc-sections options.
908 Add general section merging support.
910 Fix a bug in section group support in strip.
912 Fix some potential problems with hash value in dynamic hash implementation.
916 section merging works in ld.
920 Actually create data structures from version map file and use it to hide
923 Implement -s -s for ld.
927 Improve relocation table output in readelf. Avoid some crashes.
928 Finish many section handling in readelf.
930 Finish: finish implementation of ld -r. At least some simple tests pass.
934 Fix a number of errors in ELF_C_WRITE handling.
936 Almost finished implementation of ld -r. The data sections are all copied.
937 Handling of symbol tables is missing.
941 Handle DSO and archive input files correctly if -r option is given.
943 Gracefully deal with no phdr in new file in libelf.
944 Fix various small error handling problems.
945 Don't mmap file for output unless the command says so.
947 Add code to create ELF section header table to ld finalize routines.
951 Fix some problems with recursive handling of archives in libelf.
953 Improve messages printed by nm.
955 Add symbol binding name handling to libebl. Fix section name handling in
958 readelf and nm use more libebl functions.
960 Handle XINDEX correctly in nm and string.
962 Add first machine ld backend library (i386).
963 Use it. Recognize -r and --shared. Avoid using -lxxx parameters for -r.
964 Create ELF header in output file. Change mode of output file according to
965 output file type. Reorganize callback initialization in ld.
969 Fix some memory leaks in libelf.
973 Implement reading version script. Both inside linker scripts and via the
974 --version-script command line parameter. Uses the same code.
975 What remains to be done is to implement a data structure which allows
976 efficient matching against the version names to decide which pattern
979 Beginning of output generation and output writing functions.
983 Finish implementation for DSO input file handling. Implement rpath, runpath,
984 and LD_LIBRARY_PATH handling.
988 make handling of e_shnum overflow in libelf standard conforming
990 ld now actually can handle DSOs in linker scripts. Handling of DT_RUNPATH,
991 DT_RPATH, -rpath, -rpath-link still remains to be implemented.
993 fix handling of -L parameters. Make actual use of the default_paths element.
995 make re-definition of symbols in and from DSO compatible with existing linker
999 more work on assigning input sections to output sections.
1001 Add gelf_xlatetof and gelf_xlatetom which were accidently left out.
1003 Fix memory handling of section headers.
1007 Add many-section support to ld. Add various new command line parameters.
1008 Allow pagesize to be specified in linker script or on the command line.
1009 Collect input sections in list for the output section according to the rules
1010 specified in the linker script.
1014 Fix some problems in the internal list handling which had the result
1015 that we didn't look for some of the unresolved symbols.
1017 Free some memory if we know we don't need it anymore.
1019 Optimize the list of unresolved symbols. Throw out symbols which are
1024 Got file reading correct now. The files are all read while parsing
1025 the parameters. No creating of data structures to describe the linker
1026 command line. The symbol table is built up while reading the files.
1027 DSOs are handled now. -( -) handling is optimized.
1031 Linker read linker scripts everywhere. Handles --whole-archive. Recognizes
1032 --dynamic and --static. Collects defined and undefined symbols. Recognizes
1035 libebl now defines functions to call the callbacks. Add generic name handling
1036 in these new functions. Remove the code from readelf and call the new
1041 Start of linker. Basic argument parsing, finding of input files,
1042 linker script reading.
1046 Implement dwarf_get_fde_n(), dwarf_get_abbrev(), dwarf_get_abbrev_tag(),
1047 dwarf_get_abbrev_code(), dwarf_get_abbrev_children_flag(),
1048 dwarf_get_abbrev_entry(), dwarf_get_fde_at_pc(), and tests for it.
1052 Implement dwarf_get_fde_list_eh(), dwarf_get_cie_of_fde(),
1053 dwarf_get_fde_range(), dwarf_get_cie_info(), dwarf_get_fde_instr_bytes(),
1058 Make handling of binaries in other byte order work and add tests for it.
1062 Implement dwarf_get_aranges(), dwarf_get_arange(), dwarf_get_cu_die_offset(),
1063 dwarf_get_arange_info(), and tests for them.
1067 Implement dwarf_get_global(), dwarf_globname(), dwarf_global_die_offset(),
1068 dwarf_global_cu_offset(), dwarf_global_name_offsets(), and tests for them
1072 Implemented dwarf_srclines(), dwarf_srcfiles(), dwarf_linebeginstatement(),
1073 dwarf_lineendsequence(), dwarf_lineno(), dwarf_lineaddr(), dwarf_lineoff(),
1074 dwarf_linesrc(), dwarf_lineblock(), dwarf_lineprologueend(),
1075 dwarf_lineepiloguebegin(), and tests for them.
1079 Implemented dwarf_loclist().
1083 Implemented dwarf_dieoffset(), dwarf_die_CU_offset(), dwarf_diename() and
1086 Implemented dwarf_attrlist(), dwarf_hasattr(), dwarf_attr(), dwarf_lowpc(),
1087 dwarf_highpc(), dwarf_bytesize(), dwarf_bitsize(), dwarf_bitoffset(),
1088 dwarf_srclang(), dwarf_arrayorder(), dwarf_hasform(), dwarf_whatform(),
1089 dwarf_whatattr(), dwarf_formref(), dwarf_global_formref(), dwarf_formaddr(),
1090 dwarf_formflag(), dwarf_formudata(), dwarf_formsdata(), dwarf_formblock,
1091 dwarf_formstring() and tests for them.
1095 Implemented dwarf_offdie()), dwarf_tag(), dwarf_dieoffset(),
1096 dwarf_die_CU_offset(), dwarf_diename() and tests for them.
1100 First libdwarf functions work.
1104 libelf and parts of libebl are done.