On 12/17/14 1:12 PM, Dan Albert wrote:
On Wed, Dec 17, 2014 at 11:57 AM, Jonathan Roelofs <
[email protected]> wrote:

================
Comment at: test/cxa_thread_atexit_test.cpp:15
@@ +14,3 @@
+
+extern "C" int __cxa_thread_atexit_impl(void (*dtor)(void *), void *obj,
+                                        void *dso_symbol) {
----------------
What about when the libc provides this symbol? Is it normally weak?


The dynamic linker satisfies the symbol from the main executable first,
even if there is a strong symbol in another shared object.
Hm. What about with statically linked libc?



================
Comment at: test/cxa_thread_atexit_test.cpp:16
@@ +15,3 @@
+extern "C" int __cxa_thread_atexit_impl(void (*dtor)(void *), void *obj,
+                                        void *dso_symbol) {
+  assert(dtor == reinterpret_cast<void (*)(void *)>(1));
----------------
to have the same signature, this needs throw().


This is the _impl function, which doesn't have the throw() specifier (since
it's C code). I suppose the throw() on the non-impl version of this is
actually unnecessary since it's in extern "C". I had just match the Apple
functions above my decl in cxxabi.h.
Ah, right.


--
Jon Roelofs
[email protected]
CodeSourcery / Mentor Embedded
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to