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 elflint: fix tests of dynamic section content.
11 ld: Implement --as-needed, --execstack, PT_GNU_STACK. Many small patches.
13 libdw, libdwfl: handle files without aranges info.
19 dwarf.h updated for DWARF 3.0 final specification.
21 libdwfl: New function dwfl_version.
23 The license is now GPL for most files. The libelf, libebl, libdw,
24 and libdwfl libraries have additional exceptions. Add reference to
35 libdwfl: New function dwfl_module_register_names.
37 libebl: New backend hook for register names.
41 libdwfl: New function dwfl_module_return_value_location.
43 libebl: Backend improvements for several CPUs.
47 libdw: New functions dwarf_ranges, dwarf_entrypc, dwarf_diecu,
48 dwarf_entry_breakpoints. Removed Dwarf_Func type and functions
49 dwarf_func_name, dwarf_func_lowpc, dwarf_func_highpc,
50 dwarf_func_entrypc, dwarf_func_die; dwarf_getfuncs callback now uses
51 Dwarf_Die, and dwarf_func_file, dwarf_func_line, dwarf_func_col
52 replaced by dwarf_decl_file, dwarf_decl_line, dwarf_decl_column;
53 dwarf_func_inline, dwarf_func_inline_instances now take Dwarf_Die.
54 Type Dwarf_Loc renamed to Dwarf_Op; dwarf_getloclist,
55 dwarf_addrloclists renamed dwarf_getlocation, dwarf_getlocation_addr.
59 libelf: speed-ups of non-mmap reading.
63 Implement --enable-gcov option for configure.
65 libdw: New function dwarf_getscopes_die.
69 libelf: new function elf_getaroff
71 libdw: Added dwarf_func_die, dwarf_func_inline, dwarf_func_inline_instances.
73 libdwfl: New functions dwfl_report_offline, dwfl_offline_section_address,
74 dwfl_linux_kernel_report_offline.
80 elflint: relax a bit. Allow version definitions for defined symbols against
81 DSO versions also for symbols in nobits sections. Allow .rodata section
82 to have STRINGS and MERGE flag set.
84 strip: add some more compatibility with binutils.
88 elfcmp: some more relaxation.
90 elflint: many more tests, especially regarding to symbol versioning.
92 libelf: Add elfXX_offscn and gelf_offscn.
94 libasm: asm_begin interface changes.
96 libebl: Add three new interfaces to directly access machine, class, and
97 data encoding information.
99 objdump: New program. Just the beginning.
103 libdw: now contains all of libdwfl. The latter is not installed anymore.
105 elfcmp: little usability tweak, name and index of differing section is printed.
109 libelf: fix a number of problems with elf_update
111 elfcmp: fix a few bugs. Compare gaps.
113 Fix a few PLT problems and mudflap build issues.
115 libebl: Don't expose Ebl structure definition in libebl.h. It's now private.
119 libebl: Check for matching modules.
121 elflint: Check that copy relocations only happen for OBJECT or NOTYPE symbols.
125 libdwfl: New library.
129 strip: fix bug introduced in last change
131 libdw: records returned by dwarf_getsrclines are now sorted by address
135 readelf: improve DWARF output format
137 strip: support Linux kernel modules
141 libdw: Updated dwarf.h from DWARF3 spec
142 libdw: add new funtions dwarf_func_entrypc, dwarf_func_file, dwarf_func_line,
143 dwarf_func_col, dwarf_getsrc_file
147 addr2line: New program
149 libdw: add new functions: dwarf_addrdie, dwarf_macro_*, dwarf_getfuncs,
152 findtextrel: use dwarf_addrdie
156 findtextrel: New program.
160 libdw: Fix using libdw.h with gcc < 4 and C++ code. Compiler bug.
164 More Makefile and spec file cleanups.
168 Remove most gettext autoconf handling.
172 Fix resulting problems. One actual bug found and fixed this way
176 libebl: Fix x86-64 relocations.
178 Add -Wunused -Wextra warnings.
180 Some cleanups resulting from those additional warnings.
182 Lots of Makefile cleanup.
186 libelf: add gelf_checksum prototype to <libelf.h>
188 libelf: fix elf*_checksum handling of NOBITS sections
190 Finish mudflap support.
192 Fix three bugs found by mudflap.
194 ld: add as_needed support
198 readelf: in section to segment mapping, indicate read-only sections.
200 elflint: more relaxation for GNU ld
204 Fix compiling with gcc 4.0.
205 Some tests called elflint without appropriate LD_LIBRARY_PATH.
209 Fix support for platforms with lib64.
213 libebl: add ppc and ppc64 support
215 readelf: fix minimal memory leak.
217 Add support to compile with mudflap.
219 Modernize configure.ac. Move scripts in config subdir.
221 Modernize *-po directory infrastructure.
223 libelf: Add gelf_getlib and gelf_update_lib
225 readelf: print liblist sections
229 Fix some minimal build problems.
233 ibdw: tons of new functionality and bug fixes. Several interface changes.
235 readelf: use libdw now.
237 libdwarf: removed completely.
241 configuration changes.
245 libdw: fix memory handling. Implement source line handling.
246 nm: use libdw instead of libdwarf.
247 libelf: change to GPL from OSL1 for now.
251 libebl: Recognize a few more section types and dynamic tags and return
256 strip: fix overwriting of symbol table in input file.
260 libebl: Add some ia64 bits.
264 Bug fixes for big endian and some 64-bit machines.
268 strip: fix handling of Alpha and s390x which use incorrect hash bucket sizes.
270 ld: tons of changes, moving towards usability.
274 strip: update section group symbol index if the associated symbol table changed
276 libelf: fix two problems with generating output not via mmap
278 elflint: add probably 10-15 more tests
279 libebl: add support for some of the new tests
281 ld: gazillion changes
285 elflint: deal with .rel.dyn section. Fix a problem with rela platforms.
286 Handle PT_GNU_STACK. Change to write messages to stdout.
288 readelf: fix a problem with version information in the symbol table output.
290 strip: update all version symbol table entries
296 strip: last changed caused problems when the symbol table is before the
297 relocation section. Fixed. This fix also improved the asymptotic
298 behavior if many symbol table sections are present.
302 Run strip tests with the correct libelf and libebl.
304 libelf: fix bug in verneed byte order changing code.
308 strip: Remove unused symbol table entries. This might require updating
309 various other sections.
313 Fix some libelf problems with ET_REL files.
317 More warning changes, mainly by jbj.
319 libdw: yet more new code. dwarf_child and dwarf_sibling should now actually
324 libdw: 10+ new functions. get-pubnames2 works now fully. Almost all the
325 code needed for nm is in place.
329 cleanups to compile cleanly with gcc 3.3 and -Werror.
331 libdw: some new code.
335 libebl: Fix last patch to recognize relocation sections. We must not
340 libebl: .debug_ranges is a DWARF 3 debug section
341 libebl: recognize relocation sections for debug section
342 Patches by Jakub Jelinek.
346 Cleanups and more SPARC support by Tom Callaway <tcallaway@redhat.com>.
350 64-bit cleanups for the programs.
354 libelf: and yet more fun with endian tranformation at output time.
358 libelf: more fun with endian tranformation at output time. Add test for it.
362 libelf: Two little bugs left from previous patch to handle section output
365 libelf: add unlikely in some more places.
369 libelf: fix output routines to handle case where section indeces and
370 ordre in the output file don't match correctly. Patch by Jakub.
372 elflint: fix test of note section content for 64-bit platforms and files
373 with different byte order.
377 libebl: Fix SH_ENTSIZE_HASH definition (patch by Jakub)
381 libelf: correct mistake in error string handling.
383 libelf: Implement ELF_F_PERMISSIVE.
384 strip: Implement --permissive option.
388 strip: Implement -g option.
390 libelf: Handle broken hash table entry sizes.
392 libebl: New function ebl_debugscn_p. Use it where appropriate.
396 libelf: Use correct file size for NOBITS section with ELF_F_LAYOUT set
400 libelf: Make error handling more robust.
401 libelf: Use TLS in error handler if configured with --enable-tls
403 tests: input files are now distributed, not uuencoded in the shell scripts
405 libdw: implement error handling, dwarf_get_pubnames
409 Build (incomplete) libdw.
421 libebl: Handle .gnu.warning.* sections correctly.
423 size: Implement -t option.
425 libebl: Add IA-64 support.
426 libebl: Update SH relocations.
427 libebl: Add Alpha support.
428 libebl: Add Arm support.
429 libebl: Add support for all currently known architecture to the loader.
433 nm: Implement -S option. Correct portable output format. Implement -s option.
435 libelf: Take offset of archive into account in elf_rand.
439 strip: fix handling of ET_REL files.
444 strip: respect layout of input file
448 strip: handle files with large number of sections.
452 libelf: quite a few bug fixes by Alex Larsson.
454 strip: implement -f option to place stripped sections into a separate
455 file. By Alex Larsson.
459 strip: don't let STT_SECTION symbols keeps sections from being removed
461 elflint: local symbols are allowed in .dynsym
462 elflint: special case .rel.dyn a bit
466 elflint: check types and flags of special sections defined in gABI
468 libebl: add x86-64 support
472 Start improvement of debug info handling in nm.
474 libasm: implement asm_adduleb128 and asm_addsleb128 and a test for them
478 Fix build on 64-bit platforms.
482 nm: print file/line number also for local symbols
484 use versions scripts not libtool's useless -export-symbols option
488 Update to autoconf 2.54 and automake 1.7.
490 elflint: check note sections
492 libdwarf: a number of bug fixes
494 readelf: print .debug_info section content
496 dwarf.h: Update from draft 7
502 libelf: new function to read parts of the ELF file
504 libebl: support for note section handling
506 readelf: dump note sections
510 libelf: fix little new section-handling related bugs in elf_getshstrndx
513 elflint: tests for mandatory content of dynamic section
515 libasm: better handling of absolute symbols
519 libasm: rewrite to store Elf_Scn* instead of indices
521 nm: finish many-section support
523 nm: use debug in to print file/line info in sysv format
525 libdwarf: fix a few bugs in DIE handling
529 libelf: major rewrite to keep Elf_Scn references valid until elf_end
533 libasm: Add support for bss, ABS, and COM sections.
535 libebl: ebl_section_name takes now two index arguments to distinguish
536 between special sections and extended sections
540 General: fix a few problem gcc 3.1 had with the code.
542 libelf: implement {gelf,elf32,elf64}_checksum
544 libelf: optimze DSO: fewer relocations, fewer PLTs
548 ld: use correct section header string table index; write correct index
550 add dependencies for *.sym files
554 libelf: add elf_getshnum and elf_getshstrndx
556 libebl: update section type name function
558 elflint: tons of fixes wrt large number of sections. New tests in this area.
559 Same amount of other bug fixes.
561 size, strip, nm: better support for large number of sections. Including
562 using correct section header string table
564 libasm: correctly create data structures for large number of sections
566 new tests asm-tst4 and asm-tst5 to check large number of sections
568 libasm: implement section group generation
570 elflint: more tests on section groups. Improve performance on existing
575 ld: add undefined symbols to dynamic symbol table if --export-dynamic is
578 ld: fix value of e_entry
582 elflint: print section names in error messages
584 elflint: mustn't warn about multiple DT_NULL
586 ld: don't emit all symbols if --export-dynamic is not given
588 ld: correct compute symbol address in output file (section index was off by 1)
590 ld: generate correct version info in dynsym without --export-dynamic and
595 Fix check of various e_*size entries in elflint.
597 Handle text output in asm_newsym.
599 Finish checks in asm-tst3.
603 Update to autoconf 2.53, automake 1.6, gettext 0.11+.
605 Introduce *.sym files to restrict export from DSOs.
607 Use attribute_hidden and internal_function to optimize DSO code.
609 Add TLS definitions in elf.h and handle them in readelf.
611 Fix bug in verdef section generation in ld.
613 Add initial libasm code.
617 Implement better hash size optimization heuristic in ld. It uses a formula
618 taking number of tests into account.
620 Lots of small bug fixes.
622 Improve readelf output format. Respect various sh_link/sh_info values.
623 Correctly print versioning information for symbol tables.
627 Implement preprocessing of linker script. Recognize -z combreloc.
631 Implement -z ignore|record for ld.
633 Implement creating of .gnu.version_r and .gnu.version sections. The
634 .gnu.version does not yet contain correct info for defined and versioned
635 symbols (means .gnu.version_d is not yet implemented).
637 Implement gelf_update_* functions to create versioning data.
641 Add DT_RUNPATH/DT_RPATH entries to dynamic section. Create .plt and
642 .rel.plt sections (completely). Add support for all four PLT related
643 dynamic section entries. Add callback function for PLT creation.
645 More tests in elflint. Add support for very strict checking which for
646 now flags level 2 (deprecated features) usage.
650 Create dynamic symbol table, dynamic string table, and hash table to ld.
652 Add hash table histogram support to readelf.
658 ld now creates the dynamic section and references it. Start adding entries
663 Start implementing elflint.
667 Fix handling of NOBITS sections in elf_getdata.
669 Start implementing generation of executables and DSOs in ld.
670 Generation of program header mostly done. Address computation done.
671 Extension of linker script syntax.
675 Implement section group handling in readelf.
679 Implement section groups. This involved a lot of code moving. The
680 new code is entirely untested since gas/gcc are currently not able to
681 create section groups. ld works fine on files without section groups.
685 Fix problem with adding more section in elf_newscn. The section pointers
686 for the data buffers wasn't adjusted.
688 Fix elf_getdata with nonzero second parameter. Correctly handle creation
689 of internal data buffer for machines without unaligned access.
693 Start adding support to selectively add sections. Includes support for
695 Add --gc-sections/--no-gc-sections options.
696 Add general section merging support.
698 Fix a bug in section group support in strip.
700 Fix some potential problems with hash value in dynamic hash implementation.
704 section merging works in ld.
708 Actually create data structures from version map file and use it to hide
711 Implement -s -s for ld.
715 Improve relocation table output in readelf. Avoid some crashes.
716 Finish many section handling in readelf.
718 Finish: finish implementation of ld -r. At least some simple tests pass.
722 Fix a number of errors in ELF_C_WRITE handling.
724 Almost finished implementation of ld -r. The data sections are all copied.
725 Handling of symbol tables is missing.
729 Handle DSO and archive input files correctly if -r option is given.
731 Gracefully deal with no phdr in new file in libelf.
732 Fix various small error handling problems.
733 Don't mmap file for output unless the command says so.
735 Add code to create ELF section header table to ld finalize routines.
739 Fix some problems with recursive handling of archives in libelf.
741 Improve messages printed by nm.
743 Add symbol binding name handling to libebl. Fix section name handling in
746 readelf and nm use more libebl functions.
748 Handle XINDEX correctly in nm and string.
750 Add first machine ld backend library (i386).
751 Use it. Recognize -r and --shared. Avoid using -lxxx parameters for -r.
752 Create ELF header in output file. Change mode of output file according to
753 output file type. Reorganize callback initialization in ld.
757 Fix some memory leaks in libelf.
761 Implement reading version script. Both inside linker scripts and via the
762 --version-script command line parameter. Uses the same code.
763 What remains to be done is to implement a data structure which allows
764 efficient matching against the version names to decide which pattern
767 Beginning of output generation and output writing functions.
771 Finish implementation for DSO input file handling. Implement rpath, runpath,
772 and LD_LIBRARY_PATH handling.
776 make handling of e_shnum overflow in libelf standard conforming
778 ld now actually can handle DSOs in linker scripts. Handling of DT_RUNPATH,
779 DT_RPATH, -rpath, -rpath-link still remains to be implemented.
781 fix handling of -L parameters. Make actual use of the default_paths element.
783 make re-definition of symbols in and from DSO compatible with existing linker
787 more work on assigning input sections to output sections.
789 Add gelf_xlatetof and gelf_xlatetom which were accidently left out.
791 Fix memory handling of section headers.
795 Add many-section support to ld. Add various new command line parameters.
796 Allow pagesize to be specified in linker script or on the command line.
797 Collect input sections in list for the output section according to the rules
798 specified in the linker script.
802 Fix some problems in the internal list handling which had the result
803 that we didn't look for some of the unresolved symbols.
805 Free some memory if we know we don't need it anymore.
807 Optimize the list of unresolved symbols. Throw out symbols which are
812 Got file reading correct now. The files are all read while parsing
813 the parameters. No creating of data structures to describe the linker
814 command line. The symbol table is built up while reading the files.
815 DSOs are handled now. -( -) handling is optimized.
819 Linker read linker scripts everywhere. Handles --whole-archive. Recognizes
820 --dynamic and --static. Collects defined and undefined symbols. Recognizes
823 libebl now defines functions to call the callbacks. Add generic name handling
824 in these new functions. Remove the code from readelf and call the new
829 Start of linker. Basic argument parsing, finding of input files,
830 linker script reading.
834 Implement dwarf_get_fde_n(), dwarf_get_abbrev(), dwarf_get_abbrev_tag(),
835 dwarf_get_abbrev_code(), dwarf_get_abbrev_children_flag(),
836 dwarf_get_abbrev_entry(), dwarf_get_fde_at_pc(), and tests for it.
840 Implement dwarf_get_fde_list_eh(), dwarf_get_cie_of_fde(),
841 dwarf_get_fde_range(), dwarf_get_cie_info(), dwarf_get_fde_instr_bytes(),
846 Make handling of binaries in other byte order work and add tests for it.
850 Implement dwarf_get_aranges(), dwarf_get_arange(), dwarf_get_cu_die_offset(),
851 dwarf_get_arange_info(), and tests for them.
855 Implement dwarf_get_global(), dwarf_globname(), dwarf_global_die_offset(),
856 dwarf_global_cu_offset(), dwarf_global_name_offsets(), and tests for them
860 Implemented dwarf_srclines(), dwarf_srcfiles(), dwarf_linebeginstatement(),
861 dwarf_lineendsequence(), dwarf_lineno(), dwarf_lineaddr(), dwarf_lineoff(),
862 dwarf_linesrc(), dwarf_lineblock(), dwarf_lineprologueend(),
863 dwarf_lineepiloguebegin(), and tests for them.
867 Implemented dwarf_loclist().
871 Implemented dwarf_dieoffset(), dwarf_die_CU_offset(), dwarf_diename() and
874 Implemented dwarf_attrlist(), dwarf_hasattr(), dwarf_attr(), dwarf_lowpc(),
875 dwarf_highpc(), dwarf_bytesize(), dwarf_bitsize(), dwarf_bitoffset(),
876 dwarf_srclang(), dwarf_arrayorder(), dwarf_hasform(), dwarf_whatform(),
877 dwarf_whatattr(), dwarf_formref(), dwarf_global_formref(), dwarf_formaddr(),
878 dwarf_formflag(), dwarf_formudata(), dwarf_formsdata(), dwarf_formblock,
879 dwarf_formstring() and tests for them.
883 Implemented dwarf_offdie()), dwarf_tag(), dwarf_dieoffset(),
884 dwarf_die_CU_offset(), dwarf_diename() and tests for them.
888 First libdwarf functions work.
892 libelf and parts of libebl are done.