1Version 0.165 2 3elfcompress: New utility to compress or decompress ELF sections. 4 5readelf: Add -z,--decompress option. 6 7libelf: Add elf_compress, elf_compress_gnu, elf32_getchdr, elf64_getchdr 8 and gelf_getchdr. 9 10libdwelf: New function dwelf_scn_gnu_compressed_size. 11 12config: Add libelf and libdw pkg-config files. 13 14backends: sparc support for core and live backtraces. 15 16translations: Updated Polish translation. 17 18Version 0.164 19 20strip, unstrip: Handle ELF files with merged strtab/shstrtab tables. 21 Handle missing SHF_INFO_LINK section flags. 22 23libelf: Use int64_t for offsets in libelf.h instead of loff_t. 24 25libdw: dwarf.h Add preliminary DWARF5 DW_LANG_Haskell. 26 27libdwfl: dwfl_standard_find_debuginfo now searches any subdir of the binary 28 path under the debuginfo root when the separate debug file couldn't 29 be found by build-id. 30 dwfl_linux_proc_attach can now be called before any Dwfl_Modules 31 have been reported. 32 33backends: Better sparc and sparc64 support. 34 35translations: Updated Ukrainian translation. 36 37Provide default-yama-scope subpackage. 38 39Version 0.163 40 41Bug fixes only, no new features. 42 43Version 0.162 44 45libdw: Install new header elfutils/known-dwarf.h. 46 dwarf.h Add preliminary DWARF5 constants DW_TAG_atomic_type, 47 DW_LANG_Fortran03, DW_LANG_Fortran08. dwarf_peel_type now also 48 handles DW_TAG_atomic_type. 49 50addr2line: Input addresses are now always interpreted as hexadecimal 51 numbers, never as octal or decimal numbers. 52 New option -a, --addresses to print address before each entry. 53 New option -C, --demangle to show demangled symbols. 54 New option --pretty-print to print all information on one line. 55 56ar: CVE-2014-9447 Directory traversal vulnerability in ar extraction. 57 58backends: x32 support. 59 60Version 0.161 61 62libdw: New function dwarf_peel_type. dwarf_aggregate_size now uses 63 dwarf_peel_type to also provide the sizes of qualified types. 64 dwarf_getmacros will now serve either of .debug_macro and 65 .debug_macinfo transparently. New interfaces 66 dwarf_getmacros_off, dwarf_macro_getsrcfiles, 67 dwarf_macro_getparamcnt, and dwarf_macro_param are available 68 for more generalized inspection of macros and their parameters. 69 dwarf.h: Add DW_AT_GNU_deleted, DW_AT_noreturn, DW_LANG_C11, 70 DW_LANG_C_plus_plus_11 and DW_LANG_C_plus_plus_14. 71 72Version 0.160 73 74libdw: New functions dwarf_cu_getdwarf, dwarf_cu_die. 75 dwarf.h remove non-existing DW_TAG_mutable_type. 76 77libdwfl: Handle LZMA .ko.xz compressed kernel modules. 78 79unstrip: New option -F, --force to combining files even if some ELF headers 80 don't seem to match. 81 82backends: Handle ARM THUMB functions. Add support for ppc64le ELFv2 abi. 83 84Version 0.159 85 86stack: New option -d, --debugname to lookup DWARF debuginfo name for frame. 87 New option -i, --inlines to show inlined frames using DWARF debuginfo. 88 89libdwelf: New libdwelf.h header for libdw.so DWARF ELF Low-level Functions. 90 New function dwelf_elf_gnu_debuglink, dwelf_dwarf_gnu_debugaltlink, 91 and dwelf_elf_gnu_build_id. 92 93libdw: Support for DWZ multifile forms DW_FORM_GNU_ref_alt and 94 DW_FORM_GNU_strp_alt is now enabled by default and no longer 95 experimental. Added new functions dwarf_getalt and dwarf_setalt 96 to get or set the alternative debug file used for the alt FORMs. 97 The dwfl_linux_proc_find_elf callback will now find ELF from 98 process memory for (deleted) files if the Dwfl has process state 99 attached. 100 101libdwfl: The dwfl_build_id_find_debuginfo and dwfl_standard_find_debuginfo 102 functions will now try to resolve and set the alternative debug file. 103 104backends: Add CFI unwinding for arm. Relies on .debug_frame. 105 Add arm process initial register state compatible mode to AARCH64. 106 Add aarch64 native and core unwind support. 107 108other: All separate elfutils-robustify patches have been merged. 109 CVE-2014-0172 Check overflow before calling malloc to uncompress data. 110 111Version 0.158 112 113libdwfl: dwfl_core_file_report has new parameter executable. 114 New functions dwfl_module_getsymtab_first_global, 115 dwfl_module_getsym_info and dwfl_module_addrinfo. 116 Added unwinder with type Dwfl_Thread_Callbacks, opaque types 117 Dwfl_Thread and Dwfl_Frame and functions dwfl_attach_state, 118 dwfl_pid, dwfl_thread_dwfl, dwfl_thread_tid, dwfl_frame_thread, 119 dwfl_thread_state_registers, dwfl_thread_state_register_pc, 120 dwfl_getthread_frames, dwfl_getthreads, dwfl_thread_getframes 121 and dwfl_frame_pc. 122 123addr2line: New option -x to show the section an address was found in. 124 125stack: New utility that uses the new unwinder for processes and cores. 126 127backends: Unwinder support for i386, x86_64, s390, s390x, ppc and ppc64. 128 aarch64 support. 129 130Version 0.157 131 132libdw: Add new functions dwarf_getlocations, dwarf_getlocation_attr 133 and dwarf_getlocation_die. 134 135readelf: Show contents of NT_SIGINFO and NT_FILE core notes. 136 137addr2line: Support -i, --inlines output option. 138 139backends: abi_cfi hook for arm, ppc and s390. 140 141Version 0.156 142 143lib: New macro COMPAT_VERSION_NEWPROTO. 144 145libdw: Handle GNU extension opcodes in dwarf_getlocation. 146 147libdwfl: Fix STB_GLOBAL over STB_WEAK preference in dwfl_module_addrsym. 148 Add minisymtab support. 149 Add parameter add_p_vaddr to dwfl_report_elf. 150 Use DT_DEBUG library search first. 151 152libebl: Handle new core note types in EBL. 153 154backends: Interpret NT_ARM_VFP. 155 Implement core file registers parsing for s390/s390x. 156 157readelf: Add --elf-section input option to inspect an embedded ELF file. 158 Add -U, --unresolved-address-offsets output control. 159 Add --debug-dump=decodedline support. 160 Accept version 8 .gdb_index section format. 161 Adjust output formatting width. 162 When highpc is in constant form print it also as address. 163 Display raw .debug_aranges. Use libdw only for decodedaranges. 164 165elflint: Add __bss_start__ to the list of allowed symbols. 166 167tests: Add configure --enable-valgrind option to run all tests under valgrind. 168 Enable automake parallel-tests for make check. 169 170translations: Updated Polish translation. 171 172Updates for Automake 1.13. 173 174Version 0.155 175 176libelf: elf*_xlatetomd now works for cross-endian ELF note data. 177 elf_getshdr now works consistently on non-mmaped ELF files after 178 calling elf_cntl(ELF_C_FDREAD). 179 Implement support for ar archives with 64-bit symbol table. 180 181libdw: dwarf.h corrected the DW_LANG_ObjC constant name (was DW_LANG_Objc). 182 Any existing sources using the old name will have to be updated. 183 Add DW_MACRO_GNU .debug_macro type encodings constants, DW_ATE_UTF 184 and DW_OP_GNU_parameter_ref to dwarf.h. 185 Experimental support for DWZ multifile forms DW_FORM_GNU_ref_alt 186 and DW_FORM_GNU_strp_alt. Disabled by default. Use configure 187 --enable-dwz to test it. 188 189readelf: Add .debug_macro parsing support. 190 Add .gdb_index version 7 parsing support. 191 Recognize DW_OP_GNU_parameter_ref. 192 193backends: Add support for Tilera TILE-Gx processor. 194 195translations: Updated Ukrainian translation. 196 197Version 0.154 198 199libelf: [g]elf[32|64]_offscn() do not match SHT_NOBITS sections at OFFSET. 200 201libdw: dwarf_highpc function now handles DWARF 4 DW_AT_high_pc constant form. 202 Fix bug using dwarf_next_unit to iterate over .debug_types. 203 204elflint: Now accepts gold linker produced executables. 205 206The license is now GPLv2/LGPLv3+ for the libraries and GPLv3+ for stand-alone 207programs. There is now also a formal CONTRIBUTING document describing how to 208submit patches. 209 210Version 0.153 211 212libdw: Support reading .zdebug_* DWARF sections compressed via zlib. 213 214libdwfl: Speed up dwfl_module_addrsym. 215 216nm: Support C++ demangling. 217 218ar: Support D modifier for "deterministic output" with no uid/gid/mtime info. 219 The U modifier is the inverse. 220 elfutils can be configured with the --enable-deterministic-archives 221 option to make the D behavior the default when U is not specified. 222 223ranlib: Support -D and -U flags with same meaning. 224 225readelf: Improve output of -wline. Add support for printing SDT elf notes. 226 Add printing of .gdb_index section. 227 Support for typed DWARF stack, call_site and entry_value. 228 229strip: Add --reloc-debug-sections option. 230 Improved SHT_GROUP sections handling. 231 232Version 0.152 233 234Various build and warning nits fixed for newest GCC and Autoconf. 235 236libdwfl: Yet another prelink-related fix for another regression. 237 Look for Linux kernel images in files named with compression suffixes. 238 239elfcmp: New flag --ignore-build-id to ignore differing build ID bits. 240 New flag -l/--verbose to print all differences. 241 242Version 0.151 243 244libdwfl: Fix for more prelink cases with separate debug file. 245 246strip: New flag --strip-sections to remove section headers entirely. 247 248Version 0.150 249 250libdw: Fix for handling huge .debug_aranges section. 251 252libdwfl: Fix for handling prelinked DSO with separate debug file. 253 254findtextrel: Fix diagnostics to work with usual section ordering. 255 256libebl: i386 backend fix for multi-register integer return value location. 257 258Version 0.149: 259 260libdw: Decode new DW_OP_GNU_implicit_pointer operation; 261 new function dwarf_getlocation_implicit_pointer. 262 263libdwfl: New function dwfl_dwarf_line. 264 265addr2line: New flag -F/--flags to print more DWARF line information details. 266 267strip: -g recognizes .gdb_index as a debugging section. 268 269Version 0.148: 270 271libdw: Accept DWARF 4 format: new functions dwarf_next_unit, dwarf_offdie_types. 272 New functions dwarf_lineisa, dwarf_linediscriminator, dwarf_lineop_index. 273 274libdwfl: Fixes in core-file handling, support cores from PIEs. 275 When working from build IDs, don't open a named file that mismatches. 276 277readelf: Handle DWARF 4 formats. 278 279Version 0.147: 280 281libdw: Fixes in CFI handling, best possible handling of bogus CFA ops. 282 283libdwfl: Ignore R_*_NONE relocs, works around old (binutils) ld -r bugs. 284 285Version 0.146: 286 287libdwfl: New function dwfl_core_file_report. 288 289Version 0.145: 290 291Fix build with --disable-dependency-tracking. 292 293Fix build with most recent glibc headers. 294 295libelf: More robust to bogus section headers. 296 297libdw: Fix CFI decoding. 298 299libdwfl: Fix address bias returned by CFI accessors. 300 Fix core file module layout identification. 301 302readelf: Fix CFI decoding. 303 304Version 0.144: 305 306libelf: New function elf_getphdrnum. 307 Now support using more than 65536 program headers in a file. 308 309libdw: New function dwarf_aggregate_size for computing (constant) type 310 sizes, including array_type cases with nontrivial calculation. 311 312readelf: Don't give errors for missing info under -a. 313 Handle Linux "VMCOREINFO" notes under -n. 314 315Version 0.143: 316 317libdw: Various convenience functions for individual attributes now use 318 dwarf_attr_integrate to look up indirect inherited attributes. 319 Location expression handling now supports DW_OP_implicit_value. 320 321libdwfl: Support automatic decompression of files in XZ format, 322 and of Linux kernel images made with bzip2 or LZMA (as well as gzip). 323 324Version 0.142: 325 326libelf: Add elf_getshdrnum alias for elf_getshnum and elf_getshdrstrndx alias 327 for elf_getshstrndx and deprecate original names. Sun screwed up 328 their implementation and asked for a solution. 329 330libebl: Add support for STB_GNU_UNIQUE. 331 332elflint: Add support for STB_GNU_UNIQUE. 333 334readelf: Add -N option, speeds up DWARF printing without address->name lookups. 335 336libdw: Add support for decoding DWARF CFI into location description form. 337 Handle some new DWARF 3 expression operations previously omitted. 338 Basic handling of some new encodings slated for DWARF 4. 339 340Version 0.141: 341 342libebl: sparc backend fixes; 343 some more arm backend support 344 345libdwfl: fix dwfl_module_build_id for prelinked DSO case; 346 fixes in core file support; 347 dwfl_module_getsym interface improved for non-address symbols 348 349strip: fix infinite loop on strange inputs with -f 350 351addr2line: take -j/--section=NAME option for binutils compatibility 352 (same effect as '(NAME)0x123' syntax already supported) 353 354Version 0.140: 355 356libelf: Fix regression in creation of section header 357 358libdwfl: Less strict behavior if DWARF reader ist just used to display data 359 360Version 0.139: 361 362libcpu: Add Intel SSE4 disassembler support 363 364readelf: Implement call frame information and exception handling dumping. 365 Add -e option. Enable it implicitly for -a. 366 367elflint: Check PT_GNU_EH_FRAME program header entry. 368 369libdwfl: Support automatic gzip/bzip2 decompression of ELF files. 370 371Version 0.138: 372 373Install <elfutils/version.h> header file for applications to use in source 374version compatibility checks. 375 376libebl: backend fixes for i386 TLS relocs; backend support for NT_386_IOPERM 377 378libcpu: disassembler fixes 379 380libdwfl: bug fixes 381 382libelf: bug fixes 383 384nm: bug fixes for handling corrupt input files 385 386Version 0.137: 387 388Minor fixes for unreleased 0.136 release. 389 390Version 0.136: 391 392libdwfl: bug fixes; new "segment" interfaces; 393 all the libdwfl-based tools now support --core=COREFILE option 394 395Version 0.135: 396 397libdwfl: bug fixes 398 399strip: changed handling of ET_REL files wrt symbol tables and relocs 400 401Version 0.134: 402 403elflint: backend improvements for sparc, alpha 404 405libdwfl, libelf: bug fixes 406 407Version 0.133: 408 409readelf, elflint, libebl: SHT_GNU_ATTRIBUTE section handling (readelf -A) 410 411readelf: core note handling for NT_386_TLS, NT_PPC_SPE, Alpha NT_AUXV 412 413libdwfl: bug fixes and optimization in relocation handling 414 415elfcmp: bug fix for non-allocated section handling 416 417ld: implement newer features of binutils linker. 418 419Version 0.132: 420 421libcpu: Implement x86 and x86-64 disassembler. 422libasm: Add interface for disassembler. 423 424all programs: add debugging of branch prediction. 425 426libelf: new function elf_scnshndx. 427 428Version 0.131: 429 430libdw: DW_FORM_ref_addr support; dwarf_formref entry point now deprecated; 431 bug fixes for oddly-formatted DWARF 432 433libdwfl: bug fixes in offline archive support, symbol table handling; 434 apply partial relocations for dwfl_module_address_section on ET_REL 435 436libebl: powerpc backend support for Altivec registers 437 438Version 0.130: 439 440readelf: -p option can take an argument like -x for one section, 441 or no argument (as before) for all SHF_STRINGS sections; 442 new option --archive-index (or -c); 443 improved -n output for core files, on many machines 444 445libelf: new function elf_getdata_rawchunk, replaces gelf_rawchunk; 446 new functions gelf_getnote, gelf_getauxv, gelf_update_auxv 447 448readelf, elflint: handle SHT_NOTE sections without requiring phdrs 449 450elflint: stricter checks on debug sections 451 452libdwfl: new functions dwfl_build_id_find_elf, dwfl_build_id_find_debuginfo, 453 dwfl_module_build_id, dwfl_module_report_build_id; 454 support dynamic symbol tables found via phdrs; 455 dwfl_standard_find_debuginfo now uses build IDs when available 456 457unstrip: new option --list (or -n) 458 459libebl: backend improvements for sparc, alpha, powerpc 460 461Version 0.129: 462 463readelf: new options --hex-dump (or -x), --strings (or -p) 464 465addr2line: new option --symbols (or -S) 466 467Version 0.128: 468 469new program: unstrip 470 471elfcmp: new option --hash-inexact 472 473Version 0.127: 474 475libdw: new function dwarf_getsrcdirs 476 477libdwfl: new functions dwfl_module_addrsym, dwfl_report_begin_add, 478 dwfl_module_address_section 479 480Version 0.126: 481 482new program: ar 483 484Version 0.125: 485 486elflint: Compare DT_GNU_HASH tests. 487 488move archives into -static RPMs 489 490libelf, elflint: better support for core file handling 491 492Version 0.124: 493 494libebl: sparc backend support for return value location 495 496libebl, libdwfl: backend register name support extended with more info 497 498libelf, libdw: bug fixes for unaligned accesses on machines that care 499 500readelf, elflint: trivial bugs fixed 501 502Version 0.123: 503 504libebl: Backend build fixes, thanks to Stepan Kasal. 505 506libebl: ia64 backend support for register names, return value location 507 508libdwfl: Handle truncated linux kernel module section names. 509 510libdwfl: Look for linux kernel "vmlinux" files with ".debug" suffix. 511 512elflint: Fix checks to permit --hash-style=gnu format. 513 514Version 0.122: 515 516libebl: add function to test for relative relocation 517 518elflint: fix and extend DT_RELCOUNT/DT_RELACOUNT checks 519 520elflint, readelf: add support for DT_GNU_HASH 521libelf: add elf_gnu_hash 522 523elflint, readelf: add support for 64-bit SysV-style hash tables 524 525libdwfl: new functions dwfl_module_getsymtab, dwfl_module_getsym. 526 527Version 0.121: 528 529libelf: bug fixes for rewriting existing files when using mmap. 530 531make all installed headers usable in C++ code. 532 533readelf: better output format. 534 535elflint: fix tests of dynamic section content. 536 537ld: Implement --as-needed, --execstack, PT_GNU_STACK. Many small patches. 538 539libdw, libdwfl: handle files without aranges info. 540 541Version 0.120: 542 543Bug fixes. 544 545dwarf.h updated for DWARF 3.0 final specification. 546 547libdwfl: New function dwfl_version. 548 549The license is now GPL for most files. The libelf, libebl, libdw, 550and libdwfl libraries have additional exceptions. Add reference to 551OIN. 552 553Version 0.119: 554 555bug fixes 556 557Version 0.118: 558 559elflint: more tests. 560 561libdwfl: New function dwfl_module_register_names. 562 563libebl: New backend hook for register names. 564 565Version 0.117: 566 567libdwfl: New function dwfl_module_return_value_location. 568 569libebl: Backend improvements for several CPUs. 570 571Version 0.116: 572 573libdw: New functions dwarf_ranges, dwarf_entrypc, dwarf_diecu, 574 dwarf_entry_breakpoints. Removed Dwarf_Func type and functions 575 dwarf_func_name, dwarf_func_lowpc, dwarf_func_highpc, 576 dwarf_func_entrypc, dwarf_func_die; dwarf_getfuncs callback now uses 577 Dwarf_Die, and dwarf_func_file, dwarf_func_line, dwarf_func_col 578 replaced by dwarf_decl_file, dwarf_decl_line, dwarf_decl_column; 579 dwarf_func_inline, dwarf_func_inline_instances now take Dwarf_Die. 580 Type Dwarf_Loc renamed to Dwarf_Op; dwarf_getloclist, 581 dwarf_addrloclists renamed dwarf_getlocation, dwarf_getlocation_addr. 582 583Version 0.115: 584 585libelf: speed-ups of non-mmap reading. 586 587strings: New program. 588 589Implement --enable-gcov option for configure. 590 591libdw: New function dwarf_getscopes_die. 592 593Version 0.114: 594 595libelf: new function elf_getaroff 596 597libdw: Added dwarf_func_die, dwarf_func_inline, dwarf_func_inline_instances. 598 599libdwfl: New functions dwfl_report_offline, dwfl_offline_section_address, 600 dwfl_linux_kernel_report_offline. 601 602ranlib: new program 603 604Version 0.113: 605 606elflint: relax a bit. Allow version definitions for defined symbols against 607DSO versions also for symbols in nobits sections. Allow .rodata section 608to have STRINGS and MERGE flag set. 609 610strip: add some more compatibility with binutils. 611 612Version 0.112: 613 614elfcmp: some more relaxation. 615 616elflint: many more tests, especially regarding to symbol versioning. 617 618libelf: Add elfXX_offscn and gelf_offscn. 619 620libasm: asm_begin interface changes. 621 622libebl: Add three new interfaces to directly access machine, class, and 623data encoding information. 624 625objdump: New program. Just the beginning. 626 627Version 0.111: 628 629libdw: now contains all of libdwfl. The latter is not installed anymore. 630 631elfcmp: little usability tweak, name and index of differing section is printed. 632 633Version 0.110: 634 635libelf: fix a number of problems with elf_update 636 637elfcmp: fix a few bugs. Compare gaps. 638 639Fix a few PLT problems and mudflap build issues. 640 641libebl: Don't expose Ebl structure definition in libebl.h. It's now private. 642 643Version 0.109: 644 645libebl: Check for matching modules. 646 647elflint: Check that copy relocations only happen for OBJECT or NOTYPE symbols. 648 649elfcmp: New program. 650 651libdwfl: New library. 652 653Version 0.108: 654 655strip: fix bug introduced in last change 656 657libdw: records returned by dwarf_getsrclines are now sorted by address 658 659Version 0.107: 660 661readelf: improve DWARF output format 662 663strip: support Linux kernel modules 664 665Version 0.106: 666 667libdw: Updated dwarf.h from DWARF3 spec 668libdw: add new funtions dwarf_func_entrypc, dwarf_func_file, dwarf_func_line, 669dwarf_func_col, dwarf_getsrc_file 670 671Version 0.105: 672 673addr2line: New program 674 675libdw: add new functions: dwarf_addrdie, dwarf_macro_*, dwarf_getfuncs, 676dwarf_func_*. 677 678findtextrel: use dwarf_addrdie 679 680Version 0.104: 681 682findtextrel: New program. 683 684Version 0.103: 685 686libdw: Fix using libdw.h with gcc < 4 and C++ code. Compiler bug. 687 688Version 0.102: 689 690More Makefile and spec file cleanups. 691 692Version 0.101: 693 694Remove most gettext autoconf handling. 695 696Add more warnings 697 698Fix resulting problems. One actual bug found and fixed this way 699 700Version 0.100: 701 702libebl: Fix x86-64 relocations. 703 704Add -Wunused -Wextra warnings. 705 706Some cleanups resulting from those additional warnings. 707 708Lots of Makefile cleanup. 709 710Version 0.99: 711 712libelf: add gelf_checksum prototype to <libelf.h> 713 714libelf: fix elf*_checksum handling of NOBITS sections 715 716Finish mudflap support. 717 718Fix three bugs found by mudflap. 719 720ld: add as_needed support 721 722Version 0.98: 723 724readelf: in section to segment mapping, indicate read-only sections. 725 726elflint: more relaxation for GNU ld 727 728Version 0.97: 729 730Fix compiling with gcc 4.0. 731Some tests called elflint without appropriate LD_LIBRARY_PATH. 732 733Version 0.96: 734 735Fix support for platforms with lib64. 736 737Version 0.95: 738 739libebl: add ppc and ppc64 support 740 741readelf: fix minimal memory leak. 742 743Add support to compile with mudflap. 744 745Modernize configure.ac. Move scripts in config subdir. 746 747Modernize *-po directory infrastructure. 748 749libelf: Add gelf_getlib and gelf_update_lib 750 751readelf: print liblist sections 752 753Version 0.94: 754 755Fix some minimal build problems. 756 757Version 0.93: 758 759ibdw: tons of new functionality and bug fixes. Several interface changes. 760 761readelf: use libdw now. 762 763libdwarf: removed completely. 764 765Version 0.92: 766 767configuration changes. 768 769Version 0.91: 770 771libdw: fix memory handling. Implement source line handling. 772nm: use libdw instead of libdwarf. 773libelf: change to GPL from OSL1 for now. 774 775Version 0.90: 776 777libebl: Recognize a few more section types and dynamic tags and return 778approriate strings. 779 780Version 0.89: 781 782strip: fix overwriting of symbol table in input file. 783 784Version 0.88: 785 786libebl: Add some ia64 bits. 787 788Version 0.87: 789 790Bug fixes for big endian and some 64-bit machines. 791 792Version 0.86: 793 794strip: fix handling of Alpha and s390x which use incorrect hash bucket sizes. 795 796ld: tons of changes, moving towards usability. 797 798Version 0.85: 799 800strip: update section group symbol index if the associated symbol table changed 801 802libelf: fix two problems with generating output not via mmap 803 804elflint: add probably 10-15 more tests 805libebl: add support for some of the new tests 806 807ld: gazillion changes 808 809Version 0.84: 810 811elflint: deal with .rel.dyn section. Fix a problem with rela platforms. 812Handle PT_GNU_STACK. Change to write messages to stdout. 813 814readelf: fix a problem with version information in the symbol table output. 815 816strip: update all version symbol table entries 817 818Version 0.83: 819 820size: fix a warning 821 822strip: last changed caused problems when the symbol table is before the 823relocation section. Fixed. This fix also improved the asymptotic 824behavior if many symbol table sections are present. 825 826Version 0.82: 827 828Run strip tests with the correct libelf and libebl. 829 830libelf: fix bug in verneed byte order changing code. 831 832Version 0.81: 833 834strip: Remove unused symbol table entries. This might require updating 835various other sections. 836 837Version 0.80: 838 839Fix some libelf problems with ET_REL files. 840 841Version 0.79: 842 843More warning changes, mainly by jbj. 844 845libdw: yet more new code. dwarf_child and dwarf_sibling should now actually 846work. 847 848Version 0.78: 849 850libdw: 10+ new functions. get-pubnames2 works now fully. Almost all the 851code needed for nm is in place. 852 853Version 0.77: 854 855cleanups to compile cleanly with gcc 3.3 and -Werror. 856 857libdw: some new code. 858 859Version 0.76: 860 861libebl: Fix last patch to recognize relocation sections. We must not 862use the name. 863 864Version 0.75: 865 866libebl: .debug_ranges is a DWARF 3 debug section 867libebl: recognize relocation sections for debug section 868Patches by Jakub Jelinek. 869 870Version 0.74: 871 872Cleanups and more SPARC support by Tom Callaway <tcallaway@redhat.com>. 873 874Version 0.73: 875 87664-bit cleanups for the programs. 877 878Version 0.72: 879 880libelf: and yet more fun with endian tranformation at output time. 881 882Version 0.71: 883 884libelf: more fun with endian tranformation at output time. Add test for it. 885 886Version 0.70: 887 888libelf: Two little bugs left from previous patch to handle section output 889order. 890 891libelf: add unlikely in some more places. 892 893Version 0.69: 894 895libelf: fix output routines to handle case where section indeces and 896ordre in the output file don't match correctly. Patch by Jakub. 897 898elflint: fix test of note section content for 64-bit platforms and files 899with different byte order. 900 901Version 0.68: 902 903libebl: Fix SH_ENTSIZE_HASH definition (patch by Jakub) 904 905Version 0.67: 906 907libelf: correct mistake in error string handling. 908 909libelf: Implement ELF_F_PERMISSIVE. 910strip: Implement --permissive option. 911 912Version 0.66: 913 914strip: Implement -g option. 915 916libelf: Handle broken hash table entry sizes. 917 918libebl: New function ebl_debugscn_p. Use it where appropriate. 919 920Version 0.65: 921 922libelf: Use correct file size for NOBITS section with ELF_F_LAYOUT set 923 924Version 0.64: 925 926libelf: Make error handling more robust. 927libelf: Use TLS in error handler if configured with --enable-tls 928 929tests: input files are now distributed, not uuencoded in the shell scripts 930 931libdw: implement error handling, dwarf_get_pubnames 932 933Version 0.63: 934 935Build (incomplete) libdw. 936 937Version 0.62: 938 939Get rid of libtool. 940 941Version 0.61: 942 943Fix URL of OSL. 944 945Version 0.60: 946 947libebl: Handle .gnu.warning.* sections correctly. 948 949size: Implement -t option. 950 951libebl: Add IA-64 support. 952libebl: Update SH relocations. 953libebl: Add Alpha support. 954libebl: Add Arm support. 955libebl: Add support for all currently known architecture to the loader. 956 957Version 0.59: 958 959nm: Implement -S option. Correct portable output format. Implement -s option. 960 961libelf: Take offset of archive into account in elf_rand. 962 963Version 0.58: 964 965strip: fix handling of ET_REL files. 966Add tests for strip. 967 968Version 0.57: 969 970strip: respect layout of input file 971 972Version 0.56: 973 974strip: handle files with large number of sections. 975 976Version 0.55: 977 978libelf: quite a few bug fixes by Alex Larsson. 979 980strip: implement -f option to place stripped sections into a separate 981file. By Alex Larsson. 982 983Version 0.54: 984 985strip: don't let STT_SECTION symbols keeps sections from being removed 986 987elflint: local symbols are allowed in .dynsym 988elflint: special case .rel.dyn a bit 989 990Version 0.53: 991 992elflint: check types and flags of special sections defined in gABI 993 994libebl: add x86-64 support 995 996Version 0.52: 997 998Start improvement of debug info handling in nm. 999 1000libasm: implement asm_adduleb128 and asm_addsleb128 and a test for them 1001 1002Version 0.51: 1003 1004Fix build on 64-bit platforms. 1005 1006Version 0.50: 1007 1008nm: print file/line number also for local symbols 1009 1010use versions scripts not libtool's useless -export-symbols option 1011 1012Version 0.49: 1013 1014Update to autoconf 2.54 and automake 1.7. 1015 1016elflint: check note sections 1017 1018libdwarf: a number of bug fixes 1019 1020readelf: print .debug_info section content 1021 1022dwarf.h: Update from draft 7 1023 1024Version 0.48: 1025 1026libcpu: beginning 1027 1028libelf: new function to read parts of the ELF file 1029 1030libebl: support for note section handling 1031 1032readelf: dump note sections 1033 1034Version 0.47: 1035 1036libelf: fix little new section-handling related bugs in elf_getshstrndx 1037and elf_nextscn 1038 1039elflint: tests for mandatory content of dynamic section 1040 1041libasm: better handling of absolute symbols 1042 1043Version 0.46: 1044 1045libasm: rewrite to store Elf_Scn* instead of indices 1046 1047nm: finish many-section support 1048 1049nm: use debug in to print file/line info in sysv format 1050 1051libdwarf: fix a few bugs in DIE handling 1052 1053Version 0.45: 1054 1055libelf: major rewrite to keep Elf_Scn references valid until elf_end 1056 1057Version 0.44: 1058 1059libasm: Add support for bss, ABS, and COM sections. 1060 1061libebl: ebl_section_name takes now two index arguments to distinguish 1062between special sections and extended sections 1063 1064Version 0.43: 1065 1066General: fix a few problem gcc 3.1 had with the code. 1067 1068libelf: implement {gelf,elf32,elf64}_checksum 1069 1070libelf: optimze DSO: fewer relocations, fewer PLTs 1071 1072add msg_tst test 1073 1074ld: use correct section header string table index; write correct index 1075 1076add dependencies for *.sym files 1077 1078Version 0.42: 1079 1080libelf: add elf_getshnum and elf_getshstrndx 1081 1082libebl: update section type name function 1083 1084elflint: tons of fixes wrt large number of sections. New tests in this area. 1085Same amount of other bug fixes. 1086 1087size, strip, nm: better support for large number of sections. Including 1088using correct section header string table 1089 1090libasm: correctly create data structures for large number of sections 1091 1092new tests asm-tst4 and asm-tst5 to check large number of sections 1093 1094libasm: implement section group generation 1095 1096elflint: more tests on section groups. Improve performance on existing 1097section group tests 1098 1099Version 0.41: 1100 1101ld: add undefined symbols to dynamic symbol table if --export-dynamic is 1102not given 1103 1104ld: fix value of e_entry 1105 1106Version 0.40: 1107 1108elflint: print section names in error messages 1109 1110elflint: mustn't warn about multiple DT_NULL 1111 1112ld: don't emit all symbols if --export-dynamic is not given 1113 1114ld: correct compute symbol address in output file (section index was off by 1) 1115 1116ld: generate correct version info in dynsym without --export-dynamic and 1117in symtab 1118 1119Version 0.39: 1120 1121Fix check of various e_*size entries in elflint. 1122 1123Handle text output in asm_newsym. 1124 1125Finish checks in asm-tst3. 1126 1127Version 0.38: 1128 1129Update to autoconf 2.53, automake 1.6, gettext 0.11+. 1130 1131Introduce *.sym files to restrict export from DSOs. 1132 1133Use attribute_hidden and internal_function to optimize DSO code. 1134 1135Add TLS definitions in elf.h and handle them in readelf. 1136 1137Fix bug in verdef section generation in ld. 1138 1139Add initial libasm code. 1140 1141Version 0.37: 1142 1143Implement better hash size optimization heuristic in ld. It uses a formula 1144taking number of tests into account. 1145 1146Lots of small bug fixes. 1147 1148Improve readelf output format. Respect various sh_link/sh_info values. 1149Correctly print versioning information for symbol tables. 1150 1151Version 0.36: 1152 1153Implement preprocessing of linker script. Recognize -z combreloc. 1154 1155Version 0.35: 1156 1157Implement -z ignore|record for ld. 1158 1159Implement creating of .gnu.version_r and .gnu.version sections. The 1160.gnu.version does not yet contain correct info for defined and versioned 1161symbols (means .gnu.version_d is not yet implemented). 1162 1163Implement gelf_update_* functions to create versioning data. 1164 1165Version 0.34: 1166 1167Add DT_RUNPATH/DT_RPATH entries to dynamic section. Create .plt and 1168.rel.plt sections (completely). Add support for all four PLT related 1169dynamic section entries. Add callback function for PLT creation. 1170 1171More tests in elflint. Add support for very strict checking which for 1172now flags level 2 (deprecated features) usage. 1173 1174Version 0.33: 1175 1176Create dynamic symbol table, dynamic string table, and hash table to ld. 1177 1178Add hash table histogram support to readelf. 1179 1180Version 0.32: 1181 1182more work on elflint 1183 1184ld now creates the dynamic section and references it. Start adding entries 1185to dynamic section. 1186 1187Version 0.31: 1188 1189Start implementing elflint. 1190 1191Version 0.30: 1192 1193Fix handling of NOBITS sections in elf_getdata. 1194 1195Start implementing generation of executables and DSOs in ld. 1196Generation of program header mostly done. Address computation done. 1197Extension of linker script syntax. 1198 1199Various cleanups. 1200 1201Implement section group handling in readelf. 1202 1203Version 0.29: 1204 1205Implement section groups. This involved a lot of code moving. The 1206new code is entirely untested since gas/gcc are currently not able to 1207create section groups. ld works fine on files without section groups. 1208 1209Version 0.28: 1210 1211Fix problem with adding more section in elf_newscn. The section pointers 1212for the data buffers wasn't adjusted. 1213 1214Fix elf_getdata with nonzero second parameter. Correctly handle creation 1215of internal data buffer for machines without unaligned access. 1216 1217Version 0.27: 1218 1219Start adding support to selectively add sections. Includes support for 1220section groups. 1221Add --gc-sections/--no-gc-sections options. 1222Add general section merging support. 1223 1224Fix a bug in section group support in strip. 1225 1226Fix some potential problems with hash value in dynamic hash implementation. 1227 1228Version 0.26: 1229 1230section merging works in ld. 1231 1232Version 0.25: 1233 1234Actually create data structures from version map file and use it to hide 1235symbols in ld. 1236 1237Implement -s -s for ld. 1238 1239Version 0.24: 1240 1241Improve relocation table output in readelf. Avoid some crashes. 1242Finish many section handling in readelf. 1243 1244Finish: finish implementation of ld -r. At least some simple tests pass. 1245 1246Version 0.23: 1247 1248Fix a number of errors in ELF_C_WRITE handling. 1249 1250Almost finished implementation of ld -r. The data sections are all copied. 1251Handling of symbol tables is missing. 1252 1253Version 0.22: 1254 1255Handle DSO and archive input files correctly if -r option is given. 1256 1257Gracefully deal with no phdr in new file in libelf. 1258Fix various small error handling problems. 1259Don't mmap file for output unless the command says so. 1260 1261Add code to create ELF section header table to ld finalize routines. 1262 1263Version 0.21: 1264 1265Fix some problems with recursive handling of archives in libelf. 1266 1267Improve messages printed by nm. 1268 1269Add symbol binding name handling to libebl. Fix section name handling in 1270libebl. 1271 1272readelf and nm use more libebl functions. 1273 1274Handle XINDEX correctly in nm and string. 1275 1276Add first machine ld backend library (i386). 1277Use it. Recognize -r and --shared. Avoid using -lxxx parameters for -r. 1278Create ELF header in output file. Change mode of output file according to 1279output file type. Reorganize callback initialization in ld. 1280 1281Version 0.20: 1282 1283Fix some memory leaks in libelf. 1284 1285Version 0.19: 1286 1287Implement reading version script. Both inside linker scripts and via the 1288--version-script command line parameter. Uses the same code. 1289What remains to be done is to implement a data structure which allows 1290efficient matching against the version names to decide which pattern 1291matches. 1292 1293Beginning of output generation and output writing functions. 1294 1295Version 0.18: 1296 1297Finish implementation for DSO input file handling. Implement rpath, runpath, 1298and LD_LIBRARY_PATH handling. 1299 1300Version 0.17: 1301 1302make handling of e_shnum overflow in libelf standard conforming 1303 1304ld now actually can handle DSOs in linker scripts. Handling of DT_RUNPATH, 1305DT_RPATH, -rpath, -rpath-link still remains to be implemented. 1306 1307fix handling of -L parameters. Make actual use of the default_paths element. 1308 1309make re-definition of symbols in and from DSO compatible with existing linker 1310 1311Version 0.16: 1312 1313more work on assigning input sections to output sections. 1314 1315Add gelf_xlatetof and gelf_xlatetom which were accidently left out. 1316 1317Fix memory handling of section headers. 1318 1319Version 0.15: 1320 1321Add many-section support to ld. Add various new command line parameters. 1322Allow pagesize to be specified in linker script or on the command line. 1323Collect input sections in list for the output section according to the rules 1324specified in the linker script. 1325 1326Version 0.14: 1327 1328Fix some problems in the internal list handling which had the result 1329that we didn't look for some of the unresolved symbols. 1330 1331Free some memory if we know we don't need it anymore. 1332 1333Optimize the list of unresolved symbols. Throw out symbols which are 1334meanwhile resolved. 1335 1336Version 0.13: 1337 1338Got file reading correct now. The files are all read while parsing 1339the parameters. No creating of data structures to describe the linker 1340command line. The symbol table is built up while reading the files. 1341DSOs are handled now. -( -) handling is optimized. 1342 1343Version 0.12: 1344 1345Linker read linker scripts everywhere. Handles --whole-archive. Recognizes 1346--dynamic and --static. Collects defined and undefined symbols. Recognizes 1347conflicts. 1348 1349libebl now defines functions to call the callbacks. Add generic name handling 1350in these new functions. Remove the code from readelf and call the new 1351functions. 1352 1353Version 0.11: 1354 1355Start of linker. Basic argument parsing, finding of input files, 1356linker script reading. 1357 1358Version 0.10: 1359 1360Implement dwarf_get_fde_n(), dwarf_get_abbrev(), dwarf_get_abbrev_tag(), 1361dwarf_get_abbrev_code(), dwarf_get_abbrev_children_flag(), 1362dwarf_get_abbrev_entry(), dwarf_get_fde_at_pc(), and tests for it. 1363 1364Version 0.9: 1365 1366Implement dwarf_get_fde_list_eh(), dwarf_get_cie_of_fde(), 1367dwarf_get_fde_range(), dwarf_get_cie_info(), dwarf_get_fde_instr_bytes(), 1368and tests for them. 1369 1370Version 0.8: 1371 1372Make handling of binaries in other byte order work and add tests for it. 1373 1374Version 0.7: 1375 1376Implement dwarf_get_aranges(), dwarf_get_arange(), dwarf_get_cu_die_offset(), 1377dwarf_get_arange_info(), and tests for them. 1378 1379Version 0.6: 1380 1381Implement dwarf_get_global(), dwarf_globname(), dwarf_global_die_offset(), 1382dwarf_global_cu_offset(), dwarf_global_name_offsets(), and tests for them 1383 1384Version 0.5: 1385 1386Implemented dwarf_srclines(), dwarf_srcfiles(), dwarf_linebeginstatement(), 1387dwarf_lineendsequence(), dwarf_lineno(), dwarf_lineaddr(), dwarf_lineoff(), 1388dwarf_linesrc(), dwarf_lineblock(), dwarf_lineprologueend(), 1389dwarf_lineepiloguebegin(), and tests for them. 1390 1391Version 0.4: 1392 1393Implemented dwarf_loclist(). 1394 1395Version 0.3: 1396 1397Implemented dwarf_dieoffset(), dwarf_die_CU_offset(), dwarf_diename() and 1398tests. 1399 1400Implemented dwarf_attrlist(), dwarf_hasattr(), dwarf_attr(), dwarf_lowpc(), 1401dwarf_highpc(), dwarf_bytesize(), dwarf_bitsize(), dwarf_bitoffset(), 1402dwarf_srclang(), dwarf_arrayorder(), dwarf_hasform(), dwarf_whatform(), 1403dwarf_whatattr(), dwarf_formref(), dwarf_global_formref(), dwarf_formaddr(), 1404dwarf_formflag(), dwarf_formudata(), dwarf_formsdata(), dwarf_formblock, 1405dwarf_formstring() and tests for them. 1406 1407Version 0.2: 1408 1409Implemented dwarf_offdie()), dwarf_tag(), dwarf_dieoffset(), 1410dwarf_die_CU_offset(), dwarf_diename() and tests for them. 1411 1412Version 0.1: 1413 1414First libdwarf functions work. 1415 1416Version 0.0: 1417 1418libelf and parts of libebl are done. 1419