summaryrefslogtreecommitdiffstats
path: root/llvm/test/tools/llvm-rc
diff options
context:
space:
mode:
authorZachary Turner <zturner@google.com>2017-10-06 21:26:06 +0000
committerZachary Turner <zturner@google.com>2017-10-06 21:26:06 +0000
commit07bc04ff384b367d6e4bb318fbad8e9c6b0a304e (patch)
tree84f9fa3b8f3bc58604de671328c8562c42f1c2d3 /llvm/test/tools/llvm-rc
parentc3ab013aa1fb94a0e89a01502f69be34ed6c0575 (diff)
downloadbcm5719-llvm-07bc04ff384b367d6e4bb318fbad8e9c6b0a304e.tar.gz
bcm5719-llvm-07bc04ff384b367d6e4bb318fbad8e9c6b0a304e.zip
[llvm-rc] Serialize VERSIONINFO resources to .res files.
This is now able to dump VERSIONINFO resources. Ref: msdn.microsoft.com/en-us/library/windows/desktop/aa381058.aspx Differential Revision: https://reviews.llvm.org/D38410 Patch by: Marek Sokolowski llvm-svn: 315110
Diffstat (limited to 'llvm/test/tools/llvm-rc')
-rw-r--r--llvm/test/tools/llvm-rc/Inputs/parser-correct-everything.rc10
-rw-r--r--llvm/test/tools/llvm-rc/Inputs/tag-versioninfo-mixed-ints-strings.rc18
-rw-r--r--llvm/test/tools/llvm-rc/Inputs/tag-versioninfo-word-too-large.rc18
-rw-r--r--llvm/test/tools/llvm-rc/Inputs/tag-versioninfo.rc32
-rw-r--r--llvm/test/tools/llvm-rc/parser.test10
-rw-r--r--llvm/test/tools/llvm-rc/tag-versioninfo.test66
6 files changed, 144 insertions, 10 deletions
diff --git a/llvm/test/tools/llvm-rc/Inputs/parser-correct-everything.rc b/llvm/test/tools/llvm-rc/Inputs/parser-correct-everything.rc
index d3d95b2e4ff..c681b288519 100644
--- a/llvm/test/tools/llvm-rc/Inputs/parser-correct-everything.rc
+++ b/llvm/test/tools/llvm-rc/Inputs/parser-correct-everything.rc
@@ -93,15 +93,15 @@ BEGIN
BLOCK "040904E4"
{
VALUE "CompanyName", "a"
- VALUE "FileDescription", "b"
+ VALUE "FileDescription", "b" "c" "d", 1 3 7L, "y", "h" "d"
VALUE "FileVersion", "c"
VALUE "InternalName", "d"
- VALUE "LegalCopyright", "e"
- VALUE "LegalTrademarks1", "f"
+ VALUE "LegalCopyright", "e" 0
+ VALUE "LegalTrademarks1", 1 2, 3
VALUE "LegalTrademarks2", "g"
VALUE "OriginalFilename", L"h"
- VALUE "ProductName", "ii", 2, 3
- VALUE "ProductVersion"
+ VALUE "ProductName", "ii", 2L, 3
+ VALUE "ProductVersion", 0x12345678L
}
END
diff --git a/llvm/test/tools/llvm-rc/Inputs/tag-versioninfo-mixed-ints-strings.rc b/llvm/test/tools/llvm-rc/Inputs/tag-versioninfo-mixed-ints-strings.rc
new file mode 100644
index 00000000000..ef5989ffaf9
--- /dev/null
+++ b/llvm/test/tools/llvm-rc/Inputs/tag-versioninfo-mixed-ints-strings.rc
@@ -0,0 +1,18 @@
+1 VERSIONINFO
+FILEVERSION 1, 2, 3, 4
+PRODUCTVERSION 5, 6, 7, 8
+FILEFLAGSMASK 50
+FILEFLAGS 555
+FILEOS 110
+FILETYPE 555555
+FILESUBTYPE 14
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904E4"
+ {
+ VALUE "CompanyName", 32768
+ VALUE "FileDescription", 5, "a", 3
+ }
+ END
+END
diff --git a/llvm/test/tools/llvm-rc/Inputs/tag-versioninfo-word-too-large.rc b/llvm/test/tools/llvm-rc/Inputs/tag-versioninfo-word-too-large.rc
new file mode 100644
index 00000000000..e11eb3d886a
--- /dev/null
+++ b/llvm/test/tools/llvm-rc/Inputs/tag-versioninfo-word-too-large.rc
@@ -0,0 +1,18 @@
+1 VERSIONINFO
+FILEVERSION 1, 2, 3, 4
+PRODUCTVERSION 5, 6, 7, 8
+FILEFLAGSMASK 50
+FILEFLAGS 555
+FILEOS 110
+FILETYPE 555555
+FILESUBTYPE 14
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904E4"
+ {
+ VALUE "CompanyName", 32768
+ VALUE "FileDescription", 65536
+ }
+ END
+END
diff --git a/llvm/test/tools/llvm-rc/Inputs/tag-versioninfo.rc b/llvm/test/tools/llvm-rc/Inputs/tag-versioninfo.rc
new file mode 100644
index 00000000000..54dbff55067
--- /dev/null
+++ b/llvm/test/tools/llvm-rc/Inputs/tag-versioninfo.rc
@@ -0,0 +1,32 @@
+1 VERSIONINFO
+FILEVERSION 1, 2, 3, 4
+PRODUCTVERSION 5, 6, 7, 8
+FILEFLAGSMASK 50
+FILEFLAGS 555
+FILEOS 110
+FILETYPE 555555
+FILESUBTYPE 14
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904E4"
+ {
+ VALUE "CompanyName", "a"
+ VALUE "FileDescription", "b" "c", "d", L"eee" "f" L"g", "a", L"hohoho"
+ VALUE "FileVersion", "c"
+ VALUE "InternalName", "d"
+ VALUE "LegalCopyright", "e" "0"
+ VALUE "LegalTrademarks1", 1 2, 3
+ VALUE "LegalTrademarks2", "g"
+ VALUE "OriginalFilename", L"h"
+ VALUE "ProductName", "a" "b", "c"
+ VALUE "ProductVersion", 0x12345678L
+ }
+ END
+
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1252
+
+ END
+END
diff --git a/llvm/test/tools/llvm-rc/parser.test b/llvm/test/tools/llvm-rc/parser.test
index e2950776bac..112e4859a9b 100644
--- a/llvm/test/tools/llvm-rc/parser.test
+++ b/llvm/test/tools/llvm-rc/parser.test
@@ -76,19 +76,19 @@
; PGOOD-NEXT: Start of block (name: "StringFileInfo")
; PGOOD-NEXT: Start of block (name: "040904E4")
; PGOOD-NEXT: "CompanyName" => "a"
-; PGOOD-NEXT: "FileDescription" => "b"
+; PGOOD-NEXT: "FileDescription" => "b" "c" "d", 1 3 7L, "y", "h" "d"
; PGOOD-NEXT: "FileVersion" => "c"
; PGOOD-NEXT: "InternalName" => "d"
; PGOOD-NEXT: "LegalCopyright" => "e"
-; PGOOD-NEXT: "LegalTrademarks1" => "f"
+; PGOOD-NEXT: "LegalTrademarks1" => 1 2, 3
; PGOOD-NEXT: "LegalTrademarks2" => "g"
; PGOOD-NEXT: "OriginalFilename" => L"h"
-; PGOOD-NEXT: "ProductName" => "ii" 2 3
-; PGOOD-NEXT: "ProductVersion" =>
+; PGOOD-NEXT: "ProductName" => "ii", 2L, 3
+; PGOOD-NEXT: "ProductVersion" => 305419896L
; PGOOD-NEXT: End of block
; PGOOD-NEXT: End of block
; PGOOD-NEXT: Start of block (name: "VarFileInfo")
-; PGOOD-NEXT: "Translation" => 1033 1252
+; PGOOD-NEXT: "Translation" => 1033, 1252
; PGOOD-NEXT: End of block
; PGOOD-NEXT: End of block
; PGOOD-NEXT: User-defined (type: MYTYPE, name: MYNAME): "filename"
diff --git a/llvm/test/tools/llvm-rc/tag-versioninfo.test b/llvm/test/tools/llvm-rc/tag-versioninfo.test
new file mode 100644
index 00000000000..4c30346f6b2
--- /dev/null
+++ b/llvm/test/tools/llvm-rc/tag-versioninfo.test
@@ -0,0 +1,66 @@
+; RUN: llvm-rc /FO %t %p/Inputs/tag-versioninfo.rc
+; RUN: llvm-readobj %t | FileCheck %s
+
+; CHECK: Resource type (int): 16
+; CHECK-NEXT: Resource name (int): 1
+; CHECK-NEXT: Data version: 0
+; CHECK-NEXT: Memory flags: 0x30
+; CHECK-NEXT: Language ID: 1033
+; CHECK-NEXT: Version (major): 0
+; CHECK-NEXT: Version (minor): 0
+; CHECK-NEXT: Characteristics: 0
+; CHECK-NEXT: Data size: 672
+; CHECK-NEXT: Data: (
+; CHECK-NEXT: 0000: A0023400 00005600 53005F00 56004500 |..4...V.S._.V.E.|
+; CHECK-NEXT: 0010: 52005300 49004F00 4E005F00 49004E00 |R.S.I.O.N._.I.N.|
+; CHECK-NEXT: 0020: 46004F00 00000000 BD04EFFE 00000100 |F.O.............|
+; CHECK-NEXT: 0030: 02000100 04000300 06000500 08000700 |................|
+; CHECK-NEXT: 0040: 32000000 2B020000 6E000000 237A0800 |2...+...n...#z..|
+; CHECK-NEXT: 0050: 0E000000 00000000 00000000 00020000 |................|
+; CHECK-NEXT: 0060: 01005300 74007200 69006E00 67004600 |..S.t.r.i.n.g.F.|
+; CHECK-NEXT: 0070: 69006C00 65004900 6E006600 6F000000 |i.l.e.I.n.f.o...|
+; CHECK-NEXT: 0080: DC010000 01003000 34003000 39003000 |......0.4.0.9.0.|
+; CHECK-NEXT: 0090: 34004500 34000000 24000200 01004300 |4.E.4...$.....C.|
+; CHECK-NEXT: 00A0: 6F006D00 70006100 6E007900 4E006100 |o.m.p.a.n.y.N.a.|
+; CHECK-NEXT: 00B0: 6D006500 00000000 61000000 50001400 |m.e.....a...P...|
+; CHECK-NEXT: 00C0: 01004600 69006C00 65004400 65007300 |..F.i.l.e.D.e.s.|
+; CHECK-NEXT: 00D0: 63007200 69007000 74006900 6F006E00 |c.r.i.p.t.i.o.n.|
+; CHECK-NEXT: 00E0: 00000000 62006300 00006400 00006500 |....b.c...d...e.|
+; CHECK-NEXT: 00F0: 65006500 66006700 00006100 00006800 |e.e.f.g...a...h.|
+; CHECK-NEXT: 0100: 6F006800 6F006800 6F000000 24000200 |o.h.o.h.o...$...|
+; CHECK-NEXT: 0110: 01004600 69006C00 65005600 65007200 |..F.i.l.e.V.e.r.|
+; CHECK-NEXT: 0120: 73006900 6F006E00 00000000 63000000 |s.i.o.n.....c...|
+; CHECK-NEXT: 0130: 24000200 01004900 6E007400 65007200 |$.....I.n.t.e.r.|
+; CHECK-NEXT: 0140: 6E006100 6C004E00 61006D00 65000000 |n.a.l.N.a.m.e...|
+; CHECK-NEXT: 0150: 64000000 2A000300 01004C00 65006700 |d...*.....L.e.g.|
+; CHECK-NEXT: 0160: 61006C00 43006F00 70007900 72006900 |a.l.C.o.p.y.r.i.|
+; CHECK-NEXT: 0170: 67006800 74000000 65003000 00000000 |g.h.t...e.0.....|
+; CHECK-NEXT: 0180: 2E000600 00004C00 65006700 61006C00 |......L.e.g.a.l.|
+; CHECK-NEXT: 0190: 54007200 61006400 65006D00 61007200 |T.r.a.d.e.m.a.r.|
+; CHECK-NEXT: 01A0: 6B007300 31000000 01000200 03000000 |k.s.1...........|
+; CHECK-NEXT: 01B0: 2C000200 01004C00 65006700 61006C00 |,.....L.e.g.a.l.|
+; CHECK-NEXT: 01C0: 54007200 61006400 65006D00 61007200 |T.r.a.d.e.m.a.r.|
+; CHECK-NEXT: 01D0: 6B007300 32000000 67000000 2C000200 |k.s.2...g...,...|
+; CHECK-NEXT: 01E0: 01004F00 72006900 67006900 6E006100 |..O.r.i.g.i.n.a.|
+; CHECK-NEXT: 01F0: 6C004600 69006C00 65006E00 61006D00 |l.F.i.l.e.n.a.m.|
+; CHECK-NEXT: 0200: 65000000 68000000 2A000500 01005000 |e...h...*.....P.|
+; CHECK-NEXT: 0210: 72006F00 64007500 63007400 4E006100 |r.o.d.u.c.t.N.a.|
+; CHECK-NEXT: 0220: 6D006500 00000000 61006200 00006300 |m.e.....a.b...c.|
+; CHECK-NEXT: 0230: 00000000 28000400 00005000 72006F00 |....(.....P.r.o.|
+; CHECK-NEXT: 0240: 64007500 63007400 56006500 72007300 |d.u.c.t.V.e.r.s.|
+; CHECK-NEXT: 0250: 69006F00 6E000000 78563412 44000000 |i.o.n...xV4.D...|
+; CHECK-NEXT: 0260: 01005600 61007200 46006900 6C006500 |..V.a.r.F.i.l.e.|
+; CHECK-NEXT: 0270: 49006E00 66006F00 00000000 24000400 |I.n.f.o.....$...|
+; CHECK-NEXT: 0280: 00005400 72006100 6E007300 6C006100 |..T.r.a.n.s.l.a.|
+; CHECK-NEXT: 0290: 74006900 6F006E00 00000000 0904E404 |t.i.o.n.........|
+; CHECK-NEXT: )
+
+
+; RUN: not llvm-rc /FO %t %p/Inputs/tag-versioninfo-mixed-ints-strings.rc 2>&1 | FileCheck %s --check-prefix STRINT
+; STRINT: llvm-rc: Error in VERSIONINFO statement (ID 1):
+; STRINT-NEXT: VALUE "FileDescription" cannot contain both strings and integers
+
+
+; RUN: not llvm-rc /FO %t %p/Inputs/tag-versioninfo-word-too-large.rc 2>&1 | FileCheck %s --check-prefix WORD
+; WORD: llvm-rc: Error in VERSIONINFO statement (ID 1):
+; WORD-NEXT: VERSIONINFO integer value (65536) does not fit in 16 bits.
OpenPOWER on IntegriCloud