GCC 2.9.5, Solaris 2.8, SPARC - alignment issue - PLEASE HELP!
Rob Newberry
robnewberry@grouplogic.com
Tue Jul 24 14:24:00 GMT 2001
Hi,
I have some legacy code, and I really, really, really need to not modify
it. This code has alignment issues, but I would expect the compiler (or
the OS maybe) to handle this for me.
Here's some example of the code that causes problems:
char key[256];
long value = 1;
// this causes a SIGSEGV on SPARC
*((long*)&key[2]) = value;
I know this is cruddy, but I would _EXPECT_ the compiler to essentially
catch this and (more-or-less) rewrite it as something similar to:
memcpy( &key[2], &value, sizeof(long));
I have tried compiling with STRICT_ALIGNMENT=1 and
SLOW_UNALIGNED_ACCESS=1, but neither is helping. It always seg-faults.
Is there a solution to my problem on Sun OS 5.8 with GCC?
I am amenable to mucking with the Makefile or changing some kind of OS
configuration. The thing that I can't do is modify the code.
(Actually, I can modify the code, but the problem is that I'm not sure I
can find all the places this could happen in the code, so I'd like to
simply let the compiler do it. If there is a way to have the compiler
generate an error every time it sees misalignment, that would also be OK,
but absolutely less optimal.)
PLEASE HELP!
Rob
---------------------------------------------------------------------
Rob Newberry
Director of Fajita Technology
Group Logic, Inc.
More information about the Gcc-help
mailing list