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
60 lines
1.2 KiB
ArmAsm
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
|