llvm-project/llvm/lib/MC
Reid Kleckner 98bbd07cc3 [MC] Enable .file support on COFF and diagnose it on unsupported targets
Summary:
The "single parameter" .file directive appears to be an ELF-only feature
that is intended to insert the main source filename into the string
table table.

I noticed that if you assemble an ELF .s file for COFF, typically it
will assert right away on a .file directive near the top of the file. My
first change was to make this emit a proper error in the asm parser so
that we don't assert so easily.

However, COFF actually does have some support for this directive, and if
you emit an object file, llvm-mc does not assert. When emitting a COFF
object, MC will take those file names and create "debug" symbol table
entries for them. I'm not familiar with these kinds of symbol table
entries, and I'm not aware of any users of them, but @compnerd added
them a while ago. They don't introduce absolute paths, and most main
source file paths are short enough that this extra entry shouldn't cause
any problems, so I enabled the flag in MCAsmInfoCOFF that indicates that
it's supported.

This has the side effect of adding an extra debug symbol to every object
produced by clang, which is a pretty big functional change. My question
is, should we keep the functionality or remove it in the name of symbol
table minimalism?

Reviewers: mstorsjo, compnerd

Subscribers: hiraditya, compnerd, llvm-commits

Differential Revision: https://reviews.llvm.org/D55900

llvm-svn: 349976
2018-12-21 23:35:48 +00:00
..
MCDisassembler Remove trailing space 2018-07-30 19:41:25 +00:00
MCParser [MC] Enable .file support on COFF and diagnose it on unsupported targets 2018-12-21 23:35:48 +00:00
CMakeLists.txt Revert BTF commit series. 2018-10-12 19:41:05 +00:00
ConstantPools.cpp [MC] - ConstantPools.cpp: Style consistency, remove redundant braces. NFC. 2018-09-03 03:48:39 +00:00
ELFObjectWriter.cpp Recommit r348243 - "[llvm-mc] - Do not crash when referencing undefined debug sections." 2018-12-05 10:43:58 +00:00
LLVMBuild.txt [WebAssembly] Move toString helpers to BinaryFormat 2018-05-14 22:42:07 +00:00
MCAsmBackend.cpp [RISCV] Add symbol diff relocation support for RISC-V 2018-05-23 12:36:18 +00:00
MCAsmInfo.cpp [DEBUGINFO] Add option that allows to disable emission of flags in .loc directives. 2018-04-03 17:28:55 +00:00
MCAsmInfoCOFF.cpp [MC] Enable .file support on COFF and diagnose it on unsupported targets 2018-12-21 23:35:48 +00:00
MCAsmInfoDarwin.cpp
MCAsmInfoELF.cpp
MCAsmInfoWasm.cpp [WebAssembly] clang-format (NFC) 2018-09-05 01:27:38 +00:00
MCAsmMacro.cpp [Asm] Fix another layering violation in assmebly macro dumping 2018-03-06 16:51:17 +00:00
MCAsmStreamer.cpp [Dwarf/AArch64] Return address signing B key dwarf support 2018-12-21 10:45:08 +00:00
MCAssembler.cpp [macho] save the SDK version stored in module metadata into the version min and 2018-12-14 01:14:10 +00:00
MCCodeEmitter.cpp
MCCodePadder.cpp
MCCodeView.cpp [codeview] Flush labels before S_DEFRANGE* fragments 2018-12-17 21:49:35 +00:00
MCContext.cpp Revert BTF commit series. 2018-10-12 19:41:05 +00:00
MCDwarf.cpp [Dwarf/AArch64] Return address signing B key dwarf support 2018-12-21 10:45:08 +00:00
MCELFObjectTargetWriter.cpp The initial .text section generated in object files was missing the 2018-09-06 22:09:31 +00:00
MCELFStreamer.cpp [MC] Error on a .zerofill directive in a non-virtual section 2018-07-02 17:29:43 +00:00
MCExpr.cpp [WebAssembly] Add support for the event section 2018-11-14 02:46:21 +00:00
MCFragment.cpp [MC] - Fix build bot. 2018-12-05 11:06:29 +00:00
MCInst.cpp [ARM][Asm] Debug trace for the processInstruction loop 2018-12-03 10:21:28 +00:00
MCInstPrinter.cpp
MCInstrAnalysis.cpp [TableGen][SubtargetEmitter] Add the ability for processor models to describe dependency breaking instructions. 2018-09-19 15:57:45 +00:00
MCInstrDesc.cpp [ARM][MC] Move information about variadic register defs into tablegen 2018-12-03 10:32:42 +00:00
MCLabel.cpp IWYU for llvm-config.h in llvm, additions. 2018-04-30 14:59:11 +00:00
MCLinkerOptimizationHint.cpp MC: Change object writers to use endian::Writer. NFCI. 2018-05-21 18:17:42 +00:00
MCMachOStreamer.cpp [macho] save the SDK version stored in module metadata into the version min and 2018-12-14 01:14:10 +00:00
MCMachObjectTargetWriter.cpp
MCNullStreamer.cpp [MC] Implement EmitRawText in MCNullStreamer 2018-11-01 15:41:11 +00:00
MCObjectFileInfo.cpp [AArch64] [MinGW] Allow enabling SEH exceptions 2018-12-18 08:32:37 +00:00
MCObjectStreamer.cpp [codeview] Flush labels before S_DEFRANGE* fragments 2018-12-17 21:49:35 +00:00
MCObjectWriter.cpp
MCRegisterInfo.cpp [MC] Improve error message when a codeview register is unknown 2018-08-17 21:35:14 +00:00
MCSchedule.cpp [CodeGen] assume max/default throughput for unspecified instructions 2018-06-05 23:34:45 +00:00
MCSection.cpp The initial .text section generated in object files was missing the 2018-09-06 22:09:31 +00:00
MCSectionCOFF.cpp [COFF] Fix assembly output of comdat sections without an attached symbol 2018-07-23 22:15:19 +00:00
MCSectionELF.cpp [Hexagon] Handle Hexagon's SHF_HEX_GPREL section flag 2018-11-09 14:17:27 +00:00
MCSectionMachO.cpp
MCSectionWasm.cpp Remove redundant includes from lib/MC. 2017-12-13 21:30:54 +00:00
MCStreamer.cpp [Dwarf/AArch64] Return address signing B key dwarf support 2018-12-21 10:45:08 +00:00
MCSubtargetInfo.cpp [MC] fix documentation comments; NFC 2018-03-22 15:23:21 +00:00
MCSymbol.cpp IWYU for llvm-config.h in llvm, additions. 2018-04-30 14:59:11 +00:00
MCSymbolELF.cpp Remove redundant includes from lib/MC. 2017-12-13 21:30:54 +00:00
MCTargetOptions.cpp
MCValue.cpp IWYU for llvm-config.h in llvm, additions. 2018-04-30 14:59:11 +00:00
MCWasmObjectTargetWriter.cpp [WebAssembly] Remove unused headers in MCWasmObjectWriter 2018-05-16 22:13:18 +00:00
MCWasmStreamer.cpp [WebAssembly] Parsing missing directives to produce valid .o 2018-11-02 22:04:33 +00:00
MCWin64EH.cpp [AArch64] Avoid crashing on .seh directives in assembly 2018-12-18 22:10:17 +00:00
MCWinCOFFStreamer.cpp [MC] Add support for the .rva assembler directive for COFF targets 2018-07-26 20:11:26 +00:00
MCWinEH.cpp
MachObjectWriter.cpp [macho] save the SDK version stored in module metadata into the version min and 2018-12-14 01:14:10 +00:00
StringTableBuilder.cpp [DWARFv5] Emit .debug_line_str (in a non-DWO file). 2018-02-06 20:29:21 +00:00
SubtargetFeature.cpp IWYU for llvm-config.h in llvm, additions. 2018-04-30 14:59:11 +00:00
WasmObjectWriter.cpp [WebAssembly] Remove unused function return types (NFC) 2018-11-20 00:38:10 +00:00
WinCOFFObjectWriter.cpp llvm::sort(C.begin(), C.end(), ...) -> llvm::sort(C, ...) 2018-09-27 02:13:45 +00:00