[comp.sys.mac.programmer] Think 4.0.2 linker "data segment too big"

rt2@cunixb.cc.columbia.edu (Rens Troost) (04/23/91)

A large (90k+ lines) program I'm working on has recently decided to not
link anymore. Before I start tearing out my hair, how can I get around this
"data segment too big" error? Am I doomed?
The application uses a heft amount of global information.

-Rens
rt2@cunixb.cc.columbia.edu

hairston@henry.ece.cmu.edu (David Hairston) (04/23/91)

[rt2@cunixb.cc.columbia.edu (Rens Troost) writes:]
[] A large (90k+ lines) program I'm working on has recently decided to not
[] link anymore. Before I start tearing out my hair, how can I get around this
[] "data segment too big" error? Am I doomed?
[] The application uses a heft amount of global information.

Fee Fi Fo Fum, I smell the blood of an ... ;)

You are not doomed!  It's all in the Think C manual.  You could try
two things (which are obvious from your short problem statement):

1) use multi-code segments (in the manual).
2) declare your "global data" as pointers (or handles) and then actually
    allocate it in the heap.  this might imply structuring your data,
    as you really don't want to allocate "googobs" of individual int's,
    for example.

  -dave-  
hairston@henry.ece.cmu.edu

"Manual?  What Manual??  Is this not a Macintosh???"

mike@odgate.odesta.com (Mike J. Kelly) (04/28/91)

rt2@cunixb.cc.columbia.edu (Rens Troost) writes:
>A large (90k+ lines) program I'm working on has recently decided to not
>link anymore. Before I start tearing out my hair, how can I get around this
>"data segment too big" error? Am I doomed?

Try checking "Separate STRS" in the Project Type menu.  It takes strings
and floating point constants which are normally put into the data segment
and puts them in a separate strings segment.