diff options
| author | George Rimar <grimar@accesssoftek.com> | 2017-12-25 09:41:00 +0000 |
|---|---|---|
| committer | George Rimar <grimar@accesssoftek.com> | 2017-12-25 09:41:00 +0000 |
| commit | 18e6a788fb156993fc42d22b3e29d49afbf7fa81 (patch) | |
| tree | a70a0d3f148a105b5c40797dc991a3499f00f235 | |
| parent | ddb096853d008b54788eb427dd1d56387996f00a (diff) | |
| download | bcm5719-llvm-18e6a788fb156993fc42d22b3e29d49afbf7fa81.tar.gz bcm5719-llvm-18e6a788fb156993fc42d22b3e29d49afbf7fa81.zip | |
[MC] - Disallow invalid section groups declarations.
This fixes parseGroup() so that it always sets error condition on error.
Previously it was not done, because parseIdentifier looks never do that,
assuming that caller should do it if he wants to.
So previously cases from test were silently accepted and produced broken output.
Differential revision: https://reviews.llvm.org/D41559
llvm-svn: 321439
| -rw-r--r-- | llvm/lib/MC/MCParser/ELFAsmParser.cpp | 4 | ||||
| -rw-r--r-- | llvm/test/MC/ELF/comdat-declaration-errors.s | 14 |
2 files changed, 16 insertions, 2 deletions
diff --git a/llvm/lib/MC/MCParser/ELFAsmParser.cpp b/llvm/lib/MC/MCParser/ELFAsmParser.cpp index f94e9d3c478..3e2150a451e 100644 --- a/llvm/lib/MC/MCParser/ELFAsmParser.cpp +++ b/llvm/lib/MC/MCParser/ELFAsmParser.cpp @@ -427,13 +427,13 @@ bool ELFAsmParser::parseGroup(StringRef &GroupName) { GroupName = getTok().getString(); Lex(); } else if (getParser().parseIdentifier(GroupName)) { - return true; + return TokError("invalid group name"); } if (L.is(AsmToken::Comma)) { Lex(); StringRef Linkage; if (getParser().parseIdentifier(Linkage)) - return true; + return TokError("invalid linkage"); if (Linkage != "comdat") return TokError("Linkage must be 'comdat'"); } diff --git a/llvm/test/MC/ELF/comdat-declaration-errors.s b/llvm/test/MC/ELF/comdat-declaration-errors.s new file mode 100644 index 00000000000..fade8cfe41d --- /dev/null +++ b/llvm/test/MC/ELF/comdat-declaration-errors.s @@ -0,0 +1,14 @@ +// RUN: not llvm-mc -triple x86_64-pc-linux-gnu %s \ +// RUN: -filetype=obj -o %t.o 2>&1 | FileCheck %s + +// Check we error out on incorrect COMDATs declarations +// and not just silently ingnore them. + +// CHECK: error: invalid group name +// CHECK-NEXT: .section .foo,"G",@progbits,-abc,comdat + +// CHECK: error: invalid linkage +// CHECK-NEXT: .section .bar,"G",@progbits,abc,-comdat + +.section .foo,"G",@progbits,-abc,comdat +.section .bar,"G",@progbits,abc,-comdat |

