From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/13766 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: David Edelsohn Newsgroups: gmane.linux.lib.musl.general Subject: Re: [PATCH] powerpc64: use a type for mcontext_t regs field Date: Tue, 12 Feb 2019 12:05:17 -0500 Message-ID: References: <20190212153522.2371-1-AWilcox@Wilcox-Tech.com> <20190212161800.GJ23599@brightrain.aerifal.cx> Reply-To: musl@lists.openwall.com Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="34540"; mail-complaints-to="usenet@blaine.gmane.org" To: musl@lists.openwall.com Original-X-From: musl-return-13782-gllmg-musl=m.gmane.org@lists.openwall.com Tue Feb 12 18:05:45 2019 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by blaine.gmane.org with smtp (Exim 4.89) (envelope-from ) id 1gtbV9-0008s9-ND for gllmg-musl@m.gmane.org; Tue, 12 Feb 2019 18:05:43 +0100 Original-Received: (qmail 9414 invoked by uid 550); 12 Feb 2019 17:05:41 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Original-Received: (qmail 9393 invoked from network); 12 Feb 2019 17:05:41 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :content-transfer-encoding; bh=UTXnv8/jdR4njScGK+vhkRihIBPI/UI3ROSQQNW7ZQQ=; b=H7jJR+RAqr/+zGql3fLV4wDu74ijH6qrbVOwDmnSjlNVVhh8qCJBDxcympYivSfEGl VH1Dj8q3Cf+4rNLZ40n4Wg+f2pyqpMgsx1B7eAeTzfvqDMtI3jOfZ6lL48S6uRA1eWON KUAMVLyjL/mBlD4ugChbJxu92mv/bfSZQ6RS3Np/99lPvffTR3EtVppsT3P4kAf8ju82 Tr4Q1hv280MGwyrUJYF9v7Rp0oPyVlvLjJiQ865zGnUmots0Xba5vLlOAVw9JGeBHNpd Rb+IZVVcYhQiY54hc6eJg/bmICIFME5Ujhlpnp9G0PhUnoCQNVcqLEbEIYsM0k4/L9xC dnfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:content-transfer-encoding; bh=UTXnv8/jdR4njScGK+vhkRihIBPI/UI3ROSQQNW7ZQQ=; b=IoIUBSdM7g15guXXnJi30bb9h7hfEFdItydR99Zr9kEUYlzKPhZBKHTES90KVNZ5ET 09hQxBWuiUGII9Po1uUY0okhEKY4GpOJ0J9I+6PYNfOxDFNw7fJnOvlGq1L84N1rWVvT 97hbujDyjrMYlFDmQgLqcXVt65PVvmBPXuK1sMq+ZQYzAOe+eINJavsYOgUPzc8m7ywY 6ybqXyE+GyvWHyV465POiGoLvXMK8ZvULXu/lv9S70Ct5rrS97tetovR1LKuCMDk6OqB aP1hl1QuZ9QuhPT1Tmb7FbDINSJrhvzs/l5RfAJ3nRiNAJgVQ27b8+8fd2pX29fB4sOt L86g== X-Gm-Message-State: AHQUAuYkQrsdytAvzUvYvCGeQp3fr7TarsC2WlkY5ECYGzXzD5z1mixP y4oUPRhAw931UO4UYhGSRdwK5pioiQDnImAwA900AV0Z X-Google-Smtp-Source: AHgI3IZusHJ1yek+/Ne9gfxFjpTUsP6Tf17IjQsB4tOvFoIOu0c5YmhQtV86FZ1zRggeH95DOA6mzUojtiCzQrF9/eQ= X-Received: by 2002:adf:eb4c:: with SMTP id u12mr3500966wrn.199.1549991129228; Tue, 12 Feb 2019 09:05:29 -0800 (PST) In-Reply-To: <20190212161800.GJ23599@brightrain.aerifal.cx> Xref: news.gmane.org gmane.linux.lib.musl.general:13766 Archived-At: On Tue, Feb 12, 2019 at 11:18 AM Rich Felker wrote: > > On Tue, Feb 12, 2019 at 09:35:22AM -0600, A. Wilcox wrote: > > GCC Go dereferences `regs` for `nip`. Without this change, compilation > > fails with the following message: > > > > .../../../libgo/runtime/go-signal.c: In function =E2=80=98getSiginfo=E2= =80=99: > > .../../../libgo/runtime/go-signal.c:225:56: warning: dereferencing =E2= =80=98void *=E2=80=99 pointer > > ret.sigpc =3D ((ucontext_t*)(context))->uc_mcontext.regs->nip; > > ^~ > > .../../../libgo/runtime/go-signal.c:225:56: error: request for member = =E2=80=98nip=E2=80=99 in something not a structure or union > > --- > > arch/powerpc64/bits/signal.h | 4 +++- > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > diff --git a/arch/powerpc64/bits/signal.h b/arch/powerpc64/bits/signal.= h > > index 34693a68..6736c69a 100644 > > --- a/arch/powerpc64/bits/signal.h > > +++ b/arch/powerpc64/bits/signal.h > > @@ -8,6 +8,8 @@ > > > > #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) > > > > +#include > > + > > This is almost surely not right. You can never use a bits/* header > except from the corresponding public header that includes it. They do > not have multiple-inclusion guards and are not designed to be usable > independently. And including sys/user.h is also almost surely wrong > since it's a problematic header you don't want getting included > (conflicts with linux/*.h stuff). > > > typedef unsigned long greg_t, gregset_t[48]; > > > > typedef struct { > > @@ -29,7 +31,7 @@ typedef struct sigcontext { > > int _pad0; > > unsigned long handler; > > unsigned long oldmask; > > - void *regs; > > + struct pt_regs *regs; > > gregset_t gp_regs; > > fpregset_t fp_regs; > > vrregset_t *v_regs; > > -- > > 2.19.2 > > Do you know if there's a reason Go is trying to use this regs member > rather than gp_regs? I think that's the real issue here. Apparently GCCGo runtime has dependencies on GLibc and has not been ported to Musl Libc. The GCCGo runtime is trying to obtain the PC for a signal. #ifdef __PPC__ #ifdef __linux__ ret.sigpc =3D ((ucontext_t*)(context))->uc_mcontext.regs->nip; #endif #ifdef _AIX ret.sigpc =3D ((ucontext_t*)(context))->uc_mcontext.jmp_context.iar; #endif #endif The program counter is not part of gp_regs. I presume that someone is trying to use GCCGo with Alpine Linux. I believe that Golang works with Alpine Linux. Thanks, David