Blame TODO

Packit 032894
		      ToDo list for elfutils                      -*-outline-*-
Packit 032894
                      ----------------------
Packit 032894
Packit 032894
Time-stamp: <2009-02-05 22:08:01 drepper>
Packit 032894
Packit 032894
* mkinstalldirs
Packit 032894
Packit 032894
  Remove everywhere.  Use mkdir -p.
Packit 032894
Packit 032894
* libelf:
Packit 032894
Packit 032894
** verify section
Packit 032894
Packit 032894
   Currently the elf_update function trusts the user blindly if the
Packit 032894
   ELF_F_LAYOUT flag is set.  This is OK if the data is prepared by a
Packit 032894
   ELF_C_NULL call but not if the user prepared the data herself
Packit 032894
Packit 032894
** break out archive handling from elf_begin
Packit 032894
Packit 032894
   The handling of archives (especially of the symbol tables) must be
Packit 032894
   broken out of elf_begin.  There are several different forms of
Packit 032894
   archives and only when having the archive handling separately this
Packit 032894
   remains maintainable.
Packit 032894
Packit 032894
** shdrs in read-only files
Packit 032894
Packit 032894
   When reading (ELF_C_READ*) then there is no need to malloc Shdr
Packit 032894
   structure in elfXX_getshdr if file is mmaped and unaligned access
Packit 032894
   is allowed or the structure is aligned.  Use ELF_F_MALLOCED flag
Packit 032894
   to differentiate.
Packit 032894
Packit 032894
** shdrs after elf_cntl (ELF_C_FDREAD)
Packit 032894
Packit 032894
   Similar to the above. After ELF_C_FDREAD the file is completely
Packit 032894
   in memory.  See also this mailing list thread:
Packit 032894
   https://fedorahosted.org/pipermail/elfutils-devel/2012-July/002368.html
Packit 032894
Packit 032894
* libdw
Packit 032894
Packit 032894
** More memory access checks needed
Packit 032894
Packit 032894
   All accesses to the debug sections should make sure the offsets are
Packit 032894
   valid.  This is currently especially a problem with leb128 accesses.
Packit 032894
Packit 032894
** Low level macro information operations
Packit 032894
Packit 032894
   in 5.11.3 are not implemented.  gcc currently does not emit this
Packit 032894
   information so I cannot test it.
Packit 032894
Packit 032894
** Rename dwarf_getabbrev
Packit 032894
Packit 032894
Packit 032894
* libcpu
Packit 032894
Packit 032894
** x86
Packit 032894
Packit 032894
*** Opcodes
Packit 032894
Packit 032894
     crc32
Packit 032894
     extractps
Packit 032894
     pextrb
Packit 032894
     pextrd/pextrq
Packit 032894
     pextrw
Packit 032894
     pinsrq
Packit 032894
     popcnt 64-bit reg
Packit 032894
Packit 032894
* nm:
Packit 032894
Packit 032894
** add demangler support
Packit 032894
Packit 032894
   Use demangler from libiberty.
Packit 032894
Packit 032894
** add support to read debugging symbols
Packit 032894
Packit 032894
   Implement -l option for BSD and POSIX format
Packit 032894
Packit 032894
Packit 032894
* strip:
Packit 032894
Packit 032894
** support SHT_SYMTAB_SHNDX
Packit 032894
Packit 032894
   should be removed if not needed anymore
Packit 032894
Packit 032894
* ld:
Packit 032894
Packit 032894
** sanity check .rel sh_info content
Packit 032894
Packit 032894
   the sh_info of all .rel sections with the same name must point to
Packit 032894
   sections which also have the same name
Packit 032894
Packit 032894
** use ld.so.conf
Packit 032894
Packit 032894
   to locate shared libraries also use /etc/ld.so.conf
Packit 032894
Packit 032894
** handle object files for different architectures
Packit 032894
Packit 032894
   ld.so is expected to ignore object files for different architectures and
Packit 032894
   continue looking for a matching file (e.g., ignore 32-bit binaries on
Packit 032894
   64-bit platforms and vice versa).  We probably need the same in ld.
Packit 032894
Packit 032894
** reuse after elf_end
Packit 032894
Packit 032894
   Some files are closed using elf_end.  They are removed from memory only
Packit 032894
   if no reference is left (especially for archives this is a problem).
Packit 032894
   The old mapping should be reused in that case.  The problem is worse
Packit 032894
   for files which are not mapped read-only (archives again).
Packit 032894
Packit 032894
** size for STT_SECTION entries
Packit 032894
Packit 032894
   The STT_SECTION entries have zero for the size but can easily get
Packit 032894
   the size of the section.
Packit 032894
Packit 032894
** .eh_frame_hdr
Packit 032894
Packit 032894
   Not implemented at all in the moment except for recognition of the option
Packit 032894
   itself.
Packit 032894
Packit 032894
** variables with aliases in executables
Packit 032894
Packit 032894
   When linking an executable with a references against a variable in a
Packit 032894
   DSO, create symbol table entries for all the aliases of the variable
Packit 032894
   in the DSO and create a relocation for one of them (a non-weak
Packit 032894
   definition)
Packit 032894
Packit 032894
* elflint
Packit 032894
Packit 032894
** additional checks
Packit 032894
Packit 032894
   1st GOT entry == _DYNAMIC
Packit 032894
Packit 032894
   check versioning info:
Packit 032894
Packit 032894
     always BASE in verdef
Packit 032894
     sh_size/sh_entsize matches last offset != 0
Packit 032894
Packit 032894
   check whether any relocation is for a merge-able section
Packit 032894
Packit 032894
   check TLS relocation depencies
Packit 032894
Packit 032894
   Check content of .eh_frame_hdr, .eh_frame, .gcc_except_table
Packit 032894
Packit 032894
*** for x86
Packit 032894
Packit 032894
    check that R_386_TLS_GD is followed by R_386_PLT32 for __tls_get_addr
Packit 032894
Packit 032894
** relax
Packit 032894
Packit 032894
   prelink generated files
Packit 032894
Packit 032894
* elfcmp
Packit 032894
Packit 032894
** treat relocation sections special
Packit 032894
Packit 032894
   Differences in the relocation sections can be ignored if all
Packit 032894
   the same symbols with the same targets are present and the order
Packit 032894
   of overlapping relocations doesn't change.  There really never
Packit 032894
   should be overlapping relocations but who knows.
Packit 032894
Packit 032894
* mcs
Packit 032894
Packit 032894
  Sun has it.  Can modify sections which are not in segments.
Packit 032894
Packit 032894
     -a string
Packit 032894
           Append string to the comment section of the ELF object
Packit 032894
           files. If  string contains embedded blanks, it must be
Packit 032894
           enclosed in quotation marks.
Packit 032894
Packit 032894
     -c    Compress the contents of the comment  section  of  the
Packit 032894
           ELF  object  files. All duplicate entries are removed.
Packit 032894
           The ordering of the  remaining  entries  is  not  dis-
Packit 032894
           turbed.
Packit 032894
Packit 032894
     -d    Delete the contents of the comment  section  from  the
Packit 032894
           ELF  object  files. The section header for the comment
Packit 032894
           section is also removed.
Packit 032894
Packit 032894
     -n name
Packit 032894
           Specify the name of the comment section to  access  if
Packit 032894
           other  than  .comment.  By default, mcs deals with the
Packit 032894
           section named .comment. This option  can  be  used  to
Packit 032894
           specify  another  section.  mcs  can  take multiple -n
Packit 032894
           options to allow for specification of   multiple  sec-
Packit 032894
           tion comments.
Packit 032894
Packit 032894
     -p    Print the contents of the comment section on the stan-
Packit 032894
           dard  output.  Each  section  printed is tagged by the
Packit 032894
           name of the file from which it  was  extracted,  using
Packit 032894
           the  format  file[member_name]:  for archive files and
Packit 032894
           file:  for other files.
Packit 032894
Packit 032894
     -V    Print on standard error the version number of mcs.
Packit 032894
Packit 032894
Local Variables:
Packit 032894
eval:(hide-sublevels 3)
Packit 032894
End: