blob: db348f85b6b0013bdd1f0797d455d32d6ef293b7 [file] [edit]
// REQUIRES: aarch64
// RUN: split-file %s %t.dir && cd %t.dir
// RUN: llvm-mc -filetype=obj -triple=aarch64-windows test.s -o test-arm64.obj
// RUN: llvm-mc -filetype=obj -triple=arm64ec-windows test.s -o test-arm64ec.obj
// RUN: llvm-mc -filetype=obj -triple=aarch64-windows drectve.s -o drectve-arm64.obj
// RUN: llvm-mc -filetype=obj -triple=arm64ec-windows drectve.s -o drectve-arm64ec.obj
// Check that the -alternatename command-line argument applies only to the EC namespace.
// RUN: not lld-link -out:out.dll -machine:arm64x -dll -noentry test-arm64.obj test-arm64ec.obj -alternatename:sym=altsym \
// RUN: 2>&1 | FileCheck --check-prefix=ERR-NATIVE %s
// RUN: not lld-link -out:out.dll -machine:arm64ec -dll -noentry test-arm64.obj test-arm64ec.obj -alternatename:sym=altsym \
// RUN: 2>&1 | FileCheck --check-prefix=ERR-NATIVE %s
// ERR-NATIVE-NOT: test-arm64ec.obj
// ERR-NATIVE: lld-link: error: undefined symbol: sym (native symbol)
// ERR-NATIVE-NEXT: >>> referenced by test-arm64.obj:(.test)
// ERR-NATIVE-NOT: test-arm64ec.obj
// Check that the -alternatename .drectve directive applies only to the namespace in which it is defined.
// RUN: not lld-link -out:out.dll -machine:arm64x -dll -noentry test-arm64.obj test-arm64ec.obj drectve-arm64ec.obj \
// RUN: 2>&1 | FileCheck --check-prefix=ERR-NATIVE %s
// RUN: not lld-link -out:out.dll -machine:arm64ec -dll -noentry test-arm64.obj test-arm64ec.obj drectve-arm64ec.obj \
// RUN: 2>&1 | FileCheck --check-prefix=ERR-NATIVE %s
// RUN: not lld-link -out:out.dll -machine:arm64x -dll -noentry test-arm64.obj test-arm64ec.obj drectve-arm64.obj \
// RUN: 2>&1 | FileCheck --check-prefix=ERR-EC %s
// RUN: not lld-link -out:out.dll -machine:arm64ec -dll -noentry test-arm64.obj test-arm64ec.obj drectve-arm64.obj \
// RUN: 2>&1 | FileCheck --check-prefix=ERR-EC %s
// ERR-EC-NOT: test-arm64.obj
// ERR-EC: lld-link: error: undefined symbol: sym (EC symbol)
// ERR-EC-NEXT: >>> referenced by test-arm64ec.obj:(.test)
// ERR-EC-NOT: test-arm64.obj
// RUN: lld-link -out:out.dll -machine:arm64x -dll -noentry test-arm64.obj test-arm64ec.obj drectve-arm64.obj drectve-arm64ec.obj
#--- test.s
.section .test,"dr"
.rva sym
.data
.globl altsym
altsym:
.word 0
#--- drectve.s
.section .drectve
.ascii "-alternatename:sym=altsym"