This patch marks 3 symbols as hidden. The symbols are:
- ZNSt3110sscanf_lEPKcP15__locale_structS1_z
- _ZNSt3112asprintf_lEPPcP15__locale_structPKcz
- _ZNSt3112snprintf_lEPcmP15__locale_structPKcz
I used _LIBCPP_HIDDEN as opposed to _LIBCPP_INLINE_VISIBILITY because varargs functions cannot be inlined.
I used sym_check to ensure that these symbols are not already present in the system libraries for OS X 10.10 and FreeBSD 10.1. I don't know of any other platforms that require strict ABI compatibility. Playstation perhaps?
@danalbert: Will this change affect android? Can you check to see if these symbols have been shipped?
On linux these symbols are spuriously emitted into the DSO depending on the optimisation level.
See http://ds2.efcs.ca:8080/builders/abi-checker-debug/builds/5/steps/test.libcxx.abi.release/logs/stdio for an example of this problem.