llvm-project/llvm/lib/MC
Reid Kleckner 31263731da [MC] Handle discardable COFF sections in assembly
Summary:
This fixes a dumpbin warning on objects produced by the MC assembler
when starting from text. All .debug$S sections are supposed to be marked
IMAGE_SCN_MEM_DISCARDABLE. The main, non-COMDAT .debug$S section had
this set, but any comdat ones were not being marked discardable because
there was no .section flag for it.

This change does two things:

- If the section name starts with .debug, implicitly mark the section as
  discardable. This means we do the same thing as gas on .s files with
  DWARF from GCC, which is important.

- Adds the 'D' flag to the .section directive on COFF to explicitly say
  a section is discardable. We only emit this flag if the section name
  does not start with .debug. This allows the user to explicitly tweak
  their section flags without worrying about magic section names.

The only thing you can't do in this scheme is to create a
non-discardable section with a name starting with ".debug", but
hopefully users don't need that.

Reviewers: majnemer, rafael

Subscribers: llvm-commits

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

llvm-svn: 281554
2016-09-14 22:41:50 +00:00
..
MCDisassembler Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes. 2016-08-23 17:14:32 +00:00
MCParser [MC] Handle discardable COFF sections in assembly 2016-09-14 22:41:50 +00:00
CMakeLists.txt Delete MCCodeGenInfo. 2016-06-30 18:25:11 +00:00
ConstantPools.cpp Apply clang-tidy's modernize-loop-convert to lib/MC. 2016-06-26 14:49:00 +00:00
ELFObjectWriter.cpp Delete some dead code. 2016-06-21 19:48:12 +00:00
LLVMBuild.txt
MCAsmBackend.cpp [mips][ias] Support .dtprel[d]word and .tprel[d]word directives 2016-08-22 16:18:42 +00:00
MCAsmInfo.cpp [MC] Delete use of *structors_used. 2016-08-08 03:30:01 +00:00
MCAsmInfoCOFF.cpp [MC] Use LShr for constant evaluation of ">>" on non-arm64 darwin. 2015-11-11 00:51:36 +00:00
MCAsmInfoDarwin.cpp [MC] Delete use of *structors_used. 2016-08-08 03:30:01 +00:00
MCAsmInfoELF.cpp [WebAssembly] Don't create a needless .note.GNU-stack section 2016-01-15 23:59:13 +00:00
MCAsmStreamer.cpp [codeview] Add new directives to record inlined call site line info 2016-09-07 16:15:31 +00:00
MCAssembler.cpp [MC] Don't crash when trying to emit a relocation against .bss. 2016-07-26 18:16:33 +00:00
MCCodeEmitter.cpp
MCCodeView.cpp [codeview] Add new directives to record inlined call site line info 2016-09-07 16:15:31 +00:00
MCContext.cpp [MC] Move .cv_loc management logic out of MCContext 2016-08-26 17:58:37 +00:00
MCDwarf.cpp Apply clang-tidy's modernize-loop-convert to lib/MC. 2016-06-26 14:49:00 +00:00
MCELFObjectTargetWriter.cpp Always sort by offset first. NFC. 2015-12-17 15:08:24 +00:00
MCELFStreamer.cpp Fix instance of -Wdelete-incomplete 2016-06-22 23:25:26 +00:00
MCExpr.cpp [MC] Remove guard(s). NFCI. 2016-08-22 11:55:22 +00:00
MCFragment.cpp ADT: Split ilist_node_traits into alloc and callback, NFC 2016-08-30 18:40:47 +00:00
MCInst.cpp [MC] Remove guard(s). NFCI. 2016-08-22 11:55:22 +00:00
MCInstPrinter.cpp
MCInstrAnalysis.cpp
MCInstrDesc.cpp Replace uint16_t with the MCPhysReg typedef in many places. A lot of physical register arrays already use this typedef. 2015-12-05 07:13:35 +00:00
MCLabel.cpp [MC] Remove guard(s). NFCI. 2016-08-22 11:55:22 +00:00
MCLinkerOptimizationHint.cpp Apply clang-tidy's modernize-loop-convert to lib/MC. 2016-06-26 14:49:00 +00:00
MCMachOStreamer.cpp MachO: enable .data_region directives everywhere 2016-04-21 23:00:17 +00:00
MCMachObjectTargetWriter.cpp
MCNullStreamer.cpp
MCObjectFileInfo.cpp Move code only used by codegen out of MC. NFC. 2016-08-29 12:33:42 +00:00
MCObjectStreamer.cpp [codeview] Add new directives to record inlined call site line info 2016-09-07 16:15:31 +00:00
MCObjectWriter.cpp Fix pr24486. 2015-10-05 12:07:05 +00:00
MCRegisterInfo.cpp Avoid accessing LLVM/DWARF register mappings if undefined 2016-08-12 23:12:59 +00:00
MCSchedule.cpp Add <type_traits> for is_pod, fixing r241947 2015-07-10 22:17:49 +00:00
MCSection.cpp MC: Move MCSection::begin/end to header, NFC 2016-09-12 00:17:09 +00:00
MCSectionCOFF.cpp [MC] Handle discardable COFF sections in assembly 2016-09-14 22:41:50 +00:00
MCSectionELF.cpp Bring r252305 back with a test fix. 2015-11-06 15:30:45 +00:00
MCSectionMachO.cpp [ADT] Switch a bunch of places in LLVM that were doing single-character 2015-09-10 06:12:31 +00:00
MCStreamer.cpp [codeview] Add new directives to record inlined call site line info 2016-09-07 16:15:31 +00:00
MCSubtargetInfo.cpp (NFC) Change SubtargetFeatures::ToggleFeature and 2016-01-05 10:25:56 +00:00
MCSymbol.cpp [MC] Remove guard(s). NFCI. 2016-08-22 11:55:22 +00:00
MCSymbolELF.cpp
MCTargetOptions.cpp Initialize PreserveAsmComments in MCTargetOptions 2016-07-27 19:19:13 +00:00
MCValue.cpp [MC] Remove guard(s). NFCI. 2016-08-22 11:55:22 +00:00
MCWin64EH.cpp [MC] Create unique .pdata sections for every .text section 2016-05-02 23:22:18 +00:00
MCWinEH.cpp [MC] Create unique .pdata sections for every .text section 2016-05-02 23:22:18 +00:00
MachObjectWriter.cpp Reapply: "ARM: put correct symbol index on indirect pointers in __thread_ptr."" 2016-04-26 18:29:16 +00:00
StringTableBuilder.cpp Make StringTableBuilder to cache hash values. 2016-05-06 00:51:58 +00:00
SubtargetFeature.cpp [MC] Remove guard(s). NFCI. 2016-08-22 11:55:22 +00:00
WinCOFFObjectWriter.cpp Apply clang-tidy's modernize-loop-convert to lib/MC. 2016-06-26 14:49:00 +00:00
WinCOFFStreamer.cpp [MC, COFF] Permit a variable to be redefined 2016-07-08 21:54:16 +00:00