Index: ELF/ScriptParser.cpp =================================================================== --- ELF/ScriptParser.cpp +++ ELF/ScriptParser.cpp @@ -636,7 +636,7 @@ std::vector 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)}); 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") } +}