[libcxx-commits] [PATCH] D132769: [2b/3][ASan][libcxx] std::basic_string annotations
Tacet via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Thu Feb 16 12:11:00 PST 2023
AdvenamTacet added inline comments.
================
Comment at: libcxx/include/string:1644-1655
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_STRING_INTERNAL_MEMORY_ACCESS void
+ __raw_copy_r(basic_string& __dst, const basic_string& __src) _NOEXCEPT {
+ __dst.__r_.first().__r = __src.__r_.first().__r;
+ }
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_STRING_INTERNAL_MEMORY_ACCESS void
+ __raw_copy_l(basic_string& __dst, const basic_string& __src) _NOEXCEPT {
+ __dst.__r_.first().__l = __src.__r_.first().__l;
----------------
philnik wrote:
> AdvenamTacet wrote:
> > philnik wrote:
> > > Two of these are redundant. I've uploaded D132951 to remove the differences. Also, would it be possible to annotate the special member functions of `__rep` instead? I think adding `_LIBCPP_HIDE_FROM_ABI _LIBCPP_STRING_INTERNAL_MEMORY_ACCESS __rep(const __rep&) = default;` should do the trick.
> > > I think adding _LIBCPP_HIDE_FROM_ABI _LIBCPP_STRING_INTERNAL_MEMORY_ACCESS __rep(const __rep&) = default; should do the trick.
> >
> > No, because we can also write to poisoned memory.
> Yes, and why would that break if we annotate special member functions instead?
The solution seems to not work. Maybe it's inlined in an instrumented function and then it is instrumented as well (I didn't check the reason. I'm happy to test another solution, if you have an idea, how to make it work).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D132769/new/
https://reviews.llvm.org/D132769
More information about the libcxx-commits
mailing list