The trick listed on that web page works fine.  One additional idea that
may be useful: the web page says "Of course you must ensure (by
shuffling your functions and objects) that calls between your functions
don't exceed the 32k branch limit."  If it's more convenient, you can
use the trick often called "jump islands" to avoid tedious reshuffling
of objects and code within the objects.  For example, say you've got
everything linking ok, except for three functions which don't fit within
the 32k branch limit (call them Func1, Func2, Func3).  You can add a
module island.c which contains:
        int Func1(int x) { return Real_Func1(x); }
        int Func2(int x) { return Real_Func2(x); }
        int Func3{int x) { return Real_Func3(x); }
Of course, you must make the types and arguments fit your own
functions.  Then rename your Func1 to Real_Func1; same with Func2 and
Func3, but DON'T change the calls to these functions.  Finally, put
island.o near the middle of your list of objects.  Now every call to
Func1 will call the function Func1 in island.o, which then calls the
real function Real_Func1.  That's two jumps, so it's a tiny bit slower,
but now you can reach (almost) from one end of the 64K segment to the
other, since the jump island in the middle gives you a "stepping stone";
each branch will be less than 32K.  This will start to break down as you
get near the 64K limit, but in my experience it works pretty well for
apps between 32K and around 50-60K.
--Mark


Hamish McGovern wrote:
> 
> I've just hit the 32K code limit using GCC,
> 
> What is the easiest solution to overcomming this.
> I have a copy of CW4 but am not using it - is this
> a solution?
> 
> I expect the application to continue to grow,
> but won't reach 64K for a while.
> 
> I found the following
> 
> GCC programming tricks for the PalmPilot
> http://www.geocities.com/SiliconValley/Lab/9981/gcctech.htm
> 
> Any other suggestions.
> 
> Regards
> _______________________________
> Hamish McGovern
> http://www.watch.aust.com/
> [EMAIL PROTECTED]

Reply via email to