huangcm
2025-07-01 676035278781360996553c427a12bf358249ebf7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
             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 depencies
 
   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: