This is PR30442.
Previously we were failed to parce complex expressions like:
foo : { *(SORT_BY_NAME(bar) zed) }
Main idea of patch that globs and excludes can be wrapped in a SORT.
There is a difference in semanics of ld/gold:
ld likes:
*(SORT(EXCLUDE_FILE (*file1.o) .foo.1))
gold likes:
*(EXCLUDE_FILE (*file1.o) SORT(.foo.1))
Patch implements ld grammar, complex expressions like
next is not a problem anymore:
.abc : { *(SORT(.foo.* EXCLUDE_FILE (*file1.o) .bar.*) .bar.*) }
Differential revision: https://reviews.llvm.org/D24758
llvm-svn: 282078
40 lines
880 B
ArmAsm
40 lines
880 B
ArmAsm
# REQUIRES: x86
|
|
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %tfile1.o
|
|
|
|
# RUN: echo "SECTIONS { .abc : { *(SORT(.foo.*) .bar.*) } }" > %t1.script
|
|
# RUN: ld.lld -o %t1 --script %t1.script %tfile1.o
|
|
# RUN: llvm-objdump -s %t1 | FileCheck %s
|
|
|
|
# CHECK: Contents of section .abc:
|
|
# CHECK: 00e8 01000000 00000000 02000000 00000000
|
|
# CHECK: 00f8 03000000 00000000 04000000 00000000
|
|
# CHECK: 0108 06000000 00000000 05000000 00000000
|
|
|
|
# RUN: echo "SECTIONS { \
|
|
# RUN: .abc : { *(SORT(.foo.* EXCLUDE_FILE (*file1.o) .bar.*) .bar.*) } \
|
|
# RUN: }" > %t2.script
|
|
# RUN: ld.lld -o %t2 --script %t2.script %tfile1.o
|
|
# RUN: llvm-objdump -s %t2 | FileCheck %s
|
|
|
|
.text
|
|
.globl _start
|
|
_start:
|
|
|
|
.section .foo.2,"a"
|
|
.quad 2
|
|
|
|
.section .foo.3,"a"
|
|
.quad 3
|
|
|
|
.section .foo.1,"a"
|
|
.quad 1
|
|
|
|
.section .bar.4,"a"
|
|
.quad 4
|
|
|
|
.section .bar.6,"a"
|
|
.quad 6
|
|
|
|
.section .bar.5,"a"
|
|
.quad 5
|