delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2014/04/07/10:03:24

X-Recipient: archive-cygwin AT delorie DOT com
DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:to:from:subject:date:message-id:references
:mime-version:content-type:content-transfer-encoding; q=dns; s=
default; b=LCwvI8cWwBHFYk1xudPjyUFKiy6ViXJHjr+ePgFM588wqy+0I5iGh
5WlDHD9DPPcW5hZJ6gCtUHlEvrCOi/jCSWy9XM4DOIqwVOW35sIkqKPBUmlq9y6h
GxmoxlmDgLWSpTKvKFWFNIuY9S7/dQeDSsWzoovLUwja3Sj0r1t2AA=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:to:from:subject:date:message-id:references
:mime-version:content-type:content-transfer-encoding; s=default;
bh=+3pts6cH0m8SycamnuEdBbNrz9o=; b=LdkpMkIDTc4kQgVE9hYo+63/8Rjh
/1qtxrNsYy3UqqRIuplvKYgjZ6gfPY4knizuJHRJJXe2VI2eEi4zGM0uOoaza4sC
sOQP1Fmi9exgDWEOr7RdtbIK0GGahFQl/p3vLvccAeIDxZcc2Vft/DWRrpWyGaTD
x3gSJ+kT4fAaYc0=
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Authentication-Results: sourceware.org; auth=none
X-Virus-Found: No
X-Spam-SWARE-Status: No, score=-2.2 required=5.0 tests=BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,RP_MATCHES_RCVD,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2
X-HELO: plane.gmane.org
To: cygwin AT cygwin DOT com
From: Jean-Pierre Flori <jpflori AT gmail DOT com>
Subject: Re: Possibly wrong address passed to callq asm instruction within MPIR test binaries
Date: Mon, 7 Apr 2014 14:02:43 +0000 (UTC)
Lines: 67
Message-ID: <lhub63$ie3$9@ger.gmane.org>
References: <20140402090750 DOT GP2508 AT calimero DOT vinschen DOT de> <lhsctu$56e$1 AT ger DOT gmane DOT org> <20140407084312 DOT GA2061 AT calimero DOT vinschen DOT de> <lhtqa1$ie3$1 AT ger DOT gmane DOT org> <lhtsb6$ie3$2 AT ger DOT gmane DOT org> <lhtve5$ie3$4 AT ger DOT gmane DOT org> <lhtvgh$ie3$5 AT ger DOT gmane DOT org> <lhu212$ie3$6 AT ger DOT gmane DOT org> <20140407113027 DOT GA30595 AT calimero DOT vinschen DOT de> <lhu3dq$ie3$7 AT ger DOT gmane DOT org> <20140407115730 DOT GA721 AT calimero DOT vinschen DOT de> <lhu95j$ie3$8 AT ger DOT gmane DOT org>
Mime-Version: 1.0
User-Agent: Pan/0.139 (Sexual Chocolate; GIT bf56508 git://git.gnome.org/pan2)
X-IsSubscribed: yes

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

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019