On 16.03.2012 21:37, Andrew Haines wrote:
On 03/16/12 15:27, Sven Barth wrote:
On 16.03.2012 19:16, Andrew Haines wrote:
Hi,
I'm trying to figure out the order of events when an elf file is
executed.
I think that the _start symbol just points to the start of the .text
section and crt1 is first followed by crti followed by crtbegin. After
that I'm not sure.
Take a look at e.g. $fpcdir/rtl/linux/i386/prt0.as. This contains the
startup (and shutdown) code for Free Pascal executables on linux-i386
that don't use libc. You'll see the call to PASCALMAIN there as well as
the halt code after it (which is executed once PASCALMAIN returns).
Thanks that is helpful. PASCALMAIN is the begin end block at the end of
the system unit? Or is it the begin end block in the program.pas file?
Yes, PASCALMAIN is the "begin ... end" of the program file (or the
library file). It's first call before any of your code is run is to
initialize all other units (calling the initialization sections of all
other units with the system one being the first).
libxenon, which I am linking to, uses newlib.
You can also take a look at cprt0.as which is the same for applications
using the C-library. I don't know though where the startup files are
located on a Xenon system, because then you could check how a C
application is started and adjust that for FPC.
Regards,
Sven
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel