forked from OSchip/llvm-project
[objc-gnustep] Use .init_array not .ctors when requested.
This doesn't make a difference most of the time but FreeBSD/ARM doesn't run anything in the .ctors array. llvm-svn: 357362
This commit is contained in:
parent
a2ed448bf2
commit
0e9e02cd72
|
@ -1514,7 +1514,12 @@ class CGObjCGNUstep2 : public CGObjCGNUstep {
|
||||||
if (CGM.getTriple().isOSBinFormatCOFF())
|
if (CGM.getTriple().isOSBinFormatCOFF())
|
||||||
InitVar->setSection(".CRT$XCLz");
|
InitVar->setSection(".CRT$XCLz");
|
||||||
else
|
else
|
||||||
InitVar->setSection(".ctors");
|
{
|
||||||
|
if (CGM.getCodeGenOpts().UseInitArray)
|
||||||
|
InitVar->setSection(".init_array");
|
||||||
|
else
|
||||||
|
InitVar->setSection(".ctors");
|
||||||
|
}
|
||||||
InitVar->setVisibility(llvm::GlobalValue::HiddenVisibility);
|
InitVar->setVisibility(llvm::GlobalValue::HiddenVisibility);
|
||||||
InitVar->setComdat(TheModule.getOrInsertComdat(".objc_ctor"));
|
InitVar->setComdat(TheModule.getOrInsertComdat(".objc_ctor"));
|
||||||
CGM.addUsedGlobal(InitVar);
|
CGM.addUsedGlobal(InitVar);
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
// RUN: %clang_cc1 -triple x86_64-unknown-freebsd -S -emit-llvm -fobjc-runtime=gnustep-2.0 -o - %s | FileCheck %s -check-prefix=CHECK-NEW
|
// RUN: %clang_cc1 -triple x86_64-unknown-freebsd -S -emit-llvm -fobjc-runtime=gnustep-2.0 -o - %s | FileCheck %s -check-prefix=CHECK-NEW
|
||||||
// RUN: %clang_cc1 -triple x86_64-pc-windows-msvc -S -emit-llvm -fobjc-runtime=gnustep-2.0 -o - %s | FileCheck %s -check-prefix=CHECK-WIN
|
// RUN: %clang_cc1 -triple x86_64-pc-windows-msvc -S -emit-llvm -fobjc-runtime=gnustep-2.0 -o - %s | FileCheck %s -check-prefix=CHECK-WIN
|
||||||
// RUN: %clang_cc1 -triple x86_64-unknown-freebsd -S -emit-llvm -fobjc-runtime=gnustep-1.8 -o - %s | FileCheck %s -check-prefix=CHECK-OLD
|
// RUN: %clang_cc1 -triple x86_64-unknown-freebsd -S -emit-llvm -fobjc-runtime=gnustep-1.8 -o - %s | FileCheck %s -check-prefix=CHECK-OLD
|
||||||
|
// RUN: %clang_cc1 -triple x86_64-unknown-freebsd -fuse-init-array -S -emit-llvm -fobjc-runtime=gnustep-2.0 -o - %s | FileCheck %s -check-prefix=CHECK-INIT_ARRAY
|
||||||
|
|
||||||
// Almost minimal Objective-C file, check that it emits calls to the correct
|
// Almost minimal Objective-C file, check that it emits calls to the correct
|
||||||
// runtime entry points.
|
// runtime entry points.
|
||||||
|
@ -39,6 +40,7 @@
|
||||||
|
|
||||||
// Check that the load function is manually inserted into .ctors.
|
// Check that the load function is manually inserted into .ctors.
|
||||||
// CHECK-NEW: @.objc_ctor = linkonce hidden constant void ()* @.objcv2_load_function, section ".ctors", comdat
|
// CHECK-NEW: @.objc_ctor = linkonce hidden constant void ()* @.objcv2_load_function, section ".ctors", comdat
|
||||||
|
// CHECK-INIT_ARRAY: @.objc_ctor = linkonce hidden constant void ()* @.objcv2_load_function, section ".init_array", comdat
|
||||||
|
|
||||||
|
|
||||||
// Make sure that we provide null versions of everything so the __start /
|
// Make sure that we provide null versions of everything so the __start /
|
||||||
|
|
Loading…
Reference in New Issue