26
26
#undef Elf_Addr
27
27
#undef Elf_Ehdr
28
28
#undef Elf_Shdr
29
- #undef Elf_Rel
30
29
#undef Elf_Sym
31
30
#undef ELF_ST_TYPE
32
31
#undef uint_t
42
41
# define Elf_Addr Elf64_Addr
43
42
# define Elf_Ehdr Elf64_Ehdr
44
43
# define Elf_Shdr Elf64_Shdr
45
- # define Elf_Rel Elf64_Rel
46
44
# define Elf_Sym Elf64_Sym
47
45
# define ELF_ST_TYPE ELF64_ST_TYPE
48
46
# define uint_t uint64_t
57
55
# define Elf_Addr Elf32_Addr
58
56
# define Elf_Ehdr Elf32_Ehdr
59
57
# define Elf_Shdr Elf32_Shdr
60
- # define Elf_Rel Elf32_Rel
61
58
# define Elf_Sym Elf32_Sym
62
59
# define ELF_ST_TYPE ELF32_ST_TYPE
63
60
# define uint_t uint32_t
@@ -248,14 +245,10 @@ static int do_sort(Elf_Ehdr *ehdr,
248
245
Elf32_Word * symtab_shndx = NULL ;
249
246
Elf_Sym * sort_needed_sym = NULL ;
250
247
Elf_Shdr * sort_needed_sec ;
251
- Elf_Rel * relocs = NULL ;
252
- int relocs_size = 0 ;
253
248
uint32_t * sort_needed_loc ;
254
249
const char * secstrings ;
255
250
const char * strtab ;
256
251
char * extab_image ;
257
- int extab_index = 0 ;
258
- int i ;
259
252
int idx ;
260
253
unsigned int shnum ;
261
254
unsigned int shstrndx ;
@@ -279,23 +272,15 @@ static int do_sort(Elf_Ehdr *ehdr,
279
272
if (shnum == SHN_UNDEF )
280
273
shnum = _r (& shdr [0 ].sh_size );
281
274
282
- for (i = 0 , s = shdr ; s < shdr + shnum ; i ++ , s ++ ) {
275
+ for (s = shdr ; s < shdr + shnum ; s ++ ) {
283
276
idx = r (& s -> sh_name );
284
- if (!strcmp (secstrings + idx , "__ex_table" )) {
277
+ if (!strcmp (secstrings + idx , "__ex_table" ))
285
278
extab_sec = s ;
286
- extab_index = i ;
287
- }
288
279
if (!strcmp (secstrings + idx , ".symtab" ))
289
280
symtab_sec = s ;
290
281
if (!strcmp (secstrings + idx , ".strtab" ))
291
282
strtab_sec = s ;
292
283
293
- if ((r (& s -> sh_type ) == SHT_REL ||
294
- r (& s -> sh_type ) == SHT_RELA ) &&
295
- r (& s -> sh_info ) == extab_index ) {
296
- relocs = (void * )ehdr + _r (& s -> sh_offset );
297
- relocs_size = _r (& s -> sh_size );
298
- }
299
284
if (r (& s -> sh_type ) == SHT_SYMTAB_SHNDX )
300
285
symtab_shndx = (Elf32_Word * )((const char * )ehdr +
301
286
_r (& s -> sh_offset ));
@@ -397,10 +382,6 @@ static int do_sort(Elf_Ehdr *ehdr,
397
382
extable_ent_size , compare_extable );
398
383
}
399
384
400
- /* If there were relocations, we no longer need them. */
401
- if (relocs )
402
- memset (relocs , 0 , relocs_size );
403
-
404
385
/* find the flag main_extable_sort_needed */
405
386
for (sym = (void * )ehdr + _r (& symtab_sec -> sh_offset );
406
387
sym < sym + _r (& symtab_sec -> sh_size ) / sizeof (Elf_Sym );
0 commit comments