hi,everyone. can anybody tell me where the C++ program start?

Ä

ä¼è™Ž

hi,everyone. can anybody tell me where the C++ program start? I am
writing a loader, I want know the entry point of C++ program.

thank you.
 
R

ralph

hi,everyone. can anybody tell me where the C++ program start? I am
writing a loader, I want know the entry point of C++ program.

thank you.

The "entry-point" is defined in the executable file format for the
platform you are developing on. This starting point is set by the
Linker used to compile the executable, it might be at the lowest
address, the start of the TEXT section, or anywere else.

A specific Language has no impact on the entry-point, however, a
development framework or rapid tool might have.

Research the documentation for the specific 'executable' file format
for the platform of interest. Your loader will need to query it for
the entry-point.

-ralph
 
Ä

ä¼è™Ž

The "entry-point" is defined in the executable file format for the
platform you are developing on. This starting point is set by the
Linker used to compile the executable, it might be at the lowest
address, the start of the TEXT section, or anywere else.

A specific Language has no impact on the entry-point, however, a
development framework or rapid tool might have.

Research the documentation for the specific 'executable' file format
for the platform of interest. Your loader will need to query it for
the entry-point.

-ralph

my question is I have a piece of asm code, and I want to start the C++
main(), which function shall I call?

I am using gnu tool. I compile the C++ code into .o files and use ld
to link them together. if i want to write a ld script to tell the ld
to output a.out file or elf file, how to do that? i checked the asm
code output by the gcc -S, and I cannot find the start or _start
symbol.
 
N

Nobody

my question is I have a piece of asm code, and I want to start the C++
main(), which function shall I call?

Note that a C++ program doesn't start by executing main(). It starts by
executing the constructors for variables defined at file scope. main() is
only called after that has been done.
I am using gnu tool. I compile the C++ code into .o files and use ld
to link them together. if i want to write a ld script to tell the ld to
output a.out file or elf file, how to do that? i checked the asm code
output by the gcc -S, and I cannot find the start or _start symbol.

When linking object files together with gcc or g++, it will also link the
appropriate "CRT" file (unless -nostartfiles is given), and possibly
libgcc as well.

You're better off asking this sort of question on a group dedicated either
to the toolchain (e.g. gcc and/or binutils) or the platform. For and
ELF-based Linux system, you might want to look at the source code for
ld-linux.so (which is part of glibc).

An ELF executable specifies the entry point in the e_entry field of the
header. If an ELF executable specifies a loader (on Linux, this is
normally ld-linux.so.2 or ld-linux-<arch>.so.2), execve() will call the
entry point of the loader; it's up to the loader to figure out how to run
the program.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,014
Latest member
BiancaFix3

Latest Threads

Top