bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug gold/14309] New: gold doesn't build with gcc 4.1.3


From: jakub at redhat dot com
Subject: [Bug gold/14309] New: gold doesn't build with gcc 4.1.3
Date: Fri, 29 Jun 2012 08:42:53 +0000

http://sourceware.org/bugzilla/show_bug.cgi?id=14309

             Bug #: 14309
           Summary: gold doesn't build with gcc 4.1.3
           Product: binutils
           Version: unspecified
            Status: NEW
          Severity: normal
          Priority: P2
         Component: gold
        AssignedTo: address@hidden
        ReportedBy: address@hidden
                CC: address@hidden
    Classification: Unclassified


gold/README says:
The gold source code uses templates heavily.  Building it requires a
recent version of g++.  g++ 4.0.3 and 4.1.3 are known to work.  g++
3.2, 3.4.3, and 4.1.2 are known to fail.
and I used to be able to build 2.22.52.0.1 just fine with gcc-4.1.2-RH (which
is based on 137441 of FSF branches/gcc-4_1-branch (no libstdc++ changes on that
branch after that revision).  But 2.22.52.0.4 no longer builds with it:

/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/tr1/hashtable:
In instantiation of 'Internal::hash_code_base<long long int, std::pair<const
long long int, gold::Gdb_index_info_reader::Declaration_pair>,
Internal::extract1st<std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair> >, std::equal_to<long long int>,
std::tr1::hash<long long int>, Internal::mod_range_hashing,
Internal::default_ranged_hash, false>':
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/tr1/hashtable:1014:
  instantiated from 'std::tr1::hashtable<long long int, std::pair<const long
long int, gold::Gdb_index_info_reader::Declaration_pair>,
std::allocator<std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair> >,
Internal::extract1st<std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair> >, std::equal_to<long long int>,
std::tr1::hash<long long int>, Internal::mod_range_hashing,
Internal::default_ranged_hash, Internal::prime_rehash_policy, false, false,
true>'
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/tr1/unordered_map:63:
  instantiated from 'std::tr1::unordered_map<long long int,
gold::Gdb_index_info_reader::Declaration_pair, std::tr1::hash<long long int>,
std::equal_to<long long int>, std::allocator<std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair> >, false>'
gdb-index.cc:292:   instantiated from here
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/tr1/hashtable:863:
error: 'Internal::hash_code_base<Key, Value, ExtractKey, Equal, H1, H2,
Internal::default_ranged_hash, false>::m_h1' has incomplete type
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/tr1/functional:1101:
error: declaration of 'struct std::tr1::hash<long long int>'
gdb-index.cc: In constructor 'std::tr1::unordered_map<Key, T, Hash, Pred,
Alloc, cache_hash_code>::unordered_map(typename std::tr1::hashtable<Key,
std::pair<const Key, T>, Alloc, Internal::extract1st<std::pair<const Key, T> >,
Pred, Hash, Internal::mod_range_hashing, Internal::default_ranged_hash,
Internal::prime_rehash_policy, cache_hash_code, false, true>::size_type, const
typename std::tr1::hashtable<Key, std::pair<const Key, T>, Alloc,
Internal::extract1st<std::pair<const Key, T> >, Pred, Hash,
Internal::mod_range_hashing, Internal::default_ranged_hash,
Internal::prime_rehash_policy, cache_hash_code, false, true>::hasher&, const
typename std::tr1::hashtable<Key, std::pair<const Key, T>, Alloc,
Internal::extract1st<std::pair<const Key, T> >, Pred, Hash,
Internal::mod_range_hashing, Internal::default_ranged_hash,
Internal::prime_rehash_policy, cache_hash_code, false, true>::key_equal&, const
typename std::tr1::hashtable<Key, std::pair<const Key, T>, Alloc,
Internal::extract1st<std::pair<const Key, T> >, Pred, Hash,
Internal::mod_range_hashing, Internal::default_ranged_hash,
Internal::prime_rehash_policy, cache_hash_code, false, true>::allocator_type&)
[with Key = long long int, T = gold::Gdb_index_info_reader::Declaration_pair,
Hash = std::tr1::hash<long long int>, Pred = std::equal_to<long long int>,
Alloc = std::allocator<std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair> >, bool cache_hash_code =
false]':
gdb-index.cc:189: error: invalid use of undefined type 'struct
std::tr1::hash<long long int>'
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/tr1/functional:1101:
error: declaration of 'struct std::tr1::hash<long long int>'
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/tr1/hashtable:
In member function 'size_t Internal::hash_code_base<Key, Value, ExtractKey,
Equal, H1, H2, Internal::default_ranged_hash, false>::m_hash_code(const Key&)
const [with Key = long long int, Value = std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair>, ExtractKey =
Internal::extract1st<std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair> >, Equal = std::equal_to<long
long int>, H1 = std::tr1::hash<long long int>, H2 =
Internal::mod_range_hashing]':
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/tr1/hashtable:1541:
  instantiated from 'typename std::tr1::hashtable<Key, Value, Allocator,
ExtractKey, Equal, H1, H2, H, RehashPolicy, cache_hash_code,
constant_iterators, unique_keys>::iterator std::tr1::hashtable<Key, Value,
Allocator, ExtractKey, Equal, H1, H2, H, RehashPolicy, cache_hash_code,
constant_iterators, unique_keys>::find(const Key&) [with Key = long long int,
Value = std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair>, Allocator =
std::allocator<std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair> >, ExtractKey =
Internal::extract1st<std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair> >, Equal = std::equal_to<long
long int>, H1 = std::tr1::hash<long long int>, H2 =
Internal::mod_range_hashing, H = Internal::default_ranged_hash, RehashPolicy =
Internal::prime_rehash_policy, bool cache_hash_code = false, bool
constant_iterators = false, bool unique_keys = true]'
gdb-index.cc:696:   instantiated from here
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/tr1/hashtable:829:
error: using invalid field 'Internal::hash_code_base<Key, Value, ExtractKey,
Equal, H1, H2, Internal::default_ranged_hash, false>::m_h1'
output.h:2816: warning: 'class gold::Output_fill' has virtual functions but
non-virtual destructor
output.h:2852: warning: 'class gold::Output_fill_debug_info' has virtual
functions but non-virtual destructor
output.h:2876: warning: 'class gold::Output_fill_debug_line' has virtual
functions but non-virtual destructor
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/tr1/hashtable:
In constructor 'Internal::hash_code_base<Key, Value, ExtractKey, Equal, H1, H2,
Internal::default_ranged_hash, false>::hash_code_base(const ExtractKey&, const
Equal&, const H1&, const H2&, const Internal::default_ranged_hash&) [with Key =
long long int, Value = std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair>, ExtractKey =
Internal::extract1st<std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair> >, Equal = std::equal_to<long
long int>, H1 = std::tr1::hash<long long int>, H2 =
Internal::mod_range_hashing]':
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/tr1/hashtable:1392:
  instantiated from 'std::tr1::hashtable<Key, Value, Allocator, ExtractKey,
Equal, H1, H2, H, RehashPolicy, cache_hash_code, constant_iterators,
unique_keys>::hashtable(typename Allocator::size_type, const H1&, const H2&,
const H&, const Eq&, const Ex&, const Allocator&) [with Key = long long int,
Value = std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair>, Allocator =
std::allocator<std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair> >, ExtractKey =
Internal::extract1st<std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair> >, Equal = std::equal_to<long
long int>, H1 = std::tr1::hash<long long int>, H2 =
Internal::mod_range_hashing, H = Internal::default_ranged_hash, RehashPolicy =
Internal::prime_rehash_policy, bool cache_hash_code = false, bool
constant_iterators = false, bool unique_keys = true]'
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/tr1/unordered_map:86:
  instantiated from 'std::tr1::unordered_map<Key, T, Hash, Pred, Alloc,
cache_hash_code>::unordered_map(typename std::tr1::hashtable<Key,
std::pair<const Key, T>, Alloc, Internal::extract1st<std::pair<const Key, T> >,
Pred, Hash, Internal::mod_range_hashing, Internal::default_ranged_hash,
Internal::prime_rehash_policy, cache_hash_code, false, true>::size_type, const
typename std::tr1::hashtable<Key, std::pair<const Key, T>, Alloc,
Internal::extract1st<std::pair<const Key, T> >, Pred, Hash,
Internal::mod_range_hashing, Internal::default_ranged_hash,
Internal::prime_rehash_policy, cache_hash_code, false, true>::hasher&, const
typename std::tr1::hashtable<Key, std::pair<const Key, T>, Alloc,
Internal::extract1st<std::pair<const Key, T> >, Pred, Hash,
Internal::mod_range_hashing, Internal::default_ranged_hash,
Internal::prime_rehash_policy, cache_hash_code, false, true>::key_equal&, const
typename std::tr1::hashtable<Key, std::pair<const Key, T>, Alloc,
Internal::extract1st<std::pair<const Key, T> >, Pred, Hash,
Internal::mod_range_hashing, Internal::default_ranged_hash,
Internal::prime_rehash_policy, cache_hash_code, false, true>::allocator_type&)
[with Key = long long int, T = gold::Gdb_index_info_reader::Declaration_pair,
Hash = std::tr1::hash<long long int>, Pred = std::equal_to<long long int>,
Alloc = std::allocator<std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair> >, bool cache_hash_code =
false]'
gdb-index.cc:189:   instantiated from here
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/tr1/hashtable:823:
error: using invalid field 'Internal::hash_code_base<Key, Value, ExtractKey,
Equal, H1, H2, Internal::default_ranged_hash, false>::m_h1'
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/tr1/hashtable:
In member function 'size_t Internal::hash_code_base<Key, Value, ExtractKey,
Equal, H1, H2, Internal::default_ranged_hash, false>::bucket_index(const
Internal::hash_node<Value, false>*, size_t) const [with Key = long long int,
Value = std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair>, ExtractKey =
Internal::extract1st<std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair> >, Equal = std::equal_to<long
long int>, H1 = std::tr1::hash<long long int>, H2 =
Internal::mod_range_hashing]':
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/tr1/hashtable:1927:
  instantiated from 'void std::tr1::hashtable<Key, Value, Allocator,
ExtractKey, Equal, H1, H2, H, RehashPolicy, cache_hash_code,
constant_iterators, unique_keys>::m_rehash(typename Allocator::size_type) [with
Key = long long int, Value = std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair>, Allocator =
std::allocator<std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair> >, ExtractKey =
Internal::extract1st<std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair> >, Equal = std::equal_to<long
long int>, H1 = std::tr1::hash<long long int>, H2 =
Internal::mod_range_hashing, H = Internal::default_ranged_hash, RehashPolicy =
Internal::prime_rehash_policy, bool cache_hash_code = false, bool
constant_iterators = false, bool unique_keys = true]'
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/tr1/hashtable:1684:
  instantiated from 'typename std::tr1::hashtable<Key, Value, Allocator,
ExtractKey, Equal, H1, H2, H, RehashPolicy, cache_hash_code,
constant_iterators, unique_keys>::iterator std::tr1::hashtable<Key, Value,
Allocator, ExtractKey, Equal, H1, H2, H, RehashPolicy, cache_hash_code,
constant_iterators, unique_keys>::m_insert_bucket(const Value&, typename
Allocator::size_type, typename std::tr1::hashtable<Key, Value, Allocator,
ExtractKey, Equal, H1, H2, H, RehashPolicy, cache_hash_code,
constant_iterators, unique_keys>::hash_code_t) [with Key = long long int, Value
= std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair>, Allocator =
std::allocator<std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair> >, ExtractKey =
Internal::extract1st<std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair> >, Equal = std::equal_to<long
long int>, H1 = std::tr1::hash<long long int>, H2 =
Internal::mod_range_hashing, H = Internal::default_ranged_hash, RehashPolicy =
Internal::prime_rehash_policy, bool cache_hash_code = false, bool
constant_iterators = false, bool unique_keys = true]'
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/tr1/hashtable:1716:
  instantiated from 'std::pair<typename std::tr1::hashtable<Key, Value,
Allocator, ExtractKey, Equal, H1, H2, H, RehashPolicy, cache_hash_code,
constant_iterators, unique_keys>::iterator, bool> std::tr1::hashtable<Key,
Value, Allocator, ExtractKey, Equal, H1, H2, H, RehashPolicy, cache_hash_code,
constant_iterators, unique_keys>::m_insert(const Value&, std::tr1::true_type)
[with Key = long long int, Value = std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair>, Allocator =
std::allocator<std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair> >, ExtractKey =
Internal::extract1st<std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair> >, Equal = std::equal_to<long
long int>, H1 = std::tr1::hash<long long int>, H2 =
Internal::mod_range_hashing, H = Internal::default_ranged_hash, RehashPolicy =
Internal::prime_rehash_policy, bool cache_hash_code = false, bool
constant_iterators = false, bool unique_keys = true]'
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/tr1/hashtable:1248:
  instantiated from 'typename Internal::IF<unique_keys,
std::pair<Internal::hashtable_iterator<Value, constant_iterators,
cache_hash_code>, bool>, Internal::hashtable_iterator<Value,
constant_iterators, cache_hash_code> >::type std::tr1::hashtable<Key, Value,
Allocator, ExtractKey, Equal, H1, H2, H, RehashPolicy, cache_hash_code,
constant_iterators, unique_keys>::insert(const Value&) [with Key = long long
int, Value = std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair>, Allocator =
std::allocator<std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair> >, ExtractKey =
Internal::extract1st<std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair> >, Equal = std::equal_to<long
long int>, H1 = std::tr1::hash<long long int>, H2 =
Internal::mod_range_hashing, H = Internal::default_ranged_hash, RehashPolicy =
Internal::prime_rehash_policy, bool cache_hash_code = false, bool
constant_iterators = false, bool unique_keys = true]'
gdb-index.cc:715:   instantiated from here
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/tr1/hashtable:837:
error: using invalid field 'Internal::hash_code_base<Key, Value, ExtractKey,
Equal, H1, H2, Internal::default_ranged_hash, false>::m_h1'
make[4]: *** [gdb-index.o] Error 1

If I force the HAVE_TR1_UNORDERED_MAP_REHASH configure check to fail, it still
doesn't build:
usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/ext/hashtable.h:
In member function 'size_t __gnu_cxx::hashtable<_Val, _Key, _HashFcn,
_ExtractKey, _EqualKey, _Alloc>::_M_bkt_num_key(const _Key&, size_t) const
[with _Val = std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair>, _Key = long long int, _HashFcn
= __gnu_cxx::hash<long long int>, _ExtractKey = std::_Select1st<std::pair<const
long long int, gold::Gdb_index_info_reader::Declaration_pair> >, _EqualKey =
std::equal_to<long long int>, _Alloc =
std::allocator<gold::Gdb_index_info_reader::Declaration_pair>]':
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/ext/hashtable.h:588:
  instantiated from 'size_t __gnu_cxx::hashtable<_Val, _Key, _HashFcn,
_ExtractKey, _EqualKey, _Alloc>::_M_bkt_num_key(const _Key&) const [with _Val =
std::pair<const long long int, gold::Gdb_index_info_reader::Declaration_pair>,
_Key = long long int, _HashFcn = __gnu_cxx::hash<long long int>, _ExtractKey =
std::_Select1st<std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair> >, _EqualKey =
std::equal_to<long long int>, _Alloc =
std::allocator<gold::Gdb_index_info_reader::Declaration_pair>]'
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/ext/hashtable.h:511:
  instantiated from '__gnu_cxx::_Hashtable_iterator<_Val, _Key, _HashFcn,
_ExtractKey, _EqualKey, _Alloc> __gnu_cxx::hashtable<_Val, _Key, _HashFcn,
_ExtractKey, _EqualKey, _Alloc>::find(const _Key&) [with _Val = std::pair<const
long long int, gold::Gdb_index_info_reader::Declaration_pair>, _Key = long long
int, _HashFcn = __gnu_cxx::hash<long long int>, _ExtractKey =
std::_Select1st<std::pair<const long long int,
gold::Gdb_index_info_reader::Declaration_pair> >, _EqualKey =
std::equal_to<long long int>, _Alloc =
std::allocator<gold::Gdb_index_info_reader::Declaration_pair>]'
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/ext/hash_map:225:
  instantiated from 'typename __gnu_cxx::hashtable<std::pair<const _Key, _Tp>,
_Key, _HashFcn, std::_Select1st<std::pair<const _Key, _Tp> >, _EqualKey,
_Alloc>::iterator __gnu_cxx::hash_map<_Key, _Tp, _HashFcn, _EqualKey,
_Alloc>::find(const typename __gnu_cxx::hashtable<std::pair<const _Key, _Tp>,
_Key, _HashFcn, std::_Select1st<std::pair<const _Key, _Tp> >, _EqualKey,
_Alloc>::key_type&) [with _Key = long long int, _Tp =
gold::Gdb_index_info_reader::Declaration_pair, _HashFcn = __gnu_cxx::hash<long
long int>, _EqualKey = std::equal_to<long long int>, _Alloc =
std::allocator<gold::Gdb_index_info_reader::Declaration_pair>]'
gdb-index.cc:696:   instantiated from here
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/ext/hashtable.h:596:
error: no match for call to '(const __gnu_cxx::hash<long long int>) (const long
long int&)'
make[4]: *** [gdb-index.o] Error 1

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]