Files
clang-p2996/lld/test/ELF/linkerscript/sort2.s
George Rimar 07171f21d1 [ELF] - Linkerscript: support complex section pattern grammar.
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
2016-09-21 15:56:44 +00:00

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