NetBSD Problem Report #43009
From www@NetBSD.org Fri Mar 19 11:29:12 2010
Return-Path: <www@NetBSD.org>
Received: from mail.netbsd.org (mail.netbsd.org [204.152.190.11])
by www.NetBSD.org (Postfix) with ESMTP id DD14C63C49E
for <gnats-bugs@gnats.NetBSD.org>; Fri, 19 Mar 2010 11:29:12 +0000 (UTC)
Message-Id: <20100319112912.9C3C963B11D@www.NetBSD.org>
Date: Fri, 19 Mar 2010 11:29:12 +0000 (UTC)
From: dennis.c.ferguson@gmail.com
Reply-To: dennis.c.ferguson@gmail.com
To: gnats-bugs@NetBSD.org
Subject: lib/libc/arch/powerpc64/gen/__sigsetjmp14.S uses lmd/stmd macros
X-Send-Pr-Version: www-1.0
>Number: 43009
>Category: port-powerpc
>Synopsis: lib/libc/arch/powerpc64/gen/__sigsetjmp14.S uses lmd/stmd macros
>Confidential: no
>Severity: serious
>Priority: low
>Responsible: mrg
>State: closed
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Fri Mar 19 11:30:00 +0000 2010
>Closed-Date: Mon Mar 22 01:39:51 +0000 2010
>Last-Modified: Mon Mar 22 01:40:01 +0000 2010
>Originator: Dennis Ferguson
>Release: very recent 5.99.24
>Organization:
>Environment:
NetBSD acer.hk.akit-ferguson.com 5.99.24 NetBSD 5.99.24 (GENERIC) #0: Sun Mar 14 17:25:30 HKT 2010 dennis@acer.hk.akit-ferguson.com:/usr/obj/sys/arch/amd64/compile/GENERIC amd64
>Description:
I've been working through problems building with the
current powerpc64 support by doing macppc64 builds and
attempting to repair what I find. When it attempts to
assemble lib/libc/arch/powerpc64/gen/__sigsetjmp14.S it
gets this:
# compile libc/__sigsetjmp14.o
/usr/src/obj/tooldir.Darwin-10.2.0-i386/bin/powerpc64--netbsd-gcc -I/usr/src/lib/libc/arch/powerpc64 -nostdinc -idirafter /usr/src/obj/destdir.macppc/usr/include -fstack-protector -Wstack-protector --param ssp-buffer-size=1 -D_LIBC -DLIBC_SCCS -DSYSLIBC_SCCS -D_REENTRANT -DHESIOD -DINET6 -DNLS -DYP -I/usr/src/lib/libc/include -I/usr/src/lib/libc -I/usr/src/sys -I/usr/src/lib/libc/compat/stdlib -I/usr/src/lib/libc/compat/../stdlib -I/usr/src/lib/libc/../../common/lib/libc/quad -I/usr/src/lib/libc/../../common/lib/libc/string -I/usr/src/lib/libc/../../common/lib/libc/arch/powerpc64/string -D__DBINTERFACE_PRIVATE -I/usr/src/libexec/ld.elf_so -I/usr/src/lib/libc/dlfcn -I/usr/src/lib/libc/gdtoa -DNO_FENV_H -I/usr/src/lib/libc/arch/powerpc64/gdtoa -DWITH_RUNE -I/usr/src/lib/libc -DPOSIX_MISTAKE -DCOMPAT__RES -DUSE_POLL -DPORTMAP -DWIDE_DOUBLE -DALL_STATE -DUSG_COMPAT -D_FORTIFY_SOURCE=2 -nostdinc -isystem /usr/src/obj/destdir.macppc/usr/include -c -traditional-cpp /usr/src/l
ib/libc/arch/powerpc64/gen/__sigsetjmp14.S -o __sigsetjmp14.o
/usr/src/lib/libc/arch/powerpc64/gen/__sigsetjmp14.S: Assembler messages:
/usr/src/lib/libc/arch/powerpc64/gen/__sigsetjmp14.S:25: Error: Unrecognized opcode: `stmd'
/usr/src/lib/libc/arch/powerpc64/gen/__sigsetjmp14.S:30: Error: Unrecognized opcode: `lmd'
*** Failed target: __sigsetjmp14.o
stmd and lmd are macros which are defined in the kernel environment
(i.e. #ifdef _KERNEL) only.
>How-To-Repeat:
Do a:
MACHINE=macppc64 ./build.sh distribution
>Fix:
Replace them with equivalent code. Both __setjmp14.S and
_setjmp.S had the same problem at some point, and were fixed
by different people at different times in different ways. This
patch attempts to fix __sigsetjmp14.S in a manner equivalent
to _setjmp.S:
Index: __sigsetjmp14.S
===================================================================
RCS file: /cvsroot/src/lib/libc/arch/powerpc64/gen/__sigsetjmp14.S,v
retrieving revision 1.1
diff -u -r1.1 __sigsetjmp14.S
--- __sigsetjmp14.S 7 Jul 2006 21:07:35 -0000 1.1
+++ __sigsetjmp14.S 19 Mar 2010 09:10:01 -0000
@@ -22,12 +22,20 @@
mfcr %r12
mr %r10,%r1
mr %r9,%r2
- stmd 7, 0(%r6) # save r7-r31
+ i = 0
+ .rept 32-7
+ std 7+i,i*8(%r6) # save r7-r31
+ i = i + 1
+ .endr
li %r3,0
blr
ENTRY(__siglongjmp14)
- lmd 7,0(%r3) # load r7-r31
+ i = 0
+ .rept 32-7
+ ld 7+i,i*8(%r3) # load r7-r31
+ i = i + 1
+ .endr
mr %r6,%r4
mtlr %r11
mtcr %r12
>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: port-powerpc-maintainer->mrg
Responsible-Changed-By: mrg@NetBSD.org
Responsible-Changed-When: Sun, 21 Mar 2010 23:41:45 +0000
Responsible-Changed-Why:
i'll merge this in
State-Changed-From-To: open->closed
State-Changed-By: mrg@NetBSD.org
State-Changed-When: Mon, 22 Mar 2010 01:39:51 +0000
State-Changed-Why:
patched submitted. thanks! this one had already been a problem with attempting
to update GCC files, i just commented those calls to make it "assemble".
From: matthew green <mrg@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/43009 CVS commit: src/lib/libc/arch/powerpc64/gen
Date: Mon, 22 Mar 2010 01:39:12 +0000
Module Name: src
Committed By: mrg
Date: Mon Mar 22 01:39:11 UTC 2010
Modified Files:
src/lib/libc/arch/powerpc64/gen: __sigsetjmp14.S
Log Message:
replace kernel-only 'stmd' and 'lmd' operations in userland with equivalent
sequences of code, as done in eg, powerpc64/gen/_setjmp.S rev 1.2.
from dennis.c.ferguson@gmail.com in PR#43009.
To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/lib/libc/arch/powerpc64/gen/__sigsetjmp14.S
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
>Unformatted:
(Contact us)
$NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007
The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.