Assuming there are not many of these, the
easiest thing to do is fix the nhc98 code.
Figure out what the field after the label is
and take that address instead.
Alternately, you can use a Plan 9 extension
to defeat the gcc extension. Wherever it says
struct Foo{
...
uchar startLabel[];
int field1;
char field2;
double field 3;
uchar endLabel[];
...
}
you can replace it with
typedef struct insideFoo insideFoo;
struct insideFoo {
int field1
char field2;
double field3;
}
struct Foo {
...
insideFoo;
...
}
and then when it says something like
p = x.startLabel;
q = x.endLabel;
memmove(&data, &x.startLabel, x.endLabel - x.startLabel);
you can write
p = (char*)&x.insideFoo;
q = (char*)(&x.insideFoo+1);
memmove(&data, &x.insideFoo, sizeof x.insideFoo);
Russ