[comp.os.minix] C68

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.