This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Feedback after compiling with GCC and ICC
- From: Greg Czajkowski <gregczajkowski at yahoo dot com>
- To: "binutils at sourceware dot org" <binutils at sourceware dot org>
- Date: Thu, 4 Oct 2012 15:15:20 -0700 (PDT)
- Subject: Feedback after compiling with GCC and ICC
- Reply-to: Greg Czajkowski <gregczajkowski at yahoo dot com>
Hi all. Tried to build binutils 2.22 with GCC4.2.2, GCC4.7.0, ICC12.1.3 on SUSE10 and here are the results..
GCC4.2.2 with --target=i686-unknown-linux-gnu crashes with ICE
arm.cc:11999:?? instantiated from here
arm.cc:2173: internal compiler error: in make_rtl_for_nonlocal_decl, at cp/decl.c:4970
It's not liking this
// When were are relocating a stub, we pass this as the relocation number.
static const size_t fake_relnum_for_stubs = static_cast<size_t>(-1);
GCC4.7.0 with --target=i686-unknown-linux-gnu will not compile
i386-dis.c: In function 'print_insn':
i386-dis.c:11334:17: error: array subscript is above array bounds [-Werror=array-bounds]
ICC 12.1.3 compiles with these patches
cache.c(440): error #1338: arithmetic on pointer to void or function type
??????????? ret += offset & pagesize_m1;
> diff bfd/cache.c
../binutils-2.22.icc/bfd/cache.c
440c440
<?????????? ret += offset & pagesize_m1;
---
#ifdef? __INTEL_COMPILER?????????
????????? (uintptr_t)ret += offset & pagesize_m1;
#else
????????? ret += offset & pagesize_m1;
#endif?????????
config/tc-i386.c(1200): error #175: subscript out of range
??????? if (x->array[2])
??? ???
> diff config/tc-i386.c? ../binutils-2.22.icc/config/tc-i386.c
<
static INLINE int
operand_type_all_zero (const union i386_operand_type *x)
{
? switch (ARRAY_SIZE(x->array))
??? {
??? case
3:
????? if (x->array[2])
??? return 0;
??? case 2:
????? if (x->array[1])
??? return 0;
??? case 1:
????? return !x->array[0];
??? default:
????? abort ();
??? }
}
>
static INLINE int
operand_type_all_zero (const union i386_operand_type *x)
{
? int idx = 0;
? switch (ARRAY_SIZE(x->array))
??? {
??? case 3:
????? idx = 2;
????? break;
??? case 2:
????? idx = 1;
????? break;
??? case 1:
????? idx = 0;
????? break;
???
default:
????? abort ();
??? }
? for (; idx >= 0; --idx)
??? if (x->array[idx])
??? return 0;
? return 1;???
}
errors.h(91): error: argument for attribute "nonnull" is larger than number of parameters
??? debug(const char* format, ...) ATTRIBUTE_PRINTF_2;
incremental.h(1335): error: argument for attribute "nonnull" is larger than number of parameters
??? error(const char* format, ...) const ATTRIBUTE_PRINTF_2;
???
> diff gold/object.h? ../binutils-2.22.icc/gold/object.h
<?? error(const char* format, ...) const ATTRIBUTE_PRINTF_2;
---
> #ifdef? __INTEL_COMPILER
>?? error(const char* format, ...) const /*ATTRIBUTE_PRINTF_2*/;
> #else
>?? void
>?? error(const char* format, ...)
const ATTRIBUTE_PRINTF_2;
> #endif?
./../include/demangle.h(122): error #411: class "demangler_engine" defines no constructor to initialize the following:
??????????? const member "demangler_engine::demangling_style_name"
??????????? const member "demangler_engine::demangling_style"
??????????? const member "demangler_engine::demangling_style_doc"
? extern const struct demangler_engine
> diff include/demangle.h ../binutils-2.22.icc/include/demangle.h
126a127,130
> #ifdef __cplusplus?
>?? explicit demangler_engine(const char *const n, const enum demangling_styles s, const char *const d) :
>???? demangling_style_name(n), demangling_style(s), demangling_style_doc(d) {}
> #endif?
> diff ld/ldlang.c? ../binutils-2.22.icc/ld/ldlang.c
3216c3216
< open_input_bfds (lang_statement_union_type *s, enum open_bfd_mode mode)
---
> open_input_bfds (lang_statement_union_type *s, int mode)
3249c3249
<??????????????????????????????? mode | OPEN_BFD_FORCE);
---
>??????????????????????????????? mode | 1);
> diff ld/plugin.c? ../binutils-2.22.icc/ld/plugin.c
801c801
<?????? ld_plugin_onload onloadfn = dlsym (curplug->dlhandle, "onload");
---
>?????? ld_plugin_onload onloadfn =
(ld_plugin_onload) dlsym (curplug->dlhandle, "onload");
803c803
<?????? onloadfn = dlsym (curplug->dlhandle, "_onload");
---
>?????? onloadfn = (ld_plugin_onload) dlsym (curplug->dlhandle, "_onload");