lalonde@torolab2.vnet.ibm.com (Glen Lalonde) (03/13/91)
Can you mix object files created with c68 and the original c (ack?) compiler? That is, do they use the same storage mapping and calling convention. I have rebuilt the kernel, fs, and mm on MacMinix using c68 but I now get intermittent read failures. If I retry the operation the read failure goes away though. I did not rebuilt the library and crtso.o with c68 though.
HBO043%DJUKFA11.BITNET@cunyvm.cuny.edu (Christoph van Wuellen) (03/14/91)
As long as no floating point stuff is included, c68 and ACK code can be
mixed. This might not be true for nested structures:
In c68,
struct a {
struct b {
char x1;
char x2;
char x3;
};
char x4;
}
struct a has a length of 6 bytes, with the following offsets:
b.x1 0, b.x2 1, b.x3 2, x4 4
The reason is that the length of every structure is rounded up to the
default alignment. I do not know how ACK treats this, but you have to be
careful when implementing TeX with the web2c package in 32-bit mode:
struct halfword {
struct v {
char b0;
char b1;
};
short h0;
}
WIth a default alignment of 32 bit, this structure is 8 bytes long!
because the Sun386 compiler makes this struct 4 bytes long (as it is intended),
I once had problems mixing Sun and c386 code on that application.
C.v.W.