* commit '83d6a49403b81fb71372994273ae65e711038d0b': Refactoring: use generic reloc constants
This commit is contained in:
		@@ -1320,33 +1320,25 @@ int soinfo::relocate(ElfW(Rela)* rela, unsigned count, const soinfo_list_t& glob
 | 
			
		||||
         */
 | 
			
		||||
 | 
			
		||||
        switch (type) {
 | 
			
		||||
          case R_GENERIC_JUMP_SLOT:
 | 
			
		||||
          case R_GENERIC_GLOB_DAT:
 | 
			
		||||
          case R_GENERIC_RELATIVE:
 | 
			
		||||
          case R_GENERIC_IRELATIVE:
 | 
			
		||||
#if defined(__aarch64__)
 | 
			
		||||
          case R_AARCH64_JUMP_SLOT:
 | 
			
		||||
          case R_AARCH64_GLOB_DAT:
 | 
			
		||||
          case R_AARCH64_ABS64:
 | 
			
		||||
          case R_AARCH64_ABS32:
 | 
			
		||||
          case R_AARCH64_ABS16:
 | 
			
		||||
          case R_AARCH64_RELATIVE:
 | 
			
		||||
          case R_AARCH64_IRELATIVE:
 | 
			
		||||
#elif defined(__x86_64__)
 | 
			
		||||
          case R_X86_64_32:
 | 
			
		||||
          case R_X86_64_64:
 | 
			
		||||
          case R_X86_64_PC32:
 | 
			
		||||
#endif
 | 
			
		||||
            /*
 | 
			
		||||
             * The sym_addr was initialized to be zero above, or the relocation
 | 
			
		||||
             * code below does not care about value of sym_addr.
 | 
			
		||||
             * No need to do anything.
 | 
			
		||||
             */
 | 
			
		||||
            break;
 | 
			
		||||
#elif defined(__x86_64__)
 | 
			
		||||
          case R_X86_64_JUMP_SLOT:
 | 
			
		||||
          case R_X86_64_GLOB_DAT:
 | 
			
		||||
          case R_X86_64_32:
 | 
			
		||||
          case R_X86_64_64:
 | 
			
		||||
          case R_X86_64_RELATIVE:
 | 
			
		||||
          case R_X86_64_IRELATIVE:
 | 
			
		||||
            // No need to do anything.
 | 
			
		||||
            break;
 | 
			
		||||
          case R_X86_64_PC32:
 | 
			
		||||
            sym_addr = reloc;
 | 
			
		||||
            break;
 | 
			
		||||
#endif
 | 
			
		||||
          default:
 | 
			
		||||
            DL_ERR("unknown weak reloc type %d @ %p (%zu)", type, rela, idx);
 | 
			
		||||
            return -1;
 | 
			
		||||
@@ -1513,7 +1505,7 @@ int soinfo::relocate(ElfW(Rela)* rela, unsigned count, const soinfo_list_t& glob
 | 
			
		||||
        TRACE_TYPE(RELO, "RELO R_X86_64_PC32 %08zx <- +%08zx (%08zx - %08zx) %s",
 | 
			
		||||
                   static_cast<size_t>(reloc), static_cast<size_t>(sym_addr - reloc),
 | 
			
		||||
                   static_cast<size_t>(sym_addr), static_cast<size_t>(reloc), sym_name);
 | 
			
		||||
        *reinterpret_cast<ElfW(Addr)*>(reloc) = sym_addr + rela->r_addend - reloc;
 | 
			
		||||
        *reinterpret_cast<ElfW(Addr)*>(reloc) = (sym_addr == 0 ? 0 : sym_addr - reloc) + rela->r_addend;
 | 
			
		||||
        break;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user