ToDo list for elfutils                      -*-outline-*-
                      ----------------------

Time-stamp: <2003-08-07 12:52:49 drepper>

* mkinstalldirs

  Remove everywhere.  Use mkdir -p.

* libelf:

** verify section

   Currently the elf_update function trusts the user blindly if the
   ELF_F_LAYOUT flag is set.  This is OK if the data is prepared by a
   ELF_C_NULL call but not if the user prepared the data herself

** break out archive handling from elf_begin

   The handling of archives (especially of the symbol tables) must be
   broken out of elf_begin.  There are several different forms of
   archives and only when having the archive handling separately this
   remains maintainable.


* libdwarf

** Should we do more error checking?

   Most functions don't check whether they get a NULL value passed for
   a pointer argument.  It could be argued that this is OK since it's
   a bug inthe program.  But perhaps one could catch the case and return
   an error which would allow the program using libdwarf to have fewer
   places with error checking.

** More memory access checks needed

   All accesses to the debug sections should make sure the offsets are
   valid.  This is currently especially a problem with leb128 accesses.

** Low level macro information operations

   in 5.11.3 are not implemented.  gcc currently does not emit this
   information so I cannot test it.

** Rename dwarf_getabbrev

** dwarf_loclist()

   This function and its interface seem to be misdesigned.  The specification
   is unclear and its changed between v2 and v2.1.  Other implementation
   implement even different behavior.


* nm:

** add demangler support

   Use demangler from libiberty.

** add support to read debugging symbols

   Implement -l option for BSD and POSIX format


* strip:

** support SHT_SYMTAB_SHNDX

   should be removed if not needed anymore

* ld:

** sanity check .rel sh_info content

   the sh_info of all .rel sections with the same name must point to
   sections which also have the same name

** use ld.so.conf

   to locate shared libraries also use /etc/ld.so.conf

** handle object files for different architectures

   ld.so is expected to ignore object files for different architectures and
   continue looking for a matching file (e.g., ignore 32-bit binaries on
   64-bit platforms and vice versa).  We probably need the same in ld.

** reuse after elf_end

   Some files are closed using elf_end.  They are removed from memory only
   if no reference is left (especially for archives this is a problem).
   The old mapping should be reused in that case.  The problem is worse
   for files which are not mapped read-only (archives again).


** size for STT_SECTION entries

   The STT_SECTION entries have zero for the size but can easily get
   the size of the section.

* elflint

** additional checks

   1st GOT entry == _DYNAMIC

   if TEXTREL check whether any relocation touches RO segment

   if TEXTREL not set check that no relocation touches RO segment

   check versioning info:

     always BASE in verdef
     sh_size/sh_entsize matches last offset != 0

   check whether any relocation is for a merge-able section

** possibly missing tests

   at most one extended section index table for a symtab

   no extended section index table != ET_REL

   no extended section index table for SHT_DYNSYM


* mcs

  Sun has it.  Can modify sections which are not in segments.

     -a string
           Append string to the comment section of the ELF object
           files. If  string contains embedded blanks, it must be
           enclosed in quotation marks.

     -c    Compress the contents of the comment  section  of  the
           ELF  object  files. All duplicate entries are removed.
           The ordering of the  remaining  entries  is  not  dis-
           turbed.

     -d    Delete the contents of the comment  section  from  the
           ELF  object  files. The section header for the comment
           section is also removed.

     -n name
           Specify the name of the comment section to  access  if
           other  than  .comment.  By default, mcs deals with the
           section named .comment. This option  can  be  used  to
           specify  another  section.  mcs  can  take multiple -n
           options to allow for specification of   multiple  sec-
           tion comments.

     -p    Print the contents of the comment section on the stan-
           dard  output.  Each  section  printed is tagged by the
           name of the file from which it  was  extracted,  using
           the  format  file[member_name]:  for archive files and
           file:  for other files.

     -V    Print on standard error the version number of mcs.

Local Variables:
eval:(hide-body)
End: