[llvm] r195155 - Make it explicit that nulls are not allowed in names.
Rafael Espindola
rafael.espindola at gmail.com
Tue Nov 19 13:12:39 PST 2013
Author: rafael
Date: Tue Nov 19 15:12:39 2013
New Revision: 195155
URL: http://llvm.org/viewvc/llvm-project?rev=195155&view=rev
Log:
Make it explicit that nulls are not allowed in names.
The object files we support use null terminated strings, so there is no way to
support these.
This patch adds an assert to catch bad API use and an error check in the .ll
parser.
Added:
llvm/trunk/test/Assembler/invalid-name.ll
Modified:
llvm/trunk/lib/AsmParser/LLLexer.cpp
llvm/trunk/lib/IR/Value.cpp
Modified: llvm/trunk/lib/AsmParser/LLLexer.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/LLLexer.cpp?rev=195155&r1=195154&r2=195155&view=diff
==============================================================================
--- llvm/trunk/lib/AsmParser/LLLexer.cpp (original)
+++ llvm/trunk/lib/AsmParser/LLLexer.cpp Tue Nov 19 15:12:39 2013
@@ -275,6 +275,10 @@ lltok::Kind LLLexer::LexAt() {
if (CurChar == '"') {
StrVal.assign(TokStart+2, CurPtr-1);
UnEscapeLexed(StrVal);
+ if (StringRef(StrVal).find_first_of(0) != StringRef::npos) {
+ Error("Null bytes are not allowed in names");
+ return lltok::Error;
+ }
return lltok::GlobalVar;
}
}
Modified: llvm/trunk/lib/IR/Value.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Value.cpp?rev=195155&r1=195154&r2=195155&view=diff
==============================================================================
--- llvm/trunk/lib/IR/Value.cpp (original)
+++ llvm/trunk/lib/IR/Value.cpp Tue Nov 19 15:12:39 2013
@@ -182,6 +182,8 @@ void Value::setName(const Twine &NewName
SmallString<256> NameData;
StringRef NameRef = NewName.toStringRef(NameData);
+ assert(NameRef.find_first_of(0) == StringRef::npos &&
+ "Null bytes are not allowed in names");
// Name isn't changing?
if (getName() == NameRef)
Added: llvm/trunk/test/Assembler/invalid-name.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Assembler/invalid-name.ll?rev=195155&view=auto
==============================================================================
--- llvm/trunk/test/Assembler/invalid-name.ll (added)
+++ llvm/trunk/test/Assembler/invalid-name.ll Tue Nov 19 15:12:39 2013
@@ -0,0 +1,6 @@
+; RUN: not llvm-as %s 2>&1 | FileCheck %s
+
+; CHECK: expected function name
+define void @"zed\00bar"() {
+ ret void
+}
More information about the llvm-commits
mailing list