• Home
  • Raw
  • Download

Lines Matching refs:rel

2839 static ElfW(Addr) get_addend(ElfW(Rel)* rel, ElfW(Addr) reloc_addr) {
2840 if (ELFW(R_TYPE)(rel->r_info) == R_GENERIC_RELATIVE ||
2841 ELFW(R_TYPE)(rel->r_info) == R_GENERIC_IRELATIVE ||
2842 ELFW(R_TYPE)(rel->r_info) == R_GENERIC_TLS_DTPREL ||
2843 ELFW(R_TYPE)(rel->r_info) == R_GENERIC_TLS_TPREL) {
2869 const auto rel = rel_iterator.next();
2870 if (rel == nullptr) {
2874 ElfW(Word) type = ELFW(R_TYPE)(rel->r_info);
2875 ElfW(Word) sym = ELFW(R_SYM)(rel->r_info);
2877 ElfW(Addr) reloc = static_cast<ElfW(Addr)>(rel->r_offset + load_bias);
2880 ElfW(Addr) addend = get_addend(rel, reloc);
2906 "sym type %d, rel type %u (idx %zu of \"%s\")",
2978 DL_ERR("unknown weak reloc type %d @ %p (%zu)", type, rel, idx);
3033 MARK(rel->r_offset);
3042 MARK(rel->r_offset);
3050 MARK(rel->r_offset);
3058 MARK(rel->r_offset);
3091 MARK(rel->r_offset);
3121 MARK(rel->r_offset);
3137 MARK(rel->r_offset);
3150 MARK(rel->r_offset);
3191 MARK(rel->r_offset);
3198 MARK(rel->r_offset);
3216 MARK(rel->r_offset);
3234 MARK(rel->r_offset);
3236 reloc, sym_addr + addend, rel->r_offset, sym_name);
3237 *reinterpret_cast<ElfW(Addr)*>(reloc) = sym_addr + addend - rel->r_offset;
3241 MARK(rel->r_offset);
3243 reloc, sym_addr + addend, rel->r_offset, sym_name);
3247 if ((min_value <= (sym_addr + addend - rel->r_offset)) &&
3248 ((sym_addr + addend - rel->r_offset) <= max_value)) {
3249 *reinterpret_cast<ElfW(Addr)*>(reloc) = sym_addr + addend - rel->r_offset;
3252 sym_addr + addend - rel->r_offset, min_value, max_value);
3259 MARK(rel->r_offset);
3261 reloc, sym_addr + addend, rel->r_offset, sym_name);
3265 if ((min_value <= (sym_addr + addend - rel->r_offset)) &&
3266 ((sym_addr + addend - rel->r_offset) <= max_value)) {
3267 *reinterpret_cast<ElfW(Addr)*>(reloc) = sym_addr + addend - rel->r_offset;
3270 sym_addr + addend - rel->r_offset, min_value, max_value);
3291 MARK(rel->r_offset);
3298 MARK(rel->r_offset);
3305 MARK(rel->r_offset);
3314 MARK(rel->r_offset);
3320 MARK(rel->r_offset);
3322 reloc, sym_addr, rel->r_offset, sym_name);
3323 *reinterpret_cast<ElfW(Addr)*>(reloc) += sym_addr - rel->r_offset;
3340 MARK(rel->r_offset);
3346 MARK(rel->r_offset);
3353 DL_ERR("unknown reloc type %d @ %p (%zu)", type, rel, idx);
3970 DEBUG("[ relocating %s rel ]", get_realpath());
3977 DEBUG("[ relocating %s plt rel ]", get_realpath());