Ton van Overbeek wrote:
On 2006-08-21, JamesSturdevant <[EMAIL PROTECTED]> wrote:
Now that I am able to get a memory map, I've identified one issue:

libgcc.a loads into the initial segment, using about 28K and not leaving room for much else. Is there a way to specify that this library should be loaded in its own segment or is that only a compile time option?

This will be very difficult to accomplish.
It is a compile time option. So you would need to recompile and rebuild libgcc.a. But you will also need to modify gcc itself to generate the correct inter segment calls for the functions in libgcc.a.

My advice: Forget it for 68k apps. If you write very large apps go to ARM native where you do not have the segmentation problem.

Ton van Overbeek


That's what I thought but I figured it was worth asking.

And since I'm asking, can someone explain what I'm not understanding in this part of the map? I have defined a number of segments: main (all of AppMain except PilotMain), list (DataList), tdoc(TextDoc), and strx (StringExtension). It looks to me like space is still being used in the first segment for the other segments.

.text           0x00000000     0x9904
 *(.text)
 .text          0x00000000       0x98 /usr/m68k-palmos/lib/crt0.o
                0x00000000                start
 .text          0x00000098       0x94 /usr/m68k-palmos/lib/gdbstub.o
 .text          0x0000012c       0x58 src/AppMain.o
                0x0000012c                PilotMain
 .text          0x00000184     0x1d86 src/DataList.o
 *fill*         0x00001f0a        0x2 00
 .text          0x00001f0c     0x1c58 src/TextDoc.o
 .text          0x00003b64     0x2a2a src/StringExtension.o
 *fill*         0x0000658e        0x2 00
 .text          0x00006590        0x4 multiple_code_sections.o
                0x00006590                _GccRelocateData
.text 0x00006594 0x812 /usr/lib/gcc-lib/m68k-palmos/2.95.3-kgpd/libgcc.a(_eh.o)
                0x000065ac                __throw_type_match
                0x00006624                __get_eh_info
                0x00006d14                __rethrow
                0x00006616                __get_eh_context
                0x00006682                __sjthrow
                0x00006c8c                __throw

...

.text 0x000098cc 0x26 /usr/m68k-palmos/lib/libcrt.a(reloc_chain.o)
                0x000098cc                _RelocateChain
                0x000098f4                . = ALIGN (0x4)
 *fill*         0x000098f2        0x2 00
                0x000098f4                bhook_start = .
 *(bhook)
 bhook          0x000098f4        0x4 /usr/m68k-palmos/lib/gdbstub.o

...

OUTPUT(EvTest coff-m68k)

list            0x00000000     0x1bcc
 *(list)
 list           0x00000000     0x1bca src/DataList.o
0x00000a42 DataList::getListInfo(_STL::basic_string<char, _STL::char_traits<char>, _STL::allocator<char> >) 0x0000002c DataEntry::getElement(_STL::basic_string<char, _STL::char_traits<char>, _STL::allocator<char> > &) 0x000012a6 DataList::LoadFromTable(_STL::basic_string<char, _STL::char_traits<char>, _STL::allocator<char> >) 0x00000780 DataEntry::LoadFromRow(_STL::basic_string<char, _STL::char_traits<char>, _STL::allocator<char> >)
                0x00001b5c                DataList::cleanUp(void)

strx            0x00000000      0xd04
 *(strx)
 strx           0x00000000       0x7e src/TextDoc.o
                0x00000000                fileText
 *fill*         0x0000007e        0x2 00
 strx           0x00000080      0xc84 src/StringExtension.o
0x00000080 findNoCase(_STL::basic_string<char, _STL::char_traits<char>, _STL::allocator<char> >, _STL::basic_string<char, _STL::char_traits<char>, _STL::allocator<char> >)
                0x00000586                ItoString(unsigned long, int)
0x00000ba8 makeLower(_STL::basic_string<char, _STL::char_traits<char>, _STL::allocator<char> > &) 0x00000a92 replaceAll(_STL::basic_string<char, _STL::char_traits<char>, _STL::allocator<char> > &, _STL::basic_string<char, _STL::char_traits<char>, _STL::allocator<char> >, _STL::basic_string<char, _STL::char_traits<char>, _STL::allocator<char> >) 0x00000224 findNoCaseFrom(_STL::basic_string<char, _STL::char_traits<char>, _STL::allocator<char> >, _STL::basic_string<char, _STL::char_traits<char>, _STL::allocator<char> >, unsigned long) 0x000003ca rfindNoCase(_STL::basic_string<char, _STL::char_traits<char>, _STL::allocator<char> >, _STL::basic_string<char, _STL::char_traits<char>, _STL::allocator<char> >) 0x00000822 trimRight(_STL::basic_string<char, _STL::char_traits<char>, _STL::allocator<char> >, _STL::basic_string<char, _STL::char_traits<char>, _STL::allocator<char> >) 0x0000095c trimLeft(_STL::basic_string<char, _STL::char_traits<char>, _STL::allocator<char> >, _STL::basic_string<char, _STL::char_traits<char>, _STL::allocator<char> >) 0x00000c5a makeUpper(_STL::basic_string<char, _STL::char_traits<char>, _STL::allocator<char> > &)

text
 *(text)

.reloc          0x00000000     0x1920
 .reloc         0x00000000       0x60 src/AppMain.o
 .reloc         0x00000060      0x57c src/DataList.o
 .reloc         0x000005dc      0x498 src/TextDoc.o
 .reloc         0x00000a74      0x678 src/StringExtension.o
.reloc 0x000010ec 0x138 /usr/lib/gcc-lib/m68k-palmos/2.95.3-kgpd/libgcc.a(_eh.o) .reloc 0x00001224 0x18c /usr/lib/gcc-lib/m68k-palmos/2.95.3-kgpd/libgcc.a(exception.o) .reloc 0x000013b0 0x18 /usr/lib/gcc-lib/m68k-palmos/2.95.3-kgpd/libgcc.a(opvnew.o) .reloc 0x000013c8 0x18 /usr/lib/gcc-lib/m68k-palmos/2.95.3-kgpd/libgcc.a(opvdel.o) .reloc 0x000013e0 0x18 /usr/lib/gcc-lib/m68k-palmos/2.95.3-kgpd/libgcc.a(opdel.o) .reloc 0x000013f8 0x210 /usr/lib/gcc-lib/m68k-palmos/2.95.3-kgpd/libgcc.a(tinfo.o) .reloc 0x00001608 0x18 /usr/lib/gcc-lib/m68k-palmos/2.95.3-kgpd/libgcc.a(opnew.o) .reloc 0x00001620 0x294 /usr/lib/gcc-lib/m68k-palmos/2.95.3-kgpd/libgcc.a(tinfo2.o) .reloc 0x000018b4 0x6c /usr/lib/gcc-lib/m68k-palmos/2.95.3-kgpd/libgcc.a(new.o)

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

Reply via email to