1Version 0.97: 2 3Fix compiling with gcc 4.0. 4Some tests called elflint without appropriate LD_LIBRARY_PATH. 5 6Version 0.96: 7 8Fix support for platforms with lib64. 9 10Version 0.95: 11 12libebl: add ppc and ppc64 support 13 14readelf: fix minimal memory leak. 15 16Add support to compile with mudflap. 17 18Modernize configure.ac. Move scripts in config subdir. 19 20Modernize *-po directory infrastructure. 21 22libelf: Add gelf_getlib and gelf_update_lib 23 24readelf: print liblist sections 25 26Version 0.94: 27 28Fix some minimal build problems. 29 30Version 0.93: 31 32ibdw: tons of new functionality and bug fixes. Several interface changes. 33 34readelf: use libdw now. 35 36libdwarf: removed completely. 37 38Version 0.92: 39 40configuration changes. 41 42Version 0.91: 43 44libdw: fix memory handling. Implement source line handling. 45nm: use libdw instead of libdwarf. 46libelf: change to GPL from OSL1 for now. 47 48Version 0.90: 49 50libebl: Recognize a few more section types and dynamic tags and return 51approriate strings. 52 53Version 0.89: 54 55strip: fix overwriting of symbol table in input file. 56 57Version 0.88: 58 59libebl: Add some ia64 bits. 60 61Version 0.87: 62 63Bug fixes for big endian and some 64-bit machines. 64 65Version 0.86: 66 67strip: fix handling of Alpha and s390x which use incorrect hash bucket sizes. 68 69ld: tons of changes, moving towards usability. 70 71Version 0.85: 72 73strip: update section group symbol index if the associated symbol table changed 74 75libelf: fix two problems with generating output not via mmap 76 77elflint: add probably 10-15 more tests 78libebl: add support for some of the new tests 79 80ld: gazillion changes 81 82Version 0.84: 83 84elflint: deal with .rel.dyn section. Fix a problem with rela platforms. 85Handle PT_GNU_STACK. Change to write messages to stdout. 86 87readelf: fix a problem with version information in the symbol table output. 88 89strip: update all version symbol table entries 90 91Version 0.83: 92 93size: fix a warning 94 95strip: last changed caused problems when the symbol table is before the 96relocation section. Fixed. This fix also improved the asymptotic 97behavior if many symbol table sections are present. 98 99Version 0.82: 100 101Run strip tests with the correct libelf and libebl. 102 103libelf: fix bug in verneed byte order changing code. 104 105Version 0.81: 106 107strip: Remove unused symbol table entries. This might require updating 108various other sections. 109 110Version 0.80: 111 112Fix some libelf problems with ET_REL files. 113 114Version 0.79: 115 116More warning changes, mainly by jbj. 117 118libdw: yet more new code. dwarf_child and dwarf_sibling should now actually 119work. 120 121Version 0.78: 122 123libdw: 10+ new functions. get-pubnames2 works now fully. Almost all the 124code needed for nm is in place. 125 126Version 0.77: 127 128cleanups to compile cleanly with gcc 3.3 and -Werror. 129 130libdw: some new code. 131 132Version 0.76: 133 134libebl: Fix last patch to recognize relocation sections. We must not 135use the name. 136 137Version 0.75: 138 139libebl: .debug_ranges is a DWARF 3 debug section 140libebl: recognize relocation sections for debug section 141Patches by Jakub Jelinek. 142 143Version 0.74: 144 145Cleanups and more SPARC support by Tom Callaway <tcallaway@redhat.com>. 146 147Version 0.73: 148 14964-bit cleanups for the programs. 150 151Version 0.72: 152 153libelf: and yet more fun with endian tranformation at output time. 154 155Version 0.71: 156 157libelf: more fun with endian tranformation at output time. Add test for it. 158 159Version 0.70: 160 161libelf: Two little bugs left from previous patch to handle section output 162order. 163 164libelf: add unlikely in some more places. 165 166Version 0.69: 167 168libelf: fix output routines to handle case where section indeces and 169ordre in the output file don't match correctly. Patch by Jakub. 170 171elflint: fix test of note section content for 64-bit platforms and files 172with different byte order. 173 174Version 0.68: 175 176libebl: Fix SH_ENTSIZE_HASH definition (patch by Jakub) 177 178Version 0.67: 179 180libelf: correct mistake in error string handling. 181 182libelf: Implement ELF_F_PERMISSIVE. 183strip: Implement --permissive option. 184 185Version 0.66: 186 187strip: Implement -g option. 188 189libelf: Handle broken hash table entry sizes. 190 191libebl: New function ebl_debugscn_p. Use it where appropriate. 192 193Version 0.65: 194 195libelf: Use correct file size for NOBITS section with ELF_F_LAYOUT set 196 197Version 0.64: 198 199libelf: Make error handling more robust. 200libelf: Use TLS in error handler if configured with --enable-tls 201 202tests: input files are now distributed, not uuencoded in the shell scripts 203 204libdw: implement error handling, dwarf_get_pubnames 205 206Version 0.63: 207 208Build (incomplete) libdw. 209 210Version 0.62: 211 212Get rid of libtool. 213 214Version 0.61: 215 216Fix URL of OSL. 217 218Version 0.60: 219 220libebl: Handle .gnu.warning.* sections correctly. 221 222size: Implement -t option. 223 224libebl: Add IA-64 support. 225libebl: Update SH relocations. 226libebl: Add Alpha support. 227libebl: Add Arm support. 228libebl: Add support for all currently known architecture to the loader. 229 230Version 0.59: 231 232nm: Implement -S option. Correct portable output format. Implement -s option. 233 234libelf: Take offset of archive into account in elf_rand. 235 236Version 0.58: 237 238strip: fix handling of ET_REL files. 239Add tests for strip. 240 241Version 0.57: 242 243strip: respect layout of input file 244 245Version 0.56: 246 247strip: handle files with large number of sections. 248 249Version 0.55: 250 251libelf: quite a few bug fixes by Alex Larsson. 252 253strip: implement -f option to place stripped sections into a separate 254file. By Alex Larsson. 255 256Version 0.54: 257 258strip: don't let STT_SECTION symbols keeps sections from being removed 259 260elflint: local symbols are allowed in .dynsym 261elflint: special case .rel.dyn a bit 262 263Version 0.53: 264 265elflint: check types and flags of special sections defined in gABI 266 267libebl: add x86-64 support 268 269Version 0.52: 270 271Start improvement of debug info handling in nm. 272 273libasm: implement asm_adduleb128 and asm_addsleb128 and a test for them 274 275Version 0.51: 276 277Fix build on 64-bit platforms. 278 279Version 0.50: 280 281nm: print file/line number also for local symbols 282 283use versions scripts not libtool's useless -export-symbols option 284 285Version 0.49: 286 287Update to autoconf 2.54 and automake 1.7. 288 289elflint: check note sections 290 291libdwarf: a number of bug fixes 292 293readelf: print .debug_info section content 294 295dwarf.h: Update from draft 7 296 297Version 0.48: 298 299libcpu: beginning 300 301libelf: new function to read parts of the ELF file 302 303libebl: support for note section handling 304 305readelf: dump note sections 306 307Version 0.47: 308 309libelf: fix little new section-handling related bugs in elf_getshstrndx 310and elf_nextscn 311 312elflint: tests for mandatory content of dynamic section 313 314libasm: better handling of absolute symbols 315 316Version 0.46: 317 318libasm: rewrite to store Elf_Scn* instead of indices 319 320nm: finish many-section support 321 322nm: use debug in to print file/line info in sysv format 323 324libdwarf: fix a few bugs in DIE handling 325 326Version 0.45: 327 328libelf: major rewrite to keep Elf_Scn references valid until elf_end 329 330Version 0.44: 331 332libasm: Add support for bss, ABS, and COM sections. 333 334libebl: ebl_section_name takes now two index arguments to distinguish 335between special sections and extended sections 336 337Version 0.43: 338 339General: fix a few problem gcc 3.1 had with the code. 340 341libelf: implement {gelf,elf32,elf64}_checksum 342 343libelf: optimze DSO: fewer relocations, fewer PLTs 344 345add msg_tst test 346 347ld: use correct section header string table index; write correct index 348 349add dependencies for *.sym files 350 351Version 0.42: 352 353libelf: add elf_getshnum and elf_getshstrndx 354 355libebl: update section type name function 356 357elflint: tons of fixes wrt large number of sections. New tests in this area. 358Same amount of other bug fixes. 359 360size, strip, nm: better support for large number of sections. Including 361using correct section header string table 362 363libasm: correctly create data structures for large number of sections 364 365new tests asm-tst4 and asm-tst5 to check large number of sections 366 367libasm: implement section group generation 368 369elflint: more tests on section groups. Improve performance on existing 370section group tests 371 372Version 0.41: 373 374ld: add undefined symbols to dynamic symbol table if --export-dynamic is 375not given 376 377ld: fix value of e_entry 378 379Version 0.40: 380 381elflint: print section names in error messages 382 383elflint: mustn't warn about multiple DT_NULL 384 385ld: don't emit all symbols if --export-dynamic is not given 386 387ld: correct compute symbol address in output file (section index was off by 1) 388 389ld: generate correct version info in dynsym without --export-dynamic and 390in symtab 391 392Version 0.39: 393 394Fix check of various e_*size entries in elflint. 395 396Handle text output in asm_newsym. 397 398Finish checks in asm-tst3. 399 400Version 0.38: 401 402Update to autoconf 2.53, automake 1.6, gettext 0.11+. 403 404Introduce *.sym files to restrict export from DSOs. 405 406Use attribute_hidden and internal_function to optimize DSO code. 407 408Add TLS definitions in elf.h and handle them in readelf. 409 410Fix bug in verdef section generation in ld. 411 412Add initial libasm code. 413 414Version 0.37: 415 416Implement better hash size optimization heuristic in ld. It uses a formula 417taking number of tests into account. 418 419Lots of small bug fixes. 420 421Improve readelf output format. Respect various sh_link/sh_info values. 422Correctly print versioning information for symbol tables. 423 424Version 0.36: 425 426Implement preprocessing of linker script. Recognize -z combreloc. 427 428Version 0.35: 429 430Implement -z ignore|record for ld. 431 432Implement creating of .gnu.version_r and .gnu.version sections. The 433.gnu.version does not yet contain correct info for defined and versioned 434symbols (means .gnu.version_d is not yet implemented). 435 436Implement gelf_update_* functions to create versioning data. 437 438Version 0.34: 439 440Add DT_RUNPATH/DT_RPATH entries to dynamic section. Create .plt and 441.rel.plt sections (completely). Add support for all four PLT related 442dynamic section entries. Add callback function for PLT creation. 443 444More tests in elflint. Add support for very strict checking which for 445now flags level 2 (deprecated features) usage. 446 447Version 0.33: 448 449Create dynamic symbol table, dynamic string table, and hash table to ld. 450 451Add hash table histogram support to readelf. 452 453Version 0.32: 454 455more work on elflint 456 457ld now creates the dynamic section and references it. Start adding entries 458to dynamic section. 459 460Version 0.31: 461 462Start implementing elflint. 463 464Version 0.30: 465 466Fix handling of NOBITS sections in elf_getdata. 467 468Start implementing generation of executables and DSOs in ld. 469Generation of program header mostly done. Address computation done. 470Extension of linker script syntax. 471 472Various cleanups. 473 474Implement section group handling in readelf. 475 476Version 0.29: 477 478Implement section groups. This involved a lot of code moving. The 479new code is entirely untested since gas/gcc are currently not able to 480create section groups. ld works fine on files without section groups. 481 482Version 0.28: 483 484Fix problem with adding more section in elf_newscn. The section pointers 485for the data buffers wasn't adjusted. 486 487Fix elf_getdata with nonzero second parameter. Correctly handle creation 488of internal data buffer for machines without unaligned access. 489 490Version 0.27: 491 492Start adding support to selectively add sections. Includes support for 493section groups. 494Add --gc-sections/--no-gc-sections options. 495Add general section merging support. 496 497Fix a bug in section group support in strip. 498 499Fix some potential problems with hash value in dynamic hash implementation. 500 501Version 0.26: 502 503section merging works in ld. 504 505Version 0.25: 506 507Actually create data structures from version map file and use it to hide 508symbols in ld. 509 510Implement -s -s for ld. 511 512Version 0.24: 513 514Improve relocation table output in readelf. Avoid some crashes. 515Finish many section handling in readelf. 516 517Finish: finish implementation of ld -r. At least some simple tests pass. 518 519Version 0.23: 520 521Fix a number of errors in ELF_C_WRITE handling. 522 523Almost finished implementation of ld -r. The data sections are all copied. 524Handling of symbol tables is missing. 525 526Version 0.22: 527 528Handle DSO and archive input files correctly if -r option is given. 529 530Gracefully deal with no phdr in new file in libelf. 531Fix various small error handling problems. 532Don't mmap file for output unless the command says so. 533 534Add code to create ELF section header table to ld finalize routines. 535 536Version 0.21: 537 538Fix some problems with recursive handling of archives in libelf. 539 540Improve messages printed by nm. 541 542Add symbol binding name handling to libebl. Fix section name handling in 543libebl. 544 545readelf and nm use more libebl functions. 546 547Handle XINDEX correctly in nm and string. 548 549Add first machine ld backend library (i386). 550Use it. Recognize -r and --shared. Avoid using -lxxx parameters for -r. 551Create ELF header in output file. Change mode of output file according to 552output file type. Reorganize callback initialization in ld. 553 554Version 0.20: 555 556Fix some memory leaks in libelf. 557 558Version 0.19: 559 560Implement reading version script. Both inside linker scripts and via the 561--version-script command line parameter. Uses the same code. 562What remains to be done is to implement a data structure which allows 563efficient matching against the version names to decide which pattern 564matches. 565 566Beginning of output generation and output writing functions. 567 568Version 0.18: 569 570Finish implementation for DSO input file handling. Implement rpath, runpath, 571and LD_LIBRARY_PATH handling. 572 573Version 0.17: 574 575make handling of e_shnum overflow in libelf standard conforming 576 577ld now actually can handle DSOs in linker scripts. Handling of DT_RUNPATH, 578DT_RPATH, -rpath, -rpath-link still remains to be implemented. 579 580fix handling of -L parameters. Make actual use of the default_paths element. 581 582make re-definition of symbols in and from DSO compatible with existing linker 583 584Version 0.16: 585 586more work on assigning input sections to output sections. 587 588Add gelf_xlatetof and gelf_xlatetom which were accidently left out. 589 590Fix memory handling of section headers. 591 592Version 0.15: 593 594Add many-section support to ld. Add various new command line parameters. 595Allow pagesize to be specified in linker script or on the command line. 596Collect input sections in list for the output section according to the rules 597specified in the linker script. 598 599Version 0.14: 600 601Fix some problems in the internal list handling which had the result 602that we didn't look for some of the unresolved symbols. 603 604Free some memory if we know we don't need it anymore. 605 606Optimize the list of unresolved symbols. Throw out symbols which are 607meanwhile resolved. 608 609Version 0.13: 610 611Got file reading correct now. The files are all read while parsing 612the parameters. No creating of data structures to describe the linker 613command line. The symbol table is built up while reading the files. 614DSOs are handled now. -( -) handling is optimized. 615 616Version 0.12: 617 618Linker read linker scripts everywhere. Handles --whole-archive. Recognizes 619--dynamic and --static. Collects defined and undefined symbols. Recognizes 620conflicts. 621 622libebl now defines functions to call the callbacks. Add generic name handling 623in these new functions. Remove the code from readelf and call the new 624functions. 625 626Version 0.11: 627 628Start of linker. Basic argument parsing, finding of input files, 629linker script reading. 630 631Version 0.10: 632 633Implement dwarf_get_fde_n(), dwarf_get_abbrev(), dwarf_get_abbrev_tag(), 634dwarf_get_abbrev_code(), dwarf_get_abbrev_children_flag(), 635dwarf_get_abbrev_entry(), dwarf_get_fde_at_pc(), and tests for it. 636 637Version 0.9: 638 639Implement dwarf_get_fde_list_eh(), dwarf_get_cie_of_fde(), 640dwarf_get_fde_range(), dwarf_get_cie_info(), dwarf_get_fde_instr_bytes(), 641and tests for them. 642 643Version 0.8: 644 645Make handling of binaries in other byte order work and add tests for it. 646 647Version 0.7: 648 649Implement dwarf_get_aranges(), dwarf_get_arange(), dwarf_get_cu_die_offset(), 650dwarf_get_arange_info(), and tests for them. 651 652Version 0.6: 653 654Implement dwarf_get_global(), dwarf_globname(), dwarf_global_die_offset(), 655dwarf_global_cu_offset(), dwarf_global_name_offsets(), and tests for them 656 657Version 0.5: 658 659Implemented dwarf_srclines(), dwarf_srcfiles(), dwarf_linebeginstatement(), 660dwarf_lineendsequence(), dwarf_lineno(), dwarf_lineaddr(), dwarf_lineoff(), 661dwarf_linesrc(), dwarf_lineblock(), dwarf_lineprologueend(), 662dwarf_lineepiloguebegin(), and tests for them. 663 664Version 0.4: 665 666Implemented dwarf_loclist(). 667 668Version 0.3: 669 670Implemented dwarf_dieoffset(), dwarf_die_CU_offset(), dwarf_diename() and 671tests. 672 673Implemented dwarf_attrlist(), dwarf_hasattr(), dwarf_attr(), dwarf_lowpc(), 674dwarf_highpc(), dwarf_bytesize(), dwarf_bitsize(), dwarf_bitoffset(), 675dwarf_srclang(), dwarf_arrayorder(), dwarf_hasform(), dwarf_whatform(), 676dwarf_whatattr(), dwarf_formref(), dwarf_global_formref(), dwarf_formaddr(), 677dwarf_formflag(), dwarf_formudata(), dwarf_formsdata(), dwarf_formblock, 678dwarf_formstring() and tests for them. 679 680Version 0.2: 681 682Implemented dwarf_offdie()), dwarf_tag(), dwarf_dieoffset(), 683dwarf_die_CU_offset(), dwarf_diename() and tests for them. 684 685Version 0.1: 686 687First libdwarf functions work. 688 689Version 0.0: 690 691libelf and parts of libebl are done. 692