Date: Fri, 12 Dec 2003 19:52:47 +0100 From: Alexander Leidinger <Alexander@Leidinger.net> To: arch@freebsd.org Cc: freebsd-standards@FreeBSD.org Subject: Patch to support the C++ DSO Object Destruction API (PR 59552) Message-ID: <20031212195247.4ff07669.Alexander@Leidinger.net>
next in thread | raw e-mail | index | archive | help
Hi, can someone please look at PR 59552 (author CCed)? I quote the description of the PR here: ---snip--- Below is a test-case and patch to support the cross-vendor C++ DSO Object Destruction API used by GCC 3.x and the Intel C/C++ compilers, defined at http://www.codesourcery.com/cxx-abi/abi.html#dso-dtor Here is a quote from the web-page, describing the motivation/rationale behind this API: The C++ Standard requires that destructors be called for global objects when a program exits in the opposite order of construction. Most implementations have handled this by calling the C library atexit(3) routine to register the destructors. This is problematic because the 1999 C Standard only requires that the implementation support 32 register function, although most implementations support many more. More important, it does not deal at all with the ability in most implementations to remove DSOs (dynamic shared objects) from a running program image by calling dlclose(3) prior to program termination. The API specified below is intended to provide standard-conforming treatment during normal program exit, which includes executing atexit(3)-registered functions in the correct sequence relative to constructor-registered destructors, and reasonable treatment during early DSO unload (e.g. dlclose(3)). ---snip--- I don't know which list is more appropriate, so please decide on your own (I'm not subscribed to the standards list, so please CC me if you follow up to it only). I haven't tested it yet, but I will test it with icc as soon as I get time. Bye, Alexander. -- http://www.Leidinger.net Alexander @ Leidinger.net GPG fingerprint = C518 BC70 E67F 143F BE91 3365 79E2 9C60 B006 3FE7
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20031212195247.4ff07669.Alexander>