On Thu, 25 Jan 2007, Mikael Pettersson wrote: > Sergei Golovan writes: > > As one can see, erlang Debian package (R11B-2 relese, 11.b.2 in Debian > > versioning) fails to build on m68k now > > > (http://buildd.debian.org/fetch.cgi?&pkg=erlang&ver=1%3A11.b.2-4&arch=m68k&stamp=1167824208&file=log). > > > > After some research, we've found that erlang relies on the alignment > > of some global variable. The following patch fixes it: > > ------------------------------------------------------------------ > > --- erlang-11.b.2.orig/erts/emulator/beam/binary.c > > +++ erlang-11.b.2/erts/emulator/beam/binary.c > > @@ -31,7 +31,7 @@ > > #include "erl_bits.h" > > > > Uint erts_allocated_binaries; > > -erts_mtx_t erts_bin_alloc_mtx; > > +erts_mtx_t erts_bin_alloc_mtx __attribute__ ((aligned (4))); > > > > void > > erts_init_binary(void) > > ------------------------------------------------------------------ > > > > So, the question is the following: Are global variables supposed to be > > always aligned? Is this a bug in GCC that it doesn't align the > > variable? > > Definitely smells like a toolchain bug to me. In this case, since you've > enabled threads, erts_mtx_t is a properly declared struct type containing > among other things a pthread_mutex_t, an int, and a couple of pointers. > I don't remember how strict M68K is about alignment, but presumably it wants > non-arbitrary alignment for word-sized fields, especially perhaps if they're > used for atomic accesses. > > The error could be in gcc, gas, ld, or even libc.
The m68k ABI specifies that 32-bit objects must be aligned to a 16-bit address. I.e. ints and pointers are not guaranteed to be 32-bit aligned. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [EMAIL PROTECTED] In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]