mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2025-01-19 07:24:48 +00:00
PR gold/14309
* configure.ac: Test whether std::tr1::hash<off_t> works. * gold.h: Add a specialization for std::tr1::hash<off_t> if needed. * output.h (class Output_fill): Add virtual destructor. * configure, config.in: Rebuild.
This commit is contained in:
parent
686f09d021
commit
81c82a68dc
@ -1,3 +1,13 @@
|
||||
2012-07-10 Dodji Seketeli <dodji@redhat.com>
|
||||
Ian Lance Taylor <iant@google.com>
|
||||
|
||||
PR gold/14309
|
||||
* configure.ac: Test whether std::tr1::hash<off_t> works.
|
||||
* gold.h: Add a specialization for std::tr1::hash<off_t> if
|
||||
needed.
|
||||
* output.h (class Output_fill): Add virtual destructor.
|
||||
* configure, config.in: Rebuild.
|
||||
|
||||
2012-06-22 Roland McGrath <mcgrathr@google.com>
|
||||
|
||||
* layout.cc (finalize): Define __ehdr_start symbol if applicable.
|
||||
|
@ -169,6 +169,9 @@
|
||||
/* Define to 1 if you have the `times' function. */
|
||||
#undef HAVE_TIMES
|
||||
|
||||
/* Define if std::tr1::hash<off_t> is usable */
|
||||
#undef HAVE_TR1_HASH_OFF_T
|
||||
|
||||
/* Define to 1 if you have the <tr1/unordered_map> header file. */
|
||||
#undef HAVE_TR1_UNORDERED_MAP
|
||||
|
||||
|
33
gold/configure
vendored
33
gold/configure
vendored
@ -7266,6 +7266,39 @@ $as_echo "#define HAVE_TR1_UNORDERED_MAP_REHASH 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
# Use of tr1/unordered_map with off_t as a key is not supported on GCC
|
||||
# 4.1.xx when compiling in 32-bit mode with a 64-bit off_t type.
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether std::tr1::hash<off_t> is defined" >&5
|
||||
$as_echo_n "checking whether std::tr1::hash<off_t> is defined... " >&6; }
|
||||
if test "${gold_cv_hash_off_t+set}" = set; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
CXXFLAGS_hold=$CXXFLAGS
|
||||
CXXFLAGS="$CXXFLAGS $LFS_CFLAGS"
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <tr1/unordered_map>
|
||||
std::tr1::hash<off_t> h;
|
||||
|
||||
_ACEOF
|
||||
if ac_fn_cxx_try_compile "$LINENO"; then :
|
||||
gold_cv_hash_off_t=yes
|
||||
else
|
||||
gold_cv_hash_off_t=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
CXXFLAGS=$CFLAGS_hold
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gold_cv_hash_off_t" >&5
|
||||
$as_echo "$gold_cv_hash_off_t" >&6; }
|
||||
if test "$gold_cv_hash_off_t" = "yes"; then
|
||||
|
||||
$as_echo "#define HAVE_TR1_HASH_OFF_T 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
# gcc 4.3.0 doesn't recognize the printf attribute on a template
|
||||
# function. Check for that. This is gcc bug 35546. This test can
|
||||
# probably be removed after the bug has been fixed for a while.
|
||||
|
@ -515,6 +515,25 @@ if test "$gold_cv_unordered_map_rehash" = "yes"; then
|
||||
[Define if ::std::tr1::unordered_map::rehash is usable])
|
||||
fi
|
||||
|
||||
# Use of tr1/unordered_map with off_t as a key is not supported on GCC
|
||||
# 4.1.xx when compiling in 32-bit mode with a 64-bit off_t type.
|
||||
AC_CACHE_CHECK([whether std::tr1::hash<off_t> is defined],
|
||||
[gold_cv_hash_off_t],
|
||||
[CXXFLAGS_hold=$CXXFLAGS
|
||||
CXXFLAGS="$CXXFLAGS $LFS_CFLAGS"
|
||||
AC_COMPILE_IFELSE([
|
||||
#include <sys/types.h>
|
||||
#include <tr1/unordered_map>
|
||||
std::tr1::hash<off_t> h;
|
||||
],
|
||||
[gold_cv_hash_off_t=yes],
|
||||
[gold_cv_hash_off_t=no])
|
||||
CXXFLAGS=$CFLAGS_hold])
|
||||
if test "$gold_cv_hash_off_t" = "yes"; then
|
||||
AC_DEFINE(HAVE_TR1_HASH_OFF_T, 1,
|
||||
[Define if std::tr1::hash<off_t> is usable])
|
||||
fi
|
||||
|
||||
# gcc 4.3.0 doesn't recognize the printf attribute on a template
|
||||
# function. Check for that. This is gcc bug 35546. This test can
|
||||
# probably be removed after the bug has been fixed for a while.
|
||||
|
16
gold/gold.h
16
gold/gold.h
@ -80,6 +80,22 @@
|
||||
|
||||
#define reserve_unordered_map(map, n) ((map)->rehash(n))
|
||||
|
||||
#ifndef HAVE_TR1_HASH_OFF_T
|
||||
// The library does not support hashes of off_t values. Add support
|
||||
// here. This is likely to be specific to libstdc++. This issue
|
||||
// arises with GCC 4.1.x when compiling in 32-bit mode with a 64-bit
|
||||
// off_t type.
|
||||
namespace std { namespace tr1 {
|
||||
template<>
|
||||
struct hash<off_t> : public std::unary_function<off_t, std::size_t>
|
||||
{
|
||||
std::size_t
|
||||
operator()(off_t val) const
|
||||
{ return static_cast<std::size_t>(val); }
|
||||
};
|
||||
} } // Close namespaces.
|
||||
#endif // !defined(HAVE_TR1_HASH_OFF_T)
|
||||
|
||||
#elif defined(HAVE_EXT_HASH_MAP) && defined(HAVE_EXT_HASH_SET)
|
||||
|
||||
#include <ext/hash_map>
|
||||
|
@ -2819,6 +2819,10 @@ class Output_fill
|
||||
: is_big_endian_(parameters->target().is_big_endian())
|
||||
{ }
|
||||
|
||||
virtual
|
||||
~Output_fill()
|
||||
{ }
|
||||
|
||||
// Return the smallest size chunk of free space that can be
|
||||
// filled with a dummy compilation unit.
|
||||
size_t
|
||||
|
Loading…
x
Reference in New Issue
Block a user