summaryrefslogtreecommitdiff
path: root/lib/MC/MachObjectWriter.cpp
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2011-08-12 01:51:29 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2011-08-12 01:51:29 +0000
commit0d46ccfc5c2f5d0894e340907f6e58067cce5b03 (patch)
treeb1bf201e0d02b5e37328cb6a376ed9be61806177 /lib/MC/MachObjectWriter.cpp
parentb43b09eef54ebb99079c6541f1b14ae1a2ef7017 (diff)
downloadllvm-0d46ccfc5c2f5d0894e340907f6e58067cce5b03.tar.gz
llvm-0d46ccfc5c2f5d0894e340907f6e58067cce5b03.tar.bz2
llvm-0d46ccfc5c2f5d0894e340907f6e58067cce5b03.tar.xz
MachOWriter: Don't crash on fixups with arithmetic, emit a relocation instead. This matches what as does.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137414 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/MC/MachObjectWriter.cpp')
-rw-r--r--lib/MC/MachObjectWriter.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/MC/MachObjectWriter.cpp b/lib/MC/MachObjectWriter.cpp
index 6f64bdf40b..7011916770 100644
--- a/lib/MC/MachObjectWriter.cpp
+++ b/lib/MC/MachObjectWriter.cpp
@@ -595,9 +595,13 @@ IsSymbolRefDifferenceFullyResolvedImpl(const MCAssembler &Asm,
return false;
}
- const MCFragment &FA = *Asm.getSymbolData(SA).getFragment();
+ const MCFragment *FA = Asm.getSymbolData(SA).getFragment();
- A_Base = FA.getAtom();
+ // Bail if the symbol has no fragment.
+ if (!FA)
+ return false;
+
+ A_Base = FA->getAtom();
if (!A_Base)
return false;