From 9dc5f5cd81a0ca8653b4e12bc457259547735a7d Mon Sep 17 00:00:00 2001
From: geoffk <geoffk@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Wed, 5 Apr 2006 00:53:55 +0000
Subject: [PATCH] 	* config/darwin-crt3.c (atexit): Pass &__dso_handle
 rather than 	NULL for dso parameter to atexit_common.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@112692 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/ChangeLog            | 5 +++++
 gcc/config/darwin-crt3.c | 6 +++++-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3c2059ad6490..98a9a52de2b6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2006-04-04  Geoffrey Keating  <geoffk@apple.com>
+
+	* config/darwin-crt3.c (atexit): Pass &__dso_handle rather than
+	NULL for dso parameter to atexit_common.
+
 2006-04-04  Eric Christopher  <echristo@apple.com>
 
 	* config/i386/i386.c (machopic_output_stub): Output \t
diff --git a/gcc/config/darwin-crt3.c b/gcc/config/darwin-crt3.c
index 1cbb4b5fc2da..65b766369eeb 100644
--- a/gcc/config/darwin-crt3.c
+++ b/gcc/config/darwin-crt3.c
@@ -518,11 +518,15 @@ __cxa_atexit (cxa_atexit_callback func, void* arg, const void* dso)
 
 int atexit (atexit_callback func) __attribute__((visibility("hidden")));
 
+/* Use __dso_handle to allow even bundles that call atexit() to be unloaded
+   on 10.4.  */
+extern void __dso_handle;
+
 int
 atexit (atexit_callback func)
 {
   struct one_atexit_routine r;
   r.callback.ac = func;
   r.has_arg = 0;
-  return atexit_common (&r, NULL);
+  return atexit_common (&r, &__dso_handle);
 }
-- 
GitLab