Man they just keep getting better and better.  Check this out.

I'm working on a BIG app with tons of DB files and stuff.  It's a
multisegmented (17 segments) app.

We organize the segments to contain source code files grouped by
functionality.  So 100% of the code in segment 9 served a function that we
decided to get rid of.  In the File view of CW6, I simply highlighted and
deleted all the files.  After resolving dependencies, I rebuilt.  The
resulting PRC was corrupted.  Attempts to run it would immediately crash the
device as only a segment-corrupted PRC can (terrible TRAP $0 crash before
PilotMain, into which one has no hopes of debugging).

Looking at the .MAP file, I saw that the linker had generated a segment
devoid of code, yet with a size of 12 bytes:


Segment:   9      12 bytes  "Seg 9 Stuff"

Segment:  10   22032 bytes  "Seg 10 stuff"
<segment 10's code>


Not good!  I presume this add made all the references to code after this
segment (including my DATA segment at the end) off by 12 bytes.

This segment was the one whose files I had just deleted.  When I switched to
the Segment view in CW6, it showed four files from a totally unrelated
segment sitting in the "Seg 9 Stuff" segment.  This was mysterious, as the
MAP file did not show any files in this same segment.  To resolve this
problem, I dragged the four files
back to their original segment.  This fortunately caused the linker properly
to remove this mysterious 12-byte empty segment, and everything was
copasetic after this point.

Watch out!

-Jeff Ishaq







-- 
For information on using the Palm Developer Forums, or to unsubscribe, please see 
http://www.palmos.com/dev/tech/support/forums/

Reply via email to