[PATCH] D41559: [MC] - Disallow invalid section groups declarations.
Rafael Avila de Espindola via llvm-commits
llvm-commits at lists.llvm.org
Sun Dec 24 11:38:10 PST 2017
LGTM.
Thanks!
George Rimar via Phabricator <reviews at reviews.llvm.org> writes:
> grimar created this revision.
> grimar added a reviewer: rafael.
> Herald added a subscriber: emaste.
>
> This fixes parseGroup() so that it always sets error condition on error.
> Previously it was not done, because `parseIdentifier` looks never do that,
> assuiming that caller should do it if he wants to.
>
> So previously cases from test were silently accepted and produced broken output.
>
>
> https://reviews.llvm.org/D41559
>
> Files:
> lib/MC/MCParser/ELFAsmParser.cpp
> test/MC/ELF/comdat-declaration-errors.s
>
>
> Index: test/MC/ELF/comdat-declaration-errors.s
> ===================================================================
> --- test/MC/ELF/comdat-declaration-errors.s
> +++ 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", at progbits,-abc,comdat
> +
> +// CHECK: error: invalid linkage
> +// CHECK-NEXT: .section .bar,"G", at progbits,abc,-comdat
> +
> +.section .foo,"G", at progbits,-abc,comdat
> +.section .bar,"G", at progbits,abc,-comdat
> Index: lib/MC/MCParser/ELFAsmParser.cpp
> ===================================================================
> --- lib/MC/MCParser/ELFAsmParser.cpp
> +++ lib/MC/MCParser/ELFAsmParser.cpp
> @@ -427,13 +427,13 @@
> 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'");
> }
>
>
> Index: test/MC/ELF/comdat-declaration-errors.s
> ===================================================================
> --- test/MC/ELF/comdat-declaration-errors.s
> +++ 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", at progbits,-abc,comdat
> +
> +// CHECK: error: invalid linkage
> +// CHECK-NEXT: .section .bar,"G", at progbits,abc,-comdat
> +
> +.section .foo,"G", at progbits,-abc,comdat
> +.section .bar,"G", at progbits,abc,-comdat
> Index: lib/MC/MCParser/ELFAsmParser.cpp
> ===================================================================
> --- lib/MC/MCParser/ELFAsmParser.cpp
> +++ lib/MC/MCParser/ELFAsmParser.cpp
> @@ -427,13 +427,13 @@
> 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'");
> }
More information about the llvm-commits
mailing list