Newlib 1.8.1 problem: strcat causes bus address error
"Borkhuis, Johan" (Johan.Borkhuis@peektraffic.nl)
Tue, 16 Nov 1999 13:46:20 +0100
Hello,
We are using the GNU toolchain for m68k and newlib. When we are running our
SW we get a bus address error. This error occurs in strcat. The code where
the problem comes from is the following:
/* Skip over the data in s1 as quickly as possible. */
if (ALIGNED (s1))
{
unsigned long *aligned_s1 = (unsigned long *)s1;
while (!DETECTNULL (*aligned_s1))
aligned_s1++;
s1 = (char *)aligned_s1;
}
with ALLIGNED replaced with the following:
#define ALIGNED(X) (((long)X & (sizeof (long) - 1)))
The error occured in the first assignement, because s1 is not alligned.
The problems is created by the macro ALLIGNED. When X is not a multiple of 4
(for a 32 bit long) this function returns TRUE when it should return FALSE.
(BTW: this macro is also used in other modules, but there it is called
UNALLIGNED.)
Did anyone discover this problem, or is there a workaround for this?
Groeten
Johan
--
o o o o o o o . . . ___________________________________
o _____ || Johan Borkhuis |
.][__n_n_|DD[ ====_____ | johan.borkhuis@peektraffic.nl |
>(________|__|_[_________]_|________________________________|
_/oo OOOOO oo` ooo ooo 'o!o!o o!o!o`
= VxWorks page: http://www.xs4all.nl/~borkhuis/vxworks/vxworks.html =
------
Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sourceware.cygnus.com