[llvm-commits] [llvm] r97983 - /llvm/trunk/lib/MC/MCAssembler.cpp
Chris Lattner
clattner at apple.com
Mon Mar 8 13:24:55 PST 2010
On Mar 8, 2010, at 1:10 PM, Daniel Dunbar wrote:
> Author: ddunbar
> Date: Mon Mar 8 15:10:39 2010
> New Revision: 97983
>
> URL: http://llvm.org/viewvc/llvm-project?rev=97983&view=rev
> Log:
> MC/Mach-O: Error out instead of crashing on invalid scattered relocation expressions.
Is this something that should be producing a diagnostic? If not, please just use assert.
-Chris
>
> Modified:
> llvm/trunk/lib/MC/MCAssembler.cpp
>
> Modified: llvm/trunk/lib/MC/MCAssembler.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCAssembler.cpp?rev=97983&r1=97982&r2=97983&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/MCAssembler.cpp (original)
> +++ llvm/trunk/lib/MC/MCAssembler.cpp Mon Mar 8 15:10:39 2010
> @@ -447,13 +447,22 @@
> // See <reloc.h>.
> const MCSymbol *A = Target.getSymA();
> MCSymbolData *SD = SymbolMap.lookup(A);
> +
> + if (!SD->getFragment())
> + llvm_report_error("symbol '" + A->getName() +
> + "' can not be undefined in a subtraction expression");
> +
> uint32_t Value = SD->getFragment()->getAddress() + SD->getOffset();
> uint32_t Value2 = 0;
>
> if (const MCSymbol *B = Target.getSymB()) {
> - Type = RIT_LocalDifference;
> -
> MCSymbolData *SD = SymbolMap.lookup(B);
> +
> + if (!SD->getFragment())
> + llvm_report_error("symbol '" + B->getName() +
> + "' can not be undefined in a subtraction expression");
> +
> + Type = RIT_LocalDifference;
> Value2 = SD->getFragment()->getAddress() + SD->getOffset();
> }
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list