[lld] r342206 - [COFF] Allow embedded directives to be separated by null bytes

Martin Storsjo via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 13 23:08:56 PDT 2018


Author: mstorsjo
Date: Thu Sep 13 23:08:56 2018
New Revision: 342206

URL: http://llvm.org/viewvc/llvm-project?rev=342206&view=rev
Log:
[COFF] Allow embedded directives to be separated by null bytes

The PE spec says that they will be separated by spaces, but link.exe
handles it just fine if they are separated by null bytes as well.

This adds tests to the lld repo, with the actual functional change
in LLVM in SVN r342204.

Differential Revision: https://reviews.llvm.org/D52014

Added:
    lld/trunk/test/COFF/directives.s

Added: lld/trunk/test/COFF/directives.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/directives.s?rev=342206&view=auto
==============================================================================
--- lld/trunk/test/COFF/directives.s (added)
+++ lld/trunk/test/COFF/directives.s Thu Sep 13 23:08:56 2018
@@ -0,0 +1,46 @@
+# REQUIRES: x86
+
+# RUN: llvm-mc -triple=x86_64-windows %s -filetype=obj -o %t.obj
+
+# RUN: lld-link -dll -out:%t.dll -entry:entry %t.obj -subsystem:console
+# RUN: llvm-objdump -p %t.dll | FileCheck %s
+
+# CHECK:      Export Table:
+# CHECK:      DLL name: directives.s.tmp.dll
+# CHECK:      Ordinal      RVA  Name
+# CHECK-NEXT:       0        0
+# CHECK-NEXT:       1   0x1000  exportfn1
+# CHECK-NEXT:       2   0x1000  exportfn2
+# CHECK-NEXT:       3   0x1000  exportfn3
+# CHECK-NEXT:       4   0x1000  exportfn4
+# CHECK-NEXT:       5   0x1000  exportfn5
+# CHECK-NEXT:       6   0x1000  exportfn6
+
+  .global entry
+  .global exportfn1
+  .global exportfn2
+  .global exportfn3
+  .global exportfn4
+  .global exportfn5
+  .global exportfn6
+  .text
+entry:
+exportfn1:
+exportfn2:
+exportfn3:
+exportfn4:
+exportfn5:
+exportfn6:
+  ret
+  .section .drectve
+# Test that directive strings can be separated by any combination of
+# spaces and null bytes.
+  .ascii "-export:exportfn1 "
+  .asciz "-export:exportfn2"
+  .asciz "-export:exportfn3"
+  .asciz "-export:exportfn4 "
+  .byte 0
+  .ascii " "
+  .byte 0
+  .asciz "-export:exportfn5"
+  .asciz " -export:exportfn6"




More information about the llvm-commits mailing list