dwarf2 exception fix for djgpp (and possibly others)

Laszlo Molnar laszlo.molnar@eth.ericsson.se
Wed Mar 31 18:59:00 GMT 1999


On Thu, Mar 11, 1999 at 01:15:54AM -0700, Jeffrey A Law wrote:
> 
>   In message <19990222130638.B520@duna91.eth.ericsson.se>you write:
>   > Hi,
>   > 
>   > The problem: dwarf2 exception handling was working very unreliably
>   > under ix86-pc-msdosdjgpp since egcs v1.0. After some (lots of :-)
>   > debugging I've found the problem.
>   > 
>   > It's caused by a strange interaction between egcs and gas. Djgpp uses
>   > the COFF format, and gas from binutils 2.9.1 is compiled without
>   > --enable-bfd-assembler. So, the problem is that the size of the CIE and
>   > FDE structures in the dwarf2 output are always a multiple of 4, so
>   > sometimes padding is needed. Egcs assumes that the padding bytes in
>   > that section are always 0x00 (NOP) bytes. But unfortunately gas handles
>   > this section ("eh_frame") as code (the section is not called "data" nor
>   > "bss"), and uses other aligment bytes (like 0x90). Unfortunately these
>   > bytes are valid byte codes in the dwarf2 byte code interpreter, and it
>   > causes the exception stuff to abort.
>   > 
>   > A possible solution to this problem is to make sure that 0x00 bytes are
>   > used in this section for padding. Below is a patch by me and Andris
>   > Pavenis <pavenis@lanet.lv> (against egcs 1.1.1) 
> This really sounds like a bug in the assembler to me.  We're probably better
> off fixing the assembler than trying to work around the problem in the
> compiler.

OK for me. Patching egcs was simpler for me, that's why I submitted the
patch here.

Laszlo



More information about the Gcc-patches mailing list