[PATCH] D60901: [LLD][ELF] - Handle quoted strings in the linker scripts correctly

George Rimar via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 19 05:27:21 PDT 2019


grimar created this revision.
grimar added a reviewer: ruiu.
Herald added subscribers: MaskRay, arichardson, emaste.
Herald added a reviewer: espindola.

This is the https://bugs.llvm.org/show_bug.cgi?id=41356,

Seems it is kind of unusual case but it is possible to
have sections that require quotes for their namings.
Like "aaa bbb".

This patch adds support for those.


https://reviews.llvm.org/D60901

Files:
  ELF/ScriptParser.cpp
  test/ELF/linkerscript/quoted-section-name.test


Index: test/ELF/linkerscript/quoted-section-name.test
===================================================================
--- test/ELF/linkerscript/quoted-section-name.test
+++ test/ELF/linkerscript/quoted-section-name.test
@@ -0,0 +1,13 @@
+# REQUIRES: x86
+
+## Handling of quotes is tricky sometimes. Check we do that right and include
+## "foo bar" section into .data as expected.
+
+# RUN: echo ".section \"foo bar\", \"aw\"; nop" | llvm-mc -filetype=obj -triple=x86_64-pc-linux - -o %t
+# RUN: ld.lld %t --script %s -o %t2 --print-map | FileCheck %s
+# CHECK:      .data
+# CHECK-NEXT:   {{.*}}(foo bar)
+
+SECTIONS {
+  .data : { *("foo bar") }
+}
Index: ELF/ScriptParser.cpp
===================================================================
--- ELF/ScriptParser.cpp
+++ ELF/ScriptParser.cpp
@@ -636,7 +636,7 @@
 
     std::vector<StringRef> V;
     while (!errorCount() && peek() != ")" && peek() != "EXCLUDE_FILE")
-      V.push_back(next());
+      V.push_back(unquote(next()));
 
     if (!V.empty())
       Ret.push_back({std::move(ExcludeFilePat), StringMatcher(V)});


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D60901.195871.patch
Type: text/x-patch
Size: 1104 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190419/bc3c1ebd/attachment.bin>


More information about the llvm-commits mailing list