mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
Recommit r329716 "Add missing nullptr check before getSection() to AArch64MachObjectWriter::recordRelocation"
This commit fixes the bot failures that were coming up before with r329716. The fix was to move the check for "isInSection()" inside of the if condition and emit the error there instead of waiting to get past the unreachable statement. This should work in debug and release builds now. llvm-svn: 329746
This commit is contained in:
parent
22d16b8ea1
commit
9222709676
@ -306,6 +306,15 @@ void AArch64MachObjectWriter::recordRelocation(
|
||||
bool CanUseLocalRelocation =
|
||||
canUseLocalRelocation(Section, *Symbol, Log2Size);
|
||||
if (Symbol->isTemporary() && (Value || !CanUseLocalRelocation)) {
|
||||
// Make sure that the symbol is actually in a section here. If it isn't,
|
||||
// emit an error and exit.
|
||||
if (!Symbol->isInSection()) {
|
||||
Asm.getContext().reportError(
|
||||
Fixup.getLoc(),
|
||||
"unsupported relocation of local symbol '" + Symbol->getName() +
|
||||
"'. Must have non-local symbol earlier in section.");
|
||||
return;
|
||||
}
|
||||
const MCSection &Sec = Symbol->getSection();
|
||||
if (!Asm.getContext().getAsmInfo()->isSectionAtomizableBySymbols(Sec))
|
||||
Symbol->setUsedInReloc();
|
||||
|
10
test/MC/AArch64/arm64-no-section.ll
Normal file
10
test/MC/AArch64/arm64-no-section.ll
Normal file
@ -0,0 +1,10 @@
|
||||
; RUN: not llc -mtriple=aarch64-darwin-- -filetype=obj %s -o /dev/null 2>&1 >/dev/null | FileCheck %s
|
||||
; CHECK: error: unsupported relocation of local symbol 'L_foo_end'.
|
||||
; CHECK-SAME: Must have non-local symbol earlier in section.
|
||||
|
||||
; Make sure that we emit an error when we try to reference something that
|
||||
; doesn't belong to a section.
|
||||
define void @foo() local_unnamed_addr {
|
||||
call void asm sideeffect "b L_foo_end\0A", ""()
|
||||
ret void
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user