Glenn Fowler wrote:
[CC:'ing some (random) compiler people and the linker alien (rod) to
take a look at this issue]
> I've been at this so long you think I should know better
> 
> I've been under the apparently mistaken assumption that
> if I dilligently pepper struct definitions and subsequent
> declarations and initializations with "const" that the compiler
> will attempt to place that data in readonly text
> 
> I've done this with the libast tables in conftab.c lc.c
> but nm and size show the data going to the .data section

Was this a read/write or read-only data section ? IMO |const| data
should go into a read-only section but I am not sure whether they are
labelled "data" or "text" in that case.
A special case are string literals, for gcc they are read-only by
default but Sun Workshop/Forte/Studio unfortunately requires a special
option for that ("-xstrconst") which we use by default in our
ksh93-integration Makefiles.

> am I expecting too much from cc to do this without prodding?

No, in theory it should be working by default...

> is there a set of options that at least works for gcc on
> multiple architectures? or at least for solaris and the ksh93
> integration?

For string literals "-xstrconst" should do the job...
-- snip --
   -xstrconst
      Inserts string literals into the read-only data section
      of the text segment instead of the default data seg-
      ment. Duplicate strings will be eliminated and the
      remaining copy shared amongst references in the code.
-- snip --
.. and AFAIK Sun Studio stores |const| data+structures into read-only
sections by default...

----

Bye,
Roland

-- 
  __ .  . __
 (o.\ \/ /.o) roland.mainz at nrubsig.org
  \__\/\/__/  MPEG specialist, C&&JAVA&&Sun&&Unix programmer
  /O /==\ O\  TEL +49 641 7950090
 (;O/ \/ \O;)

Reply via email to