Files
clang-p2996/lld/test/ELF/linkerscript/include-cycle.s
Fangrui Song 8f72b0cb08 [ELF] Fix INCLUDE cycle detection
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.
2024-07-27 17:25:13 -07:00

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