196 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			196 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		      ToDo list for elfutils                      -*-outline-*-
 | 
						|
                      ----------------------
 | 
						|
 | 
						|
Time-stamp: <2009-02-05 22:08:01 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.
 | 
						|
 | 
						|
** shdrs in read-only files
 | 
						|
 | 
						|
   When reading (ELF_C_READ*) then there is no need to malloc Shdr
 | 
						|
   structure in elfXX_getshdr if file is mmaped and unaligned access
 | 
						|
   is allowed or the structure is aligned.  Use ELF_F_MALLOCED flag
 | 
						|
   to differentiate.
 | 
						|
 | 
						|
** shdrs after elf_cntl (ELF_C_FDREAD)
 | 
						|
 | 
						|
   Similar to the above. After ELF_C_FDREAD the file is completely
 | 
						|
   in memory.  See also this mailing list thread:
 | 
						|
   https://fedorahosted.org/pipermail/elfutils-devel/2012-July/002368.html
 | 
						|
 | 
						|
* libdw
 | 
						|
 | 
						|
** 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
 | 
						|
 | 
						|
 | 
						|
* libcpu
 | 
						|
 | 
						|
** x86
 | 
						|
 | 
						|
*** Opcodes
 | 
						|
 | 
						|
     crc32
 | 
						|
     extractps
 | 
						|
     pextrb
 | 
						|
     pextrd/pextrq
 | 
						|
     pextrw
 | 
						|
     pinsrq
 | 
						|
     popcnt 64-bit reg
 | 
						|
 | 
						|
* 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.
 | 
						|
 | 
						|
** .eh_frame_hdr
 | 
						|
 | 
						|
   Not implemented at all in the moment except for recognition of the option
 | 
						|
   itself.
 | 
						|
 | 
						|
** variables with aliases in executables
 | 
						|
 | 
						|
   When linking an executable with a references against a variable in a
 | 
						|
   DSO, create symbol table entries for all the aliases of the variable
 | 
						|
   in the DSO and create a relocation for one of them (a non-weak
 | 
						|
   definition)
 | 
						|
 | 
						|
* elflint
 | 
						|
 | 
						|
** additional checks
 | 
						|
 | 
						|
   1st GOT entry == _DYNAMIC
 | 
						|
 | 
						|
   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
 | 
						|
 | 
						|
   check TLS relocation dependencies
 | 
						|
 | 
						|
   Check content of .eh_frame_hdr, .eh_frame, .gcc_except_table
 | 
						|
 | 
						|
*** for x86
 | 
						|
 | 
						|
    check that R_386_TLS_GD is followed by R_386_PLT32 for __tls_get_addr
 | 
						|
 | 
						|
** relax
 | 
						|
 | 
						|
   prelink generated files
 | 
						|
 | 
						|
* elfcmp
 | 
						|
 | 
						|
** treat relocation sections special
 | 
						|
 | 
						|
   Differences in the relocation sections can be ignored if all
 | 
						|
   the same symbols with the same targets are present and the order
 | 
						|
   of overlapping relocations doesn't change.  There really never
 | 
						|
   should be overlapping relocations but who knows.
 | 
						|
 | 
						|
* 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-sublevels 3)
 | 
						|
End:
 |