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