[email protected] wrote:
> Hi,
> 
> removing check for the relocation type check in the resolver,
> from all archs, as decided in the previous email.
> I tested it for i386, so no real test really.
> 
> regards,
> jirka
> 
> 
> Signed-off-by: Jiri Olsa <[email protected]>
> 
> Index: ldso/ldso/arm/elfinterp.c
> ===================================================================
> --- ldso/ldso/arm/elfinterp.c (revision 25081)
> +++ ldso/ldso/arm/elfinterp.c (working copy)
> @@ -44,7 +44,6 @@
>  
>  unsigned long _dl_linux_resolver(struct elf_resolve *tpnt, int reloc_entry)
>  {
> -     int reloc_type;
>       ELF_RELOC *this_reloc;
>       char *strtab;
>       char *symname;
> @@ -58,19 +57,12 @@
>       rel_addr = (ELF_RELOC *) tpnt->dynamic_info[DT_JMPREL];
>  
>       this_reloc = rel_addr + reloc_entry;
> -     reloc_type = ELF32_R_TYPE(this_reloc->r_info);
>       symtab_index = ELF32_R_SYM(this_reloc->r_info);
>  
>       symtab = (Elf32_Sym *) tpnt->dynamic_info[DT_SYMTAB];
>       strtab = (char *) tpnt->dynamic_info[DT_STRTAB];
>       symname = strtab + symtab[symtab_index].st_name;
>  
> -     if (unlikely(reloc_type != R_ARM_JUMP_SLOT)) {
> -             _dl_dprintf(2, "%s: Incorrect relocation type in jump 
> relocations\n",
> -                     _dl_progname);
> -             _dl_exit(1);
> -     }
> -
>       /* Address of jump instruction to fix up */
>       instr_addr = ((unsigned long) this_reloc->r_offset +
>               (unsigned long) tpnt->loadaddr);
> Index: ldso/ldso/powerpc/elfinterp.c
> ===================================================================
> --- ldso/ldso/powerpc/elfinterp.c     (revision 25081)
> +++ ldso/ldso/powerpc/elfinterp.c     (working copy)
> @@ -127,13 +127,6 @@
>       debug_sym(symtab,strtab,symtab_index);
>       debug_reloc(symtab,strtab,this_reloc);
>  
> -#if defined (__SUPPORT_LD_DEBUG__)
> -     if (unlikely(ELF32_R_TYPE(this_reloc->r_info) != R_PPC_JMP_SLOT)) {
> -             _dl_dprintf(2, "%s: Incorrect relocation type in jump 
> relocation\n", _dl_progname);
> -             _dl_exit(1);
> -     }
> -#endif
> -
>       /* Address of dump instruction to fix up */
>       reloc_addr = (Elf32_Addr *) (tpnt->loadaddr + this_reloc->r_offset);
>  
> Index: ldso/ldso/sh64/elfinterp.c
> ===================================================================
> --- ldso/ldso/sh64/elfinterp.c        (revision 25081)
> +++ ldso/ldso/sh64/elfinterp.c        (working copy)
> @@ -47,7 +47,6 @@
>  
>  unsigned long _dl_linux_resolver(struct elf_resolve *tpnt, int reloc_entry)
>  {
> -     int reloc_type;
>       ELF_RELOC *this_reloc;
>       char *strtab;
>       Elf32_Sym *symtab;
> @@ -61,19 +60,12 @@
>       rel_addr = (char *)tpnt->dynamic_info[DT_JMPREL];
>  
>       this_reloc = (ELF_RELOC *)(intptr_t)(rel_addr + reloc_entry);
> -     reloc_type = ELF32_R_TYPE(this_reloc->r_info);
>       symtab_index = ELF32_R_SYM(this_reloc->r_info);
>  
>       symtab = (Elf32_Sym *)(intptr_t)tpnt->dynamic_info[DT_SYMTAB];
>       strtab = (char *)tpnt->dynamic_info[DT_STRTAB];
>       symname = strtab + symtab[symtab_index].st_name;
>  
> -     if (unlikely(reloc_type != R_SH_JMP_SLOT)) {
> -             _dl_dprintf(2, "%s: Incorrect relocation type in jump reloc\n",
> -                         _dl_progname);
> -             _dl_exit(1);
> -     }
> -
>       /* Address of jump instruction to fix up */
>       instr_addr = ((unsigned long)this_reloc->r_offset +
>                       (unsigned long)tpnt->loadaddr);
> Index: ldso/ldso/m68k/elfinterp.c
> ===================================================================
> --- ldso/ldso/m68k/elfinterp.c        (revision 25081)
> +++ ldso/ldso/m68k/elfinterp.c        (working copy)
> @@ -47,7 +47,6 @@
>  unsigned long
>  _dl_linux_resolver(struct elf_resolve *tpnt, int reloc_entry)
>  {
> -     int reloc_type;
>       ELF_RELOC *this_reloc;
>       char *strtab;
>       ElfW(Sym) *symtab;
> @@ -60,19 +59,12 @@
>  
>       rel_addr = (char *)tpnt->dynamic_info[DT_JMPREL];
>       this_reloc = (ELF_RELOC *)(rel_addr + reloc_entry);
> -     reloc_type = ELF_R_TYPE(this_reloc->r_info);
>       symtab_index = ELF_R_SYM(this_reloc->r_info);
>  
>       symtab = (ElfW(Sym) *)tpnt->dynamic_info[DT_SYMTAB];
>       strtab = (char *)tpnt->dynamic_info[DT_STRTAB];
>       symname = strtab + symtab[symtab_index].st_name;
>  
> -     if (unlikely(reloc_type != R_68K_JMP_SLOT)) {
> -             _dl_dprintf(2, "%s: Incorrect relocation type in jump 
> relocations\n",
> -                         _dl_progname);
> -             _dl_exit(1);
> -     }
> -
>       /* Address of the jump instruction to fix up. */
>       instr_addr = (this_reloc->r_offset + tpnt->loadaddr);
>       got_addr = (char **)instr_addr;
> Index: ldso/ldso/i386/elfinterp.c
> ===================================================================
> --- ldso/ldso/i386/elfinterp.c        (revision 25081)
> +++ ldso/ldso/i386/elfinterp.c        (working copy)
> @@ -47,7 +47,6 @@
>  unsigned long
>  _dl_linux_resolver(struct elf_resolve *tpnt, int reloc_entry)
>  {
> -     int reloc_type;
>       ELF_RELOC *this_reloc;
>       char *strtab;
>       Elf32_Sym *symtab;
> @@ -60,7 +59,6 @@
>  
>       rel_addr = (char *)tpnt->dynamic_info[DT_JMPREL];
>       this_reloc = (ELF_RELOC *)(intptr_t)(rel_addr + reloc_entry);
> -     reloc_type = ELF32_R_TYPE(this_reloc->r_info);
>       symtab_index = ELF32_R_SYM(this_reloc->r_info);
>  
>       symtab = (Elf32_Sym *)(intptr_t)tpnt->dynamic_info[DT_SYMTAB];
> Index: ldso/ldso/frv/elfinterp.c
> ===================================================================
> --- ldso/ldso/frv/elfinterp.c (revision 25081)
> +++ ldso/ldso/frv/elfinterp.c (working copy)
> @@ -26,7 +26,6 @@
>  struct funcdesc_value volatile attribute_hidden *
>  _dl_linux_resolver (struct elf_resolve *tpnt, int reloc_entry)
>  {
> -     int reloc_type;
>       ELF_RELOC *this_reloc;
>       char *strtab;
>       Elf32_Sym *symtab;
> @@ -42,7 +41,6 @@
>                                 tpnt->loadaddr);
>  
>       this_reloc = (ELF_RELOC *)(intptr_t)(rel_addr + reloc_entry);
> -     reloc_type = ELF32_R_TYPE(this_reloc->r_info);
>       symtab_index = ELF32_R_SYM(this_reloc->r_info);
>  
>       symtab = (Elf32_Sym *)(intptr_t)
> @@ -51,12 +49,6 @@
>       strtab = DL_RELOC_ADDR (tpnt->dynamic_info[DT_STRTAB], tpnt->loadaddr);
>       symname= strtab + symtab[symtab_index].st_name;
>  
> -     if (reloc_type != R_FRV_FUNCDESC_VALUE) {
> -             _dl_dprintf(2, "%s: Incorrect relocation type in jump 
> relocations\n",
> -                             _dl_progname);
> -             _dl_exit(1);
> -     }
> -
>       /* Address of GOT entry fix up */
>       got_entry = (struct funcdesc_value *)
>         DL_RELOC_ADDR (this_reloc->r_offset, tpnt->loadaddr);
> Index: ldso/ldso/x86_64/elfinterp.c
> ===================================================================
> --- ldso/ldso/x86_64/elfinterp.c      (revision 25081)
> +++ ldso/ldso/x86_64/elfinterp.c      (working copy)
> @@ -47,7 +47,6 @@
>  unsigned long
>  _dl_linux_resolver(struct elf_resolve *tpnt, int reloc_entry)
>  {
> -     int reloc_type;
>       ELF_RELOC *this_reloc;
>       char *strtab;
>       ElfW(Sym) *symtab;
> @@ -60,19 +59,12 @@
>  
>       rel_addr = (char *)tpnt->dynamic_info[DT_JMPREL];
>       this_reloc = (ELF_RELOC *)(rel_addr + reloc_entry);
> -     reloc_type = ELF_R_TYPE(this_reloc->r_info);
>       symtab_index = ELF_R_SYM(this_reloc->r_info);
>  
>       symtab = (ElfW(Sym) *)tpnt->dynamic_info[DT_SYMTAB];
>       strtab = (char *)tpnt->dynamic_info[DT_STRTAB];
>       symname = strtab + symtab[symtab_index].st_name;
>  
> -     if (unlikely(reloc_type != R_X86_64_JUMP_SLOT)) {
> -             _dl_dprintf(2, "%s: Incorrect relocation type in jump 
> relocations\n",
> -                         _dl_progname);
> -             _dl_exit(1);
> -     }
> -
>       /* Address of the jump instruction to fix up. */
>       instr_addr = (this_reloc->r_offset + tpnt->loadaddr);
>       got_addr = (char **)instr_addr;
> Index: ldso/ldso/cris/elfinterp.c
> ===================================================================
> --- ldso/ldso/cris/elfinterp.c        (revision 25081)
> +++ ldso/ldso/cris/elfinterp.c        (working copy)
> @@ -41,7 +41,6 @@
>  unsigned long
>  _dl_linux_resolver(struct elf_resolve *tpnt, int reloc_entry)
>  {
> -     int reloc_type;
>       int symtab_index;
>       char *strtab;
>       char *symname;
> @@ -55,19 +54,12 @@
>       rel_addr = (char *)tpnt->dynamic_info[DT_JMPREL];
>  
>       this_reloc = (ELF_RELOC *)(intptr_t)(rel_addr + reloc_entry);
> -     reloc_type = ELF32_R_TYPE(this_reloc->r_info);
>       symtab_index = ELF32_R_SYM(this_reloc->r_info);
>  
>       symtab = (Elf32_Sym *)(intptr_t)tpnt->dynamic_info[DT_SYMTAB];
>       strtab = (char *)tpnt->dynamic_info[DT_STRTAB];
>       symname = strtab + symtab[symtab_index].st_name;
>  
> -     if (unlikely(reloc_type != R_CRIS_JUMP_SLOT)) {
> -             _dl_dprintf(2, "%s: Incorrect relocation type in jump 
> relocations\n",
> -                         _dl_progname);
> -             _dl_exit(1);
> -     }
> -
>       /* Address of the jump instruction to fix up. */
>       instr_addr = ((unsigned long)this_reloc->r_offset +
>                     (unsigned long)tpnt->loadaddr);
> Index: ldso/ldso/xtensa/elfinterp.c
> ===================================================================
> --- ldso/ldso/xtensa/elfinterp.c      (revision 25081)
> +++ ldso/ldso/xtensa/elfinterp.c      (working copy)
> @@ -35,7 +35,6 @@
>  unsigned long
>  _dl_linux_resolver (struct elf_resolve *tpnt, int reloc_entry)
>  {
> -     int reloc_type;
>       ELF_RELOC *this_reloc;
>       char *strtab;
>       Elf32_Sym *symtab;
> @@ -47,19 +46,12 @@
>  
>       rel_addr = (char *) tpnt->dynamic_info[DT_JMPREL];
>       this_reloc = (ELF_RELOC *) (rel_addr + reloc_entry);
> -     reloc_type = ELF32_R_TYPE (this_reloc->r_info);
>       symtab_index = ELF32_R_SYM (this_reloc->r_info);
>  
>       symtab = (Elf32_Sym *) tpnt->dynamic_info[DT_SYMTAB];
>       strtab = (char *) tpnt->dynamic_info[DT_STRTAB];
>       symname = strtab + symtab[symtab_index].st_name;
>  
> -     if (unlikely (reloc_type != R_XTENSA_JMP_SLOT)) {
> -             _dl_dprintf (2, "%s: Incorrect relocation type in jump 
> relocations\n",
> -                                      _dl_progname);
> -             _dl_exit (1);
> -     }
> -
>       /* Address of the literal to fix up.  */
>       got_addr = (char **) (this_reloc->r_offset + tpnt->loadaddr);
>  
> Index: ldso/ldso/sparc/elfinterp.c
> ===================================================================
> --- ldso/ldso/sparc/elfinterp.c       (revision 25081)
> +++ ldso/ldso/sparc/elfinterp.c       (working copy)
> @@ -52,7 +52,6 @@
>  unsigned long
>  _dl_linux_resolver(struct elf_resolve *tpnt, int reloc_entry)
>  {
> -     int reloc_type;
>       ELF_RELOC *this_reloc;
>       char *strtab;
>       ElfW(Sym) *symtab;
> @@ -70,19 +69,12 @@
>       reloc_entry = (reloc_entry >> 10) - 0xc;
>  
>       this_reloc = (ELF_RELOC *)(rel_addr + reloc_entry);
> -     reloc_type = ELF_R_TYPE(this_reloc->r_info);
>       symtab_index = ELF_R_SYM(this_reloc->r_info);
>  
>       symtab = (ElfW(Sym) *)tpnt->dynamic_info[DT_SYMTAB];
>       strtab = (char *)tpnt->dynamic_info[DT_STRTAB];
>       symname = strtab + symtab[symtab_index].st_name;
>  
> -     if (unlikely(reloc_type != R_SPARC_JMP_SLOT)) {
> -             _dl_dprintf(2, "%s: Incorrect relocation type in jump 
> relocations\n",
> -                               _dl_progname);
> -             _dl_exit(1);
> -     }
> -
>       /* Address of the jump instruction to fix up. */
>       instr_addr = (this_reloc->r_offset + tpnt->loadaddr);
>       got_addr = (char **)instr_addr;
> Index: ldso/ldso/mips/elfinterp.c
> ===================================================================
> --- ldso/ldso/mips/elfinterp.c        (revision 25081)
> +++ ldso/ldso/mips/elfinterp.c        (working copy)
> @@ -87,7 +87,6 @@
>  unsigned long
>  __dl_runtime_pltresolve(struct elf_resolve *tpnt, int reloc_entry)
>  {
> -     int reloc_type;
>       ELF_RELOC *this_reloc;
>       char *strtab;
>       Elf32_Sym *symtab;
> @@ -100,7 +99,6 @@
>  
>       rel_addr = (char *)tpnt->dynamic_info[DT_JMPREL];
>       this_reloc = (ELF_RELOC *)(intptr_t)(rel_addr + reloc_entry);
> -     reloc_type = ELF32_R_TYPE(this_reloc->r_info);
>       symtab_index = ELF32_R_SYM(this_reloc->r_info);
>  
>       symtab = (Elf32_Sym *)(intptr_t)tpnt->dynamic_info[DT_SYMTAB];
> Index: ldso/ldso/sh/elfinterp.c
> ===================================================================
> --- ldso/ldso/sh/elfinterp.c  (revision 25081)
> +++ ldso/ldso/sh/elfinterp.c  (working copy)
> @@ -45,7 +45,6 @@
>  
>  unsigned long _dl_linux_resolver(struct elf_resolve *tpnt, int reloc_entry)
>  {
> -     int reloc_type;
>       ELF_RELOC *this_reloc;
>       char *strtab;
>       Elf32_Sym *symtab;
> @@ -59,19 +58,12 @@
>       rel_addr = (char *)tpnt->dynamic_info[DT_JMPREL];
>  
>       this_reloc = (ELF_RELOC *)(intptr_t)(rel_addr + reloc_entry);
> -     reloc_type = ELF32_R_TYPE(this_reloc->r_info);
>       symtab_index = ELF32_R_SYM(this_reloc->r_info);
>  
>       symtab = (Elf32_Sym *)(intptr_t) tpnt->dynamic_info[DT_SYMTAB];
>       strtab = (char *)tpnt->dynamic_info[DT_STRTAB];
>       symname = strtab + symtab[symtab_index].st_name;
>  
> -     if (unlikely(reloc_type != R_SH_JMP_SLOT)) {
> -             _dl_dprintf(2, "%s: Incorrect relocation type in jump 
> relocations\n",
> -                         _dl_progname);
> -             _dl_exit(1);
> -     }
> -
>       /* Address of jump instruction to fix up */
>       instr_addr = (unsigned long) (this_reloc->r_offset + tpnt->loadaddr);
>       got_addr = (char **) instr_addr;
> Index: ldso/ldso/bfin/elfinterp.c
> ===================================================================
> --- ldso/ldso/bfin/elfinterp.c        (revision 25081)
> +++ ldso/ldso/bfin/elfinterp.c        (working copy)
> @@ -40,7 +40,6 @@
>  struct funcdesc_value volatile *__attribute__((__visibility__("hidden")))
>  _dl_linux_resolver (struct elf_resolve *tpnt, int reloc_entry)
>  {
> -     int reloc_type;
>       ELF_RELOC *this_reloc;
>       char *strtab;
>       ElfW(Sym) *symtab;
> @@ -55,19 +54,12 @@
>       rel_addr = (char *)tpnt->dynamic_info[DT_JMPREL];
>  
>       this_reloc = (ELF_RELOC *)(intptr_t)(rel_addr + reloc_entry);
> -     reloc_type = ELF_R_TYPE(this_reloc->r_info);
>       symtab_index = ELF_R_SYM(this_reloc->r_info);
>  
>       symtab = (Elf32_Sym *) tpnt->dynamic_info[DT_SYMTAB];
>       strtab = (char *) tpnt->dynamic_info[DT_STRTAB];
>       symname= strtab + symtab[symtab_index].st_name;
>  
> -     if (reloc_type != R_BFIN_FUNCDESC_VALUE) {
> -             _dl_dprintf(2, "%s: Incorrect relocation type in jump 
> relocations\n",
> -                         _dl_progname);
> -             _dl_exit(1);
> -     }
> -
>       /* Address of GOT entry fix up */
>       got_entry = (struct funcdesc_value *) DL_RELOC_ADDR(tpnt->loadaddr, 
> this_reloc->r_offset);
>  
> Index: ldso/libdl/libdl.c
> ===================================================================
> --- ldso/libdl/libdl.c        (revision 25081)
> +++ ldso/libdl/libdl.c        (working copy)
> @@ -83,7 +83,7 @@
>  char *_dl_debug_detail    = NULL;
>  char *_dl_debug_nofixups  = NULL;
>  char *_dl_debug_bindings  = NULL;
> -int   _dl_debug_file      = NULL;
> +int   _dl_debug_file      = 0;
>  #endif
>  const char *_dl_progname       = "";        /* Program name */
>  void *(*_dl_malloc_function)(size_t);
> _______________________________________________
> uClibc mailing list
> [email protected]
> http://lists.busybox.net/mailman/listinfo/uclibc
> 
Applied in rev 25093, thanks.
Carmelo
_______________________________________________
uClibc mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/uclibc

Reply via email to