1da0c48c4Sopenharmony_ci ToDo list for elfutils -*-outline-*- 2da0c48c4Sopenharmony_ci ---------------------- 3da0c48c4Sopenharmony_ci 4da0c48c4Sopenharmony_ciTime-stamp: <2009-02-05 22:08:01 drepper> 5da0c48c4Sopenharmony_ci 6da0c48c4Sopenharmony_ci* mkinstalldirs 7da0c48c4Sopenharmony_ci 8da0c48c4Sopenharmony_ci Remove everywhere. Use mkdir -p. 9da0c48c4Sopenharmony_ci 10da0c48c4Sopenharmony_ci* libelf: 11da0c48c4Sopenharmony_ci 12da0c48c4Sopenharmony_ci** verify section 13da0c48c4Sopenharmony_ci 14da0c48c4Sopenharmony_ci Currently the elf_update function trusts the user blindly if the 15da0c48c4Sopenharmony_ci ELF_F_LAYOUT flag is set. This is OK if the data is prepared by a 16da0c48c4Sopenharmony_ci ELF_C_NULL call but not if the user prepared the data herself 17da0c48c4Sopenharmony_ci 18da0c48c4Sopenharmony_ci** break out archive handling from elf_begin 19da0c48c4Sopenharmony_ci 20da0c48c4Sopenharmony_ci The handling of archives (especially of the symbol tables) must be 21da0c48c4Sopenharmony_ci broken out of elf_begin. There are several different forms of 22da0c48c4Sopenharmony_ci archives and only when having the archive handling separately this 23da0c48c4Sopenharmony_ci remains maintainable. 24da0c48c4Sopenharmony_ci 25da0c48c4Sopenharmony_ci** shdrs in read-only files 26da0c48c4Sopenharmony_ci 27da0c48c4Sopenharmony_ci When reading (ELF_C_READ*) then there is no need to malloc Shdr 28da0c48c4Sopenharmony_ci structure in elfXX_getshdr if file is mmaped and unaligned access 29da0c48c4Sopenharmony_ci is allowed or the structure is aligned. Use ELF_F_MALLOCED flag 30da0c48c4Sopenharmony_ci to differentiate. 31da0c48c4Sopenharmony_ci 32da0c48c4Sopenharmony_ci** shdrs after elf_cntl (ELF_C_FDREAD) 33da0c48c4Sopenharmony_ci 34da0c48c4Sopenharmony_ci Similar to the above. After ELF_C_FDREAD the file is completely 35da0c48c4Sopenharmony_ci in memory. See also this mailing list thread: 36da0c48c4Sopenharmony_ci https://fedorahosted.org/pipermail/elfutils-devel/2012-July/002368.html 37da0c48c4Sopenharmony_ci 38da0c48c4Sopenharmony_ci* libdw 39da0c48c4Sopenharmony_ci 40da0c48c4Sopenharmony_ci** More memory access checks needed 41da0c48c4Sopenharmony_ci 42da0c48c4Sopenharmony_ci All accesses to the debug sections should make sure the offsets are 43da0c48c4Sopenharmony_ci valid. This is currently especially a problem with leb128 accesses. 44da0c48c4Sopenharmony_ci 45da0c48c4Sopenharmony_ci** Low level macro information operations 46da0c48c4Sopenharmony_ci 47da0c48c4Sopenharmony_ci in 5.11.3 are not implemented. gcc currently does not emit this 48da0c48c4Sopenharmony_ci information so I cannot test it. 49da0c48c4Sopenharmony_ci 50da0c48c4Sopenharmony_ci** Rename dwarf_getabbrev 51da0c48c4Sopenharmony_ci 52da0c48c4Sopenharmony_ci 53da0c48c4Sopenharmony_ci* libcpu 54da0c48c4Sopenharmony_ci 55da0c48c4Sopenharmony_ci** x86 56da0c48c4Sopenharmony_ci 57da0c48c4Sopenharmony_ci*** Opcodes 58da0c48c4Sopenharmony_ci 59da0c48c4Sopenharmony_ci crc32 60da0c48c4Sopenharmony_ci extractps 61da0c48c4Sopenharmony_ci pextrb 62da0c48c4Sopenharmony_ci pextrd/pextrq 63da0c48c4Sopenharmony_ci pextrw 64da0c48c4Sopenharmony_ci pinsrq 65da0c48c4Sopenharmony_ci popcnt 64-bit reg 66da0c48c4Sopenharmony_ci 67da0c48c4Sopenharmony_ci* nm: 68da0c48c4Sopenharmony_ci 69da0c48c4Sopenharmony_ci** add demangler support 70da0c48c4Sopenharmony_ci 71da0c48c4Sopenharmony_ci Use demangler from libiberty. 72da0c48c4Sopenharmony_ci 73da0c48c4Sopenharmony_ci** add support to read debugging symbols 74da0c48c4Sopenharmony_ci 75da0c48c4Sopenharmony_ci Implement -l option for BSD and POSIX format 76da0c48c4Sopenharmony_ci 77da0c48c4Sopenharmony_ci 78da0c48c4Sopenharmony_ci* strip: 79da0c48c4Sopenharmony_ci 80da0c48c4Sopenharmony_ci** support SHT_SYMTAB_SHNDX 81da0c48c4Sopenharmony_ci 82da0c48c4Sopenharmony_ci should be removed if not needed anymore 83da0c48c4Sopenharmony_ci 84da0c48c4Sopenharmony_ci* ld: 85da0c48c4Sopenharmony_ci 86da0c48c4Sopenharmony_ci** sanity check .rel sh_info content 87da0c48c4Sopenharmony_ci 88da0c48c4Sopenharmony_ci the sh_info of all .rel sections with the same name must point to 89da0c48c4Sopenharmony_ci sections which also have the same name 90da0c48c4Sopenharmony_ci 91da0c48c4Sopenharmony_ci** use ld.so.conf 92da0c48c4Sopenharmony_ci 93da0c48c4Sopenharmony_ci to locate shared libraries also use /etc/ld.so.conf 94da0c48c4Sopenharmony_ci 95da0c48c4Sopenharmony_ci** handle object files for different architectures 96da0c48c4Sopenharmony_ci 97da0c48c4Sopenharmony_ci ld.so is expected to ignore object files for different architectures and 98da0c48c4Sopenharmony_ci continue looking for a matching file (e.g., ignore 32-bit binaries on 99da0c48c4Sopenharmony_ci 64-bit platforms and vice versa). We probably need the same in ld. 100da0c48c4Sopenharmony_ci 101da0c48c4Sopenharmony_ci** reuse after elf_end 102da0c48c4Sopenharmony_ci 103da0c48c4Sopenharmony_ci Some files are closed using elf_end. They are removed from memory only 104da0c48c4Sopenharmony_ci if no reference is left (especially for archives this is a problem). 105da0c48c4Sopenharmony_ci The old mapping should be reused in that case. The problem is worse 106da0c48c4Sopenharmony_ci for files which are not mapped read-only (archives again). 107da0c48c4Sopenharmony_ci 108da0c48c4Sopenharmony_ci** size for STT_SECTION entries 109da0c48c4Sopenharmony_ci 110da0c48c4Sopenharmony_ci The STT_SECTION entries have zero for the size but can easily get 111da0c48c4Sopenharmony_ci the size of the section. 112da0c48c4Sopenharmony_ci 113da0c48c4Sopenharmony_ci** .eh_frame_hdr 114da0c48c4Sopenharmony_ci 115da0c48c4Sopenharmony_ci Not implemented at all in the moment except for recognition of the option 116da0c48c4Sopenharmony_ci itself. 117da0c48c4Sopenharmony_ci 118da0c48c4Sopenharmony_ci** variables with aliases in executables 119da0c48c4Sopenharmony_ci 120da0c48c4Sopenharmony_ci When linking an executable with a references against a variable in a 121da0c48c4Sopenharmony_ci DSO, create symbol table entries for all the aliases of the variable 122da0c48c4Sopenharmony_ci in the DSO and create a relocation for one of them (a non-weak 123da0c48c4Sopenharmony_ci definition) 124da0c48c4Sopenharmony_ci 125da0c48c4Sopenharmony_ci* elflint 126da0c48c4Sopenharmony_ci 127da0c48c4Sopenharmony_ci** additional checks 128da0c48c4Sopenharmony_ci 129da0c48c4Sopenharmony_ci 1st GOT entry == _DYNAMIC 130da0c48c4Sopenharmony_ci 131da0c48c4Sopenharmony_ci check versioning info: 132da0c48c4Sopenharmony_ci 133da0c48c4Sopenharmony_ci always BASE in verdef 134da0c48c4Sopenharmony_ci sh_size/sh_entsize matches last offset != 0 135da0c48c4Sopenharmony_ci 136da0c48c4Sopenharmony_ci check whether any relocation is for a merge-able section 137da0c48c4Sopenharmony_ci 138da0c48c4Sopenharmony_ci check TLS relocation dependencies 139da0c48c4Sopenharmony_ci 140da0c48c4Sopenharmony_ci Check content of .eh_frame_hdr, .eh_frame, .gcc_except_table 141da0c48c4Sopenharmony_ci 142da0c48c4Sopenharmony_ci*** for x86 143da0c48c4Sopenharmony_ci 144da0c48c4Sopenharmony_ci check that R_386_TLS_GD is followed by R_386_PLT32 for __tls_get_addr 145da0c48c4Sopenharmony_ci 146da0c48c4Sopenharmony_ci** relax 147da0c48c4Sopenharmony_ci 148da0c48c4Sopenharmony_ci prelink generated files 149da0c48c4Sopenharmony_ci 150da0c48c4Sopenharmony_ci* elfcmp 151da0c48c4Sopenharmony_ci 152da0c48c4Sopenharmony_ci** treat relocation sections special 153da0c48c4Sopenharmony_ci 154da0c48c4Sopenharmony_ci Differences in the relocation sections can be ignored if all 155da0c48c4Sopenharmony_ci the same symbols with the same targets are present and the order 156da0c48c4Sopenharmony_ci of overlapping relocations doesn't change. There really never 157da0c48c4Sopenharmony_ci should be overlapping relocations but who knows. 158da0c48c4Sopenharmony_ci 159da0c48c4Sopenharmony_ci* mcs 160da0c48c4Sopenharmony_ci 161da0c48c4Sopenharmony_ci Sun has it. Can modify sections which are not in segments. 162da0c48c4Sopenharmony_ci 163da0c48c4Sopenharmony_ci -a string 164da0c48c4Sopenharmony_ci Append string to the comment section of the ELF object 165da0c48c4Sopenharmony_ci files. If string contains embedded blanks, it must be 166da0c48c4Sopenharmony_ci enclosed in quotation marks. 167da0c48c4Sopenharmony_ci 168da0c48c4Sopenharmony_ci -c Compress the contents of the comment section of the 169da0c48c4Sopenharmony_ci ELF object files. All duplicate entries are removed. 170da0c48c4Sopenharmony_ci The ordering of the remaining entries is not dis- 171da0c48c4Sopenharmony_ci turbed. 172da0c48c4Sopenharmony_ci 173da0c48c4Sopenharmony_ci -d Delete the contents of the comment section from the 174da0c48c4Sopenharmony_ci ELF object files. The section header for the comment 175da0c48c4Sopenharmony_ci section is also removed. 176da0c48c4Sopenharmony_ci 177da0c48c4Sopenharmony_ci -n name 178da0c48c4Sopenharmony_ci Specify the name of the comment section to access if 179da0c48c4Sopenharmony_ci other than .comment. By default, mcs deals with the 180da0c48c4Sopenharmony_ci section named .comment. This option can be used to 181da0c48c4Sopenharmony_ci specify another section. mcs can take multiple -n 182da0c48c4Sopenharmony_ci options to allow for specification of multiple sec- 183da0c48c4Sopenharmony_ci tion comments. 184da0c48c4Sopenharmony_ci 185da0c48c4Sopenharmony_ci -p Print the contents of the comment section on the stan- 186da0c48c4Sopenharmony_ci dard output. Each section printed is tagged by the 187da0c48c4Sopenharmony_ci name of the file from which it was extracted, using 188da0c48c4Sopenharmony_ci the format file[member_name]: for archive files and 189da0c48c4Sopenharmony_ci file: for other files. 190da0c48c4Sopenharmony_ci 191da0c48c4Sopenharmony_ci -V Print on standard error the version number of mcs. 192da0c48c4Sopenharmony_ci 193da0c48c4Sopenharmony_ciLocal Variables: 194da0c48c4Sopenharmony_cieval:(hide-sublevels 3) 195da0c48c4Sopenharmony_ciEnd: 196