Files
clang-p2996/lld/test/ELF/section-layout.s
Rafael Espindola d23e9267a6 Order writable executable sections before writable ones.
On SPARC, .plt is both writeable and executable. The current way
sections are sorted means that lld puts it after .data/.bss. but it
really needs to be close to .test to make sure branches into .plt
don't overflow. I'd argue that because .bss is supposed to come last
on all architectures, we should change the default sort order such
that writable and executable sections come before sections that are
just writeable. read-only executable sections should still come after
sections that are just read-only of course. This diff makes this
change.

llvm-svn: 304008
2017-05-26 17:23:25 +00:00

60 lines
1.2 KiB
ArmAsm

# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
# RUN: ld.lld %t -o %tout
# RUN: llvm-readobj -sections %tout | FileCheck %s
# REQUIRES: x86
# Check that sections are laid out in the correct order.
.global _start
.text
_start:
.section t,"x",@nobits
.section s,"x"
.section r,"w",@nobits
.section q,"w"
.section p,"wx",@nobits
.section o,"wx"
.section n,"",@nobits
.section m,""
.section l,"awx",@nobits
.section k,"awx"
.section j,"aw",@nobits
.section i,"aw"
.section g,"awT",@nobits
.section e,"awT"
.section d,"ax",@nobits
.section c,"ax"
.section b,"a",@nobits
.section a,"a"
// CHECK: Name: a
// CHECK: Name: b
// CHECK: Name: c
// CHECK: Name: d
// Sections that are both writable and executable appear before
// sections that are only writable.
// CHECK: Name: k
// CHECK: Name: l
// Writable sections appear before TLS and other relro sections.
// CHECK: Name: i
// TLS sections are only sorted on NOBITS.
// CHECK: Name: e
// CHECK: Name: g
// CHECK: Name: j
// Non allocated sections are in input order.
// CHECK: Name: t
// CHECK: Name: s
// CHECK: Name: r
// CHECK: Name: q
// CHECK: Name: p
// CHECK: Name: o
// CHECK: Name: n
// CHECK: Name: m