This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Bug in gcc and/or binutils?


Danny Smith wrote:

References: <http://sources.redhat.com/ml/cygwin/2005-09/msg00471.html>
<http://sources.redhat.com/ml/cygwin/2005-09/msg00519.html>

Charles Wilson <cygwin at cwilson dot fastmail dot fm> wrote:


Using .def files turns off the auto-EXport logic (which it should,
because if you specify a specific set of exports you don't want binutils
adding a few more on its own).


There seems to be a common misconception that auto-export logic and
explicit designation of exports are incompatible.
You can still use --export-all  (to get the auto-export of all defined
symbols) with a .def file or with __declspec(dllexport).

eg
gcc -shared -ofoo.dll foo.def foo.c -Wl,--export-all

But this does not help in the test case. The import libs are identical in regard to the symbol, with or without export-all flag, the executable
linked with this import lib is broken.



The use of a def file (with --export-all) is useful when you want to
export all symbols but want special handling of some, say an alias or
marking a symbol as PRIVATE (exclude from import lib) or NONAME (exclude
the name of the symbol from the dll's export table), (almost like
__attribute__((hidden)) Or you may want to add a symbol that is just
forwarded to another dll. Or you have a function foo() but only want
the indirect ref __imp__foo visible in the import lib, and not the label:

foo:
  jmp * __imp__foo

so you only export the pointer by marking as DATA in the def file

So if you want export the pointer and use a .def file you must mark it as DATA, else it will not be exported. Though it is not exactly the problem, directly linking to the DLL succeeds with or without (wrong) .def file.


Gerrit -- =^..^=

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]