1281777SdimPull in r229911 from upstream llvm trunk (by Benjamin Kramer):
2281777Sdim
3281777Sdim  MC: Allow multiple comma-separated expressions on the .uleb128 directive.
4281777Sdim
5281777Sdim  For compatiblity with GNU as. Binutils documents this as
6281777Sdim  '.uleb128 expressions'. Subtle, isn't it?
7281777Sdim
8281777SdimIntroduced here: http://svnweb.freebsd.org/changeset/base/281775
9281777Sdim
10281777SdimIndex: lib/MC/MCParser/AsmParser.cpp
11281777Sdim===================================================================
12281777Sdim--- lib/MC/MCParser/AsmParser.cpp
13281777Sdim+++ lib/MC/MCParser/AsmParser.cpp
14281777Sdim@@ -3636,22 +3636,28 @@ bool AsmParser::parseDirectiveSpace(StringRef IDVa
15281777Sdim }
16281777Sdim 
17281777Sdim /// parseDirectiveLEB128
18281777Sdim-/// ::= (.sleb128 | .uleb128) expression
19281777Sdim+/// ::= (.sleb128 | .uleb128) [ expression (, expression)* ]
20281777Sdim bool AsmParser::parseDirectiveLEB128(bool Signed) {
21281777Sdim   checkForValidSection();
22281777Sdim   const MCExpr *Value;
23281777Sdim 
24281777Sdim-  if (parseExpression(Value))
25281777Sdim-    return true;
26281777Sdim+  for (;;) {
27281777Sdim+    if (parseExpression(Value))
28281777Sdim+      return true;
29281777Sdim 
30281777Sdim-  if (getLexer().isNot(AsmToken::EndOfStatement))
31281777Sdim-    return TokError("unexpected token in directive");
32281777Sdim+    if (Signed)
33281777Sdim+      getStreamer().EmitSLEB128Value(Value);
34281777Sdim+    else
35281777Sdim+      getStreamer().EmitULEB128Value(Value);
36281777Sdim 
37281777Sdim-  if (Signed)
38281777Sdim-    getStreamer().EmitSLEB128Value(Value);
39281777Sdim-  else
40281777Sdim-    getStreamer().EmitULEB128Value(Value);
41281777Sdim+    if (getLexer().is(AsmToken::EndOfStatement))
42281777Sdim+      break;
43281777Sdim 
44281777Sdim+    if (getLexer().isNot(AsmToken::Comma))
45281777Sdim+      return TokError("unexpected token in directive");
46281777Sdim+    Lex();
47281777Sdim+  }
48281777Sdim+
49281777Sdim   return false;
50281777Sdim }
51281777Sdim 
52281777SdimIndex: test/MC/ELF/uleb.s
53281777Sdim===================================================================
54281777Sdim--- test/MC/ELF/uleb.s
55281777Sdim+++ test/MC/ELF/uleb.s
56281777Sdim@@ -11,16 +11,17 @@ foo:
57281777Sdim 	.uleb128	128
58281777Sdim 	.uleb128	16383
59281777Sdim 	.uleb128	16384
60281777Sdim+        .uleb128	23, 42
61281777Sdim 
62281777Sdim // ELF_32:   Name: .text
63281777Sdim // ELF_32:   SectionData (
64281777Sdim-// ELF_32:     0000: 00017F80 01FF7F80 8001
65281777Sdim+// ELF_32:     0000: 00017F80 01FF7F80 8001172A
66281777Sdim // ELF_32:   )
67281777Sdim // ELF_64:   Name: .text
68281777Sdim // ELF_64:   SectionData (
69281777Sdim-// ELF_64:     0000: 00017F80 01FF7F80 8001
70281777Sdim+// ELF_64:     0000: 00017F80 01FF7F80 8001172A
71281777Sdim // ELF_64:   )
72281777Sdim // MACHO_32: ('section_name', '__text\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
73281777Sdim-// MACHO_32: ('_section_data', '00017f80 01ff7f80 8001')
74281777Sdim+// MACHO_32: ('_section_data', '00017f80 01ff7f80 8001172a')
75281777Sdim // MACHO_64: ('section_name', '__text\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
76281777Sdim-// MACHO_64: ('_section_data', '00017f80 01ff7f80 8001')
77281777Sdim+// MACHO_64: ('_section_data', '00017f80 01ff7f80 8001172a')
78