[PATCH] D41641: [MC] - Stop ignoring invalid meta data symbols.

Rafael Avila de Espindola via llvm-commits llvm-commits at lists.llvm.org
Sat Dec 30 11:47:19 PST 2017


LGTM

George Rimar via Phabricator <reviews at reviews.llvm.org> writes:

> grimar created this revision.
> grimar added a reviewer: rafael.
> Herald added a subscriber: emaste.
>
> Previously llvm-mc would silently accept code from testcase,
> that contains invalid metadata symbol in section declaration.
>
> Patch fixes the issue.
>
>
> https://reviews.llvm.org/D41641
>
> Files:
>   lib/MC/MCParser/ELFAsmParser.cpp
>   test/MC/ELF/metadata-declaration-errors.s
>
>
> Index: test/MC/ELF/metadata-declaration-errors.s
> ===================================================================
> --- test/MC/ELF/metadata-declaration-errors.s
> +++ test/MC/ELF/metadata-declaration-errors.s
> @@ -0,0 +1,10 @@
> +// RUN: not llvm-mc -triple x86_64-pc-linux-gnu %s \
> +// RUN:   -filetype=obj -o %t.o 2>&1 | FileCheck %s
> +
> +// Check we do not silently ignore invalid metadata symbol (123).
> +// CHECK: error: invalid metadata symbol
> +
> +.section .foo,"a"
> +.quad 0
> +
> +.section bar,"ao", at progbits,123
> Index: lib/MC/MCParser/ELFAsmParser.cpp
> ===================================================================
> --- lib/MC/MCParser/ELFAsmParser.cpp
> +++ lib/MC/MCParser/ELFAsmParser.cpp
> @@ -447,7 +447,7 @@
>    Lex();
>    StringRef Name;
>    if (getParser().parseIdentifier(Name))
> -    return true;
> +    return TokError("invalid metadata symbol");
>    Associated = dyn_cast_or_null<MCSymbolELF>(getContext().lookupSymbol(Name));
>    if (!Associated || !Associated->isInSection())
>      return TokError("symbol is not in a section: " + Name);
>
>
> Index: test/MC/ELF/metadata-declaration-errors.s
> ===================================================================
> --- test/MC/ELF/metadata-declaration-errors.s
> +++ test/MC/ELF/metadata-declaration-errors.s
> @@ -0,0 +1,10 @@
> +// RUN: not llvm-mc -triple x86_64-pc-linux-gnu %s \
> +// RUN:   -filetype=obj -o %t.o 2>&1 | FileCheck %s
> +
> +// Check we do not silently ignore invalid metadata symbol (123).
> +// CHECK: error: invalid metadata symbol
> +
> +.section .foo,"a"
> +.quad 0
> +
> +.section bar,"ao", at progbits,123
> Index: lib/MC/MCParser/ELFAsmParser.cpp
> ===================================================================
> --- lib/MC/MCParser/ELFAsmParser.cpp
> +++ lib/MC/MCParser/ELFAsmParser.cpp
> @@ -447,7 +447,7 @@
>    Lex();
>    StringRef Name;
>    if (getParser().parseIdentifier(Name))
> -    return true;
> +    return TokError("invalid metadata symbol");
>    Associated = dyn_cast_or_null<MCSymbolELF>(getContext().lookupSymbol(Name));
>    if (!Associated || !Associated->isInSection())
>      return TokError("symbol is not in a section: " + Name);


More information about the llvm-commits mailing list