Skip site navigation (1)Skip section navigation (2)
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>