mingw-get and pexports

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

mingw-get and pexports

dhoyt
I'd like to understand a bit better why the pexport package requires gcc, mingwrt, and w32api? I have the case where I want to download and install pexports but don't want the other packages (I use my own compilation of gcc). Are the other packages needed for something? Would a simple "mingw-get install mingw32-pexports" and then a remove of the other packages be my best bet? Here's the output I get:

$ mingw-get install mingw32-pexports
Load catalogue: package-list.xml
Load catalogue: mingw32-package-list.xml
Load catalogue: mingw32-autoconf.xml
.
.
.
downloading: mingwrt-3.18-mingw32-dll.tar.gz: 8122 b
downloading: libgmp-5.0.1-1-mingw32-dll-10.tar.lzma: 159027 b
downloading: libmpfr-2.4.1-1-mingw32-dll-1.tar.lzma: 111144 b
downloading: libpthread-2.8.0-3-mingw32-dll-2.tar.lzma: 20862 b
downloading: pthreads-w32-2.8.0-3-mingw32-dev.tar.lzma: 13727 b
downloading: libgomp-4.5.2-1-mingw32-dll-1.tar.lzma: 19099 b
downloading: libmpc-0.8.1-1-mingw32-dll-2.tar.lzma: 24146 b
downloading: libssp-4.5.2-1-mingw32-dll-0.tar.lzma: 15945 b
downloading: w32api-3.17-2-mingw32-dev.tar.lzma: 1129114 b
downloading: mingwrt-3.18-mingw32-dev.tar.gz: 568649 b
downloading: binutils-2.21-3-mingw32-bin.tar.lzma: 1831972 b
downloading: gcc-core-4.5.2-1-mingw32-bin.tar.lzma: 4147571 b
downloading: pexports-0.44-1-mingw32-bin.tar.lzma: 9805 b
downloading: pexports-0.44-1-mingw32-doc.tar.lzma: 3677 b
downloading: pexports-0.44-1-mingw32-lic.tar.lzma: 6607 b

Dependency walker shows that pexports has no explicit dependency on any of those packages. Thanks for any help and clarification you can provide.

------------------------------------------------------------------------------
WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network
management toolset available today.  Delivers lowest initial
acquisition cost and overall TCO of any competing solution.
http://p.sf.net/sfu/whatsupgold-sd
_______________________________________________
MinGW-users mailing list
[hidden email]

This list observes the Etiquette found at
http://www.mingw.org/Mailing_Lists.
We ask that you be polite and do the same.  Disregard for the list etiquette may cause your account to be moderated.

_______________________________________________
You may change your MinGW Account Options or unsubscribe at:
https://lists.sourceforge.net/lists/listinfo/mingw-users
Also: mailto:[hidden email]?subject=unsubscribe
Reply | Threaded
Open this post in threaded view
|

Re: mingw-get and pexports

Charles Wilson-2
On 4/26/2011 7:06 PM, Hoyt, David wrote:
> I'd like to understand a bit better why the pexport package requires
> gcc, mingwrt, and w32api? I have the case where I want to download
> and install pexports but don't want the other packages (I use my own
> compilation of gcc). Are the other packages needed for something?
> Would a simple "mingw-get install mingw32-pexports" and then a remove
> of the other packages be my best bet?

pexports can parse header files to determine the correct "decoration"
for stdcall symbols.  E.g. a function foo(int) has a 32bit (4byte)
argument, so it gets "decorated" as the "_foo@4" symbol -- but
bar(double, double, void*, long double) has 8+8+4+12 bytes of arguments,
so it gets decorated as "_bar@32".

You can't really determine this sort of information without the .h
headers -- and pexports uses gcc to pre-process those headers.

Now, if you're always using DLLs whose symbols are cdecl and not
stdcall, then this doesn't matter, and you probably have never used the
        -h <header> parse header
        -o print function ordinals
        -p <preprocessor> set preprocessor
        -v verbose mode
-h or -p options.

But...in order for pexports to be fully functional, it requires that gcc
-- and all of ITS dependencies -- be installed.  It was thought that
this was no great burden: why would anyone try to create an export list,
.def file, or import library for a DLL -- and NOT have gcc installed?
After all, what are you going to DO with that export list, .def file, or
import library if you DON'T have gcc installed?

> Dependency walker shows that pexports has no explicit dependency on
> any of those packages.

Right, because pexports does an exec("gcc preprocessor") which is not an
EXPLICIT dependency.  It's implicit.

You might be interested in the 'gendef' tool, which can do MOST of the
things pexports does -- except for parsing header files.  But...that
means gendef has no dependency, implicit or otherwise, on gcc and friends.

        mingw-get install gendef

--
Chuck


------------------------------------------------------------------------------
WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network
management toolset available today.  Delivers lowest initial
acquisition cost and overall TCO of any competing solution.
http://p.sf.net/sfu/whatsupgold-sd
_______________________________________________
MinGW-users mailing list
[hidden email]

This list observes the Etiquette found at
http://www.mingw.org/Mailing_Lists.
We ask that you be polite and do the same.  Disregard for the list etiquette may cause your account to be moderated.

_______________________________________________
You may change your MinGW Account Options or unsubscribe at:
https://lists.sourceforge.net/lists/listinfo/mingw-users
Also: mailto:[hidden email]?subject=unsubscribe
Reply | Threaded
Open this post in threaded view
|

Re: mingw-get and pexports

dhoyt
> pexports can parse header files to determine the correct "decoration"
> for stdcall symbols.  E.g. a function foo(int) has a 32bit (4byte)
> argument, so it gets "decorated" as the "_foo@4" symbol -- but
> bar(double, double, void*, long double) has 8+8+4+12 bytes of arguments,
> so it gets decorated as "_bar@32".

Makes sense.

> Now, if you're always using DLLs whose symbols are cdecl and not
> stdcall, then this doesn't matter, and you probably have never used the
>         -h <header> parse header
>         -o print function ordinals
>         -p <preprocessor> set preprocessor
>         -v verbose mode
> -h or -p options.

That's exactly my case.

> But...in order for pexports to be fully functional, it requires that gcc
> -- and all of ITS dependencies -- be installed.  It was thought that
> this was no great burden: why would anyone try to create an export list,
> .def file, or import library for a DLL -- and NOT have gcc installed?
> After all, what are you going to DO with that export list, .def file, or
> import library if you DON'T have gcc installed?

In my case I *do* have gcc installed -- just not mingw.org's. And I use it to generate msvc-compatible .lib files for use with visual c++ using microsoft's tools (lib.exe). gendef seems like a good alternative, however, and I think it merits further investigation to see if it will do the job (it looks like it will).

> Right, because pexports does an exec("gcc preprocessor") which is not an
> EXPLICIT dependency.  It's implicit.

I wondered if there was something along those lines -- although I was thinking more like LoadLibrary() and GetProcAddress().

Thanks for the clarification! I'll investigate gendef for now.

------------------------------------------------------------------------------
WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network
management toolset available today.  Delivers lowest initial
acquisition cost and overall TCO of any competing solution.
http://p.sf.net/sfu/whatsupgold-sd
_______________________________________________
MinGW-users mailing list
[hidden email]

This list observes the Etiquette found at
http://www.mingw.org/Mailing_Lists.
We ask that you be polite and do the same.  Disregard for the list etiquette may cause your account to be moderated.

_______________________________________________
You may change your MinGW Account Options or unsubscribe at:
https://lists.sourceforge.net/lists/listinfo/mingw-users
Also: mailto:[hidden email]?subject=unsubscribe