Mason wrote: > Ian Lance Taylor wrote: > >> Mason wrote: >> >>> I'm running a mips-linux-gnu system, using >>> gcc version 4.6.3 (Sourcery CodeBench Lite 2012.03-63) >>> >>> mips-linux-gnu/bin/ld: >>> compact frame descriptions incompatible with DWARF2 .eh_frame >> >> I don't see this error message anywhere in the GNU ld sources, and I >> don't know what it refers to. Assuming that is indeed the linker you >> got from CodeSourcery, I think you will have to check with them. > > Well, this would explain why I came up empty when I searched for > the error string on the web :-) > > I'm downloading the source tarball right now. > https://sourcery.mentor.com/GNUToolchain/release2190 For the record, the error message comes from static void gld${EMULATION_NAME}_after_open(void) in binutils-2012.03/ld/emultempl/elf32.em The relevant code: for (abfd = link_info.input_bfds; abfd; abfd = abfd->link_next) { int type = 0; for (s = abfd->sections; s && type < 2 ; s = s->next) { const char *name = bfd_get_section_name (abfd, s); if (bfd_is_abs_section (s->output_section)) continue; if (CONST_STRNEQ (name, ".eh_frame_entry")) type = 2; else if (strcmp (name, ".eh_frame") == 0 && s->size > 8) type = 1; } if (type != 0) { if (seen_type == 0) seen_type = type; else if (seen_type != type) { einfo (_("%P%F: compact frame descriptions incompatible with" " DWARF2 .eh_frame from %B\n"), type == 1 ? abfd : elfbfd); break; } if (!elfbfd && (type == 2 || link_info.eh_frame_hdr)) { if (bfd_get_flavour (abfd) == bfd_target_elf_flavour) elfbfd = abfd; warn_eh_frame = TRUE; } } } I was able to work around the problem by downgrading the tool-chain to "gcc version 4.3.2 (Sourcery G++ Lite 4.3-51)" which is what the libraries had been compiled with. Is it even supported to compile some source files with gcc 4.3.2, and some with gcc 4.6.3, when some source files are written in C++? Is the C++ ABI stable over several releases? -- Regards.