On 30/03/12 05:11, Ian Lance Taylor wrote:
"Paulo J. Matos"<pa...@matos-sorge.com> writes:
I am porting my backend to GCC47 and have been jumping through some
hurdles. libgcc is trying to compile unwind*.c files which I can't
remember being there for GCC46.
They were there. In 4.6 they were in the gcc subdirectory. For 4.7
they moved to the libgcc directory. This was a logical move because
they have always been part of libgcc, not part of the compiler (and
enormous thanks for Rainer Orth for working through the mechanics of
moving them.)
You are right, they were but they were not being compiled for my target.
The reason they were being compiled for GCC47 is my fault and a problem
with way I moved config files accross.
or to
make unwind compatible with my backend besides going blindly changing SI
mode in variable declaration to QI mode?
There really shouldn't be anything in the exception support that uses
SImode. That would be a bug. And I don't see anything that uses
SImode. What are you looking at? What I see is things that use mode
__unwind_word__, __word__, and __pointer__. Those types are under the
control of your backend.
I was mentioning these references to SI:
unwind-pe.h:
static const unsigned char *
read_encoded_value_with_base (unsigned char encoding, _Unwind_Ptr base,
const unsigned char *p, _Unwind_Ptr *val)
{
union unaligned
{
void *ptr;
unsigned u2 __attribute__ ((mode (HI)));
unsigned u4 __attribute__ ((mode (SI)));
unsigned u8 __attribute__ ((mode (DI)));
signed s2 __attribute__ ((mode (HI)));
signed s4 __attribute__ ((mode (SI)));
signed s8 __attribute__ ((mode (DI)));
} __attribute__((__packed__));
...
There are also some references to mode SI in unwind-dw2.c.
And there's also this:
unwind-dw2-fde.h:typedef int sword __attribute__ ((mode (SI)));
Why hardcode these type sizes here?
Cheers,
--
PMatos