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