[PATCH] D77919: [MC][ELF] Add section flags to diagnostic
Brian Cain via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 10 16:09:58 PDT 2020
bcain created this revision.
bcain added reviewers: MaskRay, sidneym.
Herald added subscribers: hiraditya, emaste.
Herald added a reviewer: espindola.
Herald added a project: LLVM.
Make the assembler diagnostic emit quoted section names and refer to
the expected flag bits by input character flag.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D77919
Files:
llvm/lib/MC/MCParser/ELFAsmParser.cpp
llvm/test/MC/ELF/section-flags-changed.s
Index: llvm/test/MC/ELF/section-flags-changed.s
===================================================================
--- llvm/test/MC/ELF/section-flags-changed.s
+++ llvm/test/MC/ELF/section-flags-changed.s
@@ -3,10 +3,10 @@
foo:
.section .foo,"ax", at progbits
-# CHECK: {{.*}}.s:[[# @LINE+1]]:1: error: changed section flags for .foo, expected: 0x6
+# CHECK: {{.*}}.s:[[# @LINE+1]]:1: error: changed section flags for `.foo', expected: "ax"
.section .foo,"awx", at progbits
-# CHECK: {{.*}}.s:[[# @LINE+1]]:1: error: changed section flags for .foo, expected: 0x6
+# CHECK: {{.*}}.s:[[# @LINE+1]]:1: error: changed section flags for `.foo', expected: "ax"
.pushsection .foo,"a", at progbits
.pushsection .foo,"ax", at progbits
Index: llvm/lib/MC/MCParser/ELFAsmParser.cpp
===================================================================
--- llvm/lib/MC/MCParser/ELFAsmParser.cpp
+++ llvm/lib/MC/MCParser/ELFAsmParser.cpp
@@ -640,9 +640,16 @@
if (Section->getType() != Type)
Error(loc, "changed section type for " + SectionName + ", expected: 0x" +
utohexstr(Section->getType()));
- if (Section->getFlags() != Flags)
- Error(loc, "changed section flags for " + SectionName + ", expected: 0x" +
- utohexstr(Section->getFlags()));
+ if (Section->getFlags() != Flags) {
+ const unsigned ExpectedFlags = Section->getFlags();
+ const std::string ExpectedFlagsText =
+ Twine(StringRef((ExpectedFlags & ELF::SHF_ALLOC) ? "a" : "") +
+ StringRef((ExpectedFlags & ELF::SHF_WRITE) ? "w" : "") +
+ StringRef((ExpectedFlags & ELF::SHF_EXECINSTR) ? "x" : ""))
+ .str();
+ Error(loc, "changed section flags for `" + SectionName + "', expected: \"" +
+ ExpectedFlagsText + "\"");
+ }
if (Section->getEntrySize() != Size)
Error(loc, "changed section entsize for " + SectionName +
", expected: " + Twine(Section->getEntrySize()));
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D77919.256699.patch
Type: text/x-patch
Size: 1966 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200410/b21523f3/attachment.bin>
More information about the llvm-commits
mailing list