std::bad_array_length was added by n3467, but this never made it into C++.
This commit removes the definition of std::bad_array_length from the headers
AND from the shared library. See the comments in the ABI changelog for details
about the ABI implications of this change.
Details
Diff Detail
- Repository
- rCXX libc++
Event Timeline
If we have shipped this in libc++abi.dylib, we need to continue supporting it for bincompat of existing apps.
I don't think it's possible for any application to actually use the symbols, as they were marked as unavailable on Darwin. It would technically be possible for an application to depend on the symbol by e.g. forward-declaring it themselves, but I think it is quite unlikely this has ever happened, especially for something that was not even standardized. The same reasoning applies to symbols that we have been exporting "by mistake" through implicit instantiations of function templates that were not marked as hidden. We're comfortable removing such symbols because nobody could depend on those symbols being part of the dylib, except if they _really_ tried hard (by forward declaring the function template and using an explicit instantiation declaration with default visibility).
I think I added that markup later though. What was the setup for applications built before that markup was there?
(Agreed that we don't think there are people that added their own declarations.)
libcxx/lib/abi/CHANGELOG.TXT | ||
---|---|---|
23 ↗ | (On Diff #174947) | If the symbols really didn't ship until that late, then we may be okay. |
Louis confirmed that we had the unavailable in place before shipping the symbols. This LGTM from our perspective, but do other vendors have comments?
I'd like to merge this early in the cycle to give vendors the chance to notice failures in case there are any (but we don't expect that to happen given our investigation). I'll merge this now because I'm not aware of any other vendor that could be worried by this (and so the waiting time implied by Duncan's question above is potentially unbounded). However, if anyone has concerns, please comment here and I'll insta-revert until we've come to an agreement.