From e1a12cf3eeb1b87b01f6e9873f53cd008c7b50b0 Mon Sep 17 00:00:00 2001 From: Kevin Enderby Date: Tue, 31 Jan 2012 23:02:57 +0000 Subject: Fixed a crash in llvm-mc for Mach-O when a symbol difference expression uses a symbol from an assignment. In this case the symbol did not have a fragment so MCObjectWriter::IsSymbolRefDifferenceFullyResolved() should not have been calling IsSymbolRefDifferenceFullyResolvedImpl() with a NULL fragment and should just have returned false in that case. llvm-svn: 149442 --- llvm/lib/MC/MCObjectWriter.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'llvm/lib/MC') diff --git a/llvm/lib/MC/MCObjectWriter.cpp b/llvm/lib/MC/MCObjectWriter.cpp index 18887397ab6..030f24793c5 100644 --- a/llvm/lib/MC/MCObjectWriter.cpp +++ b/llvm/lib/MC/MCObjectWriter.cpp @@ -68,6 +68,8 @@ MCObjectWriter::IsSymbolRefDifferenceFullyResolved(const MCAssembler &Asm, const MCSymbolData &DataA = Asm.getSymbolData(SA); const MCSymbolData &DataB = Asm.getSymbolData(SB); + if(!DataA.getFragment() || !DataB.getFragment()) + return false; return IsSymbolRefDifferenceFullyResolvedImpl(Asm, DataA, *DataB.getFragment(), -- cgit v1.2.3