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