mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-27 19:56:06 +00:00

This adds the frontend support required to support the use of the comment pragma to enable auto linking on ELFish targets. This is a generic ELF extension supported by LLVM. We need to change the handling for the "dependentlib" in order to accommodate the previously discussed encoding for the dependent library descriptor. Without the custom handling of the PCK_Lib directive, the -l prefixed option would be encoded into the resulting object (which is treated as a frontend error). llvm-svn: 324438
34 lines
1.6 KiB
C
34 lines
1.6 KiB
C
// RUN: %clang_cc1 %s -triple i686-pc-win32 -fms-extensions -emit-llvm -o - | FileCheck %s
|
|
// RUN: %clang_cc1 %s -triple thumbv7-windows -fms-extensions -emit-llvm -o - | FileCheck %s
|
|
// RUN: %clang_cc1 %s -triple x86_64-pc-win32 -fms-extensions -emit-llvm -o - | FileCheck %s
|
|
// RUN: %clang_cc1 %s -triple thumbv7-linux-gnueabihf -fms-extensions -emit-llvm -o - | FileCheck -check-prefix LINUX %s
|
|
// RUN: %clang_cc1 %s -triple i686-pc-linux -fms-extensions -emit-llvm -o - | FileCheck -check-prefix LINUX %s
|
|
// RUN: %clang_cc1 %s -triple x86_64-scei-ps4 -fms-extensions -emit-llvm -o - | FileCheck -check-prefix PS4 %s
|
|
// RUN: %clang_cc1 %s -triple aarch64-windows-msvc -fms-extensions -emit-llvm -o - | FileCheck %s
|
|
|
|
#pragma comment(lib, "msvcrt.lib")
|
|
#pragma comment(lib, "kernel32")
|
|
#pragma comment(lib, "USER32.LIB")
|
|
#pragma comment(lib, "with space")
|
|
|
|
#define BAR "2"
|
|
#pragma comment(linker," /bar=" BAR)
|
|
#pragma comment(linker," /foo=\"foo bar\"")
|
|
|
|
// CHECK: !llvm.linker.options = !{![[msvcrt:[0-9]+]], ![[kernel32:[0-9]+]], ![[USER32:[0-9]+]], ![[space:[0-9]+]], ![[bar:[0-9]+]], ![[foo:[0-9]+]]}
|
|
// CHECK: ![[msvcrt]] = !{!"/DEFAULTLIB:msvcrt.lib"}
|
|
// CHECK: ![[kernel32]] = !{!"/DEFAULTLIB:kernel32.lib"}
|
|
// CHECK: ![[USER32]] = !{!"/DEFAULTLIB:USER32.LIB"}
|
|
// CHECK: ![[space]] = !{!"/DEFAULTLIB:\22with space.lib\22"}
|
|
// CHECK: ![[bar]] = !{!" /bar=2"}
|
|
// CHECK: ![[foo]] = !{!" /foo=\22foo bar\22"}
|
|
|
|
// LINUX: !{!"lib", !"msvcrt.lib"}
|
|
// LINUX: !{!"lib", !"kernel32"}
|
|
// LINUX: !{!"lib", !"USER32.LIB"}
|
|
|
|
// PS4: !{!"\01msvcrt.lib"}
|
|
// PS4: !{!"\01kernel32"}
|
|
// PS4: !{!"\01USER32.LIB"}
|
|
// PS4: !{!"\01\22with space\22"}
|