321222 |
19-Jul-2017 |
dim |
Pull in r229281 from upstream libc++ (by Larisse Voufo):
Implement C++14's sized deallocation functions, since there are no longer implicitly defined by clang, as of r229241.
This allows ports which use C++14's sized deallocation functions, such as cad/openvsp, to build on stable/10. Bump __FreeBSD_version to allow detection from ports.
Direct commit, since stable/11 and head already have newer versions of libc++ which include this change.
PR: 219484 |
318031 |
09-May-2017 |
dim |
MFC r317888 and two upstream prerequisites:
Pull in r227097 from upstream libc++ trunk (by Marshall Clow):
Fix PR21428. Buffer was one byte too small in octal formatting case. Add test
Pull in r268009 from upstream libc++ trunk (by Eric Fiselier):
Fix PR21428 for long. Buffer was one byte too small in octal formatting case. Rename previously added test
Pull in r302362 from upstream libc++ trunk (by me):
Ensure showbase does not overflow do_put buffers
Summary: In https://bugs.freebsd.org/207918, Daniel McRobb describes how using std::showbase with ostreams can cause truncation of unsigned long long when output format is octal. In fact, this can even happen with unsigned int and unsigned long.
To ensure this does not happen, add one additional character to the do_put buffers if std::showbase is on. Also add a test case.
Reviewers: EricWF, mclow.lists
Reviewed By: EricWF
Subscribers: cfe-commits, emaste
Differential Revision: https://reviews.llvm.org/D32670
PR: 207918 |
315915 |
24-Mar-2017 |
dim |
Pull in r283944 from upstream libc++ trunk (by Eric Fiselier):
Fix std::pair on FreeBSD
Summary: FreeBSD ships an old ABI for std::pair which requires that it have non-trivial copy/move constructors. Currently the non-trivial copy/move is achieved by providing explicit definitions of the constructors. This is problematic because it means the constructors don't SFINAE properly. In order to SFINAE copy/move constructors they have to be explicitly defaulted and hense non-trivial.
This patch attempts to provide SFINAE'ing copy/move constructors for std::pair while still making them non-trivial. It does this by adding a base class with a non-trivial copy constructor and then allowing pair's constructors to be generated by the compiler. This also allows the constructors to be constexpr.
Reviewers: emaste, theraven, rsmith, dim
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D25389
This should fix building www/chromium 57.0.2987.110 on stable/10 and stable/9 without having to use -D_LIBCPP_TRIVIAL_PAIR_COPY_CTOR=1 (which changes the ABI). Direct commit to stable/10 and stable/9, since head already has libc++ 4.0, which includes this fix. |
313916 |
18-Feb-2017 |
dim |
Pull in r242377 from upstream libc++ trunk (by Marshall Clow):
Make sure that __libcpp_compressed_pair_imp default-constructs its' members, rather than value-initializing them. Fixes PR#24137
This ensures std::make_shared<>'s default constructor properly initializes to zero.
Direct commit to stable/9 and stable/10, since stable/11 and head already have a newer version of libc++, including this fix.
Reported by: martin.beran@kernun.cz PR: 217200 |
308143 |
31-Oct-2016 |
dim |
Pull in r228705 from upstream libc++ trunk (by Eric Fiselier):
[libcxx] Fix PR 22468 - std::function<void()> does not accept non-void-returning functions
Summary: The bug can be found here: https://llvm.org/bugs/show_bug.cgi?id=22468
`__invoke_void_return_wrapper` is needed to properly handle calling a function that returns a value but where the std::function return type is void. Without this '-Wsystem-headers' will cause `function::operator()(...)` to not compile.
Reviewers: eugenis, K-ballo, mclow.lists
Reviewed By: mclow.lists
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D7444
This should allow newer versions of the graphics/aseprite port to compile without modification.
Direct commit to stable/10, since stable/11 and head already have this change.
Reported by: yuri@rawbw.com PR: 213773 |
281149 |
06-Apr-2015 |
dim |
MFC r280864:
Pull in r233552 from upstream libc++ trunk (by Eric Fiselier):
[libcxx] Fix PR22771 - Support access control SFINAE in the library version of is_convertible.
Summary: Currently the conversion check does not take place in a context where access control SFINAE is applied. This patch changes the context of the test expression so that SFINAE occurs if access control does not permit the conversion.
Related bug: https://llvm.org/bugs/show_bug.cgi?id=22771
Reviewers: mclow.lists, rsmith, dim
Reviewed By: dim
Subscribers: dim, rodrigc, emaste, cfe-commits
Differential Revision: http://reviews.llvm.org/D8461
This fixes building clang, and other programs using libc++, with newer versions of gcc (specifically, gcc 4.8 and higher).
Reported by: rodrigc |
279874 |
11-Mar-2015 |
dim |
MFC r279757:
Pull in r228344 from upstream libc++ trunk (by Eric Fiselier):
Get tests running with warnings. Fix warnings in headers and tests
This fixes a number of -Wunused-local-typedef warnings in libc++ headers.
MFC r279758:
Fix another -Wunused-local-typedef warning in libc++, in include/__tree. |
278724 |
13-Feb-2015 |
dim |
Synchronize the default C++ stack in stable/10 with head, by merging almost all recent changes to libc++ and libcxxrt.
MFC r256642: Since C++ typeinfo objects are currently not guaranteed to be merged at runtime by the dynamic linker, check for their equality in libcxxrt by not only comparing the typeinfo's name pointers, but also comparing the full names, if necessary. (This is similar to what GNU libstdc++ does in its default configuration.) The 'deep' check can be turned off again by defining LIBCXXRT_MERGED_TYPEINFO, and recompiling libcxxrt.
Reviewed by: theraven
MFC r270522 (by rdivacky): The standard we compile libc++ with is called c++11 not c++0x.
MFC r273066 (by bapt): Import patch from libc++ r197313 which allows using libc++ headers with gcc
Differential Revision: https://reviews.freebsd.org/D942 Reviewed by: imp
MFC r273381 (by bapt): Add support for __cxa_throw_bad_array_new_length in libcxxrt
It is required for use with newer g++49
Differential Revision: https://reviews.freebsd.org/D982 Reviewed by: theraven Approved by: theraven
MFC r273382 (by bapt): Fix build by marking the new functions as weak This is a temporary fix
MFC r273407 (by bapt): When using an external gcc 4.8+ and not building libstdc++ then create in the objectdir a fake libstdc++.so and libstdc++.a which is a symlink on libc++ that allow g++ to satisfy its links dependencies in the least hackish way. Please note that this hacky libstds++ never get installed on the final system
Reviewed by: imp
MFC r273434 (by bapt): Do not define bad_array_new_length::bad_array_new_length in libc++ anymore when used in combinaison with libcxxrt since it is now defined there already. This fixes building world
MFC r276417: Import libcxxrt master 00bc29eb6513624824a6d7db2ebc768a4216a604.
Interesting fixes: 76584a0 Reorganize code to use only 32bit atomic ops for 32bit platforms 30d2ae5 Implement __cxa_throw_bad_array_new_length
Reviewed by: bapt Differential Revision: https://reviews.freebsd.org/D1390
MFC r277217: Import libc++ trunk r224926. This fixes a number of bugs, completes C++14 support[1], adds more C++1z features[2], and fixes the following LWG issues[3]:
1450: Contradiction in regex_constants 2003: String exception inconsistency in erase. 2075: Progress guarantees, lock-free property, and scheduling assumptions 2104: unique_lock move-assignment should not be noexcept 2112: User-defined classes that cannot be derived from 2132: std::function ambiguity 2135: Unclear requirement for exceptions thrown in condition_variable::wait() 2142: packaged_task::operator() synchronization too broad? 2182: Container::[const_]reference types are misleadingly specified 2186: Incomplete action on async/launch::deferred 2188: Reverse iterator does not fully support targets that overload operator& 2193: Default constructors for standard library containers are explicit 2205: Problematic postconditions of regex_match and regex_search 2213: Return value of std::regex_replace 2240: Probable misuse of term "function scope" in [thread.condition] 2252: Strong guarantee on vector::push_back() still broken with C++11? 2257: Simplify container requirements with the new algorithms 2258: a.erase(q1, q2) unable to directly return q2 2263: Comparing iterators and allocator pointers with different const-character 2268: Setting a default argument in the declaration of a member function assign of std::basic_string 2271: regex_traits::lookup_classname specification unclear 2272: quoted should use char_traits::eq for character comparison 2278: User-defined literals for Standard Library types 2280: begin / end for arrays should be constexpr and noexcept 2285: make_reverse_iterator 2288: Inconsistent requirements for shared mutexes 2291: std::hash is vulnerable to collision DoS attack 2293: Wrong facet used by num_put::do_put 2299: Effects of inaccessible key_compare::is_transparent type are not clear 2301: Why is std::tie not constexpr? 2304: Complexity of count in unordered associative containers 2306: match_results::reference should be value_type&, not const value_type& 2308: Clarify container destructor requirements w.r.t. std::array 2313: tuple_size should always derive from integral_constant<size_t, N> 2314: apply() should return decltype(auto) and use decay_t before tuple_size 2315: weak_ptr should be movable 2316: weak_ptr::lock() should be atomic 2317: The type property queries should be UnaryTypeTraits returning size_t 2320: select_on_container_copy_construction() takes allocators, not containers 2322: Associative(initializer_list, stuff) constructors are underspecified 2323: vector::resize(n, t)'s specification should be simplified 2324: Insert iterator constructors should use addressof() 2329: regex_match()/regex_search() with match_results should forbid temporary strings 2330: regex("meow", regex::icase) is technically forbidden but should be permitted 2332: regex_iterator/regex_token_iterator should forbid temporary regexes 2339: Wording issue in nth_element 2341: Inconsistency between basic_ostream::seekp(pos) and basic_ostream::seekp(off, dir) 2344: quoted()'s interaction with padding is unclear 2346: integral_constant's member functions should be marked noexcept 2350: min, max, and minmax should be constexpr 2356: Stability of erasure in unordered associative containers 2357: Remaining "Assignable" requirement 2359: How does regex_constants::nosubs affect basic_regex::mark_count()? 2360: reverse_iterator::operator*() is unimplementable
[1] http://libcxx.llvm.org/cxx1y_status.html [2] http://libcxx.llvm.org/cxx1z_status.html [3] http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html
Exp-run: antoine
MFC r277944: Partially revert r273382, to reduce diffs against upstream. This was a temporary fix to solve a conflict with an older version of libc++, and it is no longer relevant.
MFC r278010: Revert r256642, not only to reduce diffs against upstream libcxxrt, but also because it is the wrong approach: comparing typeinfo names deeply causes trouble if two loaded DSOs use independent types of the same name.
In addition, this particular change was never merged to FreeBSD 10.x and 9.x, so let's get rid of it before it ends up in an 11.x release.
Discussed with: theraven, joerg@netbsd
MFC r278016: Import libcxxrt master 1cb607e89f6135bbc10f3d3b6fba1f983e258dcc.
Interesting fixes: 1cb607e Correct gcc version check for __cxa_begin_catch() declaration with or without throw() |
278021 |
01-Feb-2015 |
dim |
Revert r278017 (MFC of r273381 and r276417) and r278018 (MFC of r273434) until I can figure out why it leads to link failures in some scenarios. |
278018 |
01-Feb-2015 |
dim |
MFC r273434 (by bapt):
Do not define bad_array_new_length::bad_array_new_length in libc++ anymore when used in combinaison with libcxxrt since it is now defined there already. This fixes building world |
277299 |
17-Jan-2015 |
dim |
MFC r276517:
Pull in r200010 from upstream libc++ trunk (by Marshall Clow):
Rename some internal templates to avoid conflict with complier intrinsics. __is_constructible --> __libcpp_is_constructible, __is_nothrow_constructible --> __libcpp_is_nothrow_constructible, and __is_nothrow_assignable --> __libcpp_is_nothrow_assignable. No functionality change.
Pull in r206805 from upstream libc++ trunk (by Marshall Clow):
Use compiler intrinsic __is_constructible if available
This should fix building parts of world with -std=c++11 enabled.
Reported by: Oliver Hartmann <ohartman@zedat.fu-berlin.de> |
275472 |
04-Dec-2014 |
dim |
MFC r275366:
Pull in r209785 from upstream libc++ trunk (by Marshall Clow):
Fix a problem exposed by r208825, which caused bind (and other bits of libc++) to stop working. And tests
This fix is needed to support clang 3.5.0 and higher, which are more strict about forming pointer-to-function types with cv-qualifiers or ref-qualifiers. See also the upstream PR <http://llvm.org/PR19742> and <http://llvm.org/viewvc/llvm-project?rev=208825&view=rev>
Reported by: amdmi3 |
270646 |
26-Aug-2014 |
dim |
MFC r270416:
In r260015, I renamed several identifiers to avoid -Wsystem-header warnings. In r261283, I imported libc++ 3.4 release, but this contained one identifier that had not been renamed yet, leading to a compilation error when using -std=c++1y. Fix the compilation error by correctly renaming the identifier.
Reported by: rcarter@pinyon.org PR: base/192139 |
269836 |
11-Aug-2014 |
dim |
MFC r269740:
Pull in r214736 from upstream libc++ trunk (by Marshall Clow):
Fix PR#20520 - predicate called too many times in list::remove_if. Add tests for list, forward_list, and the std::remove_if algorithm
This fixes an issue where std::list<>::remove_if() and remove() could erroneously visit elements twice.
Reported by: Dominic Fandrey <kamikaze@bsdforen.de> PR: 192303 |
263272 |
17-Mar-2014 |
dim |
MFC r263120:
Pull in r201021 from upstream libc++ trunk:
Fix for PR18735 - self-assignment for map/multimap gives incorrect results in C++03
(Please note: that is an LLVM PR identifier, not a FreeBSD one.)
Reported by: rakuco |
262956 |
09-Mar-2014 |
dim |
MFC r262805:
Pull in r199848 from upstream libc++ trunk:
Const qualify __mem_fn call operator
QOI improvement.
Differential Revision: http://llvm-reviews.chandlerc.com/D2059
This should help with building recent versions of Mesa. See also: https://bugs.freedesktop.org/show_bug.cgi?id=75505
Reported by: dumbbell |
262801 |
05-Mar-2014 |
dim |
MFC r261283:
Import libc++ 3.4 release. This contains a lot of bugfixes, and some preliminary support for C++1y.
MFC r261604:
HEAD is not buildable for the past day. Commit a 'quick fix' in order to permit buildworld to complete.
Reviewed by: theraven
MFC r261608:
Apply a cleaner solution for the sign warnings that can occur when compiling libc++'s <locale> header with -Wsystem-headers on.
This has also been submitted upstream.
Reported by: asomers
MFC r261801:
An ABI incompatibility crept into the libc++ 3.4 import in r261283. It was caused by upstream libc++ commit r194536, which aimed to make the headers more standards-compliant, by making std::pair's copy constructor trivial. Unfortunately, this could cause certain C++ applications using shared libraries built against the previous version of libc++ to crash.
Fix the ABI incompatibility by making std::pair's copy constructor non-trivial again.
Please note: Any C++ applications or shared libraries built with libc++ between r261283 and this revision should be recompiled.
Reported by: stefanf |
260263 |
04-Jan-2014 |
dim |
MFC r260015:
In libc++'s type_traits header, avoid warnings (activated by our use of -Wsystem-headers) about potential keyword compatibility problems, by adding a __libcpp prefix to the applicable identifiers.
Upstream is still debating about this, but we need it now, to be able to import clang 3.4. |
259073 |
07-Dec-2013 |
peter |
Hoist all the mergeinfo up to the root in preparation for enforcing merges to the root only. All MFC's were rerecorded to the root.
Going forward, if an MFC includes mergeinfo, it will need to be made to the root and committed from the root. Merges with --ignore-ancestry or diff | patch can go anywhere.
The mergeinfo in HEAD is in a bad state from years of neglect and manual tampering and this was branched into 10.x. This confuses the coalescing code and prevents it from doing its job.
Approved by: re (gjb, implicit) |
256281 |
10-Oct-2013 |
gjb |
Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation
|
256082 |
06-Oct-2013 |
decke |
ename internal function test() to avoid name clashes with common macros. This fixes ports like mysql 5.6 which has an internal macro called test.
Approved by: re (gjb) Discussed with: theraven
|
253159 |
10-Jul-2013 |
theraven |
Import new libcxxrt / libc++. This brings some bug fixes, including a potential race condition for static initialisers.
|
251066 |
28-May-2013 |
dim |
Fix warnings from newer clang versions about constexpr member functions not being implicitly const in libc++'s <chrono> header. The warnings have been introduced because of new language rules recently adopted by the C++ WG. More info:
<http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3598.html>
MFC after: 3 days
|
249998 |
27-Apr-2013 |
dim |
Merge libc++ trunk r180598. Contains several minor cleanups and bug fixes, no major changes.
MFC after: 2 weeks
|
246487 |
07-Feb-2013 |
theraven |
Import new libc++ to head. Various small fixes and cleanups.
MFC after: 2 weeks
|
243673 |
29-Nov-2012 |
theraven |
Merge new libc++ into head.
|
243572 |
26-Nov-2012 |
dim |
Pull in r168610 from upstream libc++:
When using libc++ headers on FreeBSD, in combination with -std=c++98, -ansi or -std=c++03, the long long type is not supported. So in this case, several functions and types, like lldiv_t, strtoll(), are not declared.
This should make it possible to use the libc++ headers in c++98 mode.
Note: libc++ is originally designed as a c++0x or higher library, so you should still take care when using it with c++98 or c++03.
Noted by: Yamaya Takashi <yamayan@kbh.biglobe.ne.jp> MFC after: 1 week
|
242945 |
13-Nov-2012 |
theraven |
Import new version of libc++ into base.
|
241907 |
22-Oct-2012 |
dim |
Fix two -Wsystem-header warnings in libc++ that were exposed by the new ATF import. These have also been sent upstream.
MFC after: 1 month
|
241903 |
22-Oct-2012 |
dim |
Import libc++ trunk r165949. Among other improvements and bug fixes, this has many visibility problems fixed, which should help with compiling certain ports that exercise C++11 mode (i.e. Firefox).
Also, belatedly add the LICENSE.TXT and accompanying CREDITS.TXT files, which are referred to in all the source files.
MFC after: 1 month
|
236387 |
01-Jun-2012 |
dim |
Fix dangling else in libc++'s __bit_reference header. This has also been sent upstream.
MFC after: 3 days
|
234976 |
03-May-2012 |
theraven |
Import new version of libc++. Among other improvements, this comes with an <atomic> header that works with clang 3.1 (and, importantly, the pre-3.1 snapshot currently in head)
|
232972 |
14-Mar-2012 |
theraven |
Import a slightly newer libc++, with some bugs fixed that were found by running the test suite on FreeBSD.
Approved by: dim (mentor)
|
232950 |
14-Mar-2012 |
theraven |
Import new versions of libcxxrt and libc++. Please tests any C++ code you care about with -stdlib=libc++!
Approved by: dim (mentor)
|
227983 |
25-Nov-2011 |
theraven |
Import libc++ / libcxxrt into base. Not build by default yet (use MK_LIBCPLUSPLUS=yes to enable). This is a work-in-progress. It works for me, but is not guaranteed to work for anyone else and may eat your dog.
To build C++ using libc++, add -stdlib=libc++ to your CXX and LD flags.
Bug reports welcome, bug fixes even more welcome...
Approved by: dim (mentor)
|