| # REQUIRES: x86 |
| ## Test that we allow SHF_LINK_ORDER sections with sh_link=0. |
| ## SHF_LINK_ORDER sections with sh_link!=0 are ordered before others. |
| # RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o |
| # RUN: ld.lld %t.o -o %t |
| # RUN: llvm-readelf -S -x .linkorder %t | FileCheck %s |
| |
| # CHECK: [Nr] Name {{.*}} Size ES Flg Lk Inf |
| # CHECK-NEXT: [ 0] {{.*}} |
| # CHECK-NEXT: [ 1] .linkorder {{.*}} 000004 00 AL 3 0 |
| # CHECK-NEXT: [ 2] .ignore {{.*}} |
| # CHECK-NEXT: [ 3] .text {{.*}} |
| |
| # CHECK: Hex dump of section '.linkorder': |
| # CHECK-NEXT: [[#%x,ADDR:]] 01020003 |
| |
| # RUN: llvm-mc --filetype=obj -triple=x86_64 --defsym EXTRA=1 %s -o %t.o |
| # RUN: ld.lld %t.o -o %t1 |
| # RUN: llvm-readelf -S -x .linkorder %t1 | FileCheck %s --check-prefix=CHECK1 |
| |
| # CHECK1: [Nr] Name {{.*}} Size ES Flg Lk Inf |
| # CHECK1-NEXT: [ 0] {{.*}} |
| # CHECK1-NEXT: [ 1] .linkorder {{.*}} 000005 00 AL 2 0 |
| # CHECK1-NEXT: [ 2] .text {{.*}} |
| |
| # CHECK1: Hex dump of section '.linkorder': |
| # CHECK1-NEXT: [[#%x,ADDR:]] 01020004 03 |
| |
| .section .text,"ax",@progbits,unique,0 |
| .Ltext0: |
| .section .text,"ax",@progbits,unique,1 |
| .Ltext1: |
| .section .linkorder,"ao",@progbits,0,unique,0 |
| .byte 0 |
| .section .linkorder,"ao",@progbits,.Ltext0 |
| .byte 1 |
| .section .linkorder,"ao",@progbits,.Ltext1 |
| .byte 2 |
| |
| .ifdef EXTRA |
| .section .linkorder,"a",@progbits |
| .byte 4 |
| .else |
| .section .ignore,"ao",@progbits,.Ltext1 |
| .endif |
| |
| .section .linkorder,"ao",@progbits,0,unique,3 |
| .byte 3 |