diff options
| author | Kevin Enderby <enderby@apple.com> | 2014-04-22 17:27:29 +0000 |
|---|---|---|
| committer | Kevin Enderby <enderby@apple.com> | 2014-04-22 17:27:29 +0000 |
| commit | 96918bc40625f47f99316499d04ebab1f90b09c0 (patch) | |
| tree | 8827600bbd5ed0d4756a6c4ca8de84e4d47429fb /llvm/lib/Target/ARM64/MCTargetDesc/ARM64ELFStreamer.cpp | |
| parent | 5f1a0010718216f8ffe7ac93e752e6af129335ef (diff) | |
| download | bcm5719-llvm-96918bc40625f47f99316499d04ebab1f90b09c0.tar.gz bcm5719-llvm-96918bc40625f47f99316499d04ebab1f90b09c0.zip | |
Fix the assembler to print a better relocatable expression error
diagnostic that includes location information.
Currently if one has this assembly:
.quad (0x1234 + (4 * SOME_VALUE))
where SOME_VALUE is undefined ones gets the less than
useful error message with no location information:
% clang -c x.s
clang -cc1as: fatal error: error in backend: expected relocatable expression
With this fix one now gets a more useful error message
with location information:
% clang -c x.s
x.s:5:8: error: expected relocatable expression
.quad (0x1234 + (4 * SOME_VALUE))
^
To do this I plumbed the SMLoc through the MCObjectStreamer
EmitValue() and EmitValueImpl() interfaces so it could be used
when creating the MCFixup.
rdar://12391022
llvm-svn: 206906
Diffstat (limited to 'llvm/lib/Target/ARM64/MCTargetDesc/ARM64ELFStreamer.cpp')
| -rw-r--r-- | llvm/lib/Target/ARM64/MCTargetDesc/ARM64ELFStreamer.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/Target/ARM64/MCTargetDesc/ARM64ELFStreamer.cpp b/llvm/lib/Target/ARM64/MCTargetDesc/ARM64ELFStreamer.cpp index 97a34938af1..9af21d8cee8 100644 --- a/llvm/lib/Target/ARM64/MCTargetDesc/ARM64ELFStreamer.cpp +++ b/llvm/lib/Target/ARM64/MCTargetDesc/ARM64ELFStreamer.cpp @@ -92,7 +92,8 @@ public: /// This is one of the functions used to emit data into an ELF section, so the /// ARM64 streamer overrides it to add the appropriate mapping symbol ($d) /// if necessary. - virtual void EmitValueImpl(const MCExpr *Value, unsigned Size) { + virtual void EmitValueImpl(const MCExpr *Value, unsigned Size, + const SMLoc &Loc) { EmitDataMappingSymbol(); MCELFStreamer::EmitValueImpl(Value, Size); } |

