> From: [email protected] (Niels Möller)
> Cc: [email protected]
> Date: Fri, 30 May 2014 15:57:40 +0200
> 
> >> =>0 0x70dc344d (0x0061fdc8)
> >>   1 0x00401767 test_main+0x36() 
> >> [/home/nisse/hack/nettle/testsuite/arcfour-test.c:73] in arcfour-test 
> >> (0x0061fde8)
> >>   2 0x00401767 test_main+0x36() 
> >> [/home/nisse/hack/nettle/testsuite/arcfour-test.c:73] in arcfour-test 
> >> (0x0061fe08)
> >> 
> >> I'm not entirely sure how to interpret this
> >
> > It's the equivalent of a SIGSEGV, but I'm sure you know that.
> 
> Right, I understand it's an access at an invalid address. Some things
> that are unclear to me: The meaning of the second address in "=>0
> 0x70dc344d (0x0061fdc8)". And why "test_main+0x36()

I don't use wine, so I don't know what that means.

> [/home/nisse/hack/nettle/testsuite/arcfour-test.c:73]" occurs a large
> number of times in the backtrace. I quoted just the first two above, but
> it's 200 such lines, with only the value in the last parentheses
> differing between lines (and 0x00000000 in all but the first 10 lines) .

Sounds like infinite recursion?

> Is it possible for you to do a git checkout?

Yes.

> For the cross-compile case, it would be
> 
>   git clone git://git.lysator.liu.se/nettle/nettle.git
>   cd nettle
>   ./.bootstrap
>   ./configure --host=i586-mingw32msvc
>   make
>   make -C testsuite arcfour-test.exe
> 
> and then copy .lib/libnettle-5-0.dll and testsuite/arcfour-test.exe to
> the windows test machine.
> 
> For native compile, instead ./configure && make dist to produce a
> tarball.

OK, I'll see what I can find out.

> I'm really puzzled. If I use i586-mingw32msvc-objdump to disassemble
> arcfour-test.exe, the call to nettle_arcfour_crypt looks like
> 
>   4014e7:       53                      push   %ebx
>   4014e8:       50                      push   %eax
>   4014e9:       e8 b2 6c 00 00          call   4081a0 
> <__imp__nettle_arcfour_crypt>
> 
> 004014ea <__fu0__nettle_arcfour_crypt>:
>   4014ea:       b2 6c                   mov    $0x6c,%dl
>   4014ec:       00 00                   add    %al,(%eax)
>   4014ee:       8b 95 d8 fe ff ff       mov    -0x128(%ebp),%edx
> 
> Looks sane to me.
> 
> However, when I run it in gdb (I inserted an asm volatile("int $3") in
> the C code, and then I run native gdb on the wine.bin ELF-binary, and
> give wine the arcfour-test.exe file as argument), and disassemble the
> code, the address is different,
> 
> Dump of assembler code from 0x4014e9 to 0x4014fd:
> => 0x004014e9:  call   0x70dc347e
>    0x004014ee:  mov    -0x128(%ebp),%edx
>    0x004014f4:  add    $0x20,%esp
>    0x004014f7:  cmpb   $0x17,(%esi,%edx,1)
>    0x004014fb:  jne    0x401655

Hard to say what's going on here, as too many non-native tools are
involved.

> So this has somehow been relocated when the .exe file was loaded by
> wine, and relocated incorrectly to point into nowhere. I'm not really
> sure what the instruction format is, but isn't it pc-relative
> addressing? Or is relocation expected here?

The only thing I'd expect is a call through an indirect address, since
you are linking to a DLL.  But the above doesn't look like that.

> The message seemed to say that the latter case won't work with auto
> import, but maybe I misunderstood it.

I'll look into it.
_______________________________________________
nettle-bugs mailing list
[email protected]
http://lists.lysator.liu.se/mailman/listinfo/nettle-bugs

Reply via email to