diff options
-rw-r--r-- | runtime/GCCLibraries/crtend/crtend.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/runtime/GCCLibraries/crtend/crtend.c b/runtime/GCCLibraries/crtend/crtend.c index 69eac4ff98..50bbdb7081 100644 --- a/runtime/GCCLibraries/crtend/crtend.c +++ b/runtime/GCCLibraries/crtend/crtend.c @@ -34,8 +34,12 @@ void __main(void) { /* Loop over all of the constructor records, calling each function pointer. */ TorRec *R = __llvm_getGlobalCtors(); - if (atexit(run_destructors)) - abort(); /* Should be able to install ONE atexit handler! */ + /* Only register the global dtor handler if there is at least one global + * dtor! + */ + if (__llvm_getGlobalDtors()[0].FP) + if (atexit(run_destructors)) + abort(); /* Should be able to install ONE atexit handler! */ /* FIXME: This should sort the list by priority! */ for (; R->FP; ++R) |