More DWARF 4 handling, some in readelf.
[platform/upstream/elfutils.git] / NEWS
1 Version 0.148:
2
3 libdw: Accept DWARF 4 format.
4
5 libdwfl: Fixes in core-file handling, support cores from PIEs.
6          When working from build IDs, don't open a named file that mismatches.
7
8 readelf: Handle some DWARF 4 format bits.
9
10 Version 0.147:
11
12 libdw: Fixes in CFI handling, best possible handling of bogus CFA ops.
13
14 libdwfl: Ignore R_*_NONE relocs, works around old (binutils) ld -r bugs.
15
16 Version 0.146:
17
18 libdwfl: New function dwfl_core_file_report.
19
20 Version 0.145:
21
22 Fix build with --disable-dependency-tracking.
23
24 Fix build with most recent glibc headers.
25
26 libelf: More robust to bogus section headers.
27
28 libdw: Fix CFI decoding.
29
30 libdwfl: Fix address bias returned by CFI accessors.
31          Fix core file module layout identification.
32
33 readelf: Fix CFI decoding.
34
35 Version 0.144:
36
37 libelf: New function elf_getphdrnum.
38         Now support using more than 65536 program headers in a file.
39
40 libdw: New function dwarf_aggregate_size for computing (constant) type
41        sizes, including array_type cases with nontrivial calculation.
42
43 readelf: Don't give errors for missing info under -a.
44          Handle Linux "VMCOREINFO" notes under -n.
45
46 Version 0.143:
47
48 libdw: Various convenience functions for individual attributes now use
49        dwarf_attr_integrate to look up indirect inherited attributes.
50        Location expression handling now supports DW_OP_implicit_value.
51
52 libdwfl: Support automatic decompression of files in XZ format,
53          and of Linux kernel images made with bzip2 or LZMA (as well as gzip).
54
55 Version 0.142:
56
57 libelf: Add elf_getshdrnum alias for elf_getshnum and elf_getshdrstrndx alias
58         for elf_getshstrndx and deprecate original names.  Sun screwed up
59         their implementation and asked for a solution.
60
61 libebl: Add support for STB_GNU_UNIQUE.
62
63 elflint: Add support for STB_GNU_UNIQUE.
64
65 readelf: Add -N option, speeds up DWARF printing without address->name lookups.
66
67 libdw: Add support for decoding DWARF CFI into location description form.
68        Handle some new DWARF 3 expression operations previously omitted.
69        Basic handling of some new encodings slated for DWARF 4.
70
71 Version 0.141:
72
73 libebl: sparc backend fixes;
74         some more arm backend support
75
76 libdwfl: fix dwfl_module_build_id for prelinked DSO case;
77          fixes in core file support;
78          dwfl_module_getsym interface improved for non-address symbols
79
80 strip: fix infinite loop on strange inputs with -f
81
82 addr2line: take -j/--section=NAME option for binutils compatibility
83            (same effect as '(NAME)0x123' syntax already supported)
84
85 Version 0.140:
86
87 libelf: Fix regression in creation of section header
88
89 libdwfl: Less strict behavior if DWARF reader ist just used to display data
90
91 Version 0.139:
92
93 libcpu: Add Intel SSE4 disassembler support
94
95 readelf: Implement call frame information and exception handling dumping.
96          Add -e option.  Enable it implicitly for -a.
97
98 elflint: Check PT_GNU_EH_FRAME program header entry.
99
100 libdwfl: Support automatic gzip/bzip2 decompression of ELF files.
101
102 Version 0.138:
103
104 Install <elfutils/version.h> header file for applications to use in source
105 version compatibility checks.
106
107 libebl: backend fixes for i386 TLS relocs; backend support for NT_386_IOPERM
108
109 libcpu: disassembler fixes
110
111 libdwfl: bug fixes
112
113 libelf: bug fixes
114
115 nm: bug fixes for handling corrupt input files
116
117 Version 0.137:
118
119 Minor fixes for unreleased 0.136 release.
120
121 Version 0.136:
122
123 libdwfl: bug fixes; new "segment" interfaces;
124          all the libdwfl-based tools now support --core=COREFILE option
125
126 Version 0.135:
127
128 libdwfl: bug fixes
129
130 strip: changed handling of ET_REL files wrt symbol tables and relocs
131
132 Version 0.134:
133
134 elflint: backend improvements for sparc, alpha
135
136 libdwfl, libelf: bug fixes
137
138 Version 0.133:
139
140 readelf, elflint, libebl: SHT_GNU_ATTRIBUTE section handling (readelf -A)
141
142 readelf: core note handling for NT_386_TLS, NT_PPC_SPE, Alpha NT_AUXV
143
144 libdwfl: bug fixes and optimization in relocation handling
145
146 elfcmp: bug fix for non-allocated section handling
147
148 ld: implement newer features of binutils linker.
149
150 Version 0.132:
151
152 libcpu: Implement x86 and x86-64 disassembler.
153 libasm: Add interface for disassembler.
154
155 all programs: add debugging of branch prediction.
156
157 libelf: new function elf_scnshndx.
158
159 Version 0.131:
160
161 libdw: DW_FORM_ref_addr support; dwarf_formref entry point now deprecated;
162        bug fixes for oddly-formatted DWARF
163
164 libdwfl: bug fixes in offline archive support, symbol table handling;
165          apply partial relocations for dwfl_module_address_section on ET_REL
166
167 libebl: powerpc backend support for Altivec registers
168
169 Version 0.130:
170
171 readelf: -p option can take an argument like -x for one section,
172          or no argument (as before) for all SHF_STRINGS sections;
173          new option --archive-index (or -c);
174          improved -n output for core files, on many machines
175
176 libelf: new function elf_getdata_rawchunk, replaces gelf_rawchunk;
177         new functions gelf_getnote, gelf_getauxv, gelf_update_auxv
178
179 readelf, elflint: handle SHT_NOTE sections without requiring phdrs
180
181 elflint: stricter checks on debug sections
182
183 libdwfl: new functions dwfl_build_id_find_elf, dwfl_build_id_find_debuginfo,
184          dwfl_module_build_id, dwfl_module_report_build_id;
185          support dynamic symbol tables found via phdrs;
186          dwfl_standard_find_debuginfo now uses build IDs when available
187
188 unstrip: new option --list (or -n)
189
190 libebl: backend improvements for sparc, alpha, powerpc
191
192 Version 0.129:
193
194 readelf: new options --hex-dump (or -x), --strings (or -p)
195
196 addr2line: new option --symbols (or -S)
197
198 Version 0.128:
199
200 new program: unstrip
201
202 elfcmp: new option --hash-inexact
203
204 Version 0.127:
205
206 libdw: new function dwarf_getsrcdirs
207
208 libdwfl: new functions dwfl_module_addrsym, dwfl_report_begin_add,
209          dwfl_module_address_section
210
211 Version 0.126:
212
213 new program: ar
214
215 Version 0.125:
216
217 elflint: Compare DT_GNU_HASH tests.
218
219 move archives into -static RPMs
220
221 libelf, elflint: better support for core file handling
222
223 Version 0.124:
224
225 libebl: sparc backend support for return value location
226
227 libebl, libdwfl: backend register name support extended with more info
228
229 libelf, libdw: bug fixes for unaligned accesses on machines that care
230
231 readelf, elflint: trivial bugs fixed
232
233 Version 0.123:
234
235 libebl: Backend build fixes, thanks to Stepan Kasal.
236
237 libebl: ia64 backend support for register names, return value location
238
239 libdwfl: Handle truncated linux kernel module section names.
240
241 libdwfl: Look for linux kernel "vmlinux" files with ".debug" suffix.
242
243 elflint: Fix checks to permit --hash-style=gnu format.
244
245 Version 0.122:
246
247 libebl: add function to test for relative relocation
248
249 elflint: fix and extend DT_RELCOUNT/DT_RELACOUNT checks
250
251 elflint, readelf: add support for DT_GNU_HASH
252 libelf: add elf_gnu_hash
253
254 elflint, readelf: add support for 64-bit SysV-style hash tables
255
256 libdwfl: new functions dwfl_module_getsymtab, dwfl_module_getsym.
257
258 Version 0.121:
259
260 libelf: bug fixes for rewriting existing files when using mmap.
261
262 make all installed headers usable in C++ code.
263
264 readelf: better output format.
265
266 elflint: fix tests of dynamic section content.
267
268 ld: Implement --as-needed, --execstack, PT_GNU_STACK.  Many small patches.
269
270 libdw, libdwfl: handle files without aranges info.
271
272 Version 0.120:
273
274 Bug fixes.
275
276 dwarf.h updated for DWARF 3.0 final specification.
277
278 libdwfl: New function dwfl_version.
279
280 The license is now GPL for most files.  The libelf, libebl, libdw,
281 and libdwfl libraries have additional exceptions.  Add reference to
282 OIN.
283
284 Version 0.119:
285
286 bug fixes
287
288 Version 0.118:
289
290 elflint: more tests.
291
292 libdwfl: New function dwfl_module_register_names.
293
294 libebl: New backend hook for register names.
295
296 Version 0.117:
297
298 libdwfl: New function dwfl_module_return_value_location.
299
300 libebl: Backend improvements for several CPUs.
301
302 Version 0.116:
303
304 libdw: New functions dwarf_ranges, dwarf_entrypc, dwarf_diecu,
305        dwarf_entry_breakpoints.  Removed Dwarf_Func type and functions
306        dwarf_func_name, dwarf_func_lowpc, dwarf_func_highpc,
307        dwarf_func_entrypc, dwarf_func_die; dwarf_getfuncs callback now uses
308        Dwarf_Die, and dwarf_func_file, dwarf_func_line, dwarf_func_col
309        replaced by dwarf_decl_file, dwarf_decl_line, dwarf_decl_column;
310        dwarf_func_inline, dwarf_func_inline_instances now take Dwarf_Die.
311        Type Dwarf_Loc renamed to Dwarf_Op; dwarf_getloclist,
312        dwarf_addrloclists renamed dwarf_getlocation, dwarf_getlocation_addr.
313
314 Version 0.115:
315
316 libelf: speed-ups of non-mmap reading.
317
318 strings: New program.
319
320 Implement --enable-gcov option for configure.
321
322 libdw: New function dwarf_getscopes_die.
323
324 Version 0.114:
325
326 libelf: new function elf_getaroff
327
328 libdw: Added dwarf_func_die, dwarf_func_inline, dwarf_func_inline_instances.
329
330 libdwfl: New functions dwfl_report_offline, dwfl_offline_section_address,
331          dwfl_linux_kernel_report_offline.
332
333 ranlib: new program
334
335 Version 0.113:
336
337 elflint: relax a bit. Allow version definitions for defined symbols against
338 DSO versions also for symbols in nobits sections.  Allow .rodata section
339 to have STRINGS and MERGE flag set.
340
341 strip: add some more compatibility with binutils.
342
343 Version 0.112:
344
345 elfcmp: some more relaxation.
346
347 elflint: many more tests, especially regarding to symbol versioning.
348
349 libelf: Add elfXX_offscn and gelf_offscn.
350
351 libasm: asm_begin interface changes.
352
353 libebl: Add three new interfaces to directly access machine, class, and
354 data encoding information.
355
356 objdump: New program.  Just the beginning.
357
358 Version 0.111:
359
360 libdw: now contains all of libdwfl.  The latter is not installed anymore.
361
362 elfcmp: little usability tweak, name and index of differing section is printed.
363
364 Version 0.110:
365
366 libelf: fix a number of problems with elf_update
367
368 elfcmp: fix a few bugs.  Compare gaps.
369
370 Fix a few PLT problems and mudflap build issues.
371
372 libebl: Don't expose Ebl structure definition in libebl.h.  It's now private.
373
374 Version 0.109:
375
376 libebl: Check for matching modules.
377
378 elflint: Check that copy relocations only happen for OBJECT or NOTYPE symbols.
379
380 elfcmp: New program.
381
382 libdwfl: New library.
383
384 Version 0.108:
385
386 strip: fix bug introduced in last change
387
388 libdw: records returned by dwarf_getsrclines are now sorted by address
389
390 Version 0.107:
391
392 readelf: improve DWARF output format
393
394 strip: support Linux kernel modules
395
396 Version 0.106:
397
398 libdw: Updated dwarf.h from DWARF3 spec
399 libdw: add new funtions dwarf_func_entrypc, dwarf_func_file, dwarf_func_line,
400 dwarf_func_col, dwarf_getsrc_file
401
402 Version 0.105:
403
404 addr2line: New program
405
406 libdw: add new functions: dwarf_addrdie, dwarf_macro_*, dwarf_getfuncs,
407 dwarf_func_*.
408
409 findtextrel: use dwarf_addrdie
410
411 Version 0.104:
412
413 findtextrel: New program.
414
415 Version 0.103:
416
417 libdw: Fix using libdw.h with gcc < 4 and C++ code.  Compiler bug.
418
419 Version 0.102:
420
421 More Makefile and spec file cleanups.
422
423 Version 0.101:
424
425 Remove most gettext autoconf handling.
426
427 Add more warnings
428
429 Fix resulting problems.  One actual bug found and fixed this way
430
431 Version 0.100:
432
433 libebl: Fix x86-64 relocations.
434
435 Add -Wunused -Wextra warnings.
436
437 Some cleanups resulting from those additional warnings.
438
439 Lots of Makefile cleanup.
440
441 Version 0.99:
442
443 libelf: add gelf_checksum prototype to <libelf.h>
444
445 libelf: fix elf*_checksum handling of NOBITS sections
446
447 Finish mudflap support.
448
449 Fix three bugs found by mudflap.
450
451 ld: add as_needed support
452
453 Version 0.98:
454
455 readelf: in section to segment mapping, indicate read-only sections.
456
457 elflint: more relaxation for GNU ld
458
459 Version 0.97:
460
461 Fix compiling with gcc 4.0.
462 Some tests called elflint without appropriate LD_LIBRARY_PATH.
463
464 Version 0.96:
465
466 Fix support for platforms with lib64.
467
468 Version 0.95:
469
470 libebl: add ppc and ppc64 support
471
472 readelf: fix minimal memory leak.
473
474 Add support to compile with mudflap.
475
476 Modernize configure.ac.  Move scripts in config subdir.
477
478 Modernize *-po directory infrastructure.
479
480 libelf: Add gelf_getlib and gelf_update_lib
481
482 readelf: print liblist sections
483
484 Version 0.94:
485
486 Fix some minimal build problems.
487
488 Version 0.93:
489
490 ibdw: tons of new functionality and bug fixes.  Several interface changes.
491
492 readelf: use libdw now.
493
494 libdwarf: removed completely.
495
496 Version 0.92:
497
498 configuration changes.
499
500 Version 0.91:
501
502 libdw: fix memory handling.  Implement source line handling.
503 nm: use libdw instead of libdwarf.
504 libelf: change to GPL from OSL1 for now.
505
506 Version 0.90:
507
508 libebl: Recognize a few more section types and dynamic tags and return
509 approriate strings.
510
511 Version 0.89:
512
513 strip: fix overwriting of symbol table in input file.
514
515 Version 0.88:
516
517 libebl: Add some ia64 bits.
518
519 Version 0.87:
520
521 Bug fixes for big endian and some 64-bit machines.
522
523 Version 0.86:
524
525 strip: fix handling of Alpha and s390x which use incorrect hash bucket sizes.
526
527 ld: tons of changes, moving towards usability.
528
529 Version 0.85:
530
531 strip: update section group symbol index if the associated symbol table changed
532
533 libelf: fix two problems with generating output not via mmap
534
535 elflint: add probably 10-15 more tests
536 libebl: add support for some of the new tests
537
538 ld: gazillion changes
539
540 Version 0.84:
541
542 elflint: deal with .rel.dyn section.  Fix a problem with rela platforms.
543 Handle PT_GNU_STACK.  Change to write messages to stdout.
544
545 readelf: fix a problem with version information in the symbol table output.
546
547 strip: update all version symbol table entries
548
549 Version 0.83:
550
551 size: fix a warning
552
553 strip: last changed caused problems when the symbol table is before the
554 relocation section.  Fixed.  This fix also improved the asymptotic
555 behavior if many symbol table sections are present.
556
557 Version 0.82:
558
559 Run strip tests with the correct libelf and libebl.
560
561 libelf: fix bug in verneed byte order changing code.
562
563 Version 0.81:
564
565 strip: Remove unused symbol table entries.  This might require updating
566 various other sections.
567
568 Version 0.80:
569
570 Fix some libelf problems with ET_REL files.
571
572 Version 0.79:
573
574 More warning changes, mainly by jbj.
575
576 libdw: yet more new code.  dwarf_child and dwarf_sibling should now actually
577 work.
578
579 Version 0.78:
580
581 libdw: 10+ new functions.  get-pubnames2 works now fully.  Almost all the
582 code needed for nm is in place.
583
584 Version 0.77:
585
586 cleanups to compile cleanly with gcc 3.3 and -Werror.
587
588 libdw: some new code.
589
590 Version 0.76:
591
592 libebl: Fix last patch to recognize relocation sections.   We must not
593 use the name.
594
595 Version 0.75:
596
597 libebl: .debug_ranges is a DWARF 3 debug section
598 libebl: recognize relocation sections for debug section
599 Patches by Jakub Jelinek.
600
601 Version 0.74:
602
603 Cleanups and more SPARC support by Tom Callaway <tcallaway@redhat.com>.
604
605 Version 0.73:
606
607 64-bit cleanups for the programs.
608
609 Version 0.72:
610
611 libelf: and yet more fun with endian tranformation at output time.
612
613 Version 0.71:
614
615 libelf: more fun with endian tranformation at output time.  Add test for it.
616
617 Version 0.70:
618
619 libelf: Two little bugs left from previous patch to handle section output
620 order.
621
622 libelf: add unlikely in some more places.
623
624 Version 0.69:
625
626 libelf: fix output routines to handle case where section indeces and
627 ordre in the output file don't match correctly.  Patch by Jakub.
628
629 elflint: fix test of note section content for 64-bit platforms and files
630 with different byte order.
631
632 Version 0.68:
633
634 libebl: Fix SH_ENTSIZE_HASH definition (patch by Jakub)
635
636 Version 0.67:
637
638 libelf: correct mistake in error string handling.
639
640 libelf: Implement ELF_F_PERMISSIVE.
641 strip: Implement --permissive option.
642
643 Version 0.66:
644
645 strip: Implement -g option.
646
647 libelf: Handle broken hash table entry sizes.
648
649 libebl: New function ebl_debugscn_p.  Use it where appropriate.
650
651 Version 0.65:
652
653 libelf: Use correct file size for NOBITS section with ELF_F_LAYOUT set
654
655 Version 0.64:
656
657 libelf: Make error handling more robust.
658 libelf: Use TLS in error handler if configured with --enable-tls
659
660 tests: input files are now distributed, not uuencoded in the shell scripts
661
662 libdw: implement error handling, dwarf_get_pubnames
663
664 Version 0.63:
665
666 Build (incomplete) libdw.
667
668 Version 0.62:
669
670 Get rid of libtool.
671
672 Version 0.61:
673
674 Fix URL of OSL.
675
676 Version 0.60:
677
678 libebl: Handle .gnu.warning.* sections correctly.
679
680 size: Implement -t option.
681
682 libebl: Add IA-64 support.
683 libebl: Update SH relocations.
684 libebl: Add Alpha support.
685 libebl: Add Arm support.
686 libebl: Add support for all currently known architecture to the loader.
687
688 Version 0.59:
689
690 nm: Implement -S option.  Correct portable output format.  Implement -s option.
691
692 libelf: Take offset of archive into account in elf_rand.
693
694 Version 0.58:
695
696 strip: fix handling of ET_REL files.
697 Add tests for strip.
698
699 Version 0.57:
700
701 strip: respect layout of input file
702
703 Version 0.56:
704
705 strip: handle files with large number of sections.
706
707 Version 0.55:
708
709 libelf: quite a few bug fixes by Alex Larsson.
710
711 strip: implement -f option to place stripped sections into a separate
712 file.  By Alex Larsson.
713
714 Version 0.54:
715
716 strip: don't let STT_SECTION symbols keeps sections from being removed
717
718 elflint: local symbols are allowed in .dynsym
719 elflint: special case .rel.dyn a bit
720
721 Version 0.53:
722
723 elflint: check types and flags of special sections defined in gABI
724
725 libebl: add x86-64 support
726
727 Version 0.52:
728
729 Start improvement of debug info handling in nm.
730
731 libasm: implement asm_adduleb128 and asm_addsleb128 and a test for them
732
733 Version 0.51:
734
735 Fix build on 64-bit platforms.
736
737 Version 0.50:
738
739 nm: print file/line number also for local symbols
740
741 use versions scripts not libtool's useless -export-symbols option
742
743 Version 0.49:
744
745 Update to autoconf 2.54 and automake 1.7.
746
747 elflint: check note sections
748
749 libdwarf: a number of bug fixes
750
751 readelf: print .debug_info section content
752
753 dwarf.h: Update from draft 7
754
755 Version 0.48:
756
757 libcpu: beginning
758
759 libelf: new function to read parts of the ELF file
760
761 libebl: support for note section handling
762
763 readelf: dump note sections
764
765 Version 0.47:
766
767 libelf: fix little new section-handling related bugs in elf_getshstrndx
768 and elf_nextscn
769
770 elflint: tests for mandatory content of dynamic section
771
772 libasm: better handling of absolute symbols
773
774 Version 0.46:
775
776 libasm: rewrite to store Elf_Scn* instead of indices
777
778 nm: finish many-section support
779
780 nm: use debug in to print file/line info in sysv format
781
782 libdwarf: fix a few bugs in DIE handling
783
784 Version 0.45:
785
786 libelf: major rewrite to keep Elf_Scn references valid until elf_end
787
788 Version 0.44:
789
790 libasm: Add support for bss, ABS, and COM sections.
791
792 libebl: ebl_section_name takes now two index arguments to distinguish
793 between special sections and extended sections
794
795 Version 0.43:
796
797 General: fix a few problem gcc 3.1 had with the code.
798
799 libelf: implement {gelf,elf32,elf64}_checksum
800
801 libelf: optimze DSO: fewer relocations, fewer PLTs
802
803 add msg_tst test
804
805 ld: use correct section header string table index; write correct index
806
807 add dependencies for *.sym files
808
809 Version 0.42:
810
811 libelf: add elf_getshnum and elf_getshstrndx
812
813 libebl: update section type name function
814
815 elflint: tons of fixes wrt large number of sections.  New tests in this area.
816 Same amount of other bug fixes.
817
818 size, strip, nm: better support for large number of sections.  Including
819 using correct section header string table
820
821 libasm: correctly create data structures for large number of sections
822
823 new tests asm-tst4 and asm-tst5 to check large number of sections
824
825 libasm: implement section group generation
826
827 elflint: more tests on section groups.  Improve performance on existing
828 section group tests
829
830 Version 0.41:
831
832 ld: add undefined symbols to dynamic symbol table if --export-dynamic is
833 not given
834
835 ld: fix value of e_entry
836
837 Version 0.40:
838
839 elflint: print section names in error messages
840
841 elflint: mustn't warn about multiple DT_NULL
842
843 ld: don't emit all symbols if --export-dynamic is not given
844
845 ld: correct compute symbol address in output file (section index was off by 1)
846
847 ld: generate correct version info in dynsym without --export-dynamic and
848 in symtab
849
850 Version 0.39:
851
852 Fix check of various e_*size entries in elflint.
853
854 Handle text output in asm_newsym.
855
856 Finish checks in asm-tst3.
857
858 Version 0.38:
859
860 Update to autoconf 2.53, automake 1.6, gettext 0.11+.
861
862 Introduce *.sym files to restrict export from DSOs.
863
864 Use attribute_hidden and internal_function to optimize DSO code.
865
866 Add TLS definitions in elf.h and handle them in readelf.
867
868 Fix bug in verdef section generation in ld.
869
870 Add initial libasm code.
871
872 Version 0.37:
873
874 Implement better hash size optimization heuristic in ld.  It uses a formula
875 taking number of tests into account.
876
877 Lots of small bug fixes.
878
879 Improve readelf output format.  Respect various sh_link/sh_info values.
880 Correctly print versioning information for symbol tables.
881
882 Version 0.36:
883
884 Implement preprocessing of linker script.  Recognize -z combreloc.
885
886 Version 0.35:
887
888 Implement -z ignore|record for ld.
889
890 Implement creating of .gnu.version_r and .gnu.version sections.  The
891 .gnu.version does not yet contain correct info for defined and versioned
892 symbols (means .gnu.version_d is not yet implemented).
893
894 Implement gelf_update_* functions to create versioning data.
895
896 Version 0.34:
897
898 Add DT_RUNPATH/DT_RPATH entries to dynamic section.  Create .plt and
899 .rel.plt sections (completely).  Add support for all four PLT related
900 dynamic section entries.  Add callback function for PLT creation.
901
902 More tests in elflint.  Add support for very strict checking which for
903 now flags level 2 (deprecated features) usage.
904
905 Version 0.33:
906
907 Create dynamic symbol table, dynamic string table, and hash table to ld.
908
909 Add hash table histogram support to readelf.
910
911 Version 0.32:
912
913 more work on elflint
914
915 ld now creates the dynamic section and references it.  Start adding entries
916 to dynamic section.
917
918 Version 0.31:
919
920 Start implementing elflint.
921
922 Version 0.30:
923
924 Fix handling of NOBITS sections in elf_getdata.
925
926 Start implementing generation of executables and DSOs in ld.
927 Generation of program header mostly done.  Address computation done.
928 Extension of linker script syntax.
929
930 Various cleanups.
931
932 Implement section group handling in readelf.
933
934 Version 0.29:
935
936 Implement section groups.  This involved a lot of code moving.  The
937 new code is entirely untested since gas/gcc are currently not able to
938 create section groups.  ld works fine on files without section groups.
939
940 Version 0.28:
941
942 Fix problem with adding more section in elf_newscn.  The section pointers
943 for the data buffers wasn't adjusted.
944
945 Fix elf_getdata with nonzero second parameter.  Correctly handle creation
946 of internal data buffer for machines without unaligned access.
947
948 Version 0.27:
949
950 Start adding support to selectively add sections.  Includes support for
951 section groups.
952 Add --gc-sections/--no-gc-sections options.
953 Add general section merging support.
954
955 Fix a bug in section group support in strip.
956
957 Fix some potential problems with hash value in dynamic hash implementation.
958
959 Version 0.26:
960
961 section merging works in ld.
962
963 Version 0.25:
964
965 Actually create data structures from version map file and use it to hide
966 symbols in ld.
967
968 Implement -s -s for ld.
969
970 Version 0.24:
971
972 Improve relocation table output in readelf.  Avoid some crashes.
973 Finish many section handling in readelf.
974
975 Finish: finish implementation of ld -r.  At least some simple tests pass.
976
977 Version 0.23:
978
979 Fix a number of errors in ELF_C_WRITE handling.
980
981 Almost finished implementation of ld -r.  The data sections are all copied.
982 Handling of symbol tables is missing.
983
984 Version 0.22:
985
986 Handle DSO and archive input files correctly if -r option is given.
987
988 Gracefully deal with no phdr in new file in libelf.
989 Fix various small error handling problems.
990 Don't mmap file for output unless the command says so.
991
992 Add code to create ELF section header table to ld finalize routines.
993
994 Version 0.21:
995
996 Fix some problems with recursive handling of archives in libelf.
997
998 Improve messages printed by nm.
999
1000 Add symbol binding name handling to libebl.  Fix section name handling in
1001 libebl.
1002
1003 readelf and nm use more libebl functions.
1004
1005 Handle XINDEX correctly in nm and string.
1006
1007 Add first machine ld backend library (i386).
1008 Use it.  Recognize -r and --shared.  Avoid using -lxxx parameters for -r.
1009 Create ELF header in output file.  Change mode of output file according to
1010 output file type.  Reorganize callback initialization in ld.
1011
1012 Version 0.20:
1013
1014 Fix some memory leaks in libelf.
1015
1016 Version 0.19:
1017
1018 Implement reading version script.  Both inside linker scripts and via the
1019 --version-script command line parameter.  Uses the same code.
1020 What remains to be done is to implement a data structure which allows
1021 efficient matching against the version names to decide which pattern
1022 matches.
1023
1024 Beginning of output generation and output writing functions.
1025
1026 Version 0.18:
1027
1028 Finish implementation for DSO input file handling.  Implement rpath, runpath,
1029 and LD_LIBRARY_PATH handling.
1030
1031 Version 0.17:
1032
1033 make handling of e_shnum overflow in libelf standard conforming
1034
1035 ld now actually can handle DSOs in linker scripts.  Handling of DT_RUNPATH,
1036 DT_RPATH, -rpath, -rpath-link still remains to be implemented.
1037
1038 fix handling of -L parameters.  Make actual use of the default_paths element.
1039
1040 make re-definition of symbols in and from DSO compatible with existing linker
1041
1042 Version 0.16:
1043
1044 more work on assigning input sections to output sections.
1045
1046 Add gelf_xlatetof and gelf_xlatetom which were accidently left out.
1047
1048 Fix memory handling of section headers.
1049
1050 Version 0.15:
1051
1052 Add many-section support to ld.  Add various new command line parameters.
1053 Allow pagesize to be specified in linker script or on the command line.
1054 Collect input sections in list for the output section according to the rules
1055 specified in the linker script.
1056
1057 Version 0.14:
1058
1059 Fix some problems in the internal list handling which had the result
1060 that we didn't look for some of the unresolved symbols.
1061
1062 Free some memory if we know we don't need it anymore.
1063
1064 Optimize the list of unresolved symbols.  Throw out symbols which are
1065 meanwhile resolved.
1066
1067 Version 0.13:
1068
1069 Got file reading correct now.  The files are all read while parsing
1070 the parameters.  No creating of data structures to describe the linker
1071 command line.  The symbol table is built up while reading the files.
1072 DSOs are handled now.  -( -) handling is optimized.
1073
1074 Version 0.12:
1075
1076 Linker read linker scripts everywhere.  Handles --whole-archive.  Recognizes
1077 --dynamic and --static.  Collects defined and undefined symbols.  Recognizes
1078 conflicts.
1079
1080 libebl now defines functions to call the callbacks.  Add generic name handling
1081 in these new functions.  Remove the code from readelf and call the new
1082 functions.
1083
1084 Version 0.11:
1085
1086 Start of linker.  Basic argument parsing, finding of input files,
1087 linker script reading.
1088
1089 Version 0.10:
1090
1091 Implement dwarf_get_fde_n(), dwarf_get_abbrev(), dwarf_get_abbrev_tag(),
1092 dwarf_get_abbrev_code(), dwarf_get_abbrev_children_flag(),
1093 dwarf_get_abbrev_entry(), dwarf_get_fde_at_pc(), and tests for it.
1094
1095 Version 0.9:
1096
1097 Implement dwarf_get_fde_list_eh(), dwarf_get_cie_of_fde(),
1098 dwarf_get_fde_range(), dwarf_get_cie_info(), dwarf_get_fde_instr_bytes(),
1099 and tests for them.
1100
1101 Version 0.8:
1102
1103 Make handling of binaries in other byte order work and add tests for it.
1104
1105 Version 0.7:
1106
1107 Implement dwarf_get_aranges(), dwarf_get_arange(), dwarf_get_cu_die_offset(),
1108 dwarf_get_arange_info(), and tests for them.
1109
1110 Version 0.6:
1111
1112 Implement dwarf_get_global(), dwarf_globname(), dwarf_global_die_offset(),
1113 dwarf_global_cu_offset(), dwarf_global_name_offsets(), and tests for them
1114
1115 Version 0.5:
1116
1117 Implemented dwarf_srclines(), dwarf_srcfiles(), dwarf_linebeginstatement(),
1118 dwarf_lineendsequence(), dwarf_lineno(), dwarf_lineaddr(), dwarf_lineoff(),
1119 dwarf_linesrc(), dwarf_lineblock(), dwarf_lineprologueend(),
1120 dwarf_lineepiloguebegin(), and tests for them.
1121
1122 Version 0.4:
1123
1124 Implemented dwarf_loclist().
1125
1126 Version 0.3:
1127
1128 Implemented dwarf_dieoffset(), dwarf_die_CU_offset(), dwarf_diename() and
1129 tests.
1130
1131 Implemented dwarf_attrlist(), dwarf_hasattr(), dwarf_attr(), dwarf_lowpc(),
1132 dwarf_highpc(), dwarf_bytesize(), dwarf_bitsize(), dwarf_bitoffset(),
1133 dwarf_srclang(), dwarf_arrayorder(), dwarf_hasform(), dwarf_whatform(),
1134 dwarf_whatattr(), dwarf_formref(), dwarf_global_formref(), dwarf_formaddr(),
1135 dwarf_formflag(), dwarf_formudata(), dwarf_formsdata(), dwarf_formblock,
1136 dwarf_formstring() and tests for them.
1137
1138 Version 0.2:
1139
1140 Implemented dwarf_offdie()), dwarf_tag(), dwarf_dieoffset(),
1141 dwarf_die_CU_offset(), dwarf_diename() and tests for them.
1142
1143 Version 0.1:
1144
1145 First libdwarf functions work.
1146
1147 Version 0.0:
1148
1149 libelf and parts of libebl are done.