diff --git a/runtime/GCCLibraries/crtend/crtend.c b/runtime/GCCLibraries/crtend/crtend.c index 69eac4ff988..50bbdb70814 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)