don't want leading underscore

Randall R Schulz rrschulz@cris.com
Mon Nov 4 11:15:00 GMT 2002


Benjamin,

At 10:36 2002-11-04, you wrote:
>How can I prevent cygwin gcc from producing symbols with leading 
>underscores? ("_main" instead "main")
>
>I want to be binary compatible with linux and other operating systems.

Binary compatible? That really has little meaning since there's far more to 
binary compatibility than how symbols from the program source code are or 
are not adorned when emitted into the object code files.


>What about libgcc.a? Each symbol conatins leading underscores, can I 
>change this?
>cygwin.dll defines both exports, with and without leading underscores 
>isn't it?


Apparently it can be changed. If GCC under Linux doesn't prepend the 
underscore and under Cygwin it does, then it's at some level configurable. 
Get the GCC book ("Using and Porting GNUCC").


This excerpt from the output of "gcc -dumpspecs" suggests leading 
underscores is a configurable option (though I don't know why both 
"leading-underscore" and "no-leading-underscore" are listed:

-==-
*cpp_options:
%(cpp_unique_options) %{std*} %{d*} %{W*} %{w} %{pedantic*} %{fshow-column} 
%{fno-show-column} %{fsigned-char&funsigned-char} %{fleading-underscore} 
%{fno-leading-underscore} %{fno-operator-names} %{ftabstop=*}
-==-

So you can use:

   -fleading-underscore    External symbols have a leading underscore


Here's some mildly interesting output:

% gcc -v --help 2>&1 |egrep -i '(leading)|(underscore)'
   -fleading-underscore    External symbols have a leading underscore
   -fno-underscoring       Disable the appending of underscores to externals
   -fno-second-underscore  Never append a second underscore to externals


Anyway, there's a lot to GCC. Read up on it and you'll probably find out 
about other things you'll need to know to get your binary compatibility.


>Benjamin Kalytta


Randall Schulz
Mountain View, CA USA


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list