[lld] d60ef93 - [ELF] Support quoted output section names
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Fri Feb 3 11:03:06 PST 2023
Author: Fangrui Song
Date: 2023-02-03T11:03:00-08:00
New Revision: d60ef9338deb734541ff1c9d0771807815d5d9e6
URL: https://github.com/llvm/llvm-project/commit/d60ef9338deb734541ff1c9d0771807815d5d9e6
DIFF: https://github.com/llvm/llvm-project/commit/d60ef9338deb734541ff1c9d0771807815d5d9e6.diff
LOG: [ELF] Support quoted output section names
Similar to e7a7ad134fe182aad190cb3ebc441164470e92f5 and
2bf06d9345caeb26520be8e830c092683bbdf0f7 for other linker script syntax.
Close https://github.com/llvm/llvm-project/issues/60496
Added:
Modified:
lld/ELF/ScriptParser.cpp
lld/test/ELF/linkerscript/quoted-section-name.test
Removed:
################################################################################
diff --git a/lld/ELF/ScriptParser.cpp b/lld/ELF/ScriptParser.cpp
index bb09bde5d22ef..e83779bcebff5 100644
--- a/lld/ELF/ScriptParser.cpp
+++ b/lld/ELF/ScriptParser.cpp
@@ -900,7 +900,8 @@ OutputDesc *ScriptParser::readOverlaySectionDescription() {
}
OutputDesc *ScriptParser::readOutputSectionDescription(StringRef outSec) {
- OutputDesc *cmd = script->createOutputSection(outSec, getCurrentLocation());
+ OutputDesc *cmd =
+ script->createOutputSection(unquote(outSec), getCurrentLocation());
OutputSection *osec = &cmd->osec;
// Maybe relro. Will reset to false if DATA_SEGMENT_RELRO_END is absent.
osec->relro = seenDataAlign && !seenRelroEnd;
diff --git a/lld/test/ELF/linkerscript/quoted-section-name.test b/lld/test/ELF/linkerscript/quoted-section-name.test
index aa675759631c0..43e8fd047f170 100644
--- a/lld/test/ELF/linkerscript/quoted-section-name.test
+++ b/lld/test/ELF/linkerscript/quoted-section-name.test
@@ -1,13 +1,21 @@
# REQUIRES: x86
## Handling of quotes is tricky sometimes. Check we do that right and include
-## "foo bar" section into .data as expected.
+## "foo bar" section into ".data foo" 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
+# RUN: echo '.section "foo bar", "aw"; nop' | llvm-mc -filetype=obj -triple=x86_64 - -o %t.o
+# RUN: ld.lld %t.o --script %s -o %t --print-map | FileCheck %s
+# RUN: llvm-readelf -S %t | FileCheck %s --check-prefix=SEC
+# CHECK: .data foo
# CHECK-NEXT: {{.*}}(foo bar)
+# SEC: ]{{ }}.data foo
+# SEC: ]{{ }}.data bar
+
SECTIONS {
- .data : { *("foo bar") }
+ " .data foo" : { *("foo bar") }
+}
+
+OVERWRITE_SECTIONS {
+ " .data bar" : { bar = .; }
}
More information about the llvm-commits
mailing list