I'm attempting to generate a DLL and I think I stumbled upon an issue, or possibly I don't know how to use dlltool.
$ i686-pc-mingw32-dlltool --export-all-symbols --output-def test.def libtest.dll I get all symbols in the expected format, eg: memcpy @ 248
That's how I expect that command to work, however, this command: $ i686-pc-mingw32-dlltool --kill-at --export-all-symbols --output-def test.def libtest.dll I get all symbols exactly the same as before, eg: memcpy @ 248 I expected: memcpy
Is this a bug or am I doing something wrong? (using -k makes no difference)
Thanks, Michael
On Tue, Dec 08, 2009 at 09:37:18AM -0600, Michael Cronenworth wrote:
I'm attempting to generate a DLL and I think I stumbled upon an issue, or possibly I don't know how to use dlltool.
$ i686-pc-mingw32-dlltool --export-all-symbols --output-def test.def libtest.dll I get all symbols in the expected format, eg: memcpy @ 248
That's how I expect that command to work, however, this command: $ i686-pc-mingw32-dlltool --kill-at --export-all-symbols --output-def test.def libtest.dll I get all symbols exactly the same as before, eg: memcpy @ 248 I expected: memcpy
Is this a bug or am I doing something wrong? (using -k makes no difference)
I get the same results, and it looks like a bug to me.
Fedora MinGW only packages things. We don't deal with bugs in upstream projects. In this case you need to report the problem to binutils:
http://www.gnu.org/software/binutils/
Rich.
2009/12/9 Richard W.M. Jones rjones@redhat.com:
On Tue, Dec 08, 2009 at 09:37:18AM -0600, Michael Cronenworth wrote:
I'm attempting to generate a DLL and I think I stumbled upon an issue, or possibly I don't know how to use dlltool.
$ i686-pc-mingw32-dlltool --export-all-symbols --output-def test.def libtest.dll I get all symbols in the expected format, eg: memcpy @ 248
That's how I expect that command to work, however, this command: $ i686-pc-mingw32-dlltool --kill-at --export-all-symbols --output-def test.def libtest.dll I get all symbols exactly the same as before, eg: memcpy @ 248 I expected: memcpy
Is this a bug or am I doing something wrong? (using -k makes no difference)
I get the same results, and it looks like a bug to me.
This isn't a bug. What you see here is <symbol> space '@' space <digit>. This is the typing of the ordinal used for the symbol and is not the decoration.
Cheers, Kai
On Wed, Dec 09, 2009 at 01:28:03PM +0100, Kai Tietz wrote:
2009/12/9 Richard W.M. Jones rjones@redhat.com:
On Tue, Dec 08, 2009 at 09:37:18AM -0600, Michael Cronenworth wrote:
I'm attempting to generate a DLL and I think I stumbled upon an issue, or possibly I don't know how to use dlltool.
$ i686-pc-mingw32-dlltool --export-all-symbols --output-def test.def libtest.dll I get all symbols in the expected format, eg: memcpy @ 248
That's how I expect that command to work, however, this command: $ i686-pc-mingw32-dlltool --kill-at --export-all-symbols --output-def test.def libtest.dll I get all symbols exactly the same as before, eg: memcpy @ 248 I expected: memcpy
Is this a bug or am I doing something wrong? (using -k makes no difference)
I get the same results, and it looks like a bug to me.
This isn't a bug. What you see here is <symbol> space '@' space <digit>. This is the typing of the ordinal used for the symbol and is not the decoration.
At the very least, the documentation is confusing. It says:
`-k' `--kill-at' Specifies that when `dlltool' is creating the exports file it should not append the string `@ <number>'. These numbers are called ordinal numbers and they represent another way of accessing the function in a DLL, other than by name.
That implies to me that the @ <space> <number> part should be removed. The --kill-at option has no effect at all on the output, except to change a comment:
$ i686-pc-mingw32-dlltool --kill-at --export-all-symbols --output-def /tmp/withkill.def /usr/i686-pc-mingw32/sys-root/mingw/bin/libglut-0.dll $ i686-pc-mingw32-dlltool --export-all-symbols --output-def /tmp/withoutkill.def /usr/i686-pc-mingw32/sys-root/mingw/bin/libglut-0.dll $ diff -u /tmp/withkill.def /tmp/withoutkill.def --- /tmp/withkill.def 2009-12-09 14:13:16.119384036 +0000 +++ /tmp/withoutkill.def 2009-12-09 14:13:24.350383990 +0000 @@ -1,4 +1,4 @@ -; i686-pc-mingw32-dlltool --kill-at --export-all-symbols --output-def /tmp/withkill.def /usr/i686-pc-mingw32/sys-root/mingw/bin/libglut-0.dll +; i686-pc-mingw32-dlltool --export-all-symbols --output-def /tmp/withoutkill.def /usr/i686-pc-mingw32/sys-root/mingw/bin/libglut-0.dll EXPORTS ".weak.__Jv_RegisterClasses.___gcc_register_frame" @ 1 DATA AdjustWindowRect@12 @ 2
So I still maintain that this is a bug in _something_, perhaps in documentation.
Rich.