[lld] r306465 - Add more stringent tests for the resource section of executables.
Eric Beckmann via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 27 14:28:55 PDT 2017
Author: ecbeckmann
Date: Tue Jun 27 14:28:55 2017
New Revision: 306465
URL: http://llvm.org/viewvc/llvm-project?rev=306465&view=rev
Log:
Add more stringent tests for the resource section of executables.
Summary: The testing on the resource section of executables produced by lld has been very lax, and allowed a major bug to go unnoticed when we switched from shelling out to cvtres.exe to using llvm's own library. These additional tests should cover all the major failure points.
Reviewers: zturner, ruiu
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D34664
Added:
lld/trunk/test/COFF/Inputs/combined-resources-2.rc
lld/trunk/test/COFF/Inputs/combined-resources-2.res (with props)
lld/trunk/test/COFF/Inputs/combined-resources-cursor.bmp (with props)
lld/trunk/test/COFF/Inputs/combined-resources-okay.bmp (with props)
lld/trunk/test/COFF/Inputs/combined-resources.rc
lld/trunk/test/COFF/Inputs/combined-resources.res (with props)
lld/trunk/test/COFF/combined-resources.test
Modified:
lld/trunk/test/COFF/resource.test
Added: lld/trunk/test/COFF/Inputs/combined-resources-2.rc
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/Inputs/combined-resources-2.rc?rev=306465&view=auto
==============================================================================
--- lld/trunk/test/COFF/Inputs/combined-resources-2.rc (added)
+++ lld/trunk/test/COFF/Inputs/combined-resources-2.rc Tue Jun 27 14:28:55 2017
@@ -0,0 +1,36 @@
+#include "windows.h"
+
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+randomdat RCDATA
+{
+ "this is a random bit of data that means nothing\0",
+ 0x23a9,
+ 0x140e,
+ 194292,
+}
+
+LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
+randomdat RCDATA
+{
+ "zhe4 shi4 yi1ge4 sui2ji1 de shu4ju4, zhe4 yi4wei4zhe shen2me\0",
+ 0x23a9,
+ 0x140e,
+ 194292,
+}
+
+LANGUAGE LANG_GERMAN, SUBLANG_GERMAN_LUXEMBOURG
+randomdat RCDATA
+{
+ "Dies ist ein zufälliges Bit von Daten, die nichts bedeutet\0",
+ 0x23a9,
+ 0x140e,
+ 194292,
+}
+
+LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
+myaccelerators ACCELERATORS
+{
+ "^C", 999, VIRTKEY, ALT
+ "D", 1100, VIRTKEY, CONTROL, SHIFT
+ "^R", 444, ASCII, NOINVERT
+}
Added: lld/trunk/test/COFF/Inputs/combined-resources-2.res
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/Inputs/combined-resources-2.res?rev=306465&view=auto
==============================================================================
Binary file - no diff available.
Propchange: lld/trunk/test/COFF/Inputs/combined-resources-2.res
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: lld/trunk/test/COFF/Inputs/combined-resources-cursor.bmp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/Inputs/combined-resources-cursor.bmp?rev=306465&view=auto
==============================================================================
Binary file - no diff available.
Propchange: lld/trunk/test/COFF/Inputs/combined-resources-cursor.bmp
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: lld/trunk/test/COFF/Inputs/combined-resources-okay.bmp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/Inputs/combined-resources-okay.bmp?rev=306465&view=auto
==============================================================================
Binary file - no diff available.
Propchange: lld/trunk/test/COFF/Inputs/combined-resources-okay.bmp
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: lld/trunk/test/COFF/Inputs/combined-resources.rc
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/Inputs/combined-resources.rc?rev=306465&view=auto
==============================================================================
--- lld/trunk/test/COFF/Inputs/combined-resources.rc (added)
+++ lld/trunk/test/COFF/Inputs/combined-resources.rc Tue Jun 27 14:28:55 2017
@@ -0,0 +1,50 @@
+#include "windows.h"
+
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+
+myaccelerators ACCELERATORS
+{
+ "^C", 999, VIRTKEY, ALT
+ "D", 1100, VIRTKEY, CONTROL, SHIFT
+ "^R", 444, ASCII, NOINVERT
+}
+
+cursor BITMAP "combined-resources-cursor.bmp"
+okay BITMAP "combined-resources-okay.bmp"
+
+14432 MENU
+LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
+{
+ MENUITEM "yu", 100
+ MENUITEM "shala", 101
+ MENUITEM "kaoya", 102
+}
+
+testdialog DIALOG 10, 10, 200, 300
+STYLE WS_POPUP | WS_BORDER
+CAPTION "Test"
+{
+ CTEXT "Continue:", 1, 10, 10, 230, 14
+ PUSHBUTTON "&OK", 2, 66, 134, 161, 13
+}
+
+12 ACCELERATORS
+{
+ "X", 164, VIRTKEY, ALT
+ "H", 5678, VIRTKEY, CONTROL, SHIFT
+ "^R", 444, ASCII, NOINVERT
+}
+
+"eat" MENU
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_AUS
+{
+ MENUITEM "fish", 100
+ MENUITEM "salad", 101
+ MENUITEM "duck", 102
+}
+
+
+myresource stringarray {
+ "this is a user defined resource\0",
+ "it contains many strings\0",
+}
Added: lld/trunk/test/COFF/Inputs/combined-resources.res
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/Inputs/combined-resources.res?rev=306465&view=auto
==============================================================================
Binary file - no diff available.
Propchange: lld/trunk/test/COFF/Inputs/combined-resources.res
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: lld/trunk/test/COFF/combined-resources.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/combined-resources.test?rev=306465&view=auto
==============================================================================
--- lld/trunk/test/COFF/combined-resources.test (added)
+++ lld/trunk/test/COFF/combined-resources.test Tue Jun 27 14:28:55 2017
@@ -0,0 +1,17 @@
+// Check that lld properly handles merging multiple .res files.
+// The inputs were generated with the following commands, using the original
+// Windows rc.exe
+// > rc /fo combined-resources.res /nologo combined-resources.rc
+// > rc /fo combined-resources-2.res /nologo combined-resources-2.rc
+
+# RUN: yaml2obj < %p/Inputs/ret42.yaml > %t.obj
+# RUN: lld-link /out:%t.exe /entry:main %t.obj %p/Inputs/resource.res \
+# RUN: %p/Inputs/combined-resources.res %p/Inputs/combined-resources-2.res
+
+# RUN: llvm-readobj -coff-resources -file-headers %t.exe | FileCheck %s
+
+
+CHECK: ResourceTableRVA: 0x1000
+CHECK-NEXT: ResourceTableSize: 0xC1C
+CHECK-DAG: Resources [
+CHECK-NEXT: Total Number of Resources: 13
Modified: lld/trunk/test/COFF/resource.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/resource.test?rev=306465&r1=306464&r2=306465&view=diff
==============================================================================
--- lld/trunk/test/COFF/resource.test (original)
+++ lld/trunk/test/COFF/resource.test Tue Jun 27 14:28:55 2017
@@ -6,7 +6,28 @@
EXE: {{H.e.l.l.o}}
-# RUN: llvm-readobj -file-headers %t.exe | FileCheck --check-prefix=HEADER %s
+# Verify the resource tree layout in the final executable.
+# RUN: llvm-readobj -file-headers -coff-resources %t.exe | FileCheck \
+# RUN: --check-prefix=RESOURCE_INFO %s
-HEADER: ResourceTableRVA: 0x1000
-HEADER: ResourceTableSize: 0x88
+RESOURCE_INFO: ResourceTableRVA: 0x1000
+RESOURCE_INFO-NEXT: ResourceTableSize: 0x88
+RESOURCE_INFO-DAG: Resources [
+RESOURCE_INFO-NEXT: Total Number of Resources: 1
+RESOURCE_INFO-NEXT: Base Table Address: 0x400
+RESOURCE_INFO-DAG: Number of String Entries: 0
+RESOURCE_INFO-NEXT: Number of ID Entries: 1
+RESOURCE_INFO-NEXT: Type: kRT_STRING (ID 6) [
+RESOURCE_INFO-NEXT: Table Offset: 0x18
+RESOURCE_INFO-NEXT: Number of String Entries: 0
+RESOURCE_INFO-NEXT: Number of ID Entries: 1
+RESOURCE_INFO-NEXT: Name: (ID 1) [
+RESOURCE_INFO-NEXT: Table Offset: 0x30
+RESOURCE_INFO-NEXT: Number of String Entries: 0
+RESOURCE_INFO-NEXT: Number of ID Entries: 1
+RESOURCE_INFO-NEXT: Language: (ID 1033) [
+RESOURCE_INFO-NEXT: Entry Offset: 0x48
+RESOURCE_INFO-NEXT: Time/Date Stamp: 1970-01-01 00:00:00 (0x0)
+RESOURCE_INFO-NEXT: Major Version: 0
+RESOURCE_INFO-NEXT: Minor Version: 0
+RESOURCE_INFO-NEXT: Characteristics: 0
More information about the llvm-commits
mailing list