svn commit: r281908 - in stable: 10/contrib/llvm/lib/MC/MCParser 10/contrib/llvm/patches 9/contrib/llvm/lib/MC/MCParser 9/contrib/llvm/patches
Dimitry Andric
dim at FreeBSD.org
Thu Apr 23 22:06:03 UTC 2015
Author: dim
Date: Thu Apr 23 22:06:02 2015
New Revision: 281908
URL: https://svnweb.freebsd.org/changeset/base/281908
Log:
MFC r281775:
Pull in r229911 from upstream llvm trunk (by Benjamin Kramer):
MC: Allow multiple comma-separated expressions on the .uleb128 directive.
For compatiblity with GNU as. Binutils documents this as
'.uleb128 expressions'. Subtle, isn't it?
Reported by: sbruno
PR: 199554
MFC r281777:
Add llvm patch corresponding to r281775.
Added:
stable/9/contrib/llvm/patches/patch-r281775-llvm-r229911-uleb128-commas.diff
- copied unchanged from r281777, head/contrib/llvm/patches/patch-13-llvm-r229911-uleb128-commas.diff
Modified:
stable/9/contrib/llvm/lib/MC/MCParser/AsmParser.cpp
Directory Properties:
stable/9/contrib/llvm/ (props changed)
Changes in other areas also in this revision:
Added:
stable/10/contrib/llvm/patches/patch-r281775-llvm-r229911-uleb128-commas.diff
- copied unchanged from r281777, head/contrib/llvm/patches/patch-13-llvm-r229911-uleb128-commas.diff
Modified:
stable/10/contrib/llvm/lib/MC/MCParser/AsmParser.cpp
Directory Properties:
stable/10/ (props changed)
Modified: stable/9/contrib/llvm/lib/MC/MCParser/AsmParser.cpp
==============================================================================
--- stable/9/contrib/llvm/lib/MC/MCParser/AsmParser.cpp Thu Apr 23 21:39:32 2015 (r281907)
+++ stable/9/contrib/llvm/lib/MC/MCParser/AsmParser.cpp Thu Apr 23 22:06:02 2015 (r281908)
@@ -3370,21 +3370,27 @@ bool AsmParser::parseDirectiveSpace(Stri
}
/// parseDirectiveLEB128
-/// ::= (.sleb128 | .uleb128) expression
+/// ::= (.sleb128 | .uleb128) [ expression (, expression)* ]
bool AsmParser::parseDirectiveLEB128(bool Signed) {
checkForValidSection();
const MCExpr *Value;
- if (parseExpression(Value))
- return true;
+ for (;;) {
+ if (parseExpression(Value))
+ return true;
- if (getLexer().isNot(AsmToken::EndOfStatement))
- return TokError("unexpected token in directive");
+ if (Signed)
+ getStreamer().EmitSLEB128Value(Value);
+ else
+ getStreamer().EmitULEB128Value(Value);
- if (Signed)
- getStreamer().EmitSLEB128Value(Value);
- else
- getStreamer().EmitULEB128Value(Value);
+ if (getLexer().is(AsmToken::EndOfStatement))
+ break;
+
+ if (getLexer().isNot(AsmToken::Comma))
+ return TokError("unexpected token in directive");
+ Lex();
+ }
return false;
}
Copied: stable/9/contrib/llvm/patches/patch-r281775-llvm-r229911-uleb128-commas.diff (from r281777, head/contrib/llvm/patches/patch-13-llvm-r229911-uleb128-commas.diff)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ stable/9/contrib/llvm/patches/patch-r281775-llvm-r229911-uleb128-commas.diff Thu Apr 23 22:06:02 2015 (r281908, copy of r281777, head/contrib/llvm/patches/patch-13-llvm-r229911-uleb128-commas.diff)
@@ -0,0 +1,77 @@
+Pull in r229911 from upstream llvm trunk (by Benjamin Kramer):
+
+ MC: Allow multiple comma-separated expressions on the .uleb128 directive.
+
+ For compatiblity with GNU as. Binutils documents this as
+ '.uleb128 expressions'. Subtle, isn't it?
+
+Introduced here: http://svnweb.freebsd.org/changeset/base/281775
+
+Index: lib/MC/MCParser/AsmParser.cpp
+===================================================================
+--- lib/MC/MCParser/AsmParser.cpp
++++ lib/MC/MCParser/AsmParser.cpp
+@@ -3636,22 +3636,28 @@ bool AsmParser::parseDirectiveSpace(StringRef IDVa
+ }
+
+ /// parseDirectiveLEB128
+-/// ::= (.sleb128 | .uleb128) expression
++/// ::= (.sleb128 | .uleb128) [ expression (, expression)* ]
+ bool AsmParser::parseDirectiveLEB128(bool Signed) {
+ checkForValidSection();
+ const MCExpr *Value;
+
+- if (parseExpression(Value))
+- return true;
++ for (;;) {
++ if (parseExpression(Value))
++ return true;
+
+- if (getLexer().isNot(AsmToken::EndOfStatement))
+- return TokError("unexpected token in directive");
++ if (Signed)
++ getStreamer().EmitSLEB128Value(Value);
++ else
++ getStreamer().EmitULEB128Value(Value);
+
+- if (Signed)
+- getStreamer().EmitSLEB128Value(Value);
+- else
+- getStreamer().EmitULEB128Value(Value);
++ if (getLexer().is(AsmToken::EndOfStatement))
++ break;
+
++ if (getLexer().isNot(AsmToken::Comma))
++ return TokError("unexpected token in directive");
++ Lex();
++ }
++
+ return false;
+ }
+
+Index: test/MC/ELF/uleb.s
+===================================================================
+--- test/MC/ELF/uleb.s
++++ test/MC/ELF/uleb.s
+@@ -11,16 +11,17 @@ foo:
+ .uleb128 128
+ .uleb128 16383
+ .uleb128 16384
++ .uleb128 23, 42
+
+ // ELF_32: Name: .text
+ // ELF_32: SectionData (
+-// ELF_32: 0000: 00017F80 01FF7F80 8001
++// ELF_32: 0000: 00017F80 01FF7F80 8001172A
+ // ELF_32: )
+ // ELF_64: Name: .text
+ // ELF_64: SectionData (
+-// ELF_64: 0000: 00017F80 01FF7F80 8001
++// ELF_64: 0000: 00017F80 01FF7F80 8001172A
+ // ELF_64: )
+ // MACHO_32: ('section_name', '__text\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
+-// MACHO_32: ('_section_data', '00017f80 01ff7f80 8001')
++// MACHO_32: ('_section_data', '00017f80 01ff7f80 8001172a')
+ // MACHO_64: ('section_name', '__text\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
+-// MACHO_64: ('_section_data', '00017f80 01ff7f80 8001')
++// MACHO_64: ('_section_data', '00017f80 01ff7f80 8001172a')
More information about the svn-src-stable-9
mailing list