Add llvm patch corresponding to r281775.
This commit is contained in:
parent
98095a5dd2
commit
867073d7fb
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=281777
@ -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')
|
Loading…
Reference in New Issue
Block a user