| # REQUIRES: x86 | |
| # 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 | |
| # 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 a,"a",@nobits | |
| .section b,"a" | |
| // For non-executable and non-writable sections, PROGBITS appear after others. | |
| // 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 | |
| // TLS sections are only sorted on NOBITS. | |
| // CHECK: Name: e | |
| // CHECK: Name: g | |
| // Writable sections appear after TLS and other relro sections. | |
| // CHECK: Name: i | |
| // 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 |