Fix #93947: the cycle detection mechanism added by https://reviews.llvm.org/D37524 also disallowed including a file twice, which is an unnecessary limitation. Now that we have an include stack #100493, supporting multiple inclusion is trivial. Note: a filename can be referenced with many different paths, e.g. a.lds, ./a.lds, ././a.lds. We don't attempt to detect the cycle in the earliest point.
33 lines
791 B
ArmAsm
33 lines
791 B
ArmAsm
# REQUIRES: x86
|
|
# RUN: rm -rf %t && split-file %s %t && cd %t
|
|
# RUN: llvm-mc -filetype=obj -triple=x86_64 a.s -o a.o
|
|
|
|
# RUN: not ld.lld a.o -T 1.lds 2>&1 | FileCheck %s --check-prefix=ERR1
|
|
# ERR1: error: 1.lds:1: there is a cycle in linker script INCLUDEs
|
|
|
|
# RUN: not ld.lld a.o -T 2a.lds 2>&1 | FileCheck %s --check-prefix=ERR2
|
|
# ERR2: error: 2b.lds:1: there is a cycle in linker script INCLUDEs
|
|
|
|
# RUN: ld.lld a.o -T 3.lds -o 3
|
|
# RUN: llvm-objdump -s 3 | FileCheck %s --check-prefix=CHECK3
|
|
# CHECK3: Contents of section foo:
|
|
# CHECK3-NEXT: 0000 2a2a **
|
|
|
|
#--- 0.lds
|
|
BYTE(42)
|
|
#--- 1.lds
|
|
INCLUDE "1.lds"
|
|
#--- 2a.lds
|
|
INCLUDE "2b.lds"
|
|
#--- 2b.lds
|
|
INCLUDE "2a.lds"
|
|
#--- 3.lds
|
|
SECTIONS {
|
|
foo : { INCLUDE "0.lds" INCLUDE "0.lds" }
|
|
}
|
|
|
|
#--- a.s
|
|
.globl _start
|
|
_start:
|
|
ret
|