reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
    1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63
   64
   65
   66
   67
   68
   69
   70
   71
   72
// REQUIRES:arm
// RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %S/Inputs/arm-vfp-arg-base.s -o %tbase.o
// RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %S/Inputs/arm-vfp-arg-vfp.s -o %tvfp.o
// RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %S/Inputs/arm-vfp-arg-toolchain.s -o %ttoolchain.o
// RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %S/Inputs/arm-vfp-arg-compat.s -o %tcompat.o
// RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %s -o %t.o

// The default for this file is 0 (Base AAPCS)
// RUN: ld.lld %t.o -o %tdefault
// RUN: llvm-readobj --file-headers %tdefault | FileCheck -check-prefix=CHECK-BASE %s

// Expect explicit Base AAPCS.
// RUN: ld.lld %t.o %tbase.o -o %tbase
// RUN: llvm-readobj --file-headers %tbase | FileCheck -check-prefix=CHECK-BASE %s

// Expect explicit Base AAPCS when linking Base and Compatible.
// RUN: ld.lld %t.o %tbase.o %tcompat.o -o %tbasecompat
// RUN: llvm-readobj --file-headers %tbasecompat | FileCheck -check-prefix=CHECK-BASE %s

// CHECK-BASE:   Flags [ (0x5000200)
// CHECK-BASE-NEXT:     0x200
// CHECK-BASE-NEXT:     0x1000000
// CHECK-BASE-NEXT:     0x4000000
// CHECK-BASE-NEXT:   ]

// Expect Hard float VFP AAPCS
// RUN: ld.lld %t.o %tvfp.o -o %tvfp
// RUN: llvm-readobj --file-headers %tvfp | FileCheck -check-prefix=CHECK-VFP %s

// Expect Hard float VFP AAPCS when linking VFP and Compatible
// RUN: ld.lld %t.o %tvfp.o %tcompat.o -o %tvfpcompat
// RUN: llvm-readobj --file-headers %tvfpcompat | FileCheck -check-prefix=CHECK-VFP %s

// CHECK-VFP:   Flags [ (0x5000400)
// CHECK-VFP-NEXT:     0x400
// CHECK-VFP-NEXT:     0x1000000
// CHECK-VFP-NEXT:     0x4000000
// CHECK-VFP-NEXT:   ]

// Expect Toolchain specifc to not use either Base or VFP AAPCS
// RUN: ld.lld %t.o %ttoolchain.o -o %ttoolchain
// RUN: llvm-readobj --file-headers %ttoolchain | FileCheck -check-prefix=CHECK-TOOLCHAIN %s

// Expect Toolchain and Compatible to have same affect as Toolchain.
// RUN: ld.lld %t.o %ttoolchain.o %tcompat.o -o %ttoolchaincompat
// RUN: llvm-readobj --file-headers %ttoolchaincompat | FileCheck -check-prefix=CHECK-TOOLCHAIN %s

// CHECK-TOOLCHAIN:   Flags [ (0x5000000)
// CHECK-TOOLCHAIN-NEXT:     0x1000000
// CHECK-TOOLCHAIN-NEXT:     0x4000000
// CHECK-TOOLCHAIN-NEXT:   ]

        .arch armv7-a
        .eabi_attribute 20, 1
        .eabi_attribute 21, 1
        .eabi_attribute 23, 3
        .eabi_attribute 24, 1
        .eabi_attribute 25, 1
        .eabi_attribute 26, 2
        .eabi_attribute 30, 6
        .eabi_attribute 34, 1
        .eabi_attribute 18, 4
        // We do not specify Tag_ABI_VFP_args (.eabi_attribute 28) in this file.
        // When omitted the value of the tag defaults to 0, however if there
        // are other files with explicit Tag_ABI_VFP_args we use that in
        // preference.


        .syntax unified
        .globl _start
        .type _start, %function
_start:  bx lr