This is the mail archive of the crossgcc@sources.redhat.com mailing list for the crossgcc project.
See the CrossGCC FAQ for lots more information.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Hi Joel, Kai and all, Thank you for your response - I appreciate the great willingness of many people who are going out of their way to help me. I will try to respond to the questions below: > Ok, First to clarify. (My assumptions) > > hello.map is failed build map on unix system > hell1.map is successful map from windows tools system > rm_rom.ld is linker script used for both builds The above are correct assumptions. > ll is working windows script for windows tools ll is LL.BAT which calls ld and then objcopy. > ?? script on unix It is called 'compile.sh' and is a small script of my making to mimic the steps that are taken on the windows system. > Comments > 1. When building on unix system using rm_rom.ld you should not need or add > any libraries (to the ld command line) as they are included by the GROUP > command. (see the way ll does without) I actually noticed that this morning. If I run the following ld command on unix: # m68k-coff-ld -v -o hello.cof -T rm_rom.ld -M > hello.map I get the following: rm_crt0.o:rm_crt0.S:149: undefined reference to `main' ./libc.a(exit.o)(.text+0x52):exit.c: undefined reference to `_exit' ./libc.a(sbrkr.o)(.text+0x12):sbrkr.c: undefined reference to `sbrk' In the meantime, I have copied the entire "../mcpu32" directory from the windows machine to a unix directory, and with the following command: m68k-coff-ld -v -o hello.cof -L/hfs/mcpu32 -T rm_rom.ld -M > hello.map I get the following: rm_crt0.o:rm_crt0.S:149: undefined reference to `main' So, there must be something else in that directory that is influencing the link. Also, it should be noted that I can compile hello.c successfully in unix - it is just that the resulting S-record file does not run on the board. I wonder if this is related to the incorrect __vector*_defaults mentioned below. Please note that I also copied the rm_crt0.o file from the windows side, as well. In the map file from the above command, which is enclosed as an attachment, I'm still getting the problem with the __vector*_defaults that Joel pointed out. Is there a reason for that? I am also enclosing the rm_crt0.S file if there might be a hint in that. > 2. The -L/usr/local/lib/gcc-lib/m68k-coff/2.8.1, ... library include paths > should not be needed if > your cross was built correctly and you did not change related things in the > specs file. But it > probably wont hurt if this is the correct directory. > 3. comparing the two map files after the line "Linker script and memory map" > shows the attempt to > load extra libs in hello.map. note the different paths for the same > libs(LOAD) But if you notice > above that nothing was loaded from libbcc.a. This is why you have undefined > references for _exit, > sbrk, isatty, ... Things are different with the use of the entire mcpu32 directory from windows, there is just the one undefined reference - to 'main' coming from rm_crt0.o. Any suggestions for fixing that? Another thing that bothers me is what seems to be a big difference reflected in the .map files from the unix compile (hello.map) and the windows compile (hell1.map). In hell1.map, many many different archive members are included while far fewer are shown in hello.map - is this because the link for hello.map was aborted due to the problem finding 'main'? > 4. Your rm_crt0.o are not the same! notice the differences for your > __vector*_defaults in the two Well, I brought the rm_crt0.S file over from windows and compiled it to produce the rm_crt0.o. Is there something I should inspect in it to see why this happens? As mentioned above, I also brought over the rm_crt0.o file from windows, and it still produces the same problem with the __vector*_defaults. I don't quite know where to turn at this point... >> Here is rm_rom.ld (wrapping badly): >> >> /* >> * Linker script for typical ROM-based M68K embedded applications using COFF >> obj format. >> * Copyright © 1997-1999 by Object Software Inc., All Rights Reserved. >> * >> * The copyright holder hereby grants permission to use, copy, modify, >> distribute, >> * and license this software and its documentation for any purpose, provided >> * that existing copyright notices are retained in all copies and that this >> * notice is included verbatim in any distributions. No written agreement, >> * license, or royalty fee is required for any of the authorized uses. >> * >> * This script needs four symbols defined to set the location of RAM and ROM >> memory: >> * __rom_start The first address of read-only memory. >> * All read-only sections are placed here, as well as >> * a copy of the initialized data to be copied to RAM >> * by the startup code. >> * __rom_size the size of the read-only memory block. >> * __ram_start The first address of read/write memory; >> * all initialized and uninitialized data goes here. >> * __ram_size The size of the read/write memory block; >> * the stack pointer is set to the top of this block. >> * >> * In addition, the symbol __vector_default must be defined; this is the >> address of >> * the default interrupt/exception handler. Any interrupt vectors which do >> not have >> * a specific handler will be set to point to this location. >> * >> * These symbols may be defined on the linker command line or in an object >> file. >> * >> * Stack grows down from high memory. >> * >> * The memory map look like this: >> * >> * ROM >> * +--------------------+ <- __rom_start >> * | .vectors | >> * | .text | >> * | _etext | >> * | ctor list | the ctor and dtor lists are for >> * | dtor list | C++ support >> * +--------------------+ <- __rom_data_start >> * | ROM image of .data | >> * +--------------------+ >> * >> * RAM >> * +--------------------+ <- __ram_start >> * | .data | initialized data ends up here >> * | _edata | >> * +--------------------+ >> * | .bss | >> * | __bss_start | start of bss, cleared by crt0 >> * | _end | start of heap, used by sbrk() >> * +--------------------+ >> * . . >> * . . >> * . . >> * | __stack | top of stack (at __ram_start + __ram_size) >> * +--------------------+ >> */ >> STARTUP(rm_crt0.o) >> OUTPUT_ARCH(m68k) >> SEARCH_DIR(.) >> /* >> INPUT(vectors.o) >> */ >> /* >> GROUP(-ltrgt -lrom -lc -lgcc) >> */ >> GROUP(-lbcc -lc -lgcc -lm) >> __DYNAMIC = 0; >> >> __ram_start = 0x03000; >> __ram_size = 0x05000; >> __rom_start = 0x90000; >> __rom_size = 0x70000; >> __stack = __ram_start + __ram_size - 0x4; >> __prog_start = __rom_start + 0x10; >> >> /* >> * allocate the stack to be at the top of memory, since the stack >> * grows down. __boot_stack is the stack pointer value that is stored >> * in the exception vector table. >> */ >> >> PROVIDE (__stack = __ram_start + __ram_size); >> PROVIDE (__boot_stack = __ram_start + __ram_size); >> >> /* >> * Initalize some symbols to be zero so we can reference them in the >> * crt0 without core dumping. These functions are all optional, but >> * we do this so we can have our crt0 always use them if they exist. >> * This is so BSPs work better when using the crt0 installed with gcc. >> * We have to initalize them twice, so we cover a.out (which prepends >> * an underscore) and coff object file formats. >> */ >> PROVIDE (crt0_flags = 0); >> PROVIDE (_crt0_flags = 0); >> PROVIDE (hardware_init_hook = 0); >> PROVIDE (_hardware_init_hook = 0); >> PROVIDE (software_init_hook = 0); >> PROVIDE (_software_init_hook = 0); >> >> /* Provide default values for the interrupt/exception vectors. >> * We have a unique name (in vectors.o) for each interrupt/exception vector. >> * Any that are not explicitly defined in user code will be assigned a >> default value >> * by this series of PROVIDE directives. >> */ >> >> /* .vectors, .text, and a copy of .data go into ROM; .data and .bss go into >> RAM. */ >> SECTIONS >> { >> /* >> .vectors __rom_start : >> { >> __vector_start = .; >> *(.vectors) >> } >> */ >> >> /* >> .text BLOCK (0x4) : >> */ >> .text __rom_start : >> { >> LONG (0xbeefbeef); >> LONG (__stack); >> LONG (__prog_start); >> LONG (0x0); >> *(.text) >> . = ALIGN(0x4); >> __CTOR_LIST__ = .; >> LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2) >> *(.ctors) >> LONG(0) >> __CTOR_END__ = .; >> __DTOR_LIST__ = .; >> LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2) >> *(.dtors) >> LONG(0) >> __DTOR_END__ = .; >> *(.rodata) >> *(.gcc_exc) >> *(.gcc_except_table) >> >> __INIT_SECTION__ = . ; >> LONG (0x4e560000) /* linkw %fp,#0 */ >> *(.init) >> SHORT (0x4e5e) /* unlk %fp */ >> SHORT (0x4e75) /* rts */ >> >> __FINI_SECTION__ = . ; >> LONG (0x4e560000) /* linkw %fp,#0 */ >> *(.fini) >> SHORT (0x4e5e) /* unlk %fp */ >> SHORT (0x4e75) /* rts */ >> >> /* hardware initialization lists go here */ >> . = ALIGN (0x4); >> crt0_initialization_list = .; >> _crt0_initialization_list = .; >> *(.crt0ini) >> . = ALIGN (0x2); >> LONG (0) /* null pointer terminates list */ >> _etext = .; >> *(.lit) >> . = ALIGN (0x4); >> __data_start_rom = .; >> } >> >> .data __ram_start : AT (__data_start_rom) >> { >> __data_start = .; >> *(.shdata) >> *(.data) >> _edata = .; >> } >> >> .bss BLOCK (0x4) : >> { >> __bss_start = . ; >> *(.shbss) >> *(.bss) >> *(COMMON) >> *(.eh_fram) >> *(.eh_frame) >> _end = ALIGN (0x8); >> __end = _end; >> } >> >> .stab 0 (NOLOAD) : >> { >> *(.stab) >> } >> >> .stabstr 0 (NOLOAD) : >> { >> *(.stabstr) >> } >> } >> >> ----------------------------------------------------------------------------- >> ----------------------- >> Name: hello.map >> hello.map Type: Plain Text (text/plain) >> Encoding: base64 >> >> Name: hell1.map >> hell1.map Type: Plain Text (text/plain) >> Encoding: base64 > > ------ > Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/ > Want to unsubscribe? Send a note to crossgcc-unsubscribe@sourceware.cygnus.com > > >
GNU ld version 2.9.1 (with BFD 2.9.1) Archive member included because of file (symbol) /hfs/mcpu32/libc.a(atexit.o) rm_crt0.o (atexit) /hfs/mcpu32/libc.a(exit.o) rm_crt0.o (exit) /hfs/mcpu32/libc.a(impure.o) /hfs/mcpu32/libc.a(atexit.o) (_impure_ptr) /hfs/mcpu32/libc.a(malloc.o) /hfs/mcpu32/libc.a(atexit.o) (malloc) /hfs/mcpu32/libc.a(mallocr.o) /hfs/mcpu32/libc.a(malloc.o) (_malloc_r) /hfs/mcpu32/libc.a(sbrkr.o) /hfs/mcpu32/libc.a(mallocr.o) (_sbrk_r) /hfs/mcpu32/libc.a(memcpy.o) /hfs/mcpu32/libc.a(mallocr.o) (memcpy) /hfs/mcpu32/libbcc.a(cpu32bug.o) /hfs/mcpu32/libc.a(exit.o) (_exit) /hfs/mcpu32/libbcc.a(sbrk.o) /hfs/mcpu32/libc.a(sbrkr.o) (sbrk) Allocating common symbols Common symbol size file errno 0x4 /hfs/mcpu32/libc.a(sbrkr.o) heap_ptr 0x4 /hfs/mcpu32/libbcc.a(sbrk.o) Memory Configuration Name Origin Length Attributes *default* 0x00000000 0xffffffff Linker script and memory map LOAD rm_crt0.o START GROUP LOAD /hfs/mcpu32/libbcc.a LOAD /hfs/mcpu32/libc.a LOAD /hfs/mcpu32/libgcc.a LOAD /hfs/mcpu32/libm.a END GROUP 0x00000000 __DYNAMIC=0x0 0x00003000 __ram_start=0x3000 0x00005000 __ram_size=0x5000 0x00090000 __rom_start=0x90000 0x00070000 __rom_size=0x70000 0x00007ffc __stack=((__ram_start+__ram_size)-0x4) 0x00090010 __prog_start=(__rom_start+0x10) 0x00008000 PROVIDE (__stack, (__ram_start+__ram_size)) 0x00008000 PROVIDE (__boot_stack, (__ram_start+__ram_size)) 0x00000000 PROVIDE (crt0_flags, 0x0) 0x00000000 PROVIDE (_crt0_flags, 0x0) 0x00000000 PROVIDE (hardware_init_hook, 0x0) 0x00000000 PROVIDE (_hardware_init_hook, 0x0) 0x00000000 PROVIDE (software_init_hook, 0x0) 0x00000000 PROVIDE (_software_init_hook, 0x0) .text 0x00090000 0x514 0x00090000 0x4 LONG 0xbeefbeef 0x00090004 0x4 LONG 0x7ffc __stack 0x00090008 0x4 LONG 0x90010 __prog_start 0x0009000c 0x4 LONG 0x0 *(.text) .text 0x00090010 0x14e rm_crt0.o 0x00090146 __vector_buserror_default 0x00090146 __vector_addrerror_default 0x00090146 __vector_default 0x00090010 start *fill* 0x0009015e 0x2 .text 0x00090160 0x62 /hfs/mcpu32/libc.a(atexit.o) 0x00090160 atexit *fill* 0x000901c2 0x2 .text 0x000901c4 0x58 /hfs/mcpu32/libc.a(exit.o) 0x000901c4 exit .text 0x0009021c 0x4c /hfs/mcpu32/libc.a(malloc.o) 0x0009021c malloc 0x0009024c realloc 0x00090234 free .text 0x00090268 0x19c /hfs/mcpu32/libc.a(mallocr.o) 0x00090398 _realloc_r 0x00090366 _free_r 0x00090304 _malloc_r .text 0x00090404 0x32 /hfs/mcpu32/libc.a(sbrkr.o) 0x00090404 _sbrk_r *fill* 0x00090436 0x2 .text 0x00090438 0x2e /hfs/mcpu32/libc.a(memcpy.o) 0x00090438 memcpy *fill* 0x00090466 0x2 .text 0x00090468 0x5a /hfs/mcpu32/libbcc.a(cpu32bug.o) 0x00090494 outln 0x00090484 putDebugChar 0x000904b4 havebyte 0x00090484 outbyte 0x00090470 getDebugChar 0x00090470 inbyte 0x00090468 _exit *fill* 0x000904c2 0x2 .text 0x000904c4 0x2c /hfs/mcpu32/libbcc.a(sbrk.o) 0x000904c4 sbrk 0x000904f0 .=ALIGN(0x4) 0x000904f0 __CTOR_LIST__=. 0x000904f0 0x4 LONG 0x0 (((__CTOR_END__-__CTOR_LIST__)/0x4)-0x2) *(.ctors) 0x000904f4 0x4 LONG 0x0 0x000904f8 __CTOR_END__=. 0x000904f8 __DTOR_LIST__=. 0x000904f8 0x4 LONG 0x0 (((__DTOR_END__-__DTOR_LIST__)/0x4)-0x2) *(.dtors) 0x000904fc 0x4 LONG 0x0 0x00090500 __DTOR_END__=. *(.rodata) *(.gcc_exc) *(.gcc_except_table) 0x00090500 __INIT_SECTION__=. 0x00090500 0x4 LONG 0x4e560000 *(.init) 0x00090504 0x2 SHORT 0x4e5e 0x00090506 0x2 SHORT 0x4e75 0x00090508 __FINI_SECTION__=. 0x00090508 0x4 LONG 0x4e560000 *(.fini) 0x0009050c 0x2 SHORT 0x4e5e 0x0009050e 0x2 SHORT 0x4e75 0x00090510 .=ALIGN(0x4) 0x00090510 crt0_initialization_list=. 0x00090510 _crt0_initialization_list=. *(.crt0ini) 0x00090510 .=ALIGN(0x2) 0x00090510 0x4 LONG 0x0 0x00090514 _etext=. *(.lit) 0x00090514 .=ALIGN(0x4) 0x00090514 __data_start_rom=. .data 0x00003000 0x2fc load address 0x00090514 0x00003000 __data_start=. *(.shdata) *(.data) .data 0x00003000 0xc rm_crt0.o 0x00003008 __unhandled_exception_pc 0x00003004 __unhandled_exception .data 0x0000300c 0x2ee /hfs/mcpu32/libc.a(impure.o) 0x000032f6 _impure_ptr *fill* 0x000032fa 0x2 0x000032fc _edata=. .bss 0x000032fc 0x8 0x000032fc __bss_start=. *(.shbss) *(.bss) *(COMMON) COMMON 0x000032fc 0x4 /hfs/mcpu32/libc.a(sbrkr.o) 0x000032fc errno COMMON 0x00003300 0x4 /hfs/mcpu32/libbcc.a(sbrk.o) 0x00003300 heap_ptr *(.eh_fram) *(.eh_frame) 0x00003308 _end=ALIGN(0x8) 0x00003308 __end=_end .stab 0x00000000 0x2ac *(.stab) .stab 0x00000000 0x2ac /hfs/mcpu32/libbcc.a(sbrk.o) .stabstr 0x00000000 0xc0d *(.stabstr) .stabstr 0x00000000 0xc0d /hfs/mcpu32/libbcc.a(sbrk.o) 0x0 (size before relaxing) OUTPUT(hello.cof coff-m68k)
/* * crt0.S -- startup file for m68k-coff * * Copyright (c) 1995, 1996 Cygnus Support * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ /* modified by Scott Howard, scott@objsw.com * - optional initialization of peripherals via crt0_initialization_list * - copy .data section from ROM image (if there is one) to RAM * - optional clearing of bss, based on value of external long word 'crt0_flags' * - optional call of hardware_init_hook immediately after peripheral initialization * hardware_init_hook may be called via jsr or jmp, based on value of 'crt0_flags' * - Default exception handler re-starts system, saving the vector number * of the exception that caused the restart as well as the program counter where * the exception occurred. */ #include "asm.h" .title "crt0.S for m68k-coff" /* * Define an empty environment. */ .data .align 2 SYM (environ): .long 0 /* Define a variable that indicates which exception handler got us * into the startup code. For a reset, it's always set to zero; * entry through other exceptions stores the vector number here (if possible; * see comments around __vector_default at the end of this file). */ .globl SYM (__unhandled_exception) SYM (__unhandled_exception): .long 0 /* __unhandled_exception_pc saves the program counter value where the exception occurred. */ .globl SYM (__unhandled_exception_pc) SYM (__unhandled_exception_pc): .long 0 .align 2 .text /* * These symbols are defined in C code, so they need to always be * named with SYM because of the difference between object file formats. */ /* These are defined in C code. */ .extern SYM (main) .extern SYM (exit) .extern SYM (hardware_init_hook) .extern SYM (software_init_hook) .extern SYM (atexit) .extern SYM(__do_global_dtors) .extern SYM(crt0_flags) .extern SYM(crt0_initialization_list) /* * These values are set in the linker script, so they must be * explicitly named here without SYM. */ .extern __stack .extern __bss_start .extern __data_start_rom .extern __data_start .extern _end /* * set things up so the application will run. This *must* be called start. */ .global SYM (start) SYM (start): /* hardware reset puts a zero in __unhandled_exception. */ moveql #0,d7 /* if the user provided us with flags (symbol name 'crt0_flags') for the startup code, * load them now. If not, use defaults. */ 001: movel IMM(SYM(crt0_flags)),d2 /* flags defined? */ jbeq 002f /* skip if symbol not defined */ movel d2,a0 /* flags were defined - load them */ movel (a0),d2 /* if user provided an initialization list, process it now * This is typically used to set up hardware that is critical to system operation, * for example chip selects, watchdog timers, etc. */ 002: movel IMM(SYM(crt0_initialization_list)),d0 jbeq 40f /* skip if no list provided */ /* the init list is a series of records that look like this: * (4 bytes) start address * (2 bytes) write count bits 14 and 15 indicate size: 0:0 = byte, 0:1 = word, else long * (<count * size> bytes) data data to be written * if count is zero, then the start address is a function pointer * and the function is called as void (*ftn) (void) */ 005: movel d0,a0 /* get address of next list entry */ 00: movel (a0)+,d0 /* get next address to initialize */ movel d0,a1 /* point A1 at address */ jbeq 40f /* address is zero - end of list */ movew (a0)+,d0 /* get byte/word/longword count */ jbeq 04f /* count == 0 - it's a function pointer */ movew d0,d1 /* copy into d1 */ #ifdef __mcf5200__ andil IMM(0x3fff),d0 /* remove size code from count */ andil IMM(0xc000),d1 /* get size code */ jbeq 03f /* size code == 0: byte write */ cmpil IMM(0x4000),d1 /* size code == 1? */ jbeq 02f /* yes - word move */ /* long word move */ 01: movel (a0)+,(a1)+ subql IMM(1),d0 /* decrement and branch till done */ jbne 01b jbra 00b /* word move */ 02: movew (a0)+,(a1)+ subql IMM(1),d0 /* decrement and branch till done */ jbne 02b jbra 00b /* byte move */ 03: moveb (a0)+,(a1)+ subql IMM(1),d0 /* decrement and branch till done */ jbne 03b movel a0,d0 /* get pointer in D0 to word-align */ btst IMM(0),d0 /* word-align before fetching */ jbeq 00b /* it's already aligned - skip */ addl IMM(1),d0 /* misaligned, so increment to next word boundary */ jbra 005b /* next entry */ #else andiw IMM(0x3fff),d0 /* remove size code from count */ subqw IMM(1),d0 /* adjust for dbcc terminal count == 0xffff */ andiw IMM(0xc000),d1 /* get size code */ jbeq 03f /* size code == 0: byte write */ cmpiw IMM(0x4000),d1 /* size code == 1? */ jbeq 02f /* yes - word move */ /* long word move */ 01: movel (a0)+,(a1)+ dbra d0,01b /* decrement and branch till done */ jbra 00b /* word move */ 02: movew (a0)+,(a1)+ dbra d0,02b /* decrement and branch till done */ jbra 00b /* byte move */ 03: moveb (a0)+,(a1)+ dbra d0,03b /* decrement and branch till done */ movel a0,d0 /* get pointer in D0 to word-align */ btst IMM(0),d0 /* word-align before fetching */ jbeq 00b /* it's already aligned - skip */ addl IMM(1),d0 /* misaligned, so increment to next word boundary */ jbra 005b /* next entry */ #endif /* count == 0: call function through function pointer */ 04: jsr (a1) jbra 00b 40: /* See if user supplied their own stack (__stack != 0). * If not, then leave it as set by the ROM monitor/exception vector. */ movel IMM(__stack), a0 cmpl IMM(0), a0 jbeq 1f movel a0, sp 1: /* if the user provided a hardware init function, call it now. * this is done first so that hardware is all set up for the rest of crt0 */ lea SYM(hardware_init_hook), a0 cmpl IMM(0),a0 jbeq 4f /* There is an init function, so execute it. * If bit 0 of crt0_flags is set, then do a jump to the init routine * with the return address in D0; otherwise do a normal jsr. */ btst IMM(0),d2 jbeq 401f movel IMM(4f),d0 /* put ret addr in D0... */ jmp (a0) /* and jump to the routine */ 401: jsr (a0) /* flag bit is clear - normal jsr */ 4: /* * If bit 1 of crt0_flags is clear, then zero out the bss section. * we do this with a clr.l instruction, since it's a lot faster than the * clr.b instruction on most of the 68k CPUs, and we can be sure that * the bss section will always be a multiple of sizeof (long). */ btst IMM(1),d2 /* check the flag bit */ jbne 3f /* flag bit is set - don't clear bss */ movel IMM(__bss_start), d1 movel IMM(_end), d0 cmpl d0, d1 jbeq 3f movl d1, a0 subl d1, d0 asrl IMM(2),d0 /* calculate size in long words */ #ifndef __mcf5200__ subql IMM(1),d0 /* compensate for dbra terminal count = -1 */ movl d0,d1 /* make a copy in d1 */ swap d1 /* d1 tracks high word */ #endif 2: clrl (a0)+ #ifndef __mcf5200__ dbra d0, 2b subqw IMM(1), d1 jbcc 2b #else subql IMM(1), d0 jne 2b #endif 3: /* copy .data image, if there is one, from ROM to RAM. * We do this with a move.l instruction, since it's a lot faster than the * move.b instruction. * The linker script must ensure that the data section will always be * word-aligned, and its size will always be a multiple of sizeof (long). */ movel IMM(__data_start_rom), d1 /* get source address */ jbeq 31f /* skip if not defined */ movl d1, a0 /* source addr in a0 */ movl IMM(__data_start), a1 /* dest addr in a1 */ movl IMM(_edata), d0 /* end address in d0 */ movl a1, d1 /* calculate size in long words */ subl d1, d0 jbeq 31f /* skip if it's zero */ asrl IMM(2),d0 #ifndef __mcf5200__ subql IMM(1),d0 /* compensate for dbra terminal count = -1 */ movl d0,d1 /* make a copy in d1 */ swap d1 /* d1 tracks high word */ #endif 21: movl (a0)+,(a1)+ #ifndef __mcf5200__ dbra d0, 21b subqw IMM(1), d1 jbcc 21b #else subql IMM(1), d0 jne 21b #endif 31: /* Save the pc value when the exception occurred. */ movel d6,SYM(__unhandled_exception_pc) /* Save vector number of the exception that got us here. */ movel d7,SYM(__unhandled_exception) /* set up initial stack frame */ link a6, IMM(-8) /* * initialize target specific stuff. Only execute this * function if it exists. */ lea SYM (software_init_hook), a0 cmpl IMM(0),a0 jbeq 5f jsr (a0) 5: /* * call the main routine from the application to get it going. * main (argc, argv, environ) * we pass argv as a pointer to NULL. */ #ifdef ADD_DTORS /* put __do_global_dtors in the atexit list so the destructors get run */ movel IMM (SYM(__do_global_dtors)),(sp) jsr SYM (atexit) #endif movel IMM (__FINI_SECTION__),(sp) jsr SYM (atexit) jsr __INIT_SECTION__ pea 0 pea SYM (environ) pea sp@(4) #ifdef __MSHORT__ movew IMM(0),sp@- jsr SYM (main) movew d0, sp@- #else pea 0 jsr SYM (main) movel d0, sp@- #endif /* * drop down into exit incase the user doesn't. This should drop * control back to the ROM monitor, if there is one. This calls the * exit() from the C library so the C++ tables get cleaned up properly. */ jsr SYM (exit) /* Define a default handler for exceptions not otherwise handled in the application code. * We save * Three versions: * - for the original MC68000 and equivalents, we can't determine which vector got us here; * so we put -1 in __unhandled_exception * - for the Coldfire, the vector number is contained in the byte at offset 1 from the stack pointer * - for all other M68K devices, we calculate the vector number * from the vector offset value in the 4th word on the stack. * * for MC68000 & friends, we provide special handlers for bus error and address error * because we can capture the program counter address and vector no. for these exceptions. */ .globl SYM(__vector_buserror_default) SYM (__vector_buserror_default): #if !defined (__mcf5200__) && !defined (__mcpu32__) && !defined (__mc68332__) && !defined(__mc68010__) && !defined (__mc68020__) && !defined (__mc68030__) && !defined (__mc68040__) && !defined (__mc68060__) ori IMM(0x700),sr movel sp@(10),d6 moveql IMM(2),d7 bra 001b #endif .globl SYM(__vector_addrerror_default) SYM (__vector_addrerror_default): #if !defined (__mcf5200__) && !defined (__mcpu32__) && !defined (__mc68332__) && !defined(__mc68010__) && !defined (__mc68020__) && !defined (__mc68030__) && !defined (__mc68040__) && !defined (__mc68060__) ori IMM(0x700),sr movel sp@(10),d6 moveql IMM(3),d7 bra 001b #endif .globl SYM(__vector_default) SYM (__vector_default): #ifdef __mcf5200__ /* Coldfire version: * - put exception PC into __unhandled_exception_pc * - get vector number from stack into d7 * - then join the party at 'start'. */ move IMM(0x2700),sr movel sp@(4),d6 clrl d7 moveb sp@(1),d7 bra 001b #elif defined (__mcpu32__) || defined (__mc68332__) || defined(__mc68010__) || defined (__mc68020__) || defined (__mc68030__) || defined (__mc68040__) || defined (__mc68060__) /* everybody but the MC68000 and coldfire put a vector offset on the stack. */ ori IMM(0x700),sr movel sp@(2),d6 clrl d7 movew sp@(6),d7 lsrw IMM(2),d7 andiw IMM(0xff),d7 bra 001b #else /* MC68000 version */ ori IMM(0x700),sr moveq IMM(-1),d7 bra 001b #endif
Archive member included because of file (symbol) c:/xgcc/68k/2_8_1/mcpu32/libc.a(atexit.o) rm_crt0.o (atexit) c:/xgcc/68k/2_8_1/mcpu32/libc.a(exit.o) rm_crt0.o (exit) c:/xgcc/68k/2_8_1/mcpu32/libc.a(printf.o) hell1.o (printf) c:/xgcc/68k/2_8_1/mcpu32/libc.a(impure.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(atexit.o) (_impure_ptr) c:/xgcc/68k/2_8_1/mcpu32/libc.a(malloc.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(atexit.o) (malloc) c:/xgcc/68k/2_8_1/mcpu32/libc.a(vfprintf.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(printf.o) (vfprintf) c:/xgcc/68k/2_8_1/mcpu32/libc.a(mallocr.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(malloc.o) (_malloc_r) c:/xgcc/68k/2_8_1/mcpu32/libc.a(fvwrite.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(vfprintf.o) (__sfvwrite) c:/xgcc/68k/2_8_1/mcpu32/libc.a(fflush.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(vfprintf.o) (fflush) c:/xgcc/68k/2_8_1/mcpu32/libc.a(locale.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(vfprintf.o) (localeconv) c:/xgcc/68k/2_8_1/mcpu32/libc.a(findfp.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(vfprintf.o) (__sinit) c:/xgcc/68k/2_8_1/mcpu32/libc.a(wsetup.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(vfprintf.o) (__swsetup) c:/xgcc/68k/2_8_1/mcpu32/libc.a(mbtowc.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(vfprintf.o) (mbtowc) c:/xgcc/68k/2_8_1/mcpu32/libc.a(s_isinf.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(vfprintf.o) (isinf) c:/xgcc/68k/2_8_1/mcpu32/libc.a(s_isnan.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(vfprintf.o) (isnan) c:/xgcc/68k/2_8_1/mcpu32/libc.a(memchr.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(vfprintf.o) (memchr) c:/xgcc/68k/2_8_1/mcpu32/libc.a(strlen.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(vfprintf.o) (strlen) c:/xgcc/68k/2_8_1/mcpu32/libc.a(dtoa.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(vfprintf.o) (_dtoa_r) c:/xgcc/68k/2_8_1/mcpu32/libc.a(sbrkr.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(mallocr.o) (_sbrk_r) c:/xgcc/68k/2_8_1/mcpu32/libc.a(memcpy.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(mallocr.o) (memcpy) c:/xgcc/68k/2_8_1/mcpu32/libc.a(memmove.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(fvwrite.o) (memmove) c:/xgcc/68k/2_8_1/mcpu32/libc.a(fwalk.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(fflush.o) (_fwalk) c:/xgcc/68k/2_8_1/mcpu32/libc.a(strcmp.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(locale.o) (strcmp) c:/xgcc/68k/2_8_1/mcpu32/libc.a(stdio.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(findfp.o) (__sread) c:/xgcc/68k/2_8_1/mcpu32/libc.a(memset.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(findfp.o) (memset) c:/xgcc/68k/2_8_1/mcpu32/libc.a(makebuf.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(wsetup.o) (__smakebuf) c:/xgcc/68k/2_8_1/mcpu32/libc.a(mprec.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(dtoa.o) (_Balloc) c:/xgcc/68k/2_8_1/mcpu32/libc.a(readr.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(stdio.o) (_read_r) c:/xgcc/68k/2_8_1/mcpu32/libc.a(lseekr.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(stdio.o) (_lseek_r) c:/xgcc/68k/2_8_1/mcpu32/libc.a(writer.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(stdio.o) (_write_r) c:/xgcc/68k/2_8_1/mcpu32/libc.a(closer.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(stdio.o) (_close_r) c:/xgcc/68k/2_8_1/mcpu32/libc.a(fstatr.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(makebuf.o) (_fstat_r) c:/xgcc/68k/2_8_1/mcpu32/libc.a(callocr.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(mprec.o) (_calloc_r) c:/xgcc/68k/2_8_1/mcpu32/libgcc.a(__main.o) hell1.o (__main) c:/xgcc/68k/2_8_1/mcpu32/libgcc.a(xfgnulib.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(vfprintf.o) (__truncxfdf2) c:/xgcc/68k/2_8_1/mcpu32/libgcc.a(_ltdf2.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(vfprintf.o) (__ltdf2) c:/xgcc/68k/2_8_1/mcpu32/libgcc.a(_eqdf2.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(vfprintf.o) (__eqdf2) c:/xgcc/68k/2_8_1/mcpu32/libgcc.a(_nedf2.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(vfprintf.o) (__nedf2) c:/xgcc/68k/2_8_1/mcpu32/libgcc.a(fpgnulib.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(dtoa.o) (__floatsidf) c:/xgcc/68k/2_8_1/mcpu32/libgcc.a(_double.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(dtoa.o) (__adddf3) c:/xgcc/68k/2_8_1/mcpu32/libgcc.a(_gtdf2.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(dtoa.o) (__gtdf2) c:/xgcc/68k/2_8_1/mcpu32/libgcc.a(_ledf2.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(dtoa.o) (__ledf2) c:/xgcc/68k/2_8_1/mcpu32/libgcc.a(_ctors.o) c:/xgcc/68k/2_8_1/mcpu32/libgcc.a(__main.o) (__CTOR_LIST__) c:/xgcc/68k/2_8_1/mcpu32/libgcc.a(_floatex.o) c:/xgcc/68k/2_8_1/mcpu32/libgcc.a(_double.o) (_fpCCR) c:/xgcc/68k/2_8_1/mcpu32/libbcc.a(cpu32bug.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(exit.o) (_exit) c:/xgcc/68k/2_8_1/mcpu32/libbcc.a(sbrk.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(sbrkr.o) (sbrk) c:/xgcc/68k/2_8_1/mcpu32/libbcc.a(isatty.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(makebuf.o) (isatty) c:/xgcc/68k/2_8_1/mcpu32/libbcc.a(read.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(readr.o) (read) c:/xgcc/68k/2_8_1/mcpu32/libbcc.a(lseek.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(lseekr.o) (lseek) c:/xgcc/68k/2_8_1/mcpu32/libbcc.a(write.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(writer.o) (write) c:/xgcc/68k/2_8_1/mcpu32/libbcc.a(close.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(closer.o) (close) c:/xgcc/68k/2_8_1/mcpu32/libbcc.a(fstat.o) c:/xgcc/68k/2_8_1/mcpu32/libc.a(fstatr.o) (fstat) c:/xgcc/68k/2_8_1/mcpu32/libc.a(errno.o) c:/xgcc/68k/2_8_1/mcpu32/libbcc.a(lseek.o) (__errno) Allocating common symbols Common symbol size file errno 0x4 c:/xgcc/68k/2_8_1/mcpu32/libc.a(sbrkr.o) heap_ptr 0x4 c:/xgcc/68k/2_8_1/mcpu32/libbcc.a(sbrk.o) __CTOR_LIST__ 0x8 c:/xgcc/68k/2_8_1/mcpu32/libgcc.a(_ctors.o) __DTOR_LIST__ 0x8 c:/xgcc/68k/2_8_1/mcpu32/libgcc.a(_ctors.o) Memory Configuration Name Origin Length Attributes *default* 0x00000000 0xffffffff Linker script and memory map LOAD rm_crt0.o LOAD hell1.o START GROUP LOAD c:/xgcc/68k/2_8_1/mcpu32/libbcc.a LOAD c:/xgcc/68k/2_8_1/mcpu32/libc.a LOAD c:/xgcc/68k/2_8_1/mcpu32/libgcc.a LOAD c:/xgcc/68k/2_8_1/mcpu32/libm.a END GROUP 0x00000000 __DYNAMIC=0x0 0x00003000 __ram_start=0x3000 0x00005000 __ram_size=0x5000 0x00090000 __rom_start=0x90000 0x00070000 __rom_size=0x70000 0x00007ffc __stack=((__ram_start+__ram_size)-0x4) 0x00090010 __prog_start=(__rom_start+0x10) 0x00008000 PROVIDE (__stack, (__ram_start+__ram_size)) 0x00008000 PROVIDE (__boot_stack, (__ram_start+__ram_size)) 0x00000000 PROVIDE (crt0_flags, 0x0) 0x00000000 PROVIDE (_crt0_flags, 0x0) 0x00000000 PROVIDE (hardware_init_hook, 0x0) 0x00000000 PROVIDE (_hardware_init_hook, 0x0) 0x00000000 PROVIDE (software_init_hook, 0x0) 0x00000000 PROVIDE (_software_init_hook, 0x0) .text 0x00090000 0x5580 0x00090000 0x4 LONG 0xbeefbeef 0x00090004 0x4 LONG 0x7ffc __stack 0x00090008 0x4 LONG 0x90010 __prog_start 0x0009000c 0x4 LONG 0x0 *(.text) .text 0x00090010 0x15c rm_crt0.o 0x00090146 __vector_buserror_default 0x00090154 __vector_addrerror_default 0x00090162 __vector_default 0x00090010 start .text 0x0009016c 0x28 hell1.o 0x0009017a main .text 0x00090194 0x62 c:/xgcc/68k/2_8_1/mcpu32/libc.a(atexit.o) 0x00090194 atexit *fill* 0x000901f6 0x2 .text 0x000901f8 0x58 c:/xgcc/68k/2_8_1/mcpu32/libc.a(exit.o) 0x000901f8 exit .text 0x00090250 0x48 c:/xgcc/68k/2_8_1/mcpu32/libc.a(printf.o) 0x00090270 printf 0x00090250 _printf_r .text 0x00090298 0x4c c:/xgcc/68k/2_8_1/mcpu32/libc.a(malloc.o) 0x00090298 malloc 0x000902c8 realloc 0x000902b0 free .text 0x000902e4 0x1208 c:/xgcc/68k/2_8_1/mcpu32/libc.a(vfprintf.o) 0x00090420 _vfprintf_r 0x000903b0 vfprintf .text 0x000914ec 0x19c c:/xgcc/68k/2_8_1/mcpu32/libc.a(mallocr.o) 0x0009161c _realloc_r 0x000915ea _free_r 0x00091588 _malloc_r .text 0x00091688 0x23a c:/xgcc/68k/2_8_1/mcpu32/libc.a(fvwrite.o) 0x00091688 __sfvwrite *fill* 0x000918c2 0x2 .text 0x000918c4 0xa6 c:/xgcc/68k/2_8_1/mcpu32/libc.a(fflush.o) 0x000918c4 fflush *fill* 0x0009196a 0x2 .text 0x0009196c 0xc0 c:/xgcc/68k/2_8_1/mcpu32/libc.a(locale.o) 0x000919a2 _setlocale_r 0x000919f2 _localeconv_r 0x00091a00 setlocale 0x00091a1a localeconv .text 0x00091a2c 0x1ea c:/xgcc/68k/2_8_1/mcpu32/libc.a(findfp.o) 0x00091ba8 __sinit 0x00091a80 __sfmoreglue 0x00091b96 _cleanup 0x00091b7e _cleanup_r 0x00091ada __sfp *fill* 0x00091c16 0x2 .text 0x00091c18 0xcc c:/xgcc/68k/2_8_1/mcpu32/libc.a(wsetup.o) 0x00091c18 __swsetup .text 0x00091ce4 0x34 c:/xgcc/68k/2_8_1/mcpu32/libc.a(mbtowc.o) 0x00091ce4 mbtowc .text 0x00091d18 0x46 c:/xgcc/68k/2_8_1/mcpu32/libc.a(s_isinf.o) 0x00091d18 isinf *fill* 0x00091d5e 0x2 .text 0x00091d60 0x3c c:/xgcc/68k/2_8_1/mcpu32/libc.a(s_isnan.o) 0x00091d60 isnan .text 0x00091d9c 0x3a c:/xgcc/68k/2_8_1/mcpu32/libc.a(memchr.o) 0x00091d9c memchr *fill* 0x00091dd6 0x2 .text 0x00091dd8 0x1c c:/xgcc/68k/2_8_1/mcpu32/libc.a(strlen.o) 0x00091dd8 strlen .text 0x00091df4 0x1208 c:/xgcc/68k/2_8_1/mcpu32/libc.a(dtoa.o) 0x00091f8c _dtoa_r .text 0x00092ffc 0x32 c:/xgcc/68k/2_8_1/mcpu32/libc.a(sbrkr.o) 0x00092ffc _sbrk_r *fill* 0x0009302e 0x2 .text 0x00093030 0x2e c:/xgcc/68k/2_8_1/mcpu32/libc.a(memcpy.o) 0x00093030 memcpy *fill* 0x0009305e 0x2 .text 0x00093060 0x58 c:/xgcc/68k/2_8_1/mcpu32/libc.a(memmove.o) 0x00093060 memmove .text 0x000930b8 0x54 c:/xgcc/68k/2_8_1/mcpu32/libc.a(fwalk.o) 0x000930b8 _fwalk .text 0x0009310c 0x28 c:/xgcc/68k/2_8_1/mcpu32/libc.a(strcmp.o) 0x0009310c strcmp .text 0x00093134 0xea c:/xgcc/68k/2_8_1/mcpu32/libc.a(stdio.o) 0x000931c0 __sseek 0x00093134 __sread 0x00093202 __sclose 0x0009316e __swrite *fill* 0x0009321e 0x2 .text 0x00093220 0x60 c:/xgcc/68k/2_8_1/mcpu32/libc.a(memset.o) 0x00093220 memset .text 0x00093280 0xf4 c:/xgcc/68k/2_8_1/mcpu32/libc.a(makebuf.o) 0x00093280 __smakebuf .text 0x00093374 0xb50 c:/xgcc/68k/2_8_1/mcpu32/libc.a(mprec.o) 0x00093e74 _mprec_log10 0x00093e4c __mprec_tinytens 0x0009358e _hi0bits 0x00093374 _Balloc 0x00093be8 _d2b 0x00093cd6 _ratio 0x000934d2 _s2b 0x00093662 _i2b 0x00093d5c __mprec_tens 0x000935e6 _lo0bits 0x00093e24 __mprec_bigtens 0x00093972 __mcmp 0x0009382a _pow5mult 0x0009368c _mult 0x00093ac0 _ulp 0x00093b34 _b2d 0x00093422 _multadd 0x000939c0 __mdiff 0x000938cc _lshift 0x000933f6 _Bfree .text 0x00093ec4 0x3a c:/xgcc/68k/2_8_1/mcpu32/libc.a(readr.o) 0x00093ec4 _read_r *fill* 0x00093efe 0x2 .text 0x00093f00 0x3a c:/xgcc/68k/2_8_1/mcpu32/libc.a(lseekr.o) 0x00093f00 _lseek_r *fill* 0x00093f3a 0x2 .text 0x00093f3c 0x3a c:/xgcc/68k/2_8_1/mcpu32/libc.a(writer.o) 0x00093f3c _write_r *fill* 0x00093f76 0x2 .text 0x00093f78 0x32 c:/xgcc/68k/2_8_1/mcpu32/libc.a(closer.o) 0x00093f78 _close_r *fill* 0x00093faa 0x2 .text 0x00093fac 0x36 c:/xgcc/68k/2_8_1/mcpu32/libc.a(fstatr.o) 0x00093fac _fstat_r *fill* 0x00093fe2 0x2 .text 0x00093fe4 0x42 c:/xgcc/68k/2_8_1/mcpu32/libc.a(callocr.o) 0x00093fe4 _calloc_r *fill* 0x00094026 0x2 .text 0x00094028 0x94 c:/xgcc/68k/2_8_1/mcpu32/libgcc.a(__main.o) 0x000940a0 __main 0x00094028 __do_global_dtors 0x00094054 __do_global_ctors .text 0x000940bc 0x638 c:/xgcc/68k/2_8_1/mcpu32/libgcc.a(xfgnulib.o) 0x0009456e __nexf2 0x000945bc __ltxf2 0x00094482 __negxf2 0x00094520 __eqxf2 0x0009460a __lexf2 0x000946a6 __gexf2 0x000940c8 __extenddfxf2 0x00094284 __fixxfsi 0x00094150 __truncxfdf2 0x00094396 __mulxf3 0x00094242 __floatsixf 0x00094320 __subxf3 0x000944d2 __cmpxf2 0x00094220 __truncxfsf2 0x0009440c __divxf3 0x000941de __extendsfxf2 0x000942aa __addxf3 0x00094658 __gtxf2 .text 0x000946f4 0x1e c:/xgcc/68k/2_8_1/mcpu32/libgcc.a(_ltdf2.o) 0x000946f4 __ltdf2 *fill* 0x00094712 0x2 .text 0x00094714 0x1e c:/xgcc/68k/2_8_1/mcpu32/libgcc.a(_eqdf2.o) 0x00094714 __eqdf2 *fill* 0x00094732 0x2 .text 0x00094734 0x1e c:/xgcc/68k/2_8_1/mcpu32/libgcc.a(_nedf2.o) 0x00094734 __nedf2 *fill* 0x00094752 0x2 .text 0x00094754 0x1f4 c:/xgcc/68k/2_8_1/mcpu32/libgcc.a(fpgnulib.o) 0x0009492e __fixsfsi 0x00094754 __floatsidf 0x000947ea __extendsfdf2 0x000948b0 __fixdfsi 0x000947d0 __floatsisf 0x0009483c __truncdfsf2 .text 0x00094948 0x9aa c:/xgcc/68k/2_8_1/mcpu32/libgcc.a(_double.o) 0x000951c8 __cmpdf2 0x000949a8 __adddf3 0x00095168 __negdf2 0x00094ee6 __divdf3 0x00094d32 __muldf3 0x000949a2 __subdf3 *fill* 0x000952f2 0x2 .text 0x000952f4 0x1e c:/xgcc/68k/2_8_1/mcpu32/libgcc.a(_gtdf2.o) 0x000952f4 __gtdf2 *fill* 0x00095312 0x2 .text 0x00095314 0x1e c:/xgcc/68k/2_8_1/mcpu32/libgcc.a(_ledf2.o) 0x00095314 __ledf2 *fill* 0x00095332 0x2 .text 0x00095334 0x6c c:/xgcc/68k/2_8_1/mcpu32/libgcc.a(_floatex.o) 0x00095342 $_exception_handler 0x00095334 __clear_sticky_bit .text 0x000953a0 0x5a c:/xgcc/68k/2_8_1/mcpu32/libbcc.a(cpu32bug.o) 0x000953cc outln 0x000953bc putDebugChar 0x000953ec havebyte 0x000953bc outbyte 0x000953a8 getDebugChar 0x000953a8 inbyte 0x000953a0 _exit *fill* 0x000953fa 0x2 .text 0x000953fc 0x2c c:/xgcc/68k/2_8_1/mcpu32/libbcc.a(sbrk.o) 0x000953fc sbrk .text 0x00095428 0xa c:/xgcc/68k/2_8_1/mcpu32/libbcc.a(isatty.o) 0x00095428 isatty *fill* 0x00095432 0x2 .text 0x00095434 0x90 c:/xgcc/68k/2_8_1/mcpu32/libbcc.a(read.o) 0x00095438 read .text 0x000954c4 0x16 c:/xgcc/68k/2_8_1/mcpu32/libbcc.a(lseek.o) 0x000954c4 lseek *fill* 0x000954da 0x2 .text 0x000954dc 0x46 c:/xgcc/68k/2_8_1/mcpu32/libbcc.a(write.o) 0x000954dc write *fill* 0x00095522 0x2 .text 0x00095524 0xa c:/xgcc/68k/2_8_1/mcpu32/libbcc.a(close.o) 0x00095524 close *fill* 0x0009552e 0x2 .text 0x00095530 0x1a c:/xgcc/68k/2_8_1/mcpu32/libbcc.a(fstat.o) 0x00095530 fstat *fill* 0x0009554a 0x2 .text 0x0009554c 0xe c:/xgcc/68k/2_8_1/mcpu32/libc.a(errno.o) 0x0009554c __errno *fill* 0x0009555a 0x2 0x0009555c .=ALIGN(0x4) 0x0009555c __CTOR_LIST__=. 0x0009555c 0x4 LONG 0x0 (((__CTOR_END__-__CTOR_LIST__)/0x4)-0x2) *(.ctors) 0x00095560 0x4 LONG 0x0 0x00095564 __CTOR_END__=. 0x00095564 __DTOR_LIST__=. 0x00095564 0x4 LONG 0x0 (((__DTOR_END__-__DTOR_LIST__)/0x4)-0x2) *(.dtors) 0x00095568 0x4 LONG 0x0 0x0009556c __DTOR_END__=. *(.rodata) *(.gcc_exc) *(.gcc_except_table) 0x0009556c __INIT_SECTION__=. 0x0009556c 0x4 LONG 0x4e560000 *(.init) 0x00095570 0x2 SHORT 0x4e5e 0x00095572 0x2 SHORT 0x4e75 0x00095574 __FINI_SECTION__=. 0x00095574 0x4 LONG 0x4e560000 *(.fini) 0x00095578 0x2 SHORT 0x4e5e 0x0009557a 0x2 SHORT 0x4e75 0x0009557c .=ALIGN(0x4) 0x0009557c crt0_initialization_list=. 0x0009557c _crt0_initialization_list=. *(.crt0ini) 0x0009557c .=ALIGN(0x2) 0x0009557c 0x4 LONG 0x0 0x00095580 _etext=. *(.lit) 0x00095580 .=ALIGN(0x4) 0x00095580 __data_start_rom=. .data 0x00003000 0x33c load address 0x00095580 0x00003000 __data_start=. *(.shdata) *(.data) .data 0x00003000 0xc rm_crt0.o 0x00003008 __unhandled_exception_pc 0x00003004 __unhandled_exception .data 0x0000300c 0x2ee c:/xgcc/68k/2_8_1/mcpu32/libc.a(impure.o) 0x000032f6 _impure_ptr *fill* 0x000032fa 0x2 .data 0x000032fc 0x20 c:/xgcc/68k/2_8_1/mcpu32/libc.a(vfprintf.o) .data 0x0000331c 0x4 c:/xgcc/68k/2_8_1/mcpu32/libgcc.a(__main.o) .data 0x00003320 0x1c c:/xgcc/68k/2_8_1/mcpu32/libgcc.a(_floatex.o) 0x00003320 _fpCCR 0x0000333c _edata=. .bss 0x0000333c 0x1c 0x0000333c __bss_start=. *(.shbss) *(.bss) .bss 0x0000333c 0x4 c:/xgcc/68k/2_8_1/mcpu32/libgcc.a(__main.o) *(COMMON) COMMON 0x00003340 0x4 c:/xgcc/68k/2_8_1/mcpu32/libc.a(sbrkr.o) 0x00003340 errno COMMON 0x00003344 0x10 c:/xgcc/68k/2_8_1/mcpu32/libgcc.a(_ctors.o) COMMON 0x00003354 0x4 c:/xgcc/68k/2_8_1/mcpu32/libbcc.a(sbrk.o) 0x00003354 heap_ptr *(.eh_fram) *(.eh_frame) 0x00003358 _end=ALIGN(0x8) 0x00003358 __end=_end .stab *(.stab) .stabstr *(.stabstr) OUTPUT(hell1.cof coff-m68k)
------ Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/ Want to unsubscribe? Send a note to crossgcc-unsubscribe@sourceware.cygnus.com
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |