| # REQUIRES: systemz |
| # RUN: llvm-mc -filetype=obj -triple=s390x-unknown-linux %p/Inputs/systemz-init.s -o systemz-init.o |
| # RUN: llvm-mc -filetype=obj -triple=s390x-unknown-linux %s -o %t.o |
| # RUN: ld.lld -dynamic-linker /lib/ld64.so.1 %t.o systemz-init.o -o %t |
| # RUN: llvm-objdump -d --no-show-raw-insn -j .init %t | FileCheck %s |
| |
| # glibc < 2.39 used to align .init and .fini code at a 4-byte boundary. |
| # When that happens, the linker must not pad the code with invalid |
| # instructions, e.g. null bytes. |
| .section .init,"ax",@progbits |
| brasl %r14, startup |
| |
| # CHECK: <.init>: |
| # CHECK-NEXT: brasl %r14, |
| # CHECK-NEXT: bcr 0, %r7 |
| # CHECK-NEXT: lg %r4, 272(%r15) |
| |
| .text |
| .globl startup |
| .p2align 4 |
| startup: |
| br %r14 |
| |
| .globl main |
| .p2align 4 |
| main: |
| br %r14 |