Skip to content

Commit 06ab70d

Browse files
committed
Factor out pcrelOffset call
1 parent 245c582 commit 06ab70d

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

lld/MachO/Arch/X86_64.cpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,17 +82,23 @@ int64_t X86_64::getEmbeddedAddend(MemoryBufferRef mb, uint64_t offset,
8282
relocation_info rel) const {
8383
auto *buf = reinterpret_cast<const uint8_t *>(mb.getBufferStart());
8484
const uint8_t *loc = buf + offset + rel.r_address;
85+
int64_t addend;
8586

8687
switch (rel.r_length) {
8788
case 0:
88-
return *loc + pcrelOffset(rel.r_type);
89+
addend = *loc;
90+
break;
8991
case 2:
90-
return static_cast<int32_t>(read32le(loc)) + pcrelOffset(rel.r_type);
92+
addend = static_cast<int32_t>(read32le(loc));
93+
break;
9194
case 3:
92-
return read64le(loc) + pcrelOffset(rel.r_type);
95+
addend = read64le(loc);
96+
break;
9397
default:
9498
llvm_unreachable("invalid r_length");
9599
}
100+
101+
return addend + pcrelOffset(rel.r_type);
96102
}
97103

98104
void X86_64::relocateOne(uint8_t *loc, const Reloc &r, uint64_t value,

0 commit comments

Comments
 (0)