public inbox for gcc-help@gcc.gnu.org
 help / color / mirror / Atom feed
* mudflapth -  undefined symbol: main
@ 2008-03-13 22:11 John Carter
  2008-03-17 22:55 ` SOLVED! " John Carter
  0 siblings, 1 reply; 4+ messages in thread
From: John Carter @ 2008-03-13 22:11 UTC (permalink / raw)
  To: gcc-help

I'm trying to get mudflap going on i686-pc-linux-gnu-gcc (GCC) 4.2.3

I use -fmudflapth on compiling and linking and -lmudflapth on linking.


When I run it I get....
LD_LIBRARY_PATH=/opt/i686-pc-linux-gnu/lib:/usr/lib:/lib ~/ffoo
/home/johnc/ffoo: symbol lookup error: /opt/i686-pc-linux-gnu/lib/libmudflapth.so.0: undefined symbol: main

If I try to statically link it ( -static) I get many warnings...

/opt/i686-pc-linux-gnu/lib/libmudflapth.a(mf-hooks2.o): In function `__mfwrap_getgrgid':
mf-hooks2.c:(.text.__mfwrap_getgrgid+0xc): warning: Using 'getgrgid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/opt/i686-pc-linux-gnu/lib/libmudflapth.a(mf-hooks2.o): In function `__mfwrap_getgrnam':
mf-hooks2.c:(.text.__mfwrap_getgrnam+0x71): warning: Using 'getgrnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/opt/i686-pc-linux-gnu/lib/libmudflapth.a(mf-hooks2.o): In function `__mfwrap_getpwnam':
mf-hooks2.c:(.text.__mfwrap_getpwnam+0x71): warning: Using 'getpwnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/opt/i686-pc-linux-gnu/lib/libmudflapth.a(mf-hooks2.o): In function `__mfwrap_getpwuid':
mf-hooks2.c:(.text.__mfwrap_getpwuid+0xc): warning: Using 'getpwuid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/opt/i686-pc-linux-gnu/lib/libmudflapth.a(mf-hooks2.o): In function `__mfwrap_gethostbyname':
mf-hooks2.c:(.text.__mfwrap_gethostbyname+0x60): warning: Using 'gethostbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/opt/i686-pc-linux-gnu/lib/libmudflapth.a(mf-hooks2.o): In function `__mfwrap_getprotobynumber':
mf-hooks2.c:(.text.__mfwrap_getprotobynumber+0xc): warning: Using 'getprotobynumber' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/opt/i686-pc-linux-gnu/lib/libmudflapth.a(mf-hooks2.o): In function `__mfwrap_getprotoent':
mf-hooks2.c:(.text.__mfwrap_getprotoent+0x5): warning: Using 'getprotoent' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/opt/i686-pc-linux-gnu/lib/libmudflapth.a(mf-hooks2.o): In function `__mfwrap_getprotobyname':
mf-hooks2.c:(.text.__mfwrap_getprotobyname+0x70): warning: Using 'getprotobyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/opt/i686-pc-linux-gnu/lib/libmudflapth.a(mf-hooks2.o): In function `__mfwrap_getservbyname':
mf-hooks2.c:(.text.__mfwrap_getservbyname+0xeb): warning: Using 'getservbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/opt/i686-pc-linux-gnu/lib/libmudflapth.a(mf-hooks2.o): In function `__mfwrap_getservbyport':
mf-hooks2.c:(.text.__mfwrap_getservbyport+0x79): warning: Using 'getservbyport' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/opt/i686-pc-linux-gnu/lib/libmudflapth.a(mf-hooks2.o): In function `__mfwrap_getservent':
mf-hooks2.c:(.text.__mfwrap_getservent+0x5): warning: Using 'getservent' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking


but it seems to run. Any suggestions on how to get rid of the warnings
or get the dynamically linked version running?

The .o and the statically link executable it has a "main".


Looking in the dynamically link executable with nm --extern I see main is indeed missing.






John Carter                             Phone : (64)(3) 358 6639
Tait Electronics                        Fax   : (64)(3) 359 4632
PO Box 1645 Christchurch                Email : john.carter@tait.co.nz
New Zealand

^ permalink raw reply	[flat|nested] 4+ messages in thread

* SOLVED! Re: mudflapth -  undefined symbol: main
  2008-03-13 22:11 mudflapth - undefined symbol: main John Carter
@ 2008-03-17 22:55 ` John Carter
  0 siblings, 0 replies; 4+ messages in thread
From: John Carter @ 2008-03-17 22:55 UTC (permalink / raw)
  To: gcc-help

On Fri, 14 Mar 2008, John Carter wrote:

> I'm trying to get mudflap going on i686-pc-linux-gnu-gcc (GCC) 4.2.3
>
> I use -fmudflapth on compiling and linking and -lmudflapth on linking.
>
>
> When I run it I get....
> LD_LIBRARY_PATH=/opt/i686-pc-linux-gnu/lib:/usr/lib:/lib ~/ffoo
> /home/johnc/ffoo: symbol lookup error: 
> /opt/i686-pc-linux-gnu/lib/libmudflapth.so.0: undefined symbol: main

Ha! Solved!

Since our primary target is an embedded system (where we're trying
hard to save flash/ram space) I had '-Wl,--gc-sections'

If I removed that, the problem went away....

To be replaced by reentrancy error.....

But that was solved by LD_PRELOAD=/path/to/libmudflapth.so.0

John Carter                             Phone : (64)(3) 358 6639
Tait Electronics                        Fax   : (64)(3) 359 4632
PO Box 1645 Christchurch                Email : john.carter@tait.co.nz
New Zealand

^ permalink raw reply	[flat|nested] 4+ messages in thread

* RE: mudflapth - undefined symbol: main
  2008-03-16 22:54 starlight
@ 2008-03-17 21:07 ` John Carter
  0 siblings, 0 replies; 4+ messages in thread
From: John Carter @ 2008-03-17 21:07 UTC (permalink / raw)
  To: starlight; +Cc: gcc-help

On Sun, 16 Mar 2008, starlight@binnacle.cx wrote:

> Do you have -fvisibility=hidden on the compile line?
> Try removing it.  Solved the issue for me.

Unfortunately no, I haven't got -fvisibility on the command line.

I even tried to explicitly disable it with -fvisibility=default

No luck.

Curiously enough the libmudflap code explicitly refers to
   extern int main();
in gcc/libmudflap/mf-runtime.c
int
__wrap_main (int argc, char* argv[])
{
   extern char **environ;
   extern int main ();
   extern int __real_main ();
   static int been_here = 0;

The object code under test has a "main" defined, but once it's linked... it disappears.

Weird.




John Carter                             Phone : (64)(3) 358 6639
Tait Electronics                        Fax   : (64)(3) 359 4632
PO Box 1645 Christchurch                Email : john.carter@tait.co.nz
New Zealand

^ permalink raw reply	[flat|nested] 4+ messages in thread

* RE: mudflapth - undefined symbol: main
@ 2008-03-16 22:54 starlight
  2008-03-17 21:07 ` John Carter
  0 siblings, 1 reply; 4+ messages in thread
From: starlight @ 2008-03-16 22:54 UTC (permalink / raw)
  To: gcc-help, john.carter

Do you have -fvisibility=hidden on the compile line?
Try removing it.  Solved the issue for me.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2008-03-17 22:55 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-03-13 22:11 mudflapth - undefined symbol: main John Carter
2008-03-17 22:55 ` SOLVED! " John Carter
2008-03-16 22:54 starlight
2008-03-17 21:07 ` John Carter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).