eglibc bugfixes for e5500 and systemd
cover eglibc bugfixes for e5500 and systemd
This patchset addressed two bugs in eglibc on powerpc one where we would get fsqrt intruction emitted into libm code on e5500/64bit and second problem where systemd 189+ would not build on powerpc due to missing defines in fcntl.h for ppc.
The following changes since commit 7887b99646d8e1e736ad6e4a306e47df9955221e:
local.conf.sample: change valgrind support architecture comment (2012-09-14 17:05:59 +0100)
are available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib kraj/eglibc-fixes
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=kraj/eglibc-fixes
Khem Raj (2):
eglibc: Fix fcntl.h for powerpc
eglibc: Do not use fsqrt in libm when building for fsl ppc with fpu
..._handle_at-open_by_handle-etc.-to-PowerPC.patch | 65 ++++++++++++++++++++ .../eglibc/eglibc-2.16/fsl-ppc-no-fsqrt.patch | 44 +++++++++++++ meta/recipes-core/eglibc/eglibc_2.16.bb | 4 +- 3 files changed, 112 insertions(+), 1 deletion(-) create mode 100644 meta/recipes-core/eglibc/eglibc-2.16/0001-Add-name_to_handle_at-open_by_handle-etc.-to-PowerPC.patch create mode 100644 meta/recipes-core/eglibc/eglibc-2.16/fsl-ppc-no-fsqrt.patch
Signature · 1 line
1.7.9.5
PATCH 1/2 eglibc: Fix fcntl.h for powerpc
This fix is needed for systemd to work on powerpc
--- ..._handle_at-open_by_handle-etc.-to-PowerPC.patch | 65 ++++++++++++++++++++ meta/recipes-core/eglibc/eglibc_2.16.bb | 1 + 2 files changed, 66 insertions(+) create mode 100644 meta/recipes-core/eglibc/eglibc-2.16/0001-Add-name_to_handle_at-open_by_handle-etc.-to-PowerPC.patch
meta/recipes-core/eglibc/eglibc-2.16/0001-Add-name_to_handle_at-open_by_handle-etc.-to-PowerPC.patch new file +65 -0
@@ -0,0 +1,65 @@ +Upstream-Status: Submitted + + +From 4b2716f902c117490285e39deb6ef7925fdc846e Mon Sep 17 00:00:00 2001 +From: Khem Raj <[email protected]> +Date: Sat, 8 Sep 2012 19:54:03 -0700 +Subject: [PATCH] Add name_to_handle_at, open_by_handle etc. to PowerPC + bits/fcntl.h. + +--- + ChangeLog | 7 +++++++ + sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h | 28 +++++++++++++++++++++++++- + 2 files changed, 34 insertions(+), 1 deletion(-) + +Index: libc/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h +=================================================================== +--- libc.orig/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h 2012-09-08 10:27:08.000000000 -0700 ++++ libc/sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h 2012-09-08 19:57:44.219191560 -0700 +@@ -1,5 +1,5 @@ + /* O_*, F_*, FD_* bit values for Linux/PowerPC. +- Copyright (C) 1995-1998, 2000, 2003, 2004, 2006, 2007, 2009, 2010, 2011 ++ Copyright (C) 1995-2012 + Free Software Foundation, Inc. + This file is part of the GNU C Library. + +@@ -232,6 +232,19 @@ + we splice from/to). */ + # define SPLICE_F_MORE 4 /* Expect more data. */ + # define SPLICE_F_GIFT 8 /* Pages passed in are a gift. */ ++ ++ ++/* File handle structure. */ ++struct file_handle ++{ ++ unsigned int handle_bytes; ++ int handle_type; ++ /* File identifier. */ ++ unsigned char f_handle[0]; ++}; ++ ++/* Maximum handle size (for now). */ ++# define MAX_HANDLE_SZ 128 + #endif + + __BEGIN_DECLS +@@ -278,6 +291,19 @@ + __off64_t __len); + # endif + ++ ++/* Map file name to file handle. */ ++extern int name_to_handle_at (int __dfd, const char *__name, ++ struct file_handle *__handle, int *__mnt_id, ++ int __flags) __THROW; ++ ++/* Open file using the file handle. ++ ++ This function is a possible cancellation point and therefore not ++ marked with __THROW. */ ++extern int open_by_handle_at (int __mountdirfd, struct file_handle *__handle, ++ int __flags); ++ + #endif + + __END_DECLS
meta/recipes-core/eglibc/eglibc_2.16.bb +1 -0
@@ -29,6 +29,7 @@ SRC_URI = "svn://www.eglibc.org/svn/branches/;module=${EGLIBC_BRANCH};protocol=h file://0001-eglibc-menuconfig-support.patch \ file://0002-eglibc-menuconfig-hex-string-options.patch \ file://0003-eglibc-menuconfig-build-instructions.patch \ + file://0001-Add-name_to_handle_at-open_by_handle-etc.-to-PowerPC.patch \ " LIC_FILES_CHKSUM = "file://LICENSES;md5=98a1128c4b58120182cbea3b1752d8b9 \ file://COPYING;md5=393a5ca445f6965873eca0259a17f833 \
Signature · 1 line
1.7.9.5
PATCH 2/2 eglibc: Do not use fsqrt in libm when building for fsl ppc with fpu
--- .../eglibc/eglibc-2.16/fsl-ppc-no-fsqrt.patch | 44 ++++++++++++++++++++ meta/recipes-core/eglibc/eglibc_2.16.bb | 3 +- 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 meta/recipes-core/eglibc/eglibc-2.16/fsl-ppc-no-fsqrt.patch
meta/recipes-core/eglibc/eglibc-2.16/fsl-ppc-no-fsqrt.patch new file +44 -0
@@ -0,0 +1,44 @@ +Create e5500 specific math_private.h and let it include when compiling for e5500/64bit core +We prefefine __CPU_HAS_FSQRT to 0 and then in general ppc64 math_private.h we check if its +already defined before redefining it. This way we can ensure that on e5500 builds it wont +emit fsqrt intructions + +-Khem + +Upstream-Status: Pending + +Index: libc/sysdeps/powerpc/fpu/math_private.h +=================================================================== +--- libc.orig/sysdeps/powerpc/fpu/math_private.h 2012-09-03 22:37:58.000000000 -0700 ++++ libc/sysdeps/powerpc/fpu/math_private.h 2012-09-17 09:35:09.709124003 -0700 +@@ -25,10 +25,12 @@ + #include <dl-procinfo.h> + #include_next <math_private.h> + +-# if __WORDSIZE == 64 || defined _ARCH_PWR4 +-# define __CPU_HAS_FSQRT 1 +-# else +-# define __CPU_HAS_FSQRT ((GLRO(dl_hwcap) & PPC_FEATURE_64) != 0) ++# ifndef __CPU_HAS_FSQRT ++# if __WORDSIZE == 64 || defined _ARCH_PWR4 ++# define __CPU_HAS_FSQRT 1 ++# else ++# define __CPU_HAS_FSQRT ((GLRO(dl_hwcap) & PPC_FEATURE_64) != 0) ++# endif + # endif + + extern double __slow_ieee754_sqrt (double); +Index: libc/ports/sysdeps/powerpc/powerpc64/e5500/fpu/math_private.h +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ libc/ports/sysdeps/powerpc/powerpc64/e5500/fpu/math_private.h 2012-09-17 09:56:59.129124074 -0700 +@@ -0,0 +1,9 @@ ++#ifndef _E5500_MATH_PRIVATE_H_ ++#define _E5500_MATH_PRIVATE_H_ 1 ++/* E5500 core FPU does not implement ++ fsqrt */ ++ ++#define __CPU_HAS_FSQRT 0 ++#include_next <math_private.h> ++ ++#endif /* _E5500_MATH_PRIVATE_H_ */
meta/recipes-core/eglibc/eglibc_2.16.bb +2 -1
@@ -3,7 +3,7 @@ require eglibc.inc SRCREV = "20393" DEPENDS += "gperf-native kconfig-frontends-native" -PR = "r9" +PR = "r10" PR_append = "+svnr${SRCPV}" EGLIBC_BRANCH="eglibc-2_16"
@@ -30,6 +30,7 @@ SRC_URI = "svn://www.eglibc.org/svn/branches/;module=${EGLIBC_BRANCH};protocol=h file://0002-eglibc-menuconfig-hex-string-options.patch \ file://0003-eglibc-menuconfig-build-instructions.patch \ file://0001-Add-name_to_handle_at-open_by_handle-etc.-to-PowerPC.patch \ + file://file://fsl-ppc-no-fsqrt.patch \ " LIC_FILES_CHKSUM = "file://LICENSES;md5=98a1128c4b58120182cbea3b1752d8b9 \ file://COPYING;md5=393a5ca445f6965873eca0259a17f833 \
Signature · 1 line
1.7.9.5
Re: [PATCH 2/2] eglibc: Do not use fsqrt in libm when building for fsl ppc with fpu
meta/recipes-core/eglibc/eglibc_2.16.bb SRC_URI = "svn://www.eglibc.org/svn/branches/;module=${EGLIBC_BRANCH};protocol=h · line 33
Quoted 7 lines
EGLIBC_BRANCH="eglibc-2_16"
meta/recipes-core/eglibc/eglibc_2.16.bb +1
-0@@ -30,6 +30,7 @@ SRC_URI = "svn://www.eglibc.org/svn/branches/;module=${EGLIBC_BRANCH};protocol=h file://0002-eglibc-menuconfig-hex-string-options.patch \ file://0003-eglibc-menuconfig-build-instructions.patch \ file://0001-Add-name_to_handle_at-open_by_handle-etc.-to-PowerPC.patch \ + file://file://fsl-ppc-no-fsqrt.patch \
I have fixed this typo on the branch
Quoted 6 lines
meta/recipes-core/eglibc/eglibc_2.16.bb +0
-1" LIC_FILES_CHKSUM = "file://LICENSES;md5=98a1128c4b58120182cbea3b1752d8b9 \ file://COPYING;md5=393a5ca445f6965873eca0259a17f833 \ --1.7.9.5
Saul Wold
AppliedQuoted 18 lines · Khem Raj
This patchset addressed two bugs in eglibc on powerpc one where we would get fsqrt intruction emitted into libm code on e5500/64bit and second problem where systemd 189+ would not build on powerpc due to missing defines in
fcntl.hfor ppc.The following changes since commit
7887b99646d8e1e736ad6e4a306e47df9955221e:local.conf.sample: change valgrind support architecture comment (2012-09-14 17:05:59 +0100)are available in the git repository at:
git://git.openembedded.org/openembedded-core-contribkraj/eglibc-fixes
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=kraj/eglibc-fixesKhem Raj (2):
eglibc: Fixfcntl.hfor powerpc
eglibc: Do not use fsqrt in libm when building for fsl ppc with fpu
Quoted 7 lines
..._handle_at-open_by_handle-etc.-to-PowerPC.patch | 65 ++++++++++++++++++++ .../eglibc/eglibc-2.16/fsl-ppc-no-fsqrt.patch | 44 +++++++++++++ meta/recipes-core/eglibc/eglibc_2.16.bb | 4 +- 3 files changed, 112 insertions(+), 1 deletion(-)create mode 100644
meta/recipes-core/eglibc/eglibc-2.16/0001-Add-name_to_handle_at-open_by_handle-etc.-to-PowerPC.patchcreate mode 100644meta/recipes-core/eglibc/eglibc-2.16/fsl-ppc-no-fsqrt.patch
Merged into OE-Core
Thanks
Sau!