Index: lld/trunk/ELF/LinkerScript.h =================================================================== --- lld/trunk/ELF/LinkerScript.h +++ lld/trunk/ELF/LinkerScript.h @@ -146,7 +146,9 @@ // Also it may be surrounded with SORT() command, so contains sorting rules. struct SectionPattern { SectionPattern(StringMatcher &&Pat1, StringMatcher &&Pat2) - : ExcludedFilePat(Pat1), SectionPat(Pat2) {} + : ExcludedFilePat(Pat1), SectionPat(Pat2), + SortOuter(SortSectionPolicy::Default), + SortInner(SortSectionPolicy::Default) {} StringMatcher ExcludedFilePat; StringMatcher SectionPat; Index: lld/trunk/ELF/ScriptParser.cpp =================================================================== --- lld/trunk/ELF/ScriptParser.cpp +++ lld/trunk/ELF/ScriptParser.cpp @@ -854,7 +854,12 @@ } else if (peek() == "(") { Cmd->SectionCommands.push_back(readInputSectionDescription(Tok)); } else { - setError("unknown command " + Tok); + // We have a file name and no input sections description. It is not a + // commonly used syntax, but still acceptable. In that case, all sections + // from the file will be included. + InputSectionDescription *ISD = make(Tok); + ISD->SectionPatterns.push_back({{}, StringMatcher({"*"})}); + Cmd->SectionCommands.push_back(ISD); } } Index: lld/trunk/test/ELF/linkerscript/no-filename-spec.s =================================================================== --- lld/trunk/test/ELF/linkerscript/no-filename-spec.s +++ lld/trunk/test/ELF/linkerscript/no-filename-spec.s @@ -0,0 +1,17 @@ +# REQUIRES: x86 +# RUN: echo '.section .bar, "a"; .quad 1;' | \ +# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux - -o %tfile1.o +# RUN: echo '.section .zed, "a"; .quad 2;' | \ +# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux - -o %tfile2.o + +## We have a file name and no input sections description. In that case, all +## sections from the file specified should be included. Check that. +# RUN: ld.lld -o %t --script %s %tfile1.o %tfile2.o +# RUN: llvm-objdump -s %t | FileCheck %s + +# CHECK: Contents of section .foo: +# CHECK-NEXT: 01000000 00000000 02000000 00000000 + +SECTIONS { + .foo : { *file1.o *file2.o } +} Index: lld/trunk/test/ELF/linkerscript/sort.s =================================================================== --- lld/trunk/test/ELF/linkerscript/sort.s +++ lld/trunk/test/ELF/linkerscript/sort.s @@ -95,11 +95,6 @@ # RUN: ld.lld -o %t11 --script %t10.script %t2.o %t1.o # RUN: llvm-objdump -s %t11 | FileCheck -check-prefix=SORTED_A %s -## There is no SORTFOO command, check we handle it properly. -# RUN: echo "SECTIONS { .aaa : { SORTFOO } }" > %t3.script -# RUN: not ld.lld -o %t3 --script %t3.script %t1.o 2>&1 | FileCheck %s -check-prefix=SORTFOO -# SORTFOO: unknown command SORTFOO - .global _start _start: nop