mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-17 08:57:34 +00:00
MC: Fix MCSectionCOFF::PrintSwitchToSection
We had a few bugs: - We were considering the GVKind instead of just looking at the section characteristics - We would never print out 'y' when a section was meant to be unreadable - We would never print out 's' when a section was meant to be shared - We translated IMAGE_SCN_MEM_DISCARDABLE to 'n' when it should've meant IMAGE_SCN_LNK_REMOVE git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@218189 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
cc727ec92a
commit
1c1bde666c
@ -47,18 +47,22 @@ void MCSectionCOFF::PrintSwitchToSection(const MCAsmInfo &MAI,
|
||||
}
|
||||
|
||||
OS << "\t.section\t" << getSectionName() << ",\"";
|
||||
if (getKind().isText())
|
||||
if (getCharacteristics() & COFF::IMAGE_SCN_MEM_EXECUTE)
|
||||
OS << 'x';
|
||||
else if (getKind().isBSS())
|
||||
OS << 'b';
|
||||
if (getKind().isWriteable() && !getKind().isReadOnlyWithRel())
|
||||
if (getCharacteristics() & COFF::IMAGE_SCN_MEM_WRITE)
|
||||
OS << 'w';
|
||||
else
|
||||
else if (getCharacteristics() & COFF::IMAGE_SCN_MEM_READ)
|
||||
OS << 'r';
|
||||
if (getCharacteristics() & COFF::IMAGE_SCN_MEM_DISCARDABLE)
|
||||
OS << 'n';
|
||||
else
|
||||
OS << 'y';
|
||||
if (getCharacteristics() & COFF::IMAGE_SCN_CNT_INITIALIZED_DATA)
|
||||
OS << 'd';
|
||||
if (getCharacteristics() & COFF::IMAGE_SCN_CNT_UNINITIALIZED_DATA)
|
||||
OS << 'b';
|
||||
if (getCharacteristics() & COFF::IMAGE_SCN_LNK_REMOVE)
|
||||
OS << 'n';
|
||||
if (getCharacteristics() & COFF::IMAGE_SCN_MEM_SHARED)
|
||||
OS << 's';
|
||||
OS << '"';
|
||||
|
||||
if (getCharacteristics() & COFF::IMAGE_SCN_LNK_COMDAT) {
|
||||
|
7
test/MC/COFF/section-passthru-flags.s
Normal file
7
test/MC/COFF/section-passthru-flags.s
Normal file
@ -0,0 +1,7 @@
|
||||
// RUN: llvm-mc -triple i386-pc-win32 < %s | FileCheck %s
|
||||
.section .klaatu,"wn"
|
||||
// CHECK: .section .klaatu,"wn"
|
||||
.section .barada,"y"
|
||||
// CHECK: .section .barada,"y"
|
||||
.section .nikto,"wds"
|
||||
// CHECK: .section .nikto,"wds"
|
Loading…
Reference in New Issue
Block a user