On Wed, 2008-06-25 at 07:44 +0200, Jens Gehrlein wrote:
> I have the same problem. When I modify the source code the compiler may 
> or may not rearrange the functions. It is not guaranteed, that the main 
> function always starts at the same address.
> 
> How can this be solved? Is it possible/meaningful to put the main 
> function into a separate linker segment? Any suggestions?

The simplest way I've found is to make the following C file:

--- _start.c ---
void _start(void)
{
    extern int main(int argc, char **argv);
    char *args[] = { "myprogramname", "-foo", "bar", /* etc. etc. */ };
    main(sizeof(args)/sizeof(args[0]), args);
    /* Wait forever after the program ends */
    for (;;);
}
-----------------

Then, link '_start.o' before *any* other objects in your link step.

Voila! The text entry should be _start!

Feel free to add BSS initialization, etc. in _start as needed.

Jason McMullan
MTS SW
System Firmware

NetApp
724.741.5011    Fax
724.741.5166    Direct
412.656.3519    Mobile
[EMAIL PROTECTED]
www.netapp.com


Attachment: signature.asc
Description: This is a digitally signed message part

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
U-Boot-Users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/u-boot-users

Reply via email to