Commit Graph

65 Commits

Author SHA1 Message Date
Ed Maste
faaac40c73 libstdc++: fix symbol version script for LLD
LLD is less tolerant of inconsistencies in the symbol version script.

- Add a ; on the last entry in a version block
- Remove duplicated symbols, retaining those in the earliest block

Reviewed by:	bdrewery
MFC after:	1 month
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D10428
2017-04-19 19:06:47 +00:00
Ian Lepore
1f6f6cd7e2 Fix EABI unwind function declarations to match the function definitions.
The mismatch was noticed by clang, when using it to compile the in-tree
gcc and libstdc++.
2014-07-22 20:32:24 +00:00
Marius Strobl
b05e961602 Merge r133175 from upstream:
2008-03-13  Dennis Czeremin  <dennis.czeremin@smiths-heimann.com>

	PR libstdc++/35566
	* include/bits/stl_multimap.h (multimap<>::multimap(_InputIterator,
	_InputIterator)): Forward to _M_insert_equal, not _M_insert_unique.

This patch was GPL2 at the time and fixes a regression introduced with
the merge of GCC r129013 in FreeBSD r236829.

MFC after:	3 days
Sponsored by:	Bally Wulff Games & Entertainment GmbH
2014-04-29 11:31:22 +00:00
Dimitry Andric
fedda9c678 Revert r263694, and apply a better fix to squelch unnecessary warnings
from clang about possible keywords being treated as identifiers for the
remainder of the translation unit (a.k.a. -Wkeyword-compat), when using
libstdc++ in combination with -Wsystem-headers.  This will not only fix
devd, but any C++ program using libstdc++.

MFC after:	3 days
X-MFC-With:	r263694
2014-03-26 19:31:33 +00:00
Pedro F. Giffuni
81e5b01765 gcc: Bring updates from Google's enhanced gcc-4.2.1.
Google released and enhanced version of gcc-4.2.1 plus their local
patches for Android[1].

The patches are owned by Google and the license hasn't been changed
from  the original GPLv2. We are only bringing a subset of the
available patches that may be helpful in FreeBSD. Changes specific
to android are not included.

From the README.google file[1].

Patches applied to google_vendor_src_branch/gcc/gcc-4.2.1:

gcc/Makefile.in
gcc/c-common.c
gcc/c-common.h
gcc/c-opts.c
gcc/c-typeck.c
gcc/cp/typeck.c
gcc/doc/invoke.texi
gcc/flags.h
gcc/opts.c
gcc/tree-flow.h
gcc/tree-ssa-alias-warnings.c
gcc/tree-ssa-alias.c

 Backport of -Wstrict-aliasing from mainline.
  Silvius Rus <rus@google.com>

gcc/coverage.c:
  Patch coverage_checksum_string for PR 25351.
  Seongbae Park <spark@google.com>
  Not yet submitted to FSF.

gcc/c-opts.c
gcc/c-ppoutput.c
gcc/c.opt
gcc/doc/cppopts.texi
libcpp/Makefile.in
libcpp/directives-only.c
libcpp/directives.c
libcpp/files.c
libcpp/include/cpplib.h
libcpp/init.c
libcpp/internal.h
libcpp/macro.c
  Support for -fdirectives-only.
  Ollie Wild <aaw@google.com>.
  Submitted to FSF but not yet approved.

libstdc++-v3/include/ext/hashtable.h
  http://b/742065
  http://b/629994
  Reduce min size of hashtable for hash_map, hash_set from 53 to 5

libstdc++-v3/include/ext/hashtable.h
  http://b/629994
  Do not iterate over buckets if hashtable is empty.

gcc/common.opt
gcc/doc/invoke.texi
gcc/flags.h
gcc/gimplify.c
gcc/opts.c
  Add Saito's patch for -finstrument-functions-exclude-* options.

gcc/common.opt
gcc/doc/invoke.texi
gcc/final.c
gcc/flags.h
gcc/opts.c
gcc/testsuite/gcc.dg/Wframe-larger-than.c
  Add a new flag -Wframe-larger-than- which enables a new warning
  when a frame size of a function is larger than specified.
  This patch hasn't been integrated into gcc mainline yet.

gcc/tree-vrp.c
  Add a hack to avoid using ivopts information for pointers starting
  at constant values.

Reference:

[1]
https://android.googlesource.com/toolchain/gcc/+/master/gcc-4.2.1/

Obtained from:	Google Inc.
MFC after:	3 weeks
2013-11-23 18:32:53 +00:00
Pedro F. Giffuni
096464d39c libstdc++: merge non-abi changes from Apple's developer tools
Take some changes from Apple's Developer Tools 4.0 [1]:

block.patch
emergency-buffer-reduction.patch
test_cleanup.patch

vector_copy_no_alloc.patch
	problem/6473222 copy-constructing a std::vector	from an
	empty std::vector calls malloc

2008-10-27  Howard Hinnant
stl_tree_system_header.patch
	Added #pragma GCC system_header to stl_tree.h.
copy_doc.patch
	Corrected documentation concerning copy in stl_algobase.h.
string_compare.patch
	Fixed basic_string.h, basic_string.tcc, incorrect 64bit to
	32bit narrowing.

Reference:

[1] http://opensource.apple.com/source/libstdcxx/libstdcxx-39/patches-4.2.1/

Obtained from:	Apple
MFC after:	1 month
2013-11-21 16:44:36 +00:00
David Chisnall
e2a74d7247 Add isnan() and isinf() to the global namespace in libstdc++'s <cmath>.
The standard (n3242, section 17.6.1.1, paragraph 4) says that, because these are
declared as macros in the C specification (even though they are
implemented as functions in the C++ library) they should be in the global
namespace.

A surprising number of configure checks rely on this.  It was broken by recent
cleanups to math.h.
2013-07-23 10:23:43 +00:00
Dimitry Andric
914922decc Make libsupc++'s __cxa_call_terminate() prototype consistent with the
definition.

Submitted by:	dt71@gmx.com
MFC after:	3 days
2013-06-29 20:17:14 +00:00
Andrew Turner
93c7e89712 Allow the unwind functions int libgcc_s to interact correctly with libthr.
_Unwind_ForcedUnwind in libgcc_s takes as one of it's parameters a stop
function to tell it when to stop unwinding. One of the stop function's
parameters is a _Unwind_Exception_Class. On most architectures this is an
int64_t, however on ARM EABI the gcc developers have made this a char array
with 8 items. While both of these take the same space they are passed into
the stop function differently, an int64_t is passed in in registers r2 and
r3, while the char[8] is passed in as a pointer to the first item in
register r2.

Because libthr expects the value to be an int64_t we would get incorrect
results when it passes a function that take an int64_t but libgcc passes in
a pointer to a char array including crashing.

The fix is to update libgcc_s to make it pass an int64_t to the stop
function and to libstdc++ as it expects _Unwind_Exception_Class to be an
array.
2013-02-04 09:28:36 +00:00
Andrew Turner
b8d52352a7 Fix the __glibcxx_min and __glibcxx_max macros for a signed wchar_t.
* The __glibcxx_max macro came from GCC svn r138078, the last GPLv2
  revision of this file.
* I wrote the updated __glibcxx_min macro.
2012-12-25 07:37:33 +00:00
Dimitry Andric
387c85f1ca Fix a number of other clang warnings in libstdc++, which could appear
when building other C++ software with it.  Also fix one actual bug in
libsupc++, which was exposed by such a warning.  This latter fix is the
only functional change.

MFC after:	1 week
2012-10-23 18:45:32 +00:00
Dimitry Andric
a23701e59d Fix several clang warnings in libstdc++, which were exposed by the
recent atf import.  These changes are purely cosmetic, no functional
change.

MFC after:	1 week
2012-10-23 18:36:07 +00:00
Pedro F. Giffuni
dc3fe0ff0e Bring a couple of libstdc++ patches from Apple's llvm-gcc project.
Modified Fri Jul 10 07:44:34 2009 CDT by rafael
backport part of
http://gcc.gnu.org/ml/gcc-cvs/2007-10/msg00118.html

The patch is for libstdc++ and it was GPL2 at the time.

Modified Tue Apr 29 01:20:19 2008 CDT by asl
Backport from mainline (pre-GPLv3).
Fix for sizeof(const void*) > sizeof(unsigned long).

Approved by:	jhb (mentor)
MFC after:	2 weeks
2012-06-10 02:04:11 +00:00
David Chisnall
52076325c4 Undo the earlier revert of the ABI change in libsupc++. On further discussion,
posting an errata notice with 9.1 is the less painful solution.

Approved by:	dim (mentor)
2012-03-30 12:48:36 +00:00
David Chisnall
a45e9cc023 Revert ABI breakage in libsupc++.
Unfortunately, the ABI was broken upstream for the 4.2 release, which we
imported.  We then shipped the broken version for several years and certain
ports (e.g. libobjc2) depend on it, so we're stuck with it for now...

We should revisit this for 10.0, since we're allowed to break the ABI then, but
until then we should keep the ABI we shipped with 8.x and 9.x.

Reviewed by:	kan
Approved by:	dim (mentor)
MFC after:	1 week
2012-03-23 20:10:56 +00:00
Dimitry Andric
5b1df4530b Add explicit braces to avoid dangling else in stl_tree.h. This silences
the following warning produced by clang trunk:

  In file included from /usr/src/sbin/devd/devd.cc:91:
  In file included from /usr/obj/usr/src/tmp/usr/include/c++/4.2/map:64:
  /usr/obj/usr/src/tmp/usr/include/c++/4.2/bits/stl_tree.h:987:2: error: add explicit braces to avoid dangling else [-Werror,-Wdangling-else]
	  else
	  ^

MFC after:	3 days
2012-03-19 19:01:34 +00:00
Pedro F. Giffuni
05a636f0bd Update libstdc++ with small updates from the latest rev. (135556)
from the gcc 4.2 branch.
The libraries in the gcc-4_2-branch remained under the LGPLv2.

The changes can be reproduced with the following command:

svn diff svn://gcc.gnu.org/svn/gcc/branches/gcc-4_2-branch/libstdc++-v3
 -r 127959:135556

Reviewed by:	mm
Approved by:	jhb (mentor)
MFC after:	2 weeks
2011-12-21 16:36:07 +00:00
Dimitry Andric
2c4ebe03a0 Make it possible to use the debug versions of std::map and std::multimap
with clang, by removing two unneeded using declarations.  Otherwise, you
would get errors similar to:

/usr/include/c++/4.2/debug/map.h:77:20: error: dependent using declaration resolved to type without 'typename'
      using _Base::value_compare;
                   ^

N.B.: Take care when you actually use the debug versions of any
libstdc++ header.  They are more likely to contain problems, because
they are exercised far less often, and since the standard library
complexity guarantees don't always apply anymore, compile times can
drastically increase.

MFC after:	2 weeks
2011-12-07 21:00:33 +00:00
Martin Matuska
5377a72618 Upgrade of base gcc and libstdc++ to the last GPLv2-licensed revision
(rev. 127959 of gcc-4_2-branch).

Resolved GCC bugs:
	c++: 17763, 29365, 30535, 30917, 31337, 31941, 32108, 32112, 32346,
	     32898, 32992
	debug: 32610, 32914
	libstdc++: 33084, 33128
	middle-end: 32563
	rtl-optimization: 33148
	tree-optimization: 25413, 32723
	target: 32218

Tested by:	pointyhat (miwi)
Obtained from:	gcc (gcc-4_2-branch up to rev. 127959)
PR:		gnu/153298, gnu/153959, gnu/154385
MFC after:	1 month
2011-03-29 20:53:51 +00:00
Rui Paulo
1fdc87e76d Some fixes so we can build libstdc++ with clang:
o Make the value_type, vector_type, iterator, __mutex_type types of
free_list class so we can access them
o In some cases template keywords must be inserted to treat classes as
dependent template names
o Remove two 'inline' keywords where they do not make sense

Submitted by:	Dimitry Andric <dimitry at andric.com>
Reviewed by:	trema
2010-08-24 13:38:53 +00:00
Peter Wemm
497e80a371 Reorganize the gcc vendor import work area. This flattens out a bunch
of unnecessary path components that are relics of cvs2svn.

(These are directory moves)
2008-06-01 00:03:21 +00:00
Alexander Kabaev
0995a43fe6 GCC 4.2.1 release C++ standard library and runtime support code. 2007-08-14 02:49:11 +00:00
Alexander Kabaev
8c6f3db84a This commit was generated by cvs2svn to compensate for changes in r171827,
which included commits to RCS files with non-trunk default branches.
2007-08-14 02:49:11 +00:00
Alexander Kabaev
888346df5f Remove files that are no more part of GCC distribution from FSF branch. 2007-05-19 02:42:17 +00:00
Alexander Kabaev
ef444676f3 This commit was generated by cvs2svn to compensate for changes in r169708,
which included commits to RCS files with non-trunk default branches.
2007-05-19 02:42:17 +00:00
Alexander Kabaev
f8a1b7d9d8 GCC 4.2.0 release C++ standard library and runtime support code. 2007-05-19 01:25:07 +00:00
Alexander Kabaev
5513e3663a This commit was generated by cvs2svn to compensate for changes in r169691,
which included commits to RCS files with non-trunk default branches.
2007-05-19 01:25:07 +00:00
Xin LI
9ba78bf6b1 MFS: Remove file that was disappeared from gcc distribution.
While I'm there, add the file into ObsoleteFiles.inc.

Approved by:	maintainer (kan)
2006-09-30 09:44:58 +00:00
Xin LI
3d556d7a58 This commit was generated by cvs2svn to compensate for changes in r162837,
which included commits to RCS files with non-trunk default branches.
2006-09-30 09:44:58 +00:00
Alexander Kabaev
f482ed056f Gcc 3.4.6 C++ support bits (as of 2006/08/25 #116475). 2006-08-26 21:29:46 +00:00
Alexander Kabaev
04c537677f This commit was generated by cvs2svn to compensate for changes in r161653,
which included commits to RCS files with non-trunk default branches.
2006-08-26 21:29:46 +00:00
Alexander Kabaev
f260e61b15 Gcc 3.4.4 C++ support bits. 2005-06-03 03:29:38 +00:00
Alexander Kabaev
8d990d16a0 This commit was generated by cvs2svn to compensate for changes in r146897,
which included commits to RCS files with non-trunk default branches.
2005-06-03 03:29:38 +00:00
Alexander Kabaev
292f200484 Remove files that are not part of GCC 3.4.x from the vendor branch. 2004-08-12 16:41:42 +00:00
Alexander Kabaev
6d3e93598f This commit was generated by cvs2svn to compensate for changes in r133582,
which included commits to RCS files with non-trunk default branches.
2004-08-12 16:41:42 +00:00
Alexander Kabaev
ffeaf689a2 Gcc 3.4.2 20040728 C++ support bits. 2004-07-28 03:12:05 +00:00
Alexander Kabaev
f28ffc6b56 This commit was generated by cvs2svn to compensate for changes in r132720,
which included commits to RCS files with non-trunk default branches.
2004-07-28 03:12:05 +00:00
Alexander Kabaev
a2faa65a72 Remove bits which are not part of GCC 3.3.x anymore. 2004-01-05 21:04:41 +00:00
Alexander Kabaev
762a596353 This commit was generated by cvs2svn to compensate for changes in r124154,
which included commits to RCS files with non-trunk default branches.
2004-01-05 21:04:41 +00:00
Alexander Kabaev
bbe4dd5dec Gcc 3.3.3 20031106 C++ support bits. 2003-11-07 02:44:01 +00:00
Alexander Kabaev
e17667a43b This commit was generated by cvs2svn to compensate for changes in r122182,
which included commits to RCS files with non-trunk default branches.
2003-11-07 02:44:01 +00:00
Alexander Kabaev
6da669e5d1 Gcc 3.3.1-release C++ support bits. 2003-08-22 02:57:05 +00:00
Alexander Kabaev
af48dc19f9 This commit was generated by cvs2svn to compensate for changes in r119258,
which included commits to RCS files with non-trunk default branches.
2003-08-22 02:57:05 +00:00
Alexander Kabaev
1b86b14eac Gcc 3.3.1-pre 2003-07-11 C++ support bits. 2003-07-11 03:42:04 +00:00
Alexander Kabaev
9d66e2293b This commit was generated by cvs2svn to compensate for changes in r117397,
which included commits to RCS files with non-trunk default branches.
2003-07-11 03:42:04 +00:00
Alexander Kabaev
61e268fb5f Gcc 3.2.2-release C++ support bits. 2003-02-10 05:47:54 +00:00
Alexander Kabaev
5801dade0e This commit was generated by cvs2svn to compensate for changes in r110614,
which included commits to RCS files with non-trunk default branches.
2003-02-10 05:47:54 +00:00
David E. O'Brien
8f1134fbb3 Gcc 3.2.1 release virgin vendor import. (19-Nov-2002) 2002-12-04 16:53:59 +00:00
David E. O'Brien
119366edf0 This commit was generated by cvs2svn to compensate for changes in r107606,
which included commits to RCS files with non-trunk default branches.
2002-12-04 16:53:59 +00:00
David E. O'Brien
5f24279c5d Remove files no longer part of the gcc_3_2_anoncvs_20021009 libstdc++.
Approved by:	re(jhb)
2002-11-27 18:52:04 +00:00