* [9fans] zero length arrays in gcc
@ 2009-09-22 18:49 Fernan Bolando
2009-09-22 19:19 ` Bakul Shah
0 siblings, 1 reply; 5+ messages in thread
From: Fernan Bolando @ 2009-09-22 18:49 UTC (permalink / raw)
To: 9fans
Hi all
nhc98 uses a few of
static unsigned startLabel[]={};
which is a zero length array. It appears that it uses this as
reference to calculate the correct pointer for a bytecode.
pcc does not allow this since zero lenth array is another gcc
extension. I tried declaring it as
static unsigned startLabel[];
The resulting bytecode can then be compiled however it will only
crash. I traced it a pointer that tries to read an unallocated section
in memory.
Is it possible emulate zero pointer in pcc??
--
http://www.fernski.com
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [9fans] zero length arrays in gcc
2009-09-22 18:49 [9fans] zero length arrays in gcc Fernan Bolando
@ 2009-09-22 19:19 ` Bakul Shah
2009-09-25 8:14 ` Fernan Bolando
0 siblings, 1 reply; 5+ messages in thread
From: Bakul Shah @ 2009-09-22 19:19 UTC (permalink / raw)
To: fernanbolando, Fans of the OS Plan 9 from Bell Labs
On Wed, 23 Sep 2009 02:49:44 +0800 Fernan Bolando <fernanbolando@mailc.net> wrote:
> Hi all
>
> nhc98 uses a few of
>
> static unsigned startLabel[]={};
>
> which is a zero length array. It appears that it uses this as
> reference to calculate the correct pointer for a bytecode.
>
> pcc does not allow this since zero lenth array is another gcc
> extension. I tried declaring it as
>
> static unsigned startLabel[];
>
> The resulting bytecode can then be compiled however it will only
> crash. I traced it a pointer that tries to read an unallocated section
> in memory.
>
> Is it possible emulate zero pointer in pcc??
Would something like this work?
unsigned foo[1];
#define startLabel (&foo[1])
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [9fans] zero length arrays in gcc
2009-09-22 19:19 ` Bakul Shah
@ 2009-09-25 8:14 ` Fernan Bolando
2009-09-27 17:01 ` Russ Cox
0 siblings, 1 reply; 5+ messages in thread
From: Fernan Bolando @ 2009-09-25 8:14 UTC (permalink / raw)
To: Fans of the OS Plan 9 from Bell Labs
Hi all
both option did not solve my lost pointer problem. I am still
verifying if it is due to something unrelated to zero length arrays
option1
unsigned foo[1];
#define startLabel (&foo[1])
option 2
static unsigned startLabel0;
static unsigned startLabel[] = &startLabel0
thanks
fernan
--
http://www.fernski.com
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [9fans] zero length arrays in gcc
2009-09-25 8:14 ` Fernan Bolando
@ 2009-09-27 17:01 ` Russ Cox
0 siblings, 0 replies; 5+ messages in thread
From: Russ Cox @ 2009-09-27 17:01 UTC (permalink / raw)
To: fernanbolando, Fans of the OS Plan 9 from Bell Labs
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
^ permalink raw reply [flat|nested] 5+ messages in thread
[parent not found: <<1d5d51400909221149u32faccd7ue23a538afa523a23@mail.gmail.com>]
end of thread, other threads:[~2009-09-27 17:01 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-09-22 18:49 [9fans] zero length arrays in gcc Fernan Bolando
2009-09-22 19:19 ` Bakul Shah
2009-09-25 8:14 ` Fernan Bolando
2009-09-27 17:01 ` Russ Cox
[not found] <<1d5d51400909221149u32faccd7ue23a538afa523a23@mail.gmail.com>
2009-09-22 18:58 ` erik quanstrom
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).