[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