summaryrefslogtreecommitdiffstats
path: root/llvm/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
commit91ea511436232c3b240d5f0a67a4639d7149dfdc (patch)
tree49c14adfde93f1ee09611a136d472d7529d7b527 /llvm/lib/MC/MachObjectWriter.cpp
parent69c158f5879007304a7bb69de7edbb6f36ebf8a7 (diff)
downloadbcm5719-llvm-91ea511436232c3b240d5f0a67a4639d7149dfdc.tar.gz
bcm5719-llvm-91ea511436232c3b240d5f0a67a4639d7149dfdc.zip
MachOWriter: Don't crash on fixups with arithmetic, emit a relocation instead. This matches what as does.
llvm-svn: 137414
Diffstat (limited to 'llvm/lib/MC/MachObjectWriter.cpp')
-rw-r--r--llvm/lib/MC/MachObjectWriter.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/lib/MC/MachObjectWriter.cpp b/llvm/lib/MC/MachObjectWriter.cpp
index 6f64bdf40be..7011916770f 100644
--- a/llvm/lib/MC/MachObjectWriter.cpp
+++ b/llvm/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;
OpenPOWER on IntegriCloud