OSDN Git Service

Allow static C++ destructors to be properly called on dlclose().
authorDavid 'Digit' Turner <digit@google.com>
Fri, 18 Jun 2010 21:47:22 +0000 (14:47 -0700)
committerDavid 'Digit' Turner <digit@google.com>
Fri, 18 Jun 2010 23:07:10 +0000 (16:07 -0700)
commit6a9b888d7c4b246f6f66360789c72b754ff85021
treed27e4487c13f200d4cfe193f950e25a01efa7743
parent6a09cfd9f916e3a60de707ff0806cdeb143d77a4
Allow static C++ destructors to be properly called on dlclose().

With this patch, _and_ an upcoming build/ patch, the destruction
of static C++ objects contained in shared libraries will happen
properly when dlclose() is called.

Note that this change introduces crtbegin_so.S and crtend_so.S which
are currently ignored by the build system.

+ move definition of __dso_handle to the right place
  (before that, all shared libraries used the __dso_handle
   global variable from the C library).

  Note that we keep a 'weak' __dso_handle in aeabi.c to avoid
  breaking the build until the next patch to build/core/combo/
  appears. We will be able to remove that later.

+ move bionic/aeabi.c to arch-arm/bionic/ (its proper location)

Change-Id: Ie771aa204e3acbdf02fd30ebd4150373a1398f39
NOTE: The NDK will need to be modified to enable this feature in
      the shared libraries that are generated through it.
12 files changed:
libc/Android.mk
libc/arch-arm/bionic/crtbegin_dynamic.S
libc/arch-arm/bionic/crtbegin_so.S [new file with mode: 0644]
libc/arch-arm/bionic/crtbegin_static.S
libc/arch-arm/bionic/crtend_so.S [new file with mode: 0644]
libc/arch-arm/bionic/eabi.c [moved from libc/bionic/eabi.c with 83% similarity]
libc/arch-sh/bionic/crtbegin_dynamic.S
libc/arch-sh/bionic/crtbegin_static.S
libc/arch-x86/bionic/crtbegin_dynamic.S
libc/arch-x86/bionic/crtbegin_so.S
libc/arch-x86/bionic/crtbegin_static.S
libc/private/__dso_handle.S [new file with mode: 0644]