public inbox for gcc-help@gcc.gnu.org
 help / color / mirror / Atom feed
* RE: mapfile
@ 2003-10-28 16:58 lrtaylor
  2003-10-28 17:15 ` mapfile Tony Wetmore
  0 siblings, 1 reply; 7+ messages in thread
From: lrtaylor @ 2003-10-28 16:58 UTC (permalink / raw)
  To: abansal, gcc-help


-----Original Message-----
From: Ajay Bansal [mailto:abansal@netegrity.com] 

> Does Linux/gcc support a mapfile syntax, so that we can hide/export 
> symbols in shared lib on Linux as well? 

I believe that the ability to hide/export symbols is a function of the
file format and linker more than of the compiler.  Linux uses the ELF
file format, and the indications I've seen are that it doesn't support
what you are asking.  Then again, I know that if you declare functions
or variables as being static (global functions and variables, not class
member functions and variables), they will only be visible within that
compilation unit.  That at least allows you to define and use functions
that won't be visible outside of the library, but it does not allow you
to define functions that can be used in other compilation units in the
library but that aren't visible outside the library.

Then again, someone probably knows better than me that can give a more
definitive answer than "I don't think so..."

Cheers,
Lyle

^ permalink raw reply	[flat|nested] 7+ messages in thread
[parent not found: <2B721C6525F0D411B1E900B0D0226BDD03653227@mohmsg01.ad.infos ys.com>]
* RE: mapfile
@ 2003-10-29  6:58 Ajay Bansal
  0 siblings, 0 replies; 7+ messages in thread
From: Ajay Bansal @ 2003-10-29  6:58 UTC (permalink / raw)
  To: Tony Wetmore, lrtaylor, abansal, gcc-help

But it does not solve the purpose. So.. That means that gcc (RedHat
Linux) does not have anything like sun compilers/hp/windows compiler
have.. i.e. to have a mapfile/symfile & then export only the required
symbols exported/ 


-----Original Message-----
From: Tony Wetmore [mailto:tony.wetmore@solipsys.com] 
Sent: Tuesday, October 28, 2003 10:45 PM
To: lrtaylor@micron.com; abansal@netegrity.com; gcc-help@gcc.gnu.org


> > Does Linux/gcc support a mapfile syntax, so that we can hide/export 
> > symbols in shared lib on Linux as well?
>
> ...if you declare functions or variables as being static... they will 
> only be visible within that compilation unit...

Of course, code within the compilation unit can always pass (or return)
pointers to static elements to code outside the compilation unit.  I
have never done this across shared library boundaries, but I do not see
why it should fail.

Naturally, this might be a kind of kludgy solution to your problem. :)

---
Tony Wetmore
Raytheon Solipsys
mailto:tony.wetmore@solipsys.com
http://www.solipsys.com


^ permalink raw reply	[flat|nested] 7+ messages in thread
* RE: Same internal function name in libstdc++.so.5 and libjvm.so
@ 2003-09-04 23:03 lrtaylor
  2003-10-28  6:12 ` mapfile Ajay Bansal
  2003-10-28  6:12 ` mapfile Ajay Bansal
  0 siblings, 2 replies; 7+ messages in thread
From: lrtaylor @ 2003-09-04 23:03 UTC (permalink / raw)
  To: abansal, gcc-help

You are correct.  However, you can still add it explicitly to the command line with g++ (if you're using gcj, then I'm not sure).  For example,

g++ -o prog file.cpp -lstdc++ -lsomeotherlib 

Now, if you do an 'ldd' on 'prod', you should see libstdc++ before libsomeotherlib.

Lyle

 -----Original Message-----
From: 	Ajay Bansal [mailto:abansal@netegrity.com] 
Sent:	Thursday, September 04, 2003 10:16 AM
To:	gcc-help@gcc.gnu.org
Subject:	RE: Same internal function name in libstdc++.so.5 and libjvm.so

But I don't _link_ with libstdc++ explicitly!!!!!!!!!!!!!!!!!!!!!!! It is
linked implicitly by g++ compiler.

(Am I correct??) 


-----Original Message-----
From: lrtaylor@micron.com [mailto:lrtaylor@micron.com] 
Sent: Thursday, September 04, 2003 9:39 PM
To: abansal@netegrity.com; gcc-help@gcc.gnu.org

Hi,

Can you change your link line so that libstdc++ is linked to before libjvm?
If I understand correctly, it should get the function our of the first
library linked to that defines it (I could be wrong, though...)

Lyle Taylor

 -----Original Message-----
From: 	Ajay Bansal [mailto:abansal@netegrity.com] 
Sent:	Thursday, September 04, 2003 5:17 AM
To:	gcc-help@gcc.gnu.org
Subject:	Same internal function name in libstdc++.so.5 and libjvm.so

Hi All


We are facing a "same function name" issue in two different libraries on
Linux. My program is linked with both libstdc++ and libjvm. I am using gcc
3.2.1 on Linux.

My code has following line : 

dynamic_cast<CSObject*>(m_unresolved)->WriteObject(lpszSString);

Which dumps core.

As it was not very clear why this piece of code can give a dump, I changed
the code as follows:

        if ( dynamic_cast<CSObject*>(m_unresolved))
	
dynamic_cast<CSObject*>(m_unresolved)->WriteObject(lpszSString);

 
Now core comes while executing "if" statement. I have checked for validity
of pointers "m_unresolved" and "lpszSString". Both are valid.   

On Linux, with gcc 3.2.1, dynamic_cast internally calls function
"__dynamic_cast". Problem is - this function is present both in
libstdc++.so.5 and libjvm.so. In our code, function from libjvm is being
called. If I change dynamic_cast to simple C style cast, everything works
fine. (nm for libstdc_++ and libjvm is given below)

----------------------------------------
[abansal@linux2 lib]$ nm -A *.so.* |grep __dynamic
libstdc++.so.5:00051bc0 T __dynamic_cast .so.5.0.1:00051bc0 T 
libstdc++__dynamic_cast

[abansal@linux2 lib]$ nm /usr/j2sdk1.4.1_02/jre/lib/i386/server/libjvm.so
|grep __dynamic
00485c34 T __dynamic_cast
----------------------------------------


Changing all dynamic_casts to simple C style casts in the code solves the
issue, but I know that that is undesirable. Can somebody please suggest us
what should we do in this case?


Regards
Ajay 
 


^ permalink raw reply	[flat|nested] 7+ messages in thread
* Mapfile
@ 2002-03-26 11:06 Steve Pye
  0 siblings, 0 replies; 7+ messages in thread
From: Steve Pye @ 2002-03-26 11:06 UTC (permalink / raw)
  To: 'gcc-help@gcc.gnu.org'

Hi,

Sorry for bothering you.  I tried the online command-line option pages, but I
couldn't find the option for generating a mapfile for a linked gcc program.
I'm running gcc in a Windows98 Dos Window and generating a Protected
Mode executable.

Can you please let me know what the command line option for generating a
mapfile is?

Thanks kindly,
Steve Pye.

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

end of thread, other threads:[~2003-10-29 12:03 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-10-28 16:58 mapfile lrtaylor
2003-10-28 17:15 ` mapfile Tony Wetmore
     [not found] <2B721C6525F0D411B1E900B0D0226BDD03653227@mohmsg01.ad.infos ys.com>
2003-10-29 12:03 ` mapfile Eljay Love-Jensen
  -- strict thread matches above, loose matches on Subject: below --
2003-10-29  6:58 mapfile Ajay Bansal
2003-09-04 23:03 Same internal function name in libstdc++.so.5 and libjvm.so lrtaylor
2003-10-28  6:12 ` mapfile Ajay Bansal
2003-10-28  6:12 ` mapfile Ajay Bansal
2002-03-26 11:06 Mapfile Steve Pye

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).