[LLVMbugs] [Bug 20187] New: vtable layout of __func in <functional> is sensitive to RTTI settings
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Tue Jul 1 18:30:15 PDT 2014
http://llvm.org/bugs/show_bug.cgi?id=20187
Bug ID: 20187
Summary: vtable layout of __func in <functional> is sensitive
to RTTI settings
Product: libc++
Version: unspecified
Hardware: PC
OS: Windows NT
Status: NEW
Severity: normal
Priority: P
Component: All Bugs
Assignee: unassignedclangbugs at nondot.org
Reporter: rnk at google.com
CC: chandlerc at gmail.com, llvmbugs at cs.uiuc.edu,
mclow.lists at gmail.com
Classification: Unclassified
This segment of <funcitonal> is worrying:
virtual void destroy_deallocate() _NOEXCEPT;
virtual _Rp operator()(_ArgTypes&& ... __arg);
#ifndef _LIBCPP_NO_RTTI
virtual const void* target(const type_info&) const _NOEXCEPT;
virtual const std::type_info& target_type() const _NOEXCEPT;
#endif // _LIBCPP_NO_RTTI
};
What happens if an -frtti and -fno-rtti library both instantiate
std::function<void()> and then link together?
Chandler had some ideas about splitting __func in to __func and __func_rtti
which extends __func. If RTTI is enabled, we get an always inline
std::function ctor that builds a __func_rtti. If it is disabled, we get
__func. Only if we call std::function::target* do we static_cast the __func to
__func_rtti and call the virtual methods.
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20140702/986e1b61/attachment.html>
More information about the llvm-bugs
mailing list