splay-tree.h has #ifndef _WIN64 typedef unsigned long int libi_uhostptr_t; typedef long int libi_shostptr_t; #else typedef unsigned long long libi_uhostptr_t; typedef long long libi_shostptr_t; #endif
... /* Use typedefs for the key and data types to facilitate changing these types, if necessary. These types should be sufficiently wide that any pointer or scalar can be cast to these types, and then cast back, without loss of precision. */ typedef libi_uhostptr_t splay_tree_key; typedef libi_uhostptr_t splay_tree_value; The problem is on 32bit host libi_uhostptr_t is defined as long and it don't work long long, which is used by BFD and leads to the linker bug: http://www.sourceware.org/bugzilla/show_bug.cgi?id=5303 -- Summary: splay-tree doesn't support 64bit value on 32bit host Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: other AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: hjl at lucon dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34835