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. >>> http://gcc.gnu.org/ml/gcc-help/2014-04/msg00024.html >> >> 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>
int foo (int a) { printf ("a = %d\n", a); return a; } EOF $cat > asm.as <<EOF global nothing ;export nothing nothing: ret end EOF $ cat > app.c <<EOF #include <stdio.h> extern int foo (int); int main () { int x = foo (42); printf ("x = %d\n", x); nothing(); return 0; } EOF $ gcc -g -c lib.c -o lib.o $ yasm -fx64 asm.as -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 ... <segfault> 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: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple