From db81461ad209e76f8a8c7f550a9d422702c75ea5 Mon Sep 17 00:00:00 2001 From: Tom Callaway Date: Mar 31 2010 14:44:44 +0000 Subject: fix for sparc64 msgrcv from trunk --- diff --git a/glibc-sparc64-msgrcv-fix.patch b/glibc-sparc64-msgrcv-fix.patch new file mode 100644 index 0000000..1278fa3 --- /dev/null +++ b/glibc-sparc64-msgrcv-fix.patch @@ -0,0 +1,70 @@ +commit 321029f1c35db68c9d2e15408871030a36694541 +Author: Aurelien Jarno +Date: Wed Mar 3 02:11:46 2010 -0800 + + sparc64: Fix msgrcv() + + msgrcv() does not work on sparc64, as it passes the 6th argument using + the ipc kludge, while the kernel waits for a 6 arguments syscall. This + patches fixes the problem by using a sparc64 specific version of + msgrcv.c. + + 2010-03-03 Aurelien Jarno + + * sysdeps/unix/sysv/linux/sparc/sparc64/msgrcv.c: New file. + +diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/msgrcv.c b/sysdeps/unix/sysv/linux/sparc/sparc64/msgrcv.c +new file mode 100644 +index 0000000..117762c +--- /dev/null ++++ b/sysdeps/unix/sysv/linux/sparc/sparc64/msgrcv.c +@@ -0,0 +1,49 @@ ++/* Copyright (C) 2010 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#include ++#include ++#include ++ ++#include ++#include ++ ++#include ++ ++ssize_t ++__libc_msgrcv (msqid, msgp, msgsz, msgtyp, msgflg) ++ int msqid; ++ void *msgp; ++ size_t msgsz; ++ long int msgtyp; ++ int msgflg; ++{ ++ if (SINGLE_THREAD_P) ++ return INLINE_SYSCALL (ipc, 6, IPCOP_msgrcv, msqid, msgsz, msgflg, ++ CHECK_N (msgp, msgsz), msgtyp); ++ ++ int oldtype = LIBC_CANCEL_ASYNC (); ++ ++ ssize_t result = INLINE_SYSCALL (ipc, 6, IPCOP_msgrcv, msqid, msgsz, msgflg, ++ CHECK_N (msgp, msgsz), msgtyp); ++ ++ LIBC_CANCEL_RESET (oldtype); ++ ++ return result; ++} ++weak_alias (__libc_msgrcv, msgrcv) diff --git a/glibc.spec b/glibc.spec index e980c5a..fdcdbff 100644 --- a/glibc.spec +++ b/glibc.spec @@ -28,7 +28,7 @@ Summary: The GNU libc libraries Name: glibc Version: %{glibcversion} -Release: 4 +Release: 5 # GPLv2+ is used in a bunch of programs, LGPLv2+ is used for libraries. # Things that are linked directly into dynamically linked programs # and shared libraries (e.g. crt files, lib*_nonshared.a) have an additional @@ -41,6 +41,7 @@ Source0: %{?glibc_release_url}%{glibcsrcdir}.tar.bz2 Source1: %{glibcsrcdir}-fedora.tar.bz2 Patch0: %{name}-fedora.patch Patch1: %{name}-ia64-lib64.patch +Patch2: %{name}-sparc64-msgrcv-fix.patch Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Obsoletes: glibc-profile < 2.4 Provides: ldconfig @@ -251,6 +252,7 @@ package or when debugging this package. %patch1 -p1 %endif %endif +%patch2 -p1 # A lot of programs still misuse memcpy when they have to use # memmove. The memcpy implementation below is not tolerant at @@ -1037,6 +1039,9 @@ rm -f *.filelist* %endif %changelog +* Wed Mar 31 2010 Tom "spot" Callaway - 2.11.1-5 +- Fix for sparc64 msgrcv from upstream trunk + * Wed Mar 17 2010 Andreas Schwab - 2.11.1-4 - Update from 2.11 branch - regcomp.c: do not ignore memory allocation failure (BZ#11127)