]> granicus.if.org Git - clang/commitdiff
[Driver] Don't enable "-fregister-global-dtors-with-atexit" by default
authorAkira Hatanaka <ahatanaka@apple.com>
Fri, 27 Apr 2018 01:42:33 +0000 (01:42 +0000)
committerAkira Hatanaka <ahatanaka@apple.com>
Fri, 27 Apr 2018 01:42:33 +0000 (01:42 +0000)
when compiling the kernel or kexts.

Destructors should be registered with atexit by default only when we are
compiling userland code.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@331010 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Driver/ToolChains/Clang.cpp
test/Driver/cxa-atexit.cpp

index 6c5e2caae4acda894f3fc4a72bd84cb89403cffe..5751ceac7107c2c8a85b359e49d5051a21d45139 100644 (file)
@@ -4194,7 +4194,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
 
   if (Args.hasFlag(options::OPT_fregister_global_dtors_with_atexit,
                    options::OPT_fno_register_global_dtors_with_atexit,
-                   RawTriple.isOSDarwin()))
+                   RawTriple.isOSDarwin() && !KernelOrKext))
     CmdArgs.push_back("-fregister-global-dtors-with-atexit");
 
   // -fms-extensions=0 is default.
index 56d25520234cdd18c85a8174f9152366718680a4..cc5f68b9a474d87563bf69e47b4f7e952b51cc9f 100644 (file)
@@ -31,6 +31,8 @@
 // RUN: FileCheck --check-prefix=WITHATEXIT %s
 // RUN: %clang -target x86_64-apple-darwin -c -### %s 2>&1 | \
 // RUN: FileCheck --check-prefix=WITHATEXIT %s
+// RUN: %clang -target x86_64-apple-darwin -c -mkernel -### %s 2>&1 | \
+// RUN: FileCheck --check-prefix=WITHOUTATEXIT %s
 // RUN: %clang -target x86_64-pc-linux-gnu -fregister-global-dtors-with-atexit -fno-register-global-dtors-with-atexit -c -### %s 2>&1 | \
 // RUN: FileCheck --check-prefix=WITHOUTATEXIT %s
 // RUN: %clang -target x86_64-pc-linux-gnu -fno-register-global-dtors-with-atexit -fregister-global-dtors-with-atexit -c -### %s 2>&1 | \