This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: compact frame descriptions incompatible with DWARF2 .eh_frame


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]