Changing entry point function

P

Premkumar

a.cpp
----------------------------------
#include <iostream>
using namespace std;

void mymain() {
cout<<"my-main"<<endl;
}
----------------------------------

I'm trying to start my program at mymain than the standard main ..
So I compiled a.cpp to a.o &

I executed :
g++ -Wl,-emymain a.o

That did not work as the linker said it could not find the symbol. So
I used name mangler (nm) to demangle a.o
g++ -Wl,-emymain__Fv a.o

Now the linker says:
/usr/lib/crt1.o(.text+0x18): In function `_start':
: undefined reference to `main'
collect2: ld returned 1 exit status

I also tried the following
g++ -Wl,--verbose -Wl,-emymain__Fv -Wl,--defsym -Wl,start=mymain__Fv
a.o
g++ -Wl,--verbose -Wl,-emymain__Fv -Wl,--defsym -Wl,_start=mymain__Fv
a.o

Still no use..

What mistake am I making here ?
 
R

redfloyd

a.cpp
----------------------------------
#include <iostream>
using namespace std;

void mymain() {
cout<<"my-main"<<endl;}

----------------------------------

I'm trying to start my program at mymain than the standard main ..
So I compiled a.cpp to a.o &

I executed :
g++ -Wl,-emymain a.o

That did not work as the linker said it could not find the symbol. So
I used name mangler (nm) to demangle a.o
g++ -Wl,-emymain__Fv a.o

Now the linker says:
/usr/lib/crt1.o(.text+0x18): In function `_start':
: undefined reference to `main'
collect2: ld returned 1 exit status

I also tried the following
g++ -Wl,--verbose -Wl,-emymain__Fv -Wl,--defsym -Wl,start=mymain__Fv
a.o
g++ -Wl,--verbose -Wl,-emymain__Fv -Wl,--defsym -Wl,_start=mymain__Fv
a.o

Still no use..

What mistake am I making here ?


Asking in the wrong group? Changing the "entry" point is a g++
question. I'd recommend asking in gnu.g++.help.

BEGIN OFF TOPIC
The entry point for a g++ program is not "main", but some other symbol
(probably "start"), which sets up the runtime environment and then
calls main. So changing the entry point in the linker does nothing.
END OFF TOPIC

Per the standard "main" is the entry point once global variables and
the runtim library have been initialized.

If you really want mymain(), do the following:


void mymain()
{
}


int main()
{
mymain();
}

Please note that main *must* return int (with an implicit 0 return).
 
V

Victor Bazarov

Premkumar said:
a.cpp
----------------------------------
#include <iostream>
using namespace std;

void mymain() {
cout<<"my-main"<<endl;
}
----------------------------------

I'm trying to start my program at mymain than the standard main ..
So I compiled a.cpp to a.o &

I executed :
g++ -Wl,-emymain a.o

That did not work as the linker said it could not find the symbol. So
I used name mangler (nm) to demangle a.o
g++ -Wl,-emymain__Fv a.o

Now the linker says:
/usr/lib/crt1.o(.text+0x18): In function `_start':
collect2: ld returned 1 exit status

I also tried the following
g++ -Wl,--verbose -Wl,-emymain__Fv -Wl,--defsym -Wl,start=mymain__Fv
a.o
g++ -Wl,--verbose -Wl,-emymain__Fv -Wl,--defsym -Wl,_start=mymain__Fv
a.o

Still no use..

What mistake am I making here ?

Mistake: posting to the wrong newsgroup. Your question is about G++,
so ask it in the G++ newsgroup: gnu.g++.help.

V
 
J

jg

g++ -Wl,-emymain__Fv a.o
Now the linker says:
/usr/lib/crt1.o(.text+0x18): In function `_start':
: undefined reference to `main'
collect2: ld returned 1 exit status

You may provide a dummy main and try the above again.
Why do you want to use different entry rather than main ?
Just curious.

JG
 
P

Premk

We have a set of test modules which are derived from a specific base
class . All the .cpp files have their own main functions.
I'm writing a small module to automate all these classes.
I just want to implement it in a way that affects the existing modules
to the least.

I wanted the new main(from my class) function to be called when the
automation is executed ..
I got away of the different main functions by using the --allow-
multiple-definitions flag of the linker.

I understand the design of the other classes can be changed to achieve
this, but the org wont allow this.
 

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

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,578
Members
45,052
Latest member
LucyCarper

Latest Threads

Top