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: Possibly wrong address passed to callq asm instruction within MPIR test binaries

Le Mon, 07 Apr 2014 13:28:19 +0000, Jean-Pierre Flori a ÃcritÂ:

> Le Mon, 07 Apr 2014 13:57:30 +0200, Corinna Vinschen a ÃcritÂ:
>> On Apr  7 11:50, Jean-Pierre Flori wrote:
>>> Le Mon, 07 Apr 2014 13:30:27 +0200, Corinna Vinschen a ÃcritÂ:
>>> > 
>>> > I'm sorry, but I don't know how this works exactly.  The nm prefix
>>> > is only added for external references, not for inlined functions,
>>> > but I don't know the gory details.  You may be better off to ask on
>>> > the gcc mailing list.
>>> > 
>>> No problem, I've already learned tons of stuff thanks to your help.
>>> I've just posted on gcc-help.
>> Thanks.  A simple testcase would still be nice, of course.
> Sure, but it seems the issue is that I cannot get the __nm_ prefix when
> I elaborate on a minimal problem like you did.
> I'll still try to get something this afternoon.
I think I got something:
$ cat > lib.c <<EOF
#include <stdio.h>

foo (int a)
  printf ("a = %d\n", a);
  return a;
$cat > <<EOF
global nothing
;export nothing
$ cat > app.c <<EOF
#include <stdio.h>

extern int foo (int);

main ()
  int x = foo (42);
  printf ("x = %d\n", x);
  return 0;
$ gcc -g -c lib.c -o lib.o
$ yasm -fx64 -o asm.o
$ gcc -shared lib.o ams.o -Wl,--out-implib=lib.dll.a -Wl,--export-all-
symbols -o lib.dll
$ gcc -g -o app app.c -L. -llib
$ ./app

Without the export directive (commented above) I get __nm_ prefix and 
wrong callq instruction.
With it, the __nm_prefix disappears and the trampoline correctly used.

Problem reports:
Unsubscribe info:

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