12345678910111213141516171819202122232425262728293031323334353637383940 |
- /*
- Disallow some imports into and exports from libobjc.A.dylib.
- To debug, re-run libobjc's link command with
- -Xlinker -dead_strip -Xlinker -why_live -Xlinker SYMBOL_NAME_HERE
- Disallowed imports (nm -u):
- ___cxa_guard_acquire (C++ function-scope static initializer)
- ___cxa_guard_release (C++ function-scope static initializer)
- ___cxa_atexit (C++ static destructor)
- weak external (any weak externals, including operators new and delete)
- Whitelisted imports:
- weak external ____chkstk_darwin (from libSystem)
- Disallowed exports (nm -U):
- __Z* (any C++-mangled export)
- weak external (any weak externals, including operators new and delete)
- fixme rdar://13354718 should disallow anything from libc++ (i.e. not libc++abi)
- */
- /*
- TEST_BUILD
- echo $C{XCRUN} nm -m -arch $C{ARCH} $C{TESTLIB}
- $C{XCRUN} nm -u -m -arch $C{ARCH} $C{TESTLIB} | grep -v 'weak external ____chkstk_darwin \(from libSystem\)' | egrep '(weak external| external (___cxa_atexit|___cxa_guard_acquire|___cxa_guard_release))' || true
- $C{XCRUN} nm -U -m -arch $C{ARCH} $C{TESTLIB} | egrep '(weak external| external __Z)' || true
- $C{COMPILE_C} $DIR/imports.c -o imports.exe
- END
- TEST_BUILD_OUTPUT
- .*libobjc.A.dylib
- END
- */
- #include "test.h"
- int main()
- {
- succeed(__FILE__);
- }
|