Newlib 1.8.1 problem: strcat causes bus address error

Borkhuis, Johan
Wed Nov 17 00:25:00 GMT 1999


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))

      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

Did anyone discover this problem, or is there a workaround for this?


     o o o o o o o . . .   ___________________________________
    o      _____           ||  Johan Borkhuis                |
  .][__n_n_|DD[  ====_____  | |
 _/oo OOOOO oo`  ooo   ooo  'o!o!o                      o!o!o`
= VxWorks page: =

More information about the Newlib mailing list