[PATCH] D110490: [ELF] Support symbol names with space in linker script expressions

Fangrui Song via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 27 09:50:51 PDT 2021


This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
MaskRay marked an inline comment as not done.
Closed by commit rG2bf06d9345ca: [ELF] Support symbol names with space in linker script expressions (authored by MaskRay).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D110490/new/

https://reviews.llvm.org/D110490

Files:
  lld/ELF/ScriptParser.cpp
  lld/test/ELF/linkerscript/symbol-name.test


Index: lld/test/ELF/linkerscript/symbol-name.test
===================================================================
--- lld/test/ELF/linkerscript/symbol-name.test
+++ lld/test/ELF/linkerscript/symbol-name.test
@@ -1,5 +1,5 @@
 # REQUIRES: x86
-## Test that ., $ and " can be used by symbol names in expressions.
+## Test that ., $, space and " can be used by symbol names in expressions.
 
 # RUN: llvm-mc -filetype=obj -triple=x86_64 /dev/null -o %t.o
 # RUN: ld.lld -T %s %t.o -o %t
@@ -8,8 +8,10 @@
 # CHECK:      Value            Size Type   Bind   Vis     Ndx Name
 # CHECK-DAG:  0000000000000000    0 NOTYPE GLOBAL DEFAULT ABS a1
 # CHECK-DAG:  0000000000000000    0 NOTYPE GLOBAL DEFAULT ABS a0
-# CHECK-DAG:  0000000000000003    0 NOTYPE GLOBAL DEFAULT ABS a2
+# CHECK-DAG:  0000000000000003    0 NOTYPE GLOBAL DEFAULT ABS a 2
+# CHECK-DAG:  0000000000000004    0 NOTYPE GLOBAL DEFAULT ABS a 3
 
 a0 = DEFINED(.TOC.) ? .TOC. : 0;
 "a1" = DEFINED(__global_pointer$) ? __global_pointer$ : 0;
-"a2" = DEFINED("a1") ? "a1" + 3 : 0;
+"a 2" = DEFINED("a1") ? "a1" + 3 : 0;
+"a 3" = "a 2" + 1;
Index: lld/ELF/ScriptParser.cpp
===================================================================
--- lld/ELF/ScriptParser.cpp
+++ lld/ELF/ScriptParser.cpp
@@ -1429,8 +1429,9 @@
     return [=] { return *val; };
 
   // Tok is a symbol name.
-  tok = unquote(tok);
-  if (!isValidSymbolName(tok))
+  if (tok.startswith("\""))
+    tok = unquote(tok);
+  else if (!isValidSymbolName(tok))
     setError("malformed number: " + tok);
   script->referencedSymbols.push_back(tok);
   return [=] { return script->getSymbolValue(tok, location); };


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D110490.375313.patch
Type: text/x-patch
Size: 1640 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210927/0fe8d5a4/attachment.bin>


More information about the llvm-commits mailing list