mirror of
https://github.com/crosstool-ng/crosstool-ng.git
synced 2024-12-19 04:47:52 +00:00
Remove obsolete glibc 2.12.1
glibc 2.12.1 was marked as obsolete. Now that the 1.25.0 release is out this version can be removed completely. As glibc 2.12.1 was the last remaining version supported by glibc-ports support for glibc-ports is also removed. Signed-off-by: Chris Packham <judge.packham@gmail.com>
This commit is contained in:
parent
53bbdc7425
commit
6d5227b63b
@ -17,10 +17,6 @@
|
||||
# are still using quite ancient versions. Please do not retire versions
|
||||
# (including versions in between) until the EOL dates indicated in version.desc.
|
||||
|
||||
if GLIBC_USE_PORTS_EXTERNAL
|
||||
source "config/versions/glibc-ports.in"
|
||||
endif
|
||||
|
||||
# Glibc has some dependencies on the kernel headers:
|
||||
config GLIBC_DEP_KERNEL_HEADERS_VERSION
|
||||
def_bool y
|
||||
@ -117,19 +113,6 @@ config GLIBC_HAS_PORTS_ADDON_EXTERNAL
|
||||
config GLIBC_HAS_LIBIDN_ADDON
|
||||
def_bool y
|
||||
|
||||
# Some architectures require the ports addon. List them one by one here:
|
||||
# This list must be carefully in sync with the architectures names
|
||||
# we can find in config/arch/*
|
||||
config GLIBC_USE_PORTS_ADDON
|
||||
def_bool y
|
||||
depends on ARCH_ALPHA || ARCH_ARM || ARCH_M68K || ARCH_MIPS || ARCH_POWERPC
|
||||
depends on GLIBC_HAS_PORTS_ADDON
|
||||
depends on !GLIBC_USE_ORACLE
|
||||
|
||||
config GLIBC_USE_PORTS_EXTERNAL
|
||||
def_bool y
|
||||
depends on GLIBC_USE_PORTS_ADDON && GLIBC_HAS_PORTS_ADDON_EXTERNAL
|
||||
|
||||
config GLIBC_USE_NPTL_ADDON
|
||||
def_bool y
|
||||
depends on THREADS_NATIVE && GLIBC_HAS_NPTL_ADDON
|
||||
|
@ -1,72 +0,0 @@
|
||||
From 175cef4163dd60f95106cfd5f593b8a4e09d02c9 Mon Sep 17 00:00:00 2001
|
||||
From: Joseph Myers <joseph@codesourcery.com>
|
||||
Date: Tue, 20 May 2014 21:27:13 +0000
|
||||
Subject: [PATCH] Fix ARM build with GCC trunk.
|
||||
|
||||
sysdeps/unix/sysv/linux/arm/unwind-resume.c and
|
||||
sysdeps/unix/sysv/linux/arm/unwind-forcedunwind.c have static
|
||||
variables that are written in C code but only read from toplevel asms.
|
||||
Current GCC trunk now optimizes away such apparently write-only static
|
||||
variables, so causing a build failure. This patch marks those
|
||||
variables with __attribute_used__ to avoid that optimization.
|
||||
|
||||
Tested that this fixes the build for ARM.
|
||||
|
||||
* sysdeps/unix/sysv/linux/arm/unwind-forcedunwind.c
|
||||
(libgcc_s_resume): Use __attribute_used__.
|
||||
* sysdeps/unix/sysv/linux/arm/unwind-resume.c (libgcc_s_resume):
|
||||
Likewise.
|
||||
---
|
||||
sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind-forcedunwind.c | 3 ++-
|
||||
sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind-resume.c | 3 ++-
|
||||
sysdeps/unix/sysv/linux/arm/nptl/unwind-forcedunwind.c | 3 ++-
|
||||
sysdeps/unix/sysv/linux/arm/nptl/unwind-resume.c | 3 ++-
|
||||
4 files changed, 8 insertions(+), 4 deletions(-)
|
||||
--- a/sysdeps/unix/sysv/linux/arm/nptl/unwind-forcedunwind.c
|
||||
+++ b/sysdeps/unix/sysv/linux/arm/nptl/unwind-forcedunwind.c
|
||||
@@ -23,7 +23,8 @@
|
||||
#include <pthreadP.h>
|
||||
|
||||
static void *libgcc_s_handle;
|
||||
-static void (*libgcc_s_resume) (struct _Unwind_Exception *exc);
|
||||
+static void (*libgcc_s_resume) (struct _Unwind_Exception *exc)
|
||||
+ __attribute_used__;
|
||||
static _Unwind_Reason_Code (*libgcc_s_personality)
|
||||
(int, _Unwind_Action, _Unwind_Exception_Class, struct _Unwind_Exception *,
|
||||
struct _Unwind_Context *);
|
||||
--- a/sysdeps/unix/sysv/linux/arm/nptl/unwind-resume.c
|
||||
+++ b/sysdeps/unix/sysv/linux/arm/nptl/unwind-resume.c
|
||||
@@ -21,7 +21,8 @@
|
||||
#include <stdio.h>
|
||||
#include <unwind.h>
|
||||
|
||||
-static void (*libgcc_s_resume) (struct _Unwind_Exception *exc);
|
||||
+static void (*libgcc_s_resume) (struct _Unwind_Exception *exc)
|
||||
+ __attribute_used__;
|
||||
static _Unwind_Reason_Code (*libgcc_s_personality)
|
||||
(int, _Unwind_Action, _Unwind_Exception_Class, struct _Unwind_Exception *,
|
||||
struct _Unwind_Context *);
|
||||
--- a/sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind-forcedunwind.c
|
||||
+++ b/sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind-forcedunwind.c
|
||||
@@ -23,7 +23,8 @@
|
||||
#include <pthreadP.h>
|
||||
|
||||
static void *libgcc_s_handle;
|
||||
-static void (*libgcc_s_resume) (struct _Unwind_Exception *exc);
|
||||
+static void (*libgcc_s_resume) (struct _Unwind_Exception *exc)
|
||||
+ __attribute_used__;
|
||||
static _Unwind_Reason_Code (*libgcc_s_personality)
|
||||
(_Unwind_State, struct _Unwind_Exception *, struct _Unwind_Context *);
|
||||
static _Unwind_Reason_Code (*libgcc_s_forcedunwind)
|
||||
--- a/sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind-resume.c
|
||||
+++ b/sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind-resume.c
|
||||
@@ -21,7 +21,8 @@
|
||||
#include <stdio.h>
|
||||
#include <unwind.h>
|
||||
|
||||
-static void (*libgcc_s_resume) (struct _Unwind_Exception *exc);
|
||||
+static void (*libgcc_s_resume) (struct _Unwind_Exception *exc)
|
||||
+ __attribute_used__;
|
||||
static _Unwind_Reason_Code (*libgcc_s_personality)
|
||||
(_Unwind_State, struct _Unwind_Exception *, struct _Unwind_Context *);
|
||||
|
@ -1,99 +0,0 @@
|
||||
copied from kernel as it is sanitized now
|
||||
|
||||
---
|
||||
sysdeps/unix/sysv/linux/m68k/sys/user.h | 87 ++++++++++++++++++++++++++++++++
|
||||
1 file changed, 87 insertions(+)
|
||||
|
||||
--- a/sysdeps/unix/sysv/linux/m68k/sys/user.h
|
||||
+++ b/sysdeps/unix/sysv/linux/m68k/sys/user.h
|
||||
@@ -1,3 +1,90 @@
|
||||
+#ifndef _SYS_USER_H
|
||||
+#define _SYS_USER_H
|
||||
+
|
||||
+/* Core file format: The core file is written in such a way that gdb
|
||||
+ can understand it and provide useful information to the user (under
|
||||
+ linux we use the 'trad-core' bfd). There are quite a number of
|
||||
+ obstacles to being able to view the contents of the floating point
|
||||
+ registers, and until these are solved you will not be able to view the
|
||||
+ contents of them. Actually, you can read in the core file and look at
|
||||
+ the contents of the user struct to find out what the floating point
|
||||
+ registers contain.
|
||||
+ The actual file contents are as follows:
|
||||
+ UPAGE: 1 page consisting of a user struct that tells gdb what is present
|
||||
+ in the file. Directly after this is a copy of the task_struct, which
|
||||
+ is currently not used by gdb, but it may come in useful at some point.
|
||||
+ All of the registers are stored as part of the upage. The upage should
|
||||
+ always be only one page.
|
||||
+ DATA: The data area is stored. We use current->end_text to
|
||||
+ current->brk to pick up all of the user variables, plus any memory
|
||||
+ that may have been malloced. No attempt is made to determine if a page
|
||||
+ is demand-zero or if a page is totally unused, we just cover the entire
|
||||
+ range. All of the addresses are rounded in such a way that an integral
|
||||
+ number of pages is written.
|
||||
+ STACK: We need the stack information in order to get a meaningful
|
||||
+ backtrace. We need to write the data from (esp) to
|
||||
+ current->start_stack, so we round each of these off in order to be able
|
||||
+ to write an integer number of pages.
|
||||
+ The minimum core file size is 3 pages, or 12288 bytes.
|
||||
+*/
|
||||
+
|
||||
+struct user_m68kfp_struct {
|
||||
+ unsigned long fpregs[8*3]; /* fp0-fp7 registers */
|
||||
+ unsigned long fpcntl[3]; /* fp control regs */
|
||||
+};
|
||||
+
|
||||
+/* This is the old layout of "struct pt_regs" as of Linux 1.x, and
|
||||
+ is still the layout used by user (the new pt_regs doesn't have
|
||||
+ all registers). */
|
||||
+struct user_regs_struct {
|
||||
+ long d1,d2,d3,d4,d5,d6,d7;
|
||||
+ long a0,a1,a2,a3,a4,a5,a6;
|
||||
+ long d0;
|
||||
+ long usp;
|
||||
+ long orig_d0;
|
||||
+ short stkadj;
|
||||
+ short sr;
|
||||
+ long pc;
|
||||
+ short fmtvec;
|
||||
+ short __fill;
|
||||
+};
|
||||
+
|
||||
+
|
||||
+/* When the kernel dumps core, it starts by dumping the user struct -
|
||||
+ this will be used by gdb to figure out where the data and stack segments
|
||||
+ are within the file, and what virtual addresses to use. */
|
||||
+struct user{
|
||||
+/* We start with the registers, to mimic the way that "memory" is returned
|
||||
+ from the ptrace(3,...) function. */
|
||||
+ struct user_regs_struct regs; /* Where the registers are actually stored */
|
||||
+/* ptrace does not yet supply these. Someday.... */
|
||||
+ int u_fpvalid; /* True if math co-processor being used. */
|
||||
+ /* for this mess. Not yet used. */
|
||||
+ struct user_m68kfp_struct m68kfp; /* Math Co-processor registers. */
|
||||
+/* The rest of this junk is to help gdb figure out what goes where */
|
||||
+ unsigned long int u_tsize; /* Text segment size (pages). */
|
||||
+ unsigned long int u_dsize; /* Data segment size (pages). */
|
||||
+ unsigned long int u_ssize; /* Stack segment size (pages). */
|
||||
+ unsigned long start_code; /* Starting virtual address of text. */
|
||||
+ unsigned long start_stack; /* Starting virtual address of stack area.
|
||||
+ This is actually the bottom of the stack,
|
||||
+ the top of the stack is always found in the
|
||||
+ esp register. */
|
||||
+ long int signal; /* Signal that caused the core dump. */
|
||||
+ int reserved; /* No longer used */
|
||||
+ struct user_regs_struct *u_ar0;
|
||||
+ /* Used by gdb to help find the values for */
|
||||
+ /* the registers. */
|
||||
+ struct user_m68kfp_struct* u_fpstate; /* Math Co-processor pointer. */
|
||||
+ unsigned long magic; /* To uniquely identify a core file */
|
||||
+ char u_comm[32]; /* User command that was responsible */
|
||||
+};
|
||||
+#define NBPG 4096
|
||||
+#define UPAGES 1
|
||||
+#define HOST_TEXT_START_ADDR (u.start_code)
|
||||
+#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG)
|
||||
+
|
||||
+#endif
|
||||
/* Copyright (C) 2008 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
@ -1,16 +0,0 @@
|
||||
older verisons of glibc would build dl-sysdep as shared-only and dl-support as
|
||||
static-only. alpha hooks in a cache variable via dl-auxv.h. newer versions of
|
||||
glibc build dl-sysdep as both shared and static which means we now have symbol
|
||||
duplication for static builds with dl-sysdep and dl-support. since dl-sysdep
|
||||
is both shared/static, there is no point in hooking dl-support anymore, so we
|
||||
can punt it.
|
||||
|
||||
---
|
||||
sysdeps/unix/sysv/linux/alpha/dl-support.c | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
--- a/sysdeps/unix/sysv/linux/alpha/dl-support.c
|
||||
+++ b/sysdeps/unix/sysv/linux/alpha/dl-support.c
|
||||
@@ -1,2 +1 @@
|
||||
-#include "dl-auxv.h"
|
||||
#include <elf/dl-support.c>
|
@ -1,54 +0,0 @@
|
||||
2006-05-30 Falk Hueffner <falk@debian.org>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/ioperm.c: force the architecture
|
||||
to ev6 in assembly code.
|
||||
|
||||
{standard input}: Assembler messages:
|
||||
{standard input}:341: Error: macro requires $at register while noat in effect
|
||||
{standard input}:374: Error: macro requires $at register while noat in effect
|
||||
{standard input}:438: Error: macro requires $at register while noat in effect
|
||||
{standard input}:471: Error: macro requires $at register while noat in effect
|
||||
make[3]: *** [/tmp/buildd/glibc-2.3.6/build-tree/alpha-libc/misc/ioperm.o] Error 1
|
||||
|
||||
Hrm. gcc puts .arch ev4 into the .s, and this overrides -mev6 for as.
|
||||
I cannot really think of anything better than
|
||||
|
||||
sysdeps/unix/sysv/linux/alpha/ioperm.c | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/sysdeps/unix/sysv/linux/alpha/ioperm.c
|
||||
+++ b/sysdeps/unix/sysv/linux/alpha/ioperm.c
|
||||
@@ -178,13 +178,13 @@
|
||||
static inline void
|
||||
stb_mb(unsigned char val, unsigned long addr)
|
||||
{
|
||||
- __asm__("stb %1,%0; mb" : "=m"(*(vucp)addr) : "r"(val));
|
||||
+ __asm__(".arch ev6; stb %1,%0; mb" : "=m"(*(vucp)addr) : "r"(val));
|
||||
}
|
||||
|
||||
static inline void
|
||||
stw_mb(unsigned short val, unsigned long addr)
|
||||
{
|
||||
- __asm__("stw %1,%0; mb" : "=m"(*(vusp)addr) : "r"(val));
|
||||
+ __asm__(".arch ev6; stw %1,%0; mb" : "=m"(*(vusp)addr) : "r"(val));
|
||||
}
|
||||
|
||||
static inline void
|
||||
@@ -356,7 +356,7 @@
|
||||
unsigned long int addr = dense_port_to_cpu_addr (port);
|
||||
unsigned char r;
|
||||
|
||||
- __asm__ ("ldbu %0,%1" : "=r"(r) : "m"(*(vucp)addr));
|
||||
+ __asm__ (".arch ev6; ldbu %0,%1" : "=r"(r) : "m"(*(vucp)addr));
|
||||
return r;
|
||||
}
|
||||
|
||||
@@ -366,7 +366,7 @@
|
||||
unsigned long int addr = dense_port_to_cpu_addr (port);
|
||||
unsigned short r;
|
||||
|
||||
- __asm__ ("ldwu %0,%1" : "=r"(r) : "m"(*(vusp)addr));
|
||||
+ __asm__ (".arch ev6; ldwu %0,%1" : "=r"(r) : "m"(*(vusp)addr));
|
||||
return r;
|
||||
}
|
||||
|
@ -1,19 +0,0 @@
|
||||
2009-05-26 Aurelien Jarno <aurelien@aurel32.net>
|
||||
|
||||
* sysdeps/alpha/Makefile (CFLAGS-rtld.c): add $(PIC-ccflag).
|
||||
|
||||
sysdeps/alpha/Makefile | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/sysdeps/alpha/Makefile
|
||||
+++ b/sysdeps/alpha/Makefile
|
||||
@@ -35,7 +35,8 @@
|
||||
|
||||
ifeq ($(subdir),elf)
|
||||
# The ld.so startup code cannot use literals until it self-relocates.
|
||||
-CFLAGS-rtld.c = -mbuild-constants
|
||||
+# It uses more than 64k for the small data area.
|
||||
+CFLAGS-rtld.c = -mbuild-constants $(PIC-ccflag)
|
||||
endif
|
||||
|
||||
# Build everything with full IEEE math support, and with dynamic rounding;
|
@ -1,366 +0,0 @@
|
||||
http://yann.poupet.free.fr/ep93xx/
|
||||
Add support for the Maverick Crunch FPU on Cirrus EP93XX processor series
|
||||
|
||||
---
|
||||
sysdeps/arm/bits/endian.h | 2 -
|
||||
sysdeps/arm/fpu/__longjmp.S | 26 +++++++++++++
|
||||
sysdeps/arm/fpu/bits/fenv.h | 41 ++++++++++++++++++++
|
||||
sysdeps/arm/fpu/bits/setjmp.h | 4 ++
|
||||
sysdeps/arm/fpu/fegetround.c | 12 ++++++
|
||||
sysdeps/arm/fpu/fesetround.c | 16 ++++++++
|
||||
sysdeps/arm/fpu/fpu_control.h | 78 ++++++++++++++++++++++++++++++++++++++-
|
||||
sysdeps/arm/fpu/jmpbuf-offsets.h | 4 ++
|
||||
sysdeps/arm/fpu/setjmp.S | 30 +++++++++++++++
|
||||
sysdeps/arm/gccframe.h | 4 ++
|
||||
sysdeps/arm/gmp-mparam.h | 2 -
|
||||
11 files changed, 216 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/sysdeps/arm/bits/endian.h
|
||||
+++ b/sysdeps/arm/bits/endian.h
|
||||
@@ -12,7 +12,7 @@
|
||||
/* FPA floating point units are always big-endian, irrespective of the
|
||||
CPU endianness. VFP floating point units use the same endianness
|
||||
as the rest of the system. */
|
||||
-#ifdef __VFP_FP__
|
||||
+#if defined __VFP_FP__ || defined __MAVERICK__
|
||||
#define __FLOAT_WORD_ORDER __BYTE_ORDER
|
||||
#else
|
||||
#define __FLOAT_WORD_ORDER __BIG_ENDIAN
|
||||
--- a/sysdeps/arm/fpu/__longjmp.S
|
||||
+++ b/sysdeps/arm/fpu/__longjmp.S
|
||||
@@ -30,7 +30,33 @@
|
||||
movs r0, r1 /* get the return value in place */
|
||||
moveq r0, #1 /* can't let setjmp() return zero! */
|
||||
|
||||
+#ifdef __MAVERICK__
|
||||
+ cfldrd mvd4, [ip], #8
|
||||
+ nop
|
||||
+ cfldrd mvd5, [ip], #8
|
||||
+ nop
|
||||
+ cfldrd mvd6, [ip], #8
|
||||
+ nop
|
||||
+ cfldrd mvd7, [ip], #8
|
||||
+ nop
|
||||
+ cfldrd mvd8, [ip], #8
|
||||
+ nop
|
||||
+ cfldrd mvd9, [ip], #8
|
||||
+ nop
|
||||
+ cfldrd mvd10, [ip], #8
|
||||
+ nop
|
||||
+ cfldrd mvd11, [ip], #8
|
||||
+ nop
|
||||
+ cfldrd mvd12, [ip], #8
|
||||
+ nop
|
||||
+ cfldrd mvd13, [ip], #8
|
||||
+ nop
|
||||
+ cfldrd mvd14, [ip], #8
|
||||
+ nop
|
||||
+ cfldrd mvd15, [ip], #8
|
||||
+#else
|
||||
lfmfd f4, 4, [ip] ! /* load the floating point regs */
|
||||
+#endif
|
||||
|
||||
LOADREGS(ia, ip, {v1-v6, sl, fp, sp, pc})
|
||||
END (__longjmp)
|
||||
--- a/sysdeps/arm/fpu/bits/fenv.h
|
||||
+++ b/sysdeps/arm/fpu/bits/fenv.h
|
||||
@@ -20,6 +20,45 @@
|
||||
# error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
|
||||
#endif
|
||||
|
||||
+#if defined(__MAVERICK__)
|
||||
+
|
||||
+/* Define bits representing exceptions in the FPU status word. */
|
||||
+enum
|
||||
+ {
|
||||
+ FE_INVALID = 1,
|
||||
+#define FE_INVALID FE_INVALID
|
||||
+ FE_OVERFLOW = 4,
|
||||
+#define FE_OVERFLOW FE_OVERFLOW
|
||||
+ FE_UNDERFLOW = 8,
|
||||
+#define FE_UNDERFLOW FE_UNDERFLOW
|
||||
+ FE_INEXACT = 16,
|
||||
+#define FE_INEXACT FE_INEXACT
|
||||
+ };
|
||||
+
|
||||
+/* Amount to shift by to convert an exception to a mask bit. */
|
||||
+#define FE_EXCEPT_SHIFT 5
|
||||
+
|
||||
+/* All supported exceptions. */
|
||||
+#define FE_ALL_EXCEPT \
|
||||
+ (FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW | FE_INEXACT)
|
||||
+
|
||||
+/* IEEE rounding modes. */
|
||||
+enum
|
||||
+ {
|
||||
+ FE_TONEAREST = 0,
|
||||
+#define FE_TONEAREST FE_TONEAREST
|
||||
+ FE_TOWARDZERO = 0x400,
|
||||
+#define FE_TOWARDZERO FE_TOWARDZERO
|
||||
+ FE_DOWNWARD = 0x800,
|
||||
+#define FE_DOWNWARD FE_DOWNWARD
|
||||
+ FE_UPWARD = 0xc00,
|
||||
+#define FE_UPWARD FE_UPWARD
|
||||
+ };
|
||||
+
|
||||
+#define FE_ROUND_MASK (FE_UPWARD)
|
||||
+
|
||||
+#else /* FPA */
|
||||
+
|
||||
/* Define bits representing exceptions in the FPU status word. */
|
||||
enum
|
||||
{
|
||||
@@ -44,6 +83,8 @@
|
||||
modes exist, but you have to encode them in the actual instruction. */
|
||||
#define FE_TONEAREST 0
|
||||
|
||||
+#endif
|
||||
+
|
||||
/* Type representing exception flags. */
|
||||
typedef unsigned long int fexcept_t;
|
||||
|
||||
--- a/sysdeps/arm/fpu/bits/setjmp.h
|
||||
+++ b/sysdeps/arm/fpu/bits/setjmp.h
|
||||
@@ -28,7 +28,11 @@
|
||||
#ifndef _ASM
|
||||
/* Jump buffer contains v1-v6, sl, fp, sp and pc. Other registers are not
|
||||
saved. */
|
||||
+#ifdef __MAVERICK__
|
||||
+typedef int __jmp_buf[34];
|
||||
+#else
|
||||
typedef int __jmp_buf[22];
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
#endif
|
||||
--- a/sysdeps/arm/fpu/fegetround.c
|
||||
+++ b/sysdeps/arm/fpu/fegetround.c
|
||||
@@ -18,9 +18,21 @@
|
||||
02111-1307 USA. */
|
||||
|
||||
#include <fenv.h>
|
||||
+#include <fpu_control.h>
|
||||
|
||||
int
|
||||
fegetround (void)
|
||||
{
|
||||
+#if defined(__MAVERICK__)
|
||||
+
|
||||
+ unsigned long temp;
|
||||
+
|
||||
+ _FPU_GETCW (temp);
|
||||
+ return temp & FE_ROUND_MASK;
|
||||
+
|
||||
+#else /* FPA */
|
||||
+
|
||||
return FE_TONEAREST; /* Easy. :-) */
|
||||
+
|
||||
+#endif
|
||||
}
|
||||
--- a/sysdeps/arm/fpu/fesetround.c
|
||||
+++ b/sysdeps/arm/fpu/fesetround.c
|
||||
@@ -18,12 +18,28 @@
|
||||
02111-1307 USA. */
|
||||
|
||||
#include <fenv.h>
|
||||
+#include <fpu_control.h>
|
||||
|
||||
int
|
||||
fesetround (int round)
|
||||
{
|
||||
+#if defined(__MAVERICK__)
|
||||
+ unsigned long temp;
|
||||
+
|
||||
+ if (round & ~FE_ROUND_MASK)
|
||||
+ return 1;
|
||||
+
|
||||
+ _FPU_GETCW (temp);
|
||||
+ temp = (temp & ~FE_ROUND_MASK) | round;
|
||||
+ _FPU_SETCW (temp);
|
||||
+ return 0;
|
||||
+
|
||||
+#else /* FPA */
|
||||
+
|
||||
/* We only support FE_TONEAREST, so there is no need for any work. */
|
||||
return (round == FE_TONEAREST)?0:1;
|
||||
+
|
||||
+#endif
|
||||
}
|
||||
|
||||
libm_hidden_def (fesetround)
|
||||
--- a/sysdeps/arm/fpu/fpu_control.h
|
||||
+++ b/sysdeps/arm/fpu/fpu_control.h
|
||||
@@ -1,5 +1,6 @@
|
||||
/* FPU control word definitions. ARM version.
|
||||
- Copyright (C) 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
|
||||
+ Copyright (C) 1996, 1997, 1998, 2000, 2005
|
||||
+ 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
|
||||
@@ -20,6 +21,79 @@
|
||||
#ifndef _FPU_CONTROL_H
|
||||
#define _FPU_CONTROL_H
|
||||
|
||||
+#if defined(__MAVERICK__)
|
||||
+
|
||||
+/* DSPSC register: (from EP9312 User's Guide)
|
||||
+ *
|
||||
+ * bits 31..29 - DAID
|
||||
+ * bits 28..26 - HVID
|
||||
+ * bits 25..24 - RSVD
|
||||
+ * bit 23 - ISAT
|
||||
+ * bit 22 - UI
|
||||
+ * bit 21 - INT
|
||||
+ * bit 20 - AEXC
|
||||
+ * bits 19..18 - SAT
|
||||
+ * bits 17..16 - FCC
|
||||
+ * bit 15 - V
|
||||
+ * bit 14 - FWDEN
|
||||
+ * bit 13 - Invalid
|
||||
+ * bit 12 - Denorm
|
||||
+ * bits 11..10 - RM
|
||||
+ * bits 9..5 - IXE, UFE, OFE, RSVD, IOE
|
||||
+ * bits 4..0 - IX, UF, OF, RSVD, IO
|
||||
+ */
|
||||
+
|
||||
+/* masking of interrupts */
|
||||
+#define _FPU_MASK_IM (1 << 5) /* invalid operation */
|
||||
+#define _FPU_MASK_ZM 0 /* divide by zero */
|
||||
+#define _FPU_MASK_OM (1 << 7) /* overflow */
|
||||
+#define _FPU_MASK_UM (1 << 8) /* underflow */
|
||||
+#define _FPU_MASK_PM (1 << 9) /* inexact */
|
||||
+#define _FPU_MASK_DM 0 /* denormalized operation */
|
||||
+
|
||||
+#define _FPU_RESERVED 0xfffff000 /* These bits are reserved. */
|
||||
+
|
||||
+#define _FPU_DEFAULT 0x00b00000 /* Default value. */
|
||||
+#define _FPU_IEEE 0x00b003a0 /* Default + exceptions enabled. */
|
||||
+
|
||||
+/* Type of the control word. */
|
||||
+typedef unsigned int fpu_control_t;
|
||||
+
|
||||
+/* Macros for accessing the hardware control word. */
|
||||
+#define _FPU_GETCW(cw) ({ \
|
||||
+ register int __t1, __t2; \
|
||||
+ \
|
||||
+ __asm__ volatile ( \
|
||||
+ "cfmvr64l %1, mvdx0\n\t" \
|
||||
+ "cfmvr64h %2, mvdx0\n\t" \
|
||||
+ "cfmv32sc mvdx0, dspsc\n\t" \
|
||||
+ "cfmvr64l %0, mvdx0\n\t" \
|
||||
+ "cfmv64lr mvdx0, %1\n\t" \
|
||||
+ "cfmv64hr mvdx0, %2" \
|
||||
+ : "=r" (cw), "=r" (__t1), "=r" (__t2) \
|
||||
+ ); \
|
||||
+})
|
||||
+
|
||||
+#define _FPU_SETCW(cw) ({ \
|
||||
+ register int __t0, __t1, __t2; \
|
||||
+ \
|
||||
+ __asm__ volatile ( \
|
||||
+ "cfmvr64l %1, mvdx0\n\t" \
|
||||
+ "cfmvr64h %2, mvdx0\n\t" \
|
||||
+ "cfmv64lr mvdx0, %0\n\t" \
|
||||
+ "cfmvsc32 dspsc, mvdx0\n\t" \
|
||||
+ "cfmv64lr mvdx0, %1\n\t" \
|
||||
+ "cfmv64hr mvdx0, %2" \
|
||||
+ : "=r" (__t0), "=r" (__t1), "=r" (__t2) \
|
||||
+ : "0" (cw) \
|
||||
+ ); \
|
||||
+})
|
||||
+
|
||||
+/* Default control word set at startup. */
|
||||
+extern fpu_control_t __fpu_control;
|
||||
+
|
||||
+#else /* FPA */
|
||||
+
|
||||
/* We have a slight terminology confusion here. On the ARM, the register
|
||||
* we're interested in is actually the FPU status word - the FPU control
|
||||
* word is something different (which is implementation-defined and only
|
||||
@@ -99,4 +173,6 @@
|
||||
/* Default control word set at startup. */
|
||||
extern fpu_control_t __fpu_control;
|
||||
|
||||
+#endif
|
||||
+
|
||||
#endif /* _FPU_CONTROL_H */
|
||||
--- a/sysdeps/arm/fpu/jmpbuf-offsets.h
|
||||
+++ b/sysdeps/arm/fpu/jmpbuf-offsets.h
|
||||
@@ -17,4 +17,8 @@
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
+#ifdef __MAVERICK__
|
||||
+#define __JMP_BUF_SP 32
|
||||
+#else
|
||||
#define __JMP_BUF_SP 20
|
||||
+#endif
|
||||
--- a/sysdeps/arm/fpu/setjmp.S
|
||||
+++ b/sysdeps/arm/fpu/setjmp.S
|
||||
@@ -24,11 +24,41 @@
|
||||
|
||||
ENTRY (__sigsetjmp)
|
||||
/* Save registers */
|
||||
+#ifdef __MAVERICK__
|
||||
+ cfstrd mvd4, [r0], #8
|
||||
+ nop
|
||||
+ cfstrd mvd5, [r0], #8
|
||||
+ nop
|
||||
+ cfstrd mvd6, [r0], #8
|
||||
+ nop
|
||||
+ cfstrd mvd7, [r0], #8
|
||||
+ nop
|
||||
+ cfstrd mvd8, [r0], #8
|
||||
+ nop
|
||||
+ cfstrd mvd9, [r0], #8
|
||||
+ nop
|
||||
+ cfstrd mvd10, [r0], #8
|
||||
+ nop
|
||||
+ cfstrd mvd11, [r0], #8
|
||||
+ nop
|
||||
+ cfstrd mvd12, [r0], #8
|
||||
+ nop
|
||||
+ cfstrd mvd13, [r0], #8
|
||||
+ nop
|
||||
+ cfstrd mvd14, [r0], #8
|
||||
+ nop
|
||||
+ cfstrd mvd15, [r0], #8
|
||||
+#else
|
||||
sfmea f4, 4, [r0]!
|
||||
+#endif
|
||||
stmia r0, {v1-v6, sl, fp, sp, lr}
|
||||
|
||||
/* Restore pointer to jmp_buf */
|
||||
+#ifdef __MAVERICK__
|
||||
+ sub r0, r0, #96
|
||||
+#else
|
||||
sub r0, r0, #48
|
||||
+#endif
|
||||
|
||||
/* Make a tail call to __sigjmp_save; it takes the same args. */
|
||||
B PLTJMP(C_SYMBOL_NAME(__sigjmp_save))
|
||||
--- a/sysdeps/arm/gccframe.h
|
||||
+++ b/sysdeps/arm/gccframe.h
|
||||
@@ -17,6 +17,10 @@
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
+#ifdef __MAVERICK__
|
||||
+#define FIRST_PSEUDO_REGISTER 43
|
||||
+#else
|
||||
#define FIRST_PSEUDO_REGISTER 27
|
||||
+#endif
|
||||
|
||||
#include <sysdeps/generic/gccframe.h>
|
||||
--- a/sysdeps/arm/gmp-mparam.h
|
||||
+++ b/sysdeps/arm/gmp-mparam.h
|
||||
@@ -29,7 +29,7 @@
|
||||
#if defined(__ARMEB__)
|
||||
# define IEEE_DOUBLE_MIXED_ENDIAN 0
|
||||
# define IEEE_DOUBLE_BIG_ENDIAN 1
|
||||
-#elif defined(__VFP_FP__)
|
||||
+#elif defined(__VFP_FP__) || defined(__MAVERICK__)
|
||||
# define IEEE_DOUBLE_MIXED_ENDIAN 0
|
||||
# define IEEE_DOUBLE_BIG_ENDIAN 0
|
||||
#else
|
@ -1,25 +0,0 @@
|
||||
fix build error on arm like on hppa:
|
||||
|
||||
arm-unknown-linux-gnu-gcc ../nptl/sysdeps/unix/sysv/linux/libc-lowlevellock.c -c -std=gnu99 -fgnu89-inline -O2 -Wall -Winline -Wwrite-strings -fmerge-all-constants -fno-strict-aliasing -g -pipe -Wstrict-prototypes -fPIC -I../include -I/var/tmp/portage/cross-arm-unknown-linux-gnu/glibc-2.8_p20080602/work/build-default-arm-unknown-linux-gnu-nptl/nptl -I/var/tmp/portage/cross-arm-unknown-linux-gnu/glibc-2.8_p20080602/work/build-default-arm-unknown-linux-gnu-nptl -I../ports/sysdeps/arm/elf -I../ports/sysdeps/unix/sysv/linux/arm/nptl -I../ports/sysdeps/unix/sysv/linux/arm -I../nptl/sysdeps/unix/sysv/linux -I../nptl/sysdeps/pthread -I../sysdeps/pthread -I../ports/sysdeps/unix/sysv/linux -I../sysdeps/unix/sysv/linux -I../sysdeps/gnu -I../sysdeps/unix/common -I../sysdeps/unix/mman -I../sysdeps/unix/inet -I../nptl/sysdeps/unix/sysv -I../ports/sysdeps/unix/sysv -I../sysdeps/unix/sysv -I../ports/sysdeps/unix/arm -I../nptl/sysdeps/unix -I../ports/sysdeps/unix -I../sysdeps/unix -I../sysdeps/posix -I../ports/sysdeps/arm/fpu -I../ports/sysdeps/arm/nptl -I../ports/sysdeps/arm -I../sysdeps/wordsize-32 -I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic -I../nptl -I../ports -I.. -I../libio -I. -nostdinc -isystem /usr/lib/gcc/arm-unknown-linux-gnu/4.3.2/include -isystem /usr/lib/gcc/arm-unknown-linux-gnu/4.3.2/include-fixed -isystem /usr/arm-unknown-linux-gnu/usr/include -D_LIBC_REENTRANT -include ../include/libc-symbols.h -DPIC -DSHARED -o /var/tmp/portage/cross-arm-unknown-linux-gnu/glibc-2.8_p20080602/work/build-default-arm-unknown-linux-gnu-nptl/nptl/rtld-libc-lowlevellock.os -MD -MP -MF /var/tmp/portage/cross-arm-unknown-linux-gnu/glibc-2.8_p20080602/work/build-default-arm-unknown-linux-gnu-nptl/nptl/rtld-libc-lowlevellock.os.dt -MT /var/tmp/portage/cross-arm-unknown-linux-gnu/glibc-2.8_p20080602/work/build-default-arm-unknown-linux-gnu-nptl/nptl/rtld-libc-lowlevellock.os -DNOT_IN_libc=1 -DIS_IN_rtld=1
|
||||
In file included from ../nptl/sysdeps/unix/sysv/linux/libc-lowlevellock.c:21:
|
||||
../nptl/sysdeps/unix/sysv/linux/lowlevellock.c: In function '__lll_lock_wait_private':
|
||||
../nptl/sysdeps/unix/sysv/linux/lowlevellock.c:31: warning: implicit declaration of function 'THREAD_GETMEM'
|
||||
../nptl/sysdeps/unix/sysv/linux/lowlevellock.c:31: error: 'THREAD_SELF' undeclared (first use in this function)
|
||||
../nptl/sysdeps/unix/sysv/linux/lowlevellock.c:31: error: (Each undeclared identifier is reported only once
|
||||
../nptl/sysdeps/unix/sysv/linux/lowlevellock.c:31: error: for each function it appears in.)
|
||||
../nptl/sysdeps/unix/sysv/linux/lowlevellock.c:31: error: 'header' undeclared (first use in this function)
|
||||
|
||||
---
|
||||
sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h
|
||||
+++ b/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h
|
||||
@@ -25,6 +25,7 @@
|
||||
#include <atomic.h>
|
||||
#include <sysdep.h>
|
||||
#include <kernel-features.h>
|
||||
+#include <tls.h> /* Need THREAD_*, and header.*. */
|
||||
|
||||
#define FUTEX_WAIT 0
|
||||
#define FUTEX_WAKE 1
|
@ -1,17 +0,0 @@
|
||||
http://sourceware.org/ml/libc-alpha/2002-10/msg00392.html
|
||||
|
||||
---
|
||||
sysdeps/mips/fpu_control.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/sysdeps/mips/fpu_control.h
|
||||
+++ b/sysdeps/mips/fpu_control.h
|
||||
@@ -86,7 +86,7 @@
|
||||
#define _FPU_RC_UP 0x2
|
||||
#define _FPU_RC_DOWN 0x3
|
||||
|
||||
-#define _FPU_RESERVED 0xfe3c0000 /* Reserved bits in cw */
|
||||
+#define _FPU_RESERVED 0xfebc0000 /* Reserved bits in cw */
|
||||
|
||||
|
||||
/* The fdlibm code requires strict IEEE double precision arithmetic,
|
@ -1,25 +0,0 @@
|
||||
---
|
||||
sysdeps/arm/preconfigure | 2 +-
|
||||
sysdeps/arm/shlib-versions | 4 ++--
|
||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/sysdeps/arm/preconfigure
|
||||
+++ b/sysdeps/arm/preconfigure
|
||||
@@ -2,7 +2,7 @@
|
||||
arm*)
|
||||
base_machine=arm
|
||||
case $config_os in
|
||||
- linux-gnueabi)
|
||||
+ linux-gnueabi*)
|
||||
machine=arm/eabi/$machine
|
||||
;;
|
||||
*)
|
||||
--- a/sysdeps/arm/shlib-versions
|
||||
+++ b/sysdeps/arm/shlib-versions
|
||||
@@ -1,4 +1,4 @@
|
||||
-arm.*-.*-linux-gnueabi DEFAULT GLIBC_2.4
|
||||
+arm.*-.*-linux-gnueabi.* DEFAULT GLIBC_2.4
|
||||
|
||||
-arm.*-.*-linux-gnueabi ld=ld-linux.so.3
|
||||
+arm.*-.*-linux-gnueabi.* ld=ld-linux.so.3
|
||||
arm.*-.*-linux.* ld=ld-linux.so.2
|
@ -1,31 +0,0 @@
|
||||
commit 95f5a9a866695da4e038aa4e6ccbbfd5d9cf63b7
|
||||
Author: Joseph Myers <joseph@codesourcery.com>
|
||||
Date: Tue Jul 3 19:14:59 2012 +0000
|
||||
|
||||
Avoid use of libgcc_s and libgcc_eh when building glibc.
|
||||
|
||||
---
|
||||
sysdeps/arm/eabi/Makefile | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
--- a/sysdeps/arm/eabi/Makefile
|
||||
+++ b/sysdeps/arm/eabi/Makefile
|
||||
@@ -1,3 +1,6 @@
|
||||
+gnulib-arch = $(elfobjdir)/libgcc-stubs.a
|
||||
+static-gnulib-arch = $(elfobjdir)/libgcc-stubs.a
|
||||
+
|
||||
ifeq ($(subdir),csu)
|
||||
aeabi_constants = aeabi_lcsts aeabi_sighandlers aeabi_math
|
||||
aeabi_routines = aeabi_assert aeabi_localeconv aeabi_errno_addr \
|
||||
@@ -24,6 +27,11 @@
|
||||
sysdep_routines += aeabi_unwind_cpp_pr1 find_exidx
|
||||
shared-only-routines += aeabi_unwind_cpp_pr1
|
||||
sysdep-rtld-routines += aeabi_unwind_cpp_pr1
|
||||
+
|
||||
+$(objpfx)libgcc-stubs.a: $(objpfx)aeabi_unwind_cpp_pr1.os
|
||||
+ $(build-extra-lib)
|
||||
+
|
||||
+lib-noranlib: $(objpfx)libgcc-stubs.a
|
||||
endif
|
||||
|
||||
ifeq ($(subdir),math)
|
8
packages/glibc-ports/2.12.1/chksum
vendored
8
packages/glibc-ports/2.12.1/chksum
vendored
@ -1,8 +0,0 @@
|
||||
md5 glibc-ports-2.12.1.tar.bz2 cb01ab976180e98287cef5079e35359e
|
||||
sha1 glibc-ports-2.12.1.tar.bz2 396c1e3958a7563ebdffc8ada8e142e0d6c0b225
|
||||
sha256 glibc-ports-2.12.1.tar.bz2 3986c166d08c30b83c9cc7d972651550b548386d5a02e4e4c985d9832de83110
|
||||
sha512 glibc-ports-2.12.1.tar.bz2 d7dad77d9d495df2d0605e915e0db0c170d3d5d1e83509a3e48d51f32f6c08cbe133c49dd1f09ee559a503af25756c38dd83725f336ba0ec7d96a15f29ac33cb
|
||||
md5 glibc-ports-2.12.1.tar.gz d3311554368849da08dc16f6c535f097
|
||||
sha1 glibc-ports-2.12.1.tar.gz 626cdf5dffc2f720c1d9facc27ef53faff724265
|
||||
sha256 glibc-ports-2.12.1.tar.gz 192051371277e87a841b3299c5f3621be3b2f958b5536756665f741d248604d9
|
||||
sha512 glibc-ports-2.12.1.tar.gz c75ac9da1bc6133476df7d8cc1c5b847abb3d8c31175a1a4d51cb4e20ee7db7eaee6c42d90990dac6e7f7203b0254368ed0f2cc42b99bbb575203c6dd1f9f284
|
2
packages/glibc-ports/2.12.1/version.desc
vendored
2
packages/glibc-ports/2.12.1/version.desc
vendored
@ -1,2 +0,0 @@
|
||||
archive_formats='.tar.bz2 .tar.gz'
|
||||
obsolete='yes'
|
@ -1,11 +0,0 @@
|
||||
# This is not a true package, but rather a part of glibc. When
|
||||
# the ports were an external add-on, it used a separate repository
|
||||
# and separate tarballs.
|
||||
repository='git git://sourceware.org/git/glibc-ports.git'
|
||||
mirrors='$(CT_Mirrors GNU glibc)'
|
||||
|
||||
# Version of this package must be the same as the glibc's
|
||||
versionlocked='glibc'
|
||||
|
||||
archive_formats='.tar.xz .tar.bz2 .tar.gz'
|
||||
signature_format='packed/.sig'
|
@ -1,28 +0,0 @@
|
||||
Respect environment CPPFLAGS when we run ./configure so we can inject
|
||||
random -D things without having to set CFLAGS/ASFLAGS
|
||||
|
||||
---
|
||||
Makeconfig | 1 +
|
||||
config.make.in | 1 +
|
||||
2 files changed, 2 insertions(+)
|
||||
|
||||
--- a/Makeconfig
|
||||
+++ b/Makeconfig
|
||||
@@ -697,6 +697,7 @@
|
||||
$(foreach lib,$(libof-$(basename $(@F))) \
|
||||
$(libof-$(<F)) $(libof-$(@F)),$(CPPFLAGS-$(lib))) \
|
||||
$(CPPFLAGS-$(<F)) $(CPPFLAGS-$(@F)) $(CPPFLAGS-$(basename $(@F)))
|
||||
+CPPFLAGS += $(CPPFLAGS-config)
|
||||
override CFLAGS = -std=gnu99 $(gnu89-inline-CFLAGS) \
|
||||
$(filter-out %frame-pointer,$(+cflags)) $(+gccwarn-c) \
|
||||
$(sysdep-CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$(<F)) \
|
||||
--- a/config.make.in
|
||||
+++ b/config.make.in
|
||||
@@ -107,6 +107,7 @@
|
||||
CXX = @CXX@
|
||||
BUILD_CC = @BUILD_CC@
|
||||
CFLAGS = @CFLAGS@
|
||||
+CPPFLAGS-config = @CPPFLAGS@
|
||||
ASFLAGS-config = @ASFLAGS_config@
|
||||
AR = @AR@
|
||||
RANLIB = @RANLIB@
|
@ -1,75 +0,0 @@
|
||||
From df1cf48777fe4cd81ad7fb09ecbe5b31432b7c1c Mon Sep 17 00:00:00 2001
|
||||
From: Yvan Roux <yvan.roux@linaro.org>
|
||||
Date: Fri, 15 Apr 2016 13:29:26 +0200
|
||||
Subject: [PATCH] Suppress GCC 6 warning about ambiguous 'else' with
|
||||
-Wparentheses
|
||||
|
||||
---
|
||||
nis/nis_call.c | 20 +++++++++++---------
|
||||
stdlib/setenv.c | 24 +++++++++++++-----------
|
||||
2 files changed, 24 insertions(+), 20 deletions(-)
|
||||
|
||||
--- a/nis/nis_call.c
|
||||
+++ b/nis/nis_call.c
|
||||
@@ -682,16 +682,18 @@
|
||||
/* Choose which entry should be evicted from the cache. */
|
||||
loc = &nis_server_cache[0];
|
||||
if (*loc != NULL)
|
||||
- for (i = 1; i < 16; ++i)
|
||||
- if (nis_server_cache[i] == NULL)
|
||||
- {
|
||||
+ {
|
||||
+ for (i = 1; i < 16; ++i)
|
||||
+ if (nis_server_cache[i] == NULL)
|
||||
+ {
|
||||
+ loc = &nis_server_cache[i];
|
||||
+ break;
|
||||
+ }
|
||||
+ else if ((*loc)->uses > nis_server_cache[i]->uses
|
||||
+ || ((*loc)->uses == nis_server_cache[i]->uses
|
||||
+ && (*loc)->expires > nis_server_cache[i]->expires))
|
||||
loc = &nis_server_cache[i];
|
||||
- break;
|
||||
- }
|
||||
- else if ((*loc)->uses > nis_server_cache[i]->uses
|
||||
- || ((*loc)->uses == nis_server_cache[i]->uses
|
||||
- && (*loc)->expires > nis_server_cache[i]->expires))
|
||||
- loc = &nis_server_cache[i];
|
||||
+ }
|
||||
old = *loc;
|
||||
*loc = new;
|
||||
|
||||
--- a/stdlib/setenv.c
|
||||
+++ b/stdlib/setenv.c
|
||||
@@ -328,18 +328,20 @@
|
||||
ep = __environ;
|
||||
if (ep != NULL)
|
||||
while (*ep != NULL)
|
||||
- if (!strncmp (*ep, name, len) && (*ep)[len] == '=')
|
||||
- {
|
||||
- /* Found it. Remove this pointer by moving later ones back. */
|
||||
- char **dp = ep;
|
||||
+ {
|
||||
+ if (!strncmp (*ep, name, len) && (*ep)[len] == '=')
|
||||
+ {
|
||||
+ /* Found it. Remove this pointer by moving later ones back. */
|
||||
+ char **dp = ep;
|
||||
|
||||
- do
|
||||
- dp[0] = dp[1];
|
||||
- while (*dp++);
|
||||
- /* Continue the loop in case NAME appears again. */
|
||||
- }
|
||||
- else
|
||||
- ++ep;
|
||||
+ do
|
||||
+ dp[0] = dp[1];
|
||||
+ while (*dp++);
|
||||
+ /* Continue the loop in case NAME appears again. */
|
||||
+ }
|
||||
+ else
|
||||
+ ++ep;
|
||||
+ }
|
||||
|
||||
UNLOCK;
|
||||
|
@ -1,97 +0,0 @@
|
||||
commit 5542236837c5c41435f8282ec92799f480c36f18
|
||||
Author: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Date: Tue Jul 21 22:50:29 2015 -0700
|
||||
|
||||
Port the 0x7efe...feff pattern to GCC 6.
|
||||
|
||||
See Steve Ellcey's bug report in:
|
||||
https://sourceware.org/ml/libc-alpha/2015-07/msg00673.html
|
||||
* string/memrchr.c (MEMRCHR):
|
||||
* string/rawmemchr.c (RAWMEMCHR):
|
||||
* string/strchr.c (strchr):
|
||||
* string/strchrnul.c (STRCHRNUL):
|
||||
Rewrite code to avoid issues with signed shift overflow.
|
||||
|
||||
---
|
||||
string/memrchr.c | 11 ++---------
|
||||
string/rawmemchr.c | 11 ++---------
|
||||
string/strchr.c | 9 ++-------
|
||||
string/strchrnul.c | 9 ++-------
|
||||
4 files changed, 8 insertions(+), 32 deletions(-)
|
||||
|
||||
--- a/string/memrchr.c
|
||||
+++ b/string/memrchr.c
|
||||
@@ -98,15 +98,8 @@
|
||||
|
||||
The 1-bits make sure that carries propagate to the next 0-bit.
|
||||
The 0-bits provide holes for carries to fall into. */
|
||||
-
|
||||
- if (sizeof (longword) != 4 && sizeof (longword) != 8)
|
||||
- abort ();
|
||||
-
|
||||
-#if LONG_MAX <= LONG_MAX_32_BITS
|
||||
- magic_bits = 0x7efefeff;
|
||||
-#else
|
||||
- magic_bits = ((unsigned long int) 0x7efefefe << 32) | 0xfefefeff;
|
||||
-#endif
|
||||
+ magic_bits = -1;
|
||||
+ magic_bits = magic_bits / 0xff * 0xfe << 1 >> 1 | 1;
|
||||
|
||||
/* Set up a longword, each of whose bytes is C. */
|
||||
charmask = c | (c << 8);
|
||||
--- a/string/rawmemchr.c
|
||||
+++ b/string/rawmemchr.c
|
||||
@@ -90,15 +90,8 @@
|
||||
|
||||
The 1-bits make sure that carries propagate to the next 0-bit.
|
||||
The 0-bits provide holes for carries to fall into. */
|
||||
-
|
||||
- if (sizeof (longword) != 4 && sizeof (longword) != 8)
|
||||
- abort ();
|
||||
-
|
||||
-#if LONG_MAX <= LONG_MAX_32_BITS
|
||||
- magic_bits = 0x7efefeff;
|
||||
-#else
|
||||
- magic_bits = ((unsigned long int) 0x7efefefe << 32) | 0xfefefeff;
|
||||
-#endif
|
||||
+ magic_bits = -1;
|
||||
+ magic_bits = magic_bits / 0xff * 0xfe << 1 >> 1 | 1;
|
||||
|
||||
/* Set up a longword, each of whose bytes is C. */
|
||||
charmask = c | (c << 8);
|
||||
--- a/string/strchr.c
|
||||
+++ b/string/strchr.c
|
||||
@@ -65,13 +65,8 @@
|
||||
|
||||
The 1-bits make sure that carries propagate to the next 0-bit.
|
||||
The 0-bits provide holes for carries to fall into. */
|
||||
- switch (sizeof (longword))
|
||||
- {
|
||||
- case 4: magic_bits = 0x7efefeffL; break;
|
||||
- case 8: magic_bits = ((0x7efefefeL << 16) << 16) | 0xfefefeffL; break;
|
||||
- default:
|
||||
- abort ();
|
||||
- }
|
||||
+ magic_bits = -1;
|
||||
+ magic_bits = magic_bits / 0xff * 0xfe << 1 >> 1 | 1;
|
||||
|
||||
/* Set up a longword, each of whose bytes is C. */
|
||||
charmask = c | (c << 8);
|
||||
--- a/string/strchrnul.c
|
||||
+++ b/string/strchrnul.c
|
||||
@@ -63,13 +63,8 @@
|
||||
|
||||
The 1-bits make sure that carries propagate to the next 0-bit.
|
||||
The 0-bits provide holes for carries to fall into. */
|
||||
- switch (sizeof (longword))
|
||||
- {
|
||||
- case 4: magic_bits = 0x7efefeffL; break;
|
||||
- case 8: magic_bits = ((0x7efefefeL << 16) << 16) | 0xfefefeffL; break;
|
||||
- default:
|
||||
- abort ();
|
||||
- }
|
||||
+ magic_bits = -1;
|
||||
+ magic_bits = magic_bits / 0xff * 0xfe << 1 >> 1 | 1;
|
||||
|
||||
/* Set up a longword, each of whose bytes is C. */
|
||||
charmask = c | (c << 8);
|
159
packages/glibc/2.12.1/0003-unused-variables.patch
vendored
159
packages/glibc/2.12.1/0003-unused-variables.patch
vendored
@ -1,159 +0,0 @@
|
||||
commit 6565fcb6e189d67b5a3f321453daebb805056d73
|
||||
Author: Wilco Dijkstra <wdijkstr@arm.com>
|
||||
Date: Fri Sep 18 20:27:20 2015 +0100
|
||||
|
||||
Fix several build failures with GCC6 due to unused static variables.
|
||||
|
||||
2015-09-18 Wilco Dijkstra <wdijkstr@arm.com>
|
||||
|
||||
* resolv/base64.c (rcsid): Remove unused static.
|
||||
* sysdeps/ieee754/dbl-64/atnat2.h (qpi1): Remove unused
|
||||
static. (tqpi1): Likewise.
|
||||
* sysdeps/ieee754/dbl-64/uexp.h (one): Likewise.
|
||||
* sysdeps/ieee754/dbl-64/upow.h (sqrt_2): Likewise.
|
||||
* sysdeps/ieee754/flt-32/e_log10f.c (one): Likewise.
|
||||
* sysdeps/ieee754/flt-32/s_cosf.c (one): Likewise.
|
||||
* sysdeps/ieee754/ldbl-128/e_lgammal_r.c (zero): Likewise.
|
||||
* sysdeps/ieee754/ldbl-128/s_erfl.c (half): Likewise.
|
||||
* sysdeps/ieee754/ldbl-128/s_log1pl.c (maxlog): Likewise.
|
||||
* timezone/private.h (time_t_min): Likewise. (time_t_max):
|
||||
Likewise.
|
||||
|
||||
---
|
||||
resolv/base64.c | 4 ----
|
||||
sysdeps/ieee754/dbl-64/atnat2.h | 4 ----
|
||||
sysdeps/ieee754/dbl-64/uexp.h | 2 +-
|
||||
sysdeps/ieee754/dbl-64/upow.h | 2 --
|
||||
sysdeps/ieee754/flt-32/e_log10f.c | 6 ------
|
||||
sysdeps/ieee754/flt-32/s_cosf.c | 6 ------
|
||||
sysdeps/ieee754/ldbl-128/e_lgammal_r.c | 1 -
|
||||
sysdeps/ieee754/ldbl-128/s_erfl.c | 1 -
|
||||
sysdeps/ieee754/ldbl-128/s_log1pl.c | 1 -
|
||||
9 files changed, 1 insertion(+), 26 deletions(-)
|
||||
|
||||
--- a/resolv/base64.c
|
||||
+++ b/resolv/base64.c
|
||||
@@ -40,10 +40,6 @@
|
||||
* IF IBM IS APPRISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
*/
|
||||
|
||||
-#if !defined(LINT) && !defined(CODECENTER)
|
||||
-static const char rcsid[] = "$BINDId: base64.c,v 8.7 1999/10/13 16:39:33 vixie Exp $";
|
||||
-#endif /* not lint */
|
||||
-
|
||||
#include <sys/types.h>
|
||||
#include <sys/param.h>
|
||||
#include <sys/socket.h>
|
||||
--- a/sysdeps/ieee754/dbl-64/atnat2.h
|
||||
+++ b/sysdeps/ieee754/dbl-64/atnat2.h
|
||||
@@ -69,10 +69,8 @@
|
||||
/**/ hpi1 = {{0x3c91a626, 0x33145c07} }, /* pi/2-hpi */
|
||||
/**/ mhpi = {{0xbff921fb, 0x54442d18} }, /* -pi/2 */
|
||||
/**/ qpi = {{0x3fe921fb, 0x54442d18} }, /* pi/4 */
|
||||
-/**/ qpi1 = {{0x3c81a626, 0x33145c07} }, /* pi/4-qpi */
|
||||
/**/ mqpi = {{0xbfe921fb, 0x54442d18} }, /* -pi/4 */
|
||||
/**/ tqpi = {{0x4002d97c, 0x7f3321d2} }, /* 3pi/4 */
|
||||
-/**/ tqpi1 = {{0x3c9a7939, 0x4c9e8a0a} }, /* 3pi/4-tqpi */
|
||||
/**/ mtqpi = {{0xc002d97c, 0x7f3321d2} }, /* -3pi/4 */
|
||||
/**/ u1 = {{0x3c314c2a, 0x00000000} }, /* 9.377e-19 */
|
||||
/**/ u2 = {{0x3bf955e4, 0x00000000} }, /* 8.584e-20 */
|
||||
@@ -139,10 +137,8 @@
|
||||
/**/ hpi1 = {{0x33145c07, 0x3c91a626} }, /* pi/2-hpi */
|
||||
/**/ mhpi = {{0x54442d18, 0xbff921fb} }, /* -pi/2 */
|
||||
/**/ qpi = {{0x54442d18, 0x3fe921fb} }, /* pi/4 */
|
||||
-/**/ qpi1 = {{0x33145c07, 0x3c81a626} }, /* pi/4-qpi */
|
||||
/**/ mqpi = {{0x54442d18, 0xbfe921fb} }, /* -pi/4 */
|
||||
/**/ tqpi = {{0x7f3321d2, 0x4002d97c} }, /* 3pi/4 */
|
||||
-/**/ tqpi1 = {{0x4c9e8a0a, 0x3c9a7939} }, /* 3pi/4-tqpi */
|
||||
/**/ mtqpi = {{0x7f3321d2, 0xc002d97c} }, /* -3pi/4 */
|
||||
/**/ u1 = {{0x00000000, 0x3c314c2a} }, /* 9.377e-19 */
|
||||
/**/ u2 = {{0x00000000, 0x3bf955e4} }, /* 8.584e-20 */
|
||||
--- a/sysdeps/ieee754/dbl-64/uexp.h
|
||||
+++ b/sysdeps/ieee754/dbl-64/uexp.h
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
#include "mydefs.h"
|
||||
|
||||
-const static double one = 1.0, zero = 0.0, hhuge = 1.0e300, tiny = 1.0e-300,
|
||||
+const static double zero = 0.0, hhuge = 1.0e300, tiny = 1.0e-300,
|
||||
err_0 = 1.000014, err_1 = 0.000016;
|
||||
const static int4 bigint = 0x40862002,
|
||||
badint = 0x40876000,smallint = 0x3C8fffff;
|
||||
--- a/sysdeps/ieee754/dbl-64/upow.h
|
||||
+++ b/sysdeps/ieee754/dbl-64/upow.h
|
||||
@@ -36,7 +36,6 @@
|
||||
/**/ INF = {{0x7ff00000, 0x00000000}}, /* INF */
|
||||
/**/ nINF = {{0xfff00000, 0x00000000}}, /* -INF */
|
||||
/**/ NaNQ = {{0x7ff80000, 0x00000000}}, /* NaNQ */
|
||||
-/**/ sqrt_2 = {{0x3ff6a09e, 0x667f3bcc}}, /* sqrt(2) */
|
||||
/**/ ln2a = {{0x3fe62e42, 0xfefa3800}}, /* ln(2) 43 bits */
|
||||
/**/ ln2b = {{0x3d2ef357, 0x93c76730}}, /* ln(2)-ln2a */
|
||||
/**/ bigu = {{0x4297ffff, 0xfffffd2c}}, /* 1.5*2**42 -724*2**-10 */
|
||||
@@ -51,7 +50,6 @@
|
||||
/**/ INF = {{0x00000000, 0x7ff00000}}, /* INF */
|
||||
/**/ nINF = {{0x00000000, 0xfff00000}}, /* -INF */
|
||||
/**/ NaNQ = {{0x00000000, 0x7ff80000}}, /* NaNQ */
|
||||
-/**/ sqrt_2 = {{0x667f3bcc, 0x3ff6a09e}}, /* sqrt(2) */
|
||||
/**/ ln2a = {{0xfefa3800, 0x3fe62e42}}, /* ln(2) 43 bits */
|
||||
/**/ ln2b = {{0x93c76730, 0x3d2ef357}}, /* ln(2)-ln2a */
|
||||
/**/ bigu = {{0xfffffd2c, 0x4297ffff}}, /* 1.5*2**42 -724*2**-10 */
|
||||
--- a/sysdeps/ieee754/flt-32/e_log10f.c
|
||||
+++ b/sysdeps/ieee754/flt-32/e_log10f.c
|
||||
@@ -31,12 +31,6 @@
|
||||
log10_2lo = 7.9034151668e-07; /* 0x355427db */
|
||||
|
||||
#ifdef __STDC__
|
||||
-static const float zero = 0.0;
|
||||
-#else
|
||||
-static float zero = 0.0;
|
||||
-#endif
|
||||
-
|
||||
-#ifdef __STDC__
|
||||
float __ieee754_log10f(float x)
|
||||
#else
|
||||
float __ieee754_log10f(x)
|
||||
--- a/sysdeps/ieee754/flt-32/s_cosf.c
|
||||
+++ b/sysdeps/ieee754/flt-32/s_cosf.c
|
||||
@@ -22,12 +22,6 @@
|
||||
#include "math_private.h"
|
||||
|
||||
#ifdef __STDC__
|
||||
-static const float one=1.0;
|
||||
-#else
|
||||
-static float one=1.0;
|
||||
-#endif
|
||||
-
|
||||
-#ifdef __STDC__
|
||||
float __cosf(float x)
|
||||
#else
|
||||
float __cosf(x)
|
||||
--- a/sysdeps/ieee754/ldbl-128/e_lgammal_r.c
|
||||
+++ b/sysdeps/ieee754/ldbl-128/e_lgammal_r.c
|
||||
@@ -74,7 +74,6 @@
|
||||
static const long double PIL = 3.1415926535897932384626433832795028841972E0L;
|
||||
static const long double MAXLGM = 1.0485738685148938358098967157129705071571E4928L;
|
||||
static const long double one = 1.0L;
|
||||
-static const long double zero = 0.0L;
|
||||
static const long double huge = 1.0e4000L;
|
||||
|
||||
/* log gamma(x) = ( x - 0.5 ) * log(x) - x + LS2PI + 1/x P(1/x^2)
|
||||
--- a/sysdeps/ieee754/ldbl-128/s_erfl.c
|
||||
+++ b/sysdeps/ieee754/ldbl-128/s_erfl.c
|
||||
@@ -142,7 +142,6 @@
|
||||
static long double
|
||||
#endif
|
||||
tiny = 1e-4931L,
|
||||
- half = 0.5L,
|
||||
one = 1.0L,
|
||||
two = 2.0L,
|
||||
/* 2/sqrt(pi) - 1 */
|
||||
--- a/sysdeps/ieee754/ldbl-128/s_log1pl.c
|
||||
+++ b/sysdeps/ieee754/ldbl-128/s_log1pl.c
|
||||
@@ -116,7 +116,6 @@
|
||||
|
||||
static const long double sqrth = 0.7071067811865475244008443621048490392848L;
|
||||
/* ln (2^16384 * (1 - 2^-113)) */
|
||||
-static const long double maxlog = 1.1356523406294143949491931077970764891253E4L;
|
||||
static const long double zero = 0.0L;
|
||||
|
||||
long double
|
@ -1,26 +0,0 @@
|
||||
commit 976ef870542580cf5fed896c2c652b3e1a95f9da
|
||||
Author: Steve Ellcey <sellcey@mips.com>
|
||||
Date: Fri Dec 11 09:19:37 2015 -0800
|
||||
|
||||
Fix indentation.
|
||||
|
||||
* sysdeps/ieee754/flt-32/k_rem_pio2f.c (__kernel_rem_pio2f):
|
||||
Fix indentation.
|
||||
|
||||
---
|
||||
sysdeps/ieee754/flt-32/k_rem_pio2f.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/sysdeps/ieee754/flt-32/k_rem_pio2f.c
|
||||
+++ b/sysdeps/ieee754/flt-32/k_rem_pio2f.c
|
||||
@@ -82,7 +82,9 @@
|
||||
|
||||
/* compute q[0],q[1],...q[jk] */
|
||||
for (i=0;i<=jk;i++) {
|
||||
- for(j=0,fw=0.0;j<=jx;j++) fw += x[j]*f[jx+i-j]; q[i] = fw;
|
||||
+ for(j=0,fw=0.0;j<=jx;j++)
|
||||
+ fw += x[j]*f[jx+i-j];
|
||||
+ q[i] = fw;
|
||||
}
|
||||
|
||||
jz = jk;
|
@ -1,29 +0,0 @@
|
||||
commit 328c44c3670ebf6c1bd790acddce65a12998cd6c
|
||||
Author: Roland McGrath <roland@hack.frob.com>
|
||||
Date: Fri Apr 17 12:11:58 2015 -0700
|
||||
|
||||
Fuller check for invalid NSID in _dl_open.
|
||||
|
||||
---
|
||||
elf/dl-open.c | 10 ++++++++--
|
||||
1 file changed, 8 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/elf/dl-open.c
|
||||
+++ b/elf/dl-open.c
|
||||
@@ -555,8 +555,14 @@
|
||||
/* Never allow loading a DSO in a namespace which is empty. Such
|
||||
direct placements is only causing problems. Also don't allow
|
||||
loading into a namespace used for auditing. */
|
||||
- else if (__builtin_expect (nsid != LM_ID_BASE && nsid != __LM_ID_CALLER, 0)
|
||||
- && (GL(dl_ns)[nsid]._ns_nloaded == 0
|
||||
+ else if ((nsid != LM_ID_BASE && nsid != __LM_ID_CALLER)
|
||||
+ && ((nsid < 0 || nsid >= GL(dl_nns))
|
||||
+ /* This prevents the [NSID] index expressions from being
|
||||
+ evaluated, so the compiler won't think that we are
|
||||
+ accessing an invalid index here in the !SHARED case where
|
||||
+ DL_NNS is 1 and so any NSID != 0 is invalid. */
|
||||
+ || DL_NNS == 1
|
||||
+ || GL(dl_ns)[nsid]._ns_nloaded == 0
|
||||
|| GL(dl_ns)[nsid]._ns_loaded->l_auditing))
|
||||
_dl_signal_error (EINVAL, file, NULL,
|
||||
N_("invalid target namespace in dlmopen()"));
|
@ -1,51 +0,0 @@
|
||||
revert cfi additions to clone on i386/x86_64 to workaround problems in
|
||||
gcc's unwinder code. this is not a bug in glibc, it triggers problems
|
||||
elsewhere. this cfi code does not gain us a whole lot anyways.
|
||||
|
||||
http://gcc.gnu.org/ml/gcc/2006-12/msg00293.html
|
||||
|
||||
---
|
||||
sysdeps/unix/sysv/linux/i386/clone.S | 4 ----
|
||||
sysdeps/unix/sysv/linux/x86_64/clone.S | 4 ----
|
||||
2 files changed, 8 deletions(-)
|
||||
|
||||
--- a/sysdeps/unix/sysv/linux/i386/clone.S
|
||||
+++ b/sysdeps/unix/sysv/linux/i386/clone.S
|
||||
@@ -120,9 +120,6 @@
|
||||
ret
|
||||
|
||||
L(thread_start):
|
||||
- cfi_startproc;
|
||||
- /* Clearing frame pointer is insufficient, use CFI. */
|
||||
- cfi_undefined (eip);
|
||||
/* Note: %esi is zero. */
|
||||
movl %esi,%ebp /* terminate the stack frame */
|
||||
#ifdef RESET_PID
|
||||
@@ -155,7 +152,6 @@
|
||||
jmp L(haspid)
|
||||
.previous
|
||||
#endif
|
||||
- cfi_endproc;
|
||||
|
||||
cfi_startproc
|
||||
PSEUDO_END (BP_SYM (__clone))
|
||||
--- a/sysdeps/unix/sysv/linux/x86_64/clone.S
|
||||
+++ b/sysdeps/unix/sysv/linux/x86_64/clone.S
|
||||
@@ -89,9 +89,6 @@
|
||||
ret
|
||||
|
||||
L(thread_start):
|
||||
- cfi_startproc;
|
||||
- /* Clearing frame pointer is insufficient, use CFI. */
|
||||
- cfi_undefined (rip);
|
||||
/* Clear the frame pointer. The ABI suggests this be done, to mark
|
||||
the outermost frame obviously. */
|
||||
xorl %ebp, %ebp
|
||||
@@ -116,7 +113,6 @@
|
||||
/* Call exit with return value from function call. */
|
||||
movq %rax, %rdi
|
||||
call HIDDEN_JUMPTARGET (_exit)
|
||||
- cfi_endproc;
|
||||
|
||||
cfi_startproc;
|
||||
PSEUDO_END (BP_SYM (__clone))
|
@ -1,19 +0,0 @@
|
||||
do not bother running ldconfig on DESTDIR. it wants to write the temp cache
|
||||
file outside of the chroot. doesnt matter anyways as we wont use the cache
|
||||
results (portage will rebuild cache), so running ldconfig is simply a waste
|
||||
of time.
|
||||
|
||||
---
|
||||
Makefile | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -116,6 +116,7 @@
|
||||
rm -f $(symbolic-link-list)
|
||||
|
||||
install:
|
||||
+dont-bother-with-destdir:
|
||||
-test ! -x $(common-objpfx)elf/ldconfig || LC_ALL=C LANGUAGE=C \
|
||||
$(common-objpfx)elf/ldconfig $(addprefix -r ,$(install_root)) \
|
||||
$(slibdir) $(libdir)
|
@ -1,41 +0,0 @@
|
||||
From 61d5f9c09b3157db76bd1a393e248c262a8d9dd4 Mon Sep 17 00:00:00 2001
|
||||
From: Alexey Neyman <stilor@att.net>
|
||||
Date: Wed, 8 Mar 2017 14:31:10 -0800
|
||||
Subject: [PATCH] Fix combreloc test with BSD grep
|
||||
|
||||
The test for "-z combreloc" fails when cross-compiling on a machine
|
||||
that uses BSD grep (e.g. on macos). grep complains about empty
|
||||
subexpression and exits with non-zero status, which is interpreted
|
||||
by configure as "not found". As a result, support for "-z combreloc"
|
||||
(HAVE_Z_COMBRELOC) is not detected, leading to link failure on SPARC.
|
||||
|
||||
* configure.ac: Avoid empty subexpression in grep.
|
||||
|
||||
Signed-off-by: Alexey Neyman <stilor@att.net>
|
||||
---
|
||||
configure | 2 +-
|
||||
configure.in | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -6732,7 +6732,7 @@
|
||||
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; }
|
||||
then
|
||||
- if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
|
||||
+ if readelf -S conftest.so | grep '\.\(rel\|rela\)\.dyn' > /dev/null; then
|
||||
libc_cv_z_combreloc=yes
|
||||
else
|
||||
libc_cv_z_combreloc=no
|
||||
--- a/configure.in
|
||||
+++ b/configure.in
|
||||
@@ -1687,7 +1687,7 @@
|
||||
dnl introducing new options this is not easily doable. Instead use a tool
|
||||
dnl which always is cross-platform: readelf. To detect whether -z combreloc
|
||||
dnl look for a section named .rel.dyn.
|
||||
- if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
|
||||
+ if readelf -S conftest.so | grep '\.\(rel\|rela\)\.dyn' > /dev/null; then
|
||||
libc_cv_z_combreloc=yes
|
||||
else
|
||||
libc_cv_z_combreloc=no
|
@ -1,86 +0,0 @@
|
||||
grab some updates from FreeBSD
|
||||
|
||||
http://bugs.gentoo.org/201979
|
||||
|
||||
---
|
||||
misc/sys/queue.h | 36 ++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 36 insertions(+)
|
||||
|
||||
--- a/misc/sys/queue.h
|
||||
+++ b/misc/sys/queue.h
|
||||
@@ -136,6 +136,11 @@
|
||||
(var); \
|
||||
(var) = ((var)->field.le_next))
|
||||
|
||||
+#define LIST_FOREACH_SAFE(var, head, field, tvar) \
|
||||
+ for ((var) = LIST_FIRST((head)); \
|
||||
+ (var) && ((tvar) = LIST_NEXT((var), field), 1); \
|
||||
+ (var) = (tvar))
|
||||
+
|
||||
/*
|
||||
* List access methods.
|
||||
*/
|
||||
@@ -197,6 +202,16 @@
|
||||
#define SLIST_FOREACH(var, head, field) \
|
||||
for((var) = (head)->slh_first; (var); (var) = (var)->field.sle_next)
|
||||
|
||||
+#define SLIST_FOREACH_SAFE(var, head, field, tvar) \
|
||||
+ for ((var) = SLIST_FIRST((head)); \
|
||||
+ (var) && ((tvar) = SLIST_NEXT((var), field), 1); \
|
||||
+ (var) = (tvar))
|
||||
+
|
||||
+#define SLIST_FOREACH_PREVPTR(var, varp, head, field) \
|
||||
+ for ((varp) = &SLIST_FIRST((head)); \
|
||||
+ ((var) = *(varp)) != NULL; \
|
||||
+ (varp) = &SLIST_NEXT((var), field))
|
||||
+
|
||||
/*
|
||||
* Singly-linked List access methods.
|
||||
*/
|
||||
@@ -242,6 +257,12 @@
|
||||
(head)->stqh_last = &(elm)->field.stqe_next; \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
+#define STAILQ_LAST(head, type, field) \
|
||||
+ (STAILQ_EMPTY((head)) ? \
|
||||
+ NULL : \
|
||||
+ ((struct type *)(void *) \
|
||||
+ ((char *)((head)->stqh_last) - __offsetof(struct type, field))))
|
||||
+
|
||||
#define STAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
|
||||
if (((elm)->field.stqe_next = (listelm)->field.stqe_next) == NULL)\
|
||||
(head)->stqh_last = &(elm)->field.stqe_next; \
|
||||
@@ -271,6 +292,11 @@
|
||||
(var); \
|
||||
(var) = ((var)->field.stqe_next))
|
||||
|
||||
+#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \
|
||||
+ for ((var) = STAILQ_FIRST((head)); \
|
||||
+ (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \
|
||||
+ (var) = (tvar))
|
||||
+
|
||||
#define STAILQ_CONCAT(head1, head2) do { \
|
||||
if (!STAILQ_EMPTY((head2))) { \
|
||||
*(head1)->stqh_last = (head2)->stqh_first; \
|
||||
@@ -437,11 +463,21 @@
|
||||
(var); \
|
||||
(var) = ((var)->field.tqe_next))
|
||||
|
||||
+#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \
|
||||
+ for ((var) = TAILQ_FIRST((head)); \
|
||||
+ (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \
|
||||
+ (var) = (tvar))
|
||||
+
|
||||
#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \
|
||||
for ((var) = (*(((struct headname *)((head)->tqh_last))->tqh_last)); \
|
||||
(var); \
|
||||
(var) = (*(((struct headname *)((var)->field.tqe_prev))->tqh_last)))
|
||||
|
||||
+#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \
|
||||
+ for ((var) = TAILQ_LAST((head), headname); \
|
||||
+ (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \
|
||||
+ (var) = (tvar))
|
||||
+
|
||||
#define TAILQ_CONCAT(head1, head2, field) do { \
|
||||
if (!TAILQ_EMPTY(head2)) { \
|
||||
*(head1)->tqh_last = (head2)->tqh_first; \
|
27
packages/glibc/2.12.1/0010-manual-no-perl.patch
vendored
27
packages/glibc/2.12.1/0010-manual-no-perl.patch
vendored
@ -1,27 +0,0 @@
|
||||
If we're using a cvs snapshot which updates the source files, and
|
||||
perl isn't installed yet, then we can't regen the docs. Not a big
|
||||
deal, so just whine a little and continue on our merry way.
|
||||
|
||||
http://bugs.gentoo.org/60132
|
||||
|
||||
---
|
||||
manual/Makefile | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
--- a/manual/Makefile
|
||||
+++ b/manual/Makefile
|
||||
@@ -104,9 +104,14 @@
|
||||
libm-err.texi: stamp-libm-err
|
||||
stamp-libm-err: libm-err-tab.pl $(wildcard $(foreach dir,$(sysdirs),\
|
||||
$(dir)/libm-test-ulps))
|
||||
+ifneq ($(PERL),no)
|
||||
pwd=`pwd`; \
|
||||
$(PERL) $< $$pwd/.. > libm-err-tmp
|
||||
$(move-if-change) libm-err-tmp libm-err.texi
|
||||
+else
|
||||
+ echo "Unable to rebuild math docs, no perl installed"
|
||||
+ touch libm-err.texi
|
||||
+endif
|
||||
touch $@
|
||||
|
||||
# Generate Texinfo files from the C source for the example programs.
|
@ -1,56 +0,0 @@
|
||||
# DP: Description: Fix localedef segfault when run under exec-shield,
|
||||
# PaX or similar. (#231438, #198099)
|
||||
# DP: Dpatch Author: James Troup <james@nocrew.org>
|
||||
# DP: Patch Author: (probably) Jakub Jelinek <jakub@redhat.com>
|
||||
# DP: Upstream status: Unknown
|
||||
# DP: Status Details: Unknown
|
||||
# DP: Date: 2004-03-16
|
||||
---
|
||||
# locale/programs/3level.h | 36 ++++++++++++++++++++++++++++++++++++
|
||||
# 1 file changed, 36 insertions(+)
|
||||
#
|
||||
--- a/locale/programs/3level.h
|
||||
+++ b/locale/programs/3level.h
|
||||
@@ -203,6 +203,42 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
+
|
||||
+/* GCC ATM seems to do a poor job with pointers to nested functions passed
|
||||
+ to inlined functions. Help it a little bit with this hack. */
|
||||
+#define wchead_table_iterate(tp, fn) \
|
||||
+do \
|
||||
+ { \
|
||||
+ struct wchead_table *t = (tp); \
|
||||
+ uint32_t index1; \
|
||||
+ for (index1 = 0; index1 < t->level1_size; index1++) \
|
||||
+ { \
|
||||
+ uint32_t lookup1 = t->level1[index1]; \
|
||||
+ if (lookup1 != ((uint32_t) ~0)) \
|
||||
+ { \
|
||||
+ uint32_t lookup1_shifted = lookup1 << t->q; \
|
||||
+ uint32_t index2; \
|
||||
+ for (index2 = 0; index2 < (1 << t->q); index2++) \
|
||||
+ { \
|
||||
+ uint32_t lookup2 = t->level2[index2 + lookup1_shifted]; \
|
||||
+ if (lookup2 != ((uint32_t) ~0)) \
|
||||
+ { \
|
||||
+ uint32_t lookup2_shifted = lookup2 << t->p; \
|
||||
+ uint32_t index3; \
|
||||
+ for (index3 = 0; index3 < (1 << t->p); index3++) \
|
||||
+ { \
|
||||
+ struct element_t *lookup3 \
|
||||
+ = t->level3[index3 + lookup2_shifted]; \
|
||||
+ if (lookup3 != NULL) \
|
||||
+ fn ((((index1 << t->q) + index2) << t->p) + index3, \
|
||||
+ lookup3); \
|
||||
+ } \
|
||||
+ } \
|
||||
+ } \
|
||||
+ } \
|
||||
+ } \
|
||||
+ } while (0)
|
||||
+
|
||||
#endif
|
||||
|
||||
#ifndef NO_FINALIZE
|
42
packages/glibc/2.12.1/0012-resolv-dynamic.patch
vendored
42
packages/glibc/2.12.1/0012-resolv-dynamic.patch
vendored
@ -1,42 +0,0 @@
|
||||
ripped from SuSE
|
||||
|
||||
if /etc/resolv.conf is updated, then make sure applications
|
||||
already running get the updated information.
|
||||
|
||||
http://bugs.gentoo.org/177416
|
||||
|
||||
---
|
||||
resolv/res_libc.c | 15 +++++++++++++++
|
||||
1 file changed, 15 insertions(+)
|
||||
|
||||
--- a/resolv/res_libc.c
|
||||
+++ b/resolv/res_libc.c
|
||||
@@ -22,6 +22,7 @@
|
||||
#include <arpa/nameser.h>
|
||||
#include <resolv.h>
|
||||
#include <bits/libc-lock.h>
|
||||
+#include <sys/stat.h>
|
||||
|
||||
|
||||
/* The following bit is copied from res_data.c (where it is #ifdef'ed
|
||||
@@ -95,6 +96,20 @@
|
||||
__res_maybe_init (res_state resp, int preinit)
|
||||
{
|
||||
if (resp->options & RES_INIT) {
|
||||
+ static time_t last_mtime, last_check;
|
||||
+ time_t now;
|
||||
+ struct stat statbuf;
|
||||
+
|
||||
+ time (&now);
|
||||
+ if (now != last_check) {
|
||||
+ last_check = now;
|
||||
+ if (stat (_PATH_RESCONF, &statbuf) == 0 && last_mtime != statbuf.st_mtime) {
|
||||
+ last_mtime = statbuf.st_mtime;
|
||||
+ atomicinclock (lock);
|
||||
+ atomicinc (__res_initstamp);
|
||||
+ atomicincunlock (lock);
|
||||
+ }
|
||||
+ }
|
||||
if (__res_initstamp != resp->_u._ext.initstamp) {
|
||||
if (resp->nscount > 0)
|
||||
__res_iclose (resp, true);
|
42
packages/glibc/2.12.1/0013-localedef-mmap.patch
vendored
42
packages/glibc/2.12.1/0013-localedef-mmap.patch
vendored
@ -1,42 +0,0 @@
|
||||
sniped from Debian
|
||||
http://bugs.gentoo.org/289615
|
||||
|
||||
2009-10-27 Aurelien Jarno <aurelien@aurel32.net>
|
||||
|
||||
* locale/programs/locarchive.c: use MMAP_SHARED to reserve memory
|
||||
used later with MMAP_FIXED | MMAP_SHARED to cope with different
|
||||
alignment restrictions.
|
||||
|
||||
---
|
||||
locale/programs/locarchive.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/locale/programs/locarchive.c
|
||||
+++ b/locale/programs/locarchive.c
|
||||
@@ -134,7 +134,7 @@
|
||||
size_t reserved = RESERVE_MMAP_SIZE;
|
||||
int xflags = 0;
|
||||
if (total < reserved
|
||||
- && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON,
|
||||
+ && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_SHARED | MAP_ANON,
|
||||
-1, 0)) != MAP_FAILED))
|
||||
xflags = MAP_FIXED;
|
||||
else
|
||||
@@ -396,7 +396,7 @@
|
||||
size_t reserved = RESERVE_MMAP_SIZE;
|
||||
int xflags = 0;
|
||||
if (total < reserved
|
||||
- && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON,
|
||||
+ && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_SHARED | MAP_ANON,
|
||||
-1, 0)) != MAP_FAILED))
|
||||
xflags = MAP_FIXED;
|
||||
else
|
||||
@@ -614,7 +614,7 @@
|
||||
int xflags = 0;
|
||||
void *p;
|
||||
if (st.st_size < reserved
|
||||
- && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON,
|
||||
+ && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_SHARED | MAP_ANON,
|
||||
-1, 0)) != MAP_FAILED))
|
||||
xflags = MAP_FIXED;
|
||||
else
|
27
packages/glibc/2.12.1/0014-fadvise64_64.patch
vendored
27
packages/glibc/2.12.1/0014-fadvise64_64.patch
vendored
@ -1,27 +0,0 @@
|
||||
ripped from Debian
|
||||
|
||||
sysdeps/unix/sysv/linux/posix_fadvise.c | 13 +++++++++++++
|
||||
1 file changed, 13 insertions(+)
|
||||
|
||||
--- a/sysdeps/unix/sysv/linux/posix_fadvise.c
|
||||
+++ b/sysdeps/unix/sysv/linux/posix_fadvise.c
|
||||
@@ -35,6 +35,19 @@
|
||||
return INTERNAL_SYSCALL_ERRNO (ret, err);
|
||||
return 0;
|
||||
#else
|
||||
+# ifdef __NR_fadvise64_64
|
||||
+ INTERNAL_SYSCALL_DECL (err);
|
||||
+ int ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd,
|
||||
+ __LONG_LONG_PAIR ((long) (offset >> 31),
|
||||
+ (long) offset),
|
||||
+ __LONG_LONG_PAIR ((long) (len >> 31),
|
||||
+ (long) len),
|
||||
+ advise);
|
||||
+ if (INTERNAL_SYSCALL_ERROR_P (ret, err))
|
||||
+ return INTERNAL_SYSCALL_ERRNO (ret, err);
|
||||
+ return 0;
|
||||
+# else
|
||||
return ENOSYS;
|
||||
+# endif
|
||||
#endif
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
http://sources.redhat.com/ml/binutils/2004-04/msg00665.html
|
||||
|
||||
fixes building on some architectures (like m68k/arm/cris/etc...) because
|
||||
it does the right thing
|
||||
|
||||
---
|
||||
include/libc-symbols.h | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/include/libc-symbols.h
|
||||
+++ b/include/libc-symbols.h
|
||||
@@ -239,12 +239,12 @@
|
||||
# define __make_section_unallocated(section_string)
|
||||
# endif
|
||||
|
||||
-/* Tacking on "\n\t#" to the section name makes gcc put it's bogus
|
||||
+/* Tacking on "\n#APP\n\t#" to the section name makes gcc put it's bogus
|
||||
section attributes on what looks like a comment to the assembler. */
|
||||
# ifdef HAVE_SECTION_QUOTES
|
||||
-# define __sec_comment "\"\n\t#\""
|
||||
+# define __sec_comment "\"\n#APP\n\t#\""
|
||||
# else
|
||||
-# define __sec_comment "\n\t#"
|
||||
+# define __sec_comment "\n#APP\n\t#"
|
||||
# endif
|
||||
# define link_warning(symbol, msg) \
|
||||
__make_section_unallocated (".gnu.warning." #symbol) \
|
36
packages/glibc/2.12.1/0016-no-inline-gmon.patch
vendored
36
packages/glibc/2.12.1/0016-no-inline-gmon.patch
vendored
@ -1,36 +0,0 @@
|
||||
http://bugs.gentoo.org/196245
|
||||
http://sourceware.org/ml/libc-alpha/2006-05/msg00017.html
|
||||
|
||||
Attached is a patch to add __attribute__ ((noinline)) to
|
||||
call_gmon_start.
|
||||
|
||||
Without this patch, the sec script that processed initfini.s removes a
|
||||
part of inlined call_gmon_start, causing undefined label errors.
|
||||
|
||||
This patch solves the problem by forcing gcc not to inline
|
||||
call_gmon_start with __attribute__ ((noinline)).
|
||||
|
||||
Tested by building for arm-none-lixux-gnueabi. OK to apply?
|
||||
|
||||
Kazu Hirata
|
||||
|
||||
2006-05-07 Kazu Hirata <kazu@codesourcery.com>
|
||||
|
||||
* sysdeps/generic/initfini.c (call_gmon_start): Add
|
||||
__attribute__ ((noinline)).
|
||||
|
||||
---
|
||||
sysdeps/generic/initfini.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/sysdeps/generic/initfini.c
|
||||
+++ b/sysdeps/generic/initfini.c
|
||||
@@ -70,7 +70,7 @@
|
||||
/* The beginning of _init: */
|
||||
asm ("\n/*@_init_PROLOG_BEGINS*/");
|
||||
|
||||
-static void
|
||||
+static void __attribute__ ((noinline))
|
||||
call_gmon_start(void)
|
||||
{
|
||||
extern void __gmon_start__ (void) __attribute__ ((weak)); /*weak_extern (__gmon_start__);*/
|
@ -1,20 +0,0 @@
|
||||
many ports hit this warning:
|
||||
../sysdeps/unix/sysv/linux/check_native.c:46: warning: implicit declaration of function 'memset'
|
||||
../sysdeps/unix/sysv/linux/check_native.c:46: warning: implicit declaration of function 'memset'
|
||||
|
||||
snipped from suse
|
||||
|
||||
---
|
||||
sysdeps/unix/sysv/linux/check_native.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/sysdeps/unix/sysv/linux/check_native.c
|
||||
+++ b/sysdeps/unix/sysv/linux/check_native.c
|
||||
@@ -23,6 +23,7 @@
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
+#include <string.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
#include <net/if.h>
|
48
packages/glibc/2.12.1/0018-fix-pr631.patch
vendored
48
packages/glibc/2.12.1/0018-fix-pr631.patch
vendored
@ -1,48 +0,0 @@
|
||||
From dank@kegel.com
|
||||
Wed Jun 15 09:12:43 PDT 2005
|
||||
|
||||
Fixes
|
||||
|
||||
build-glibc/libc.a(nsswitch.o)(.data+0x64): undefined reference to `_nss_files_getaliasent_r'
|
||||
build-glibc/libc.a(nsswitch.o)(.data+0x6c): undefined reference to `_nss_files_endaliasent'
|
||||
... 53 lines deleted ...
|
||||
build-glibc/libc.a(nsswitch.o)(.data+0x21c): undefined reference to `_nss_files_getspnam_r'
|
||||
collect2: ld returned 1 exit status
|
||||
make[2]: *** [/build/gcc-3.4.3-glibc-2.3.5-hdrs-2.6.11.2/i686-unknown-linux-gnu/build-glibc/elf/ldconfig] Error 1
|
||||
|
||||
when building glibc with --enable-static-nss.
|
||||
|
||||
See http://sources.redhat.com/bugzilla/show_bug.cgi?id=631
|
||||
|
||||
---
|
||||
Makeconfig | 2 +-
|
||||
elf/Makefile | 7 +++++++
|
||||
2 files changed, 8 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/Makeconfig
|
||||
+++ b/Makeconfig
|
||||
@@ -531,7 +531,7 @@
|
||||
|
||||
# The static libraries.
|
||||
ifeq (yes,$(build-static))
|
||||
-link-libc-static = $(common-objpfx)libc.a $(static-gnulib) $(common-objpfx)libc.a
|
||||
+link-libc-static = $(common-objpfx)libc.a $(static-gnulib) $(otherlibs) $(common-objpfx)libc.a
|
||||
else
|
||||
ifeq (yes,$(build-shared))
|
||||
# We can try to link the programs with lib*_pic.a...
|
||||
--- a/elf/Makefile
|
||||
+++ b/elf/Makefile
|
||||
@@ -146,6 +146,13 @@
|
||||
install-bin-script = ldd
|
||||
endif
|
||||
|
||||
+ifeq (yes,$(build-static-nss))
|
||||
+nssobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)nss)
|
||||
+resolvobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)resolv)
|
||||
+otherlibs += $(nssobjdir)/libnss_files.a $(resolvobjdir)/libnss_dns.a \
|
||||
+ $(resolvobjdir)/libresolv.a
|
||||
+endif
|
||||
+
|
||||
others = sprof sln
|
||||
install-bin = sprof
|
||||
others-static = sln
|
43
packages/glibc/2.12.1/0019-assume-pipe2.patch
vendored
43
packages/glibc/2.12.1/0019-assume-pipe2.patch
vendored
@ -1,43 +0,0 @@
|
||||
http://bugs.gentoo.org/250342
|
||||
http://sources.redhat.com/bugzilla/show_bug.cgi?id=9685
|
||||
|
||||
we cant assume sock_cloexec and pipe2 are bound together as the former defines
|
||||
are found in glibc only while the latter are a combo of kernel headers and
|
||||
glibc. so if we do a runtime detection of SOCK_CLOEXEC, but pipe2() is a stub
|
||||
inside of glibc, we hit a problem. for example:
|
||||
|
||||
#include <grp.h>
|
||||
#include <stdio.h>
|
||||
main()
|
||||
{
|
||||
getgrnam("portage");
|
||||
if (!popen("ls", "r"))
|
||||
perror("popen()");
|
||||
}
|
||||
|
||||
getgrnam() will detect that the kernel supports SOCK_CLOEXEC and then set both
|
||||
__have_sock_cloexec and __have_pipe2 to true. but if glibc was built against
|
||||
older kernel headers where __NR_pipe2 does not exist, glibc will have a ENOSYS
|
||||
stub for it. so popen() will always fail as glibc assumes pipe2() works.
|
||||
|
||||
---
|
||||
socket/have_sock_cloexec.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
--- a/socket/have_sock_cloexec.c
|
||||
+++ b/socket/have_sock_cloexec.c
|
||||
@@ -16,9 +16,14 @@
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
+#include <fcntl.h>
|
||||
#include <sys/socket.h>
|
||||
#include <kernel-features.h>
|
||||
|
||||
#if defined SOCK_CLOEXEC && !defined __ASSUME_SOCK_CLOEXEC
|
||||
int __have_sock_cloexec;
|
||||
#endif
|
||||
+
|
||||
+#if defined O_CLOEXEC && !defined __ASSUME_PIPE2
|
||||
+int __have_pipe2;
|
||||
+#endif
|
35
packages/glibc/2.12.1/0020-china.patch
vendored
35
packages/glibc/2.12.1/0020-china.patch
vendored
@ -1,35 +0,0 @@
|
||||
|
||||
|
||||
---
|
||||
localedata/locales/zh_TW | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/localedata/locales/zh_TW
|
||||
+++ b/localedata/locales/zh_TW
|
||||
@@ -1,7 +1,7 @@
|
||||
comment_char %
|
||||
escape_char /
|
||||
%
|
||||
-% Chinese language locale for Taiwan R.O.C.
|
||||
+% Chinese language locale for Taiwan
|
||||
% charmap: BIG5-CP950
|
||||
%
|
||||
% Original Author:
|
||||
@@ -17,7 +17,7 @@
|
||||
% Reference: http://wwwold.dkuug.dk/JTC1/SC22/WG20/docs/n690.pdf
|
||||
|
||||
LC_IDENTIFICATION
|
||||
-title "Chinese locale for Taiwan R.O.C."
|
||||
+title "Chinese locale for Taiwan"
|
||||
source ""
|
||||
address ""
|
||||
contact ""
|
||||
@@ -25,7 +25,7 @@
|
||||
tel ""
|
||||
fax ""
|
||||
language "Chinese"
|
||||
-territory "Taiwan R.O.C."
|
||||
+territory "Taiwan"
|
||||
revision "0.2"
|
||||
date "2000-08-02"
|
||||
%
|
@ -1,118 +0,0 @@
|
||||
http://bugs.gentoo.org/show_bug.cgi?id=131815
|
||||
http://sourceware.org/bugzilla/show_bug.cgi?id=2522
|
||||
|
||||
---
|
||||
localedata/SUPPORTED | 2
|
||||
localedata/locales/ca_ES@valencia | 96 ++++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 98 insertions(+)
|
||||
|
||||
--- a/localedata/SUPPORTED
|
||||
+++ b/localedata/SUPPORTED
|
||||
@@ -72,6 +72,8 @@
|
||||
ca_ES.UTF-8/UTF-8 \
|
||||
ca_ES/ISO-8859-1 \
|
||||
ca_ES@euro/ISO-8859-15 \
|
||||
+ca_ES.UTF-8@valencia/UTF-8 \
|
||||
+ca_ES@valencia/ISO-8859-15 \
|
||||
ca_FR.UTF-8/UTF-8 \
|
||||
ca_FR/ISO-8859-15 \
|
||||
ca_IT.UTF-8/UTF-8 \
|
||||
--- /dev/null
|
||||
+++ b/localedata/locales/ca_ES@valencia
|
||||
@@ -0,0 +1,96 @@
|
||||
+comment_char %
|
||||
+escape_char /
|
||||
+%
|
||||
+% Valencian (southern Catalan) locale for Spain with Euro
|
||||
+%
|
||||
+% Note that this locale is almost the same as ca_ES@euro. The point of having
|
||||
+% a separate locale is only for PO translations, which have a lot of social
|
||||
+% support and are very appreciated by the Valencian-speaking community.
|
||||
+%
|
||||
+% Contact: Jordi Mallach
|
||||
+% Email: jordi@gnu.org
|
||||
+% Tel:
|
||||
+% Fax:
|
||||
+% Language: ca
|
||||
+% Territory: ES
|
||||
+% Option: euro
|
||||
+% Revision: 1.0
|
||||
+% Date: 2006-04-06
|
||||
+% Application: general
|
||||
+% Users: general
|
||||
+% Repertoiremap: mnemonic,ds
|
||||
+% Charset: ISO-8859-15
|
||||
+% Distribution and use is free, also
|
||||
+% for commercial purposes.
|
||||
+
|
||||
+LC_IDENTIFICATION
|
||||
+title "Valencian (southern Catalan) locale for Spain with Euro"
|
||||
+source ""
|
||||
+address ""
|
||||
+contact "Jordi Mallach"
|
||||
+email "jordi@gnu.org"
|
||||
+tel ""
|
||||
+fax ""
|
||||
+language "Catalan"
|
||||
+territory "Spain"
|
||||
+revision "1.0"
|
||||
+date "2006-04-06"
|
||||
+%
|
||||
+category "ca_ES@valencia:2006";LC_IDENTIFICATION
|
||||
+category "ca_ES@valencia:2006";LC_CTYPE
|
||||
+category "ca_ES@valencia:2006";LC_COLLATE
|
||||
+category "ca_ES@valencia:2006";LC_MONETARY
|
||||
+category "ca_ES@valencia:2006";LC_NUMERIC
|
||||
+category "ca_ES@valencia:2006";LC_TIME
|
||||
+category "ca_ES@valencia:2006";LC_MESSAGES
|
||||
+category "ca_ES@valencia:2006";LC_PAPER
|
||||
+category "ca_ES@valencia:2006";LC_NAME
|
||||
+category "ca_ES@valencia:2006";LC_ADDRESS
|
||||
+category "ca_ES@valencia:2006";LC_TELEPHONE
|
||||
+category "ca_ES@valencia:2006";LC_MEASUREMENT
|
||||
+
|
||||
+END LC_IDENTIFICATION
|
||||
+
|
||||
+LC_CTYPE
|
||||
+copy "i18n"
|
||||
+END LC_CTYPE
|
||||
+
|
||||
+LC_COLLATE
|
||||
+copy "ca_ES"
|
||||
+END LC_COLLATE
|
||||
+
|
||||
+LC_MONETARY
|
||||
+copy "ca_ES"
|
||||
+END LC_MONETARY
|
||||
+
|
||||
+LC_NUMERIC
|
||||
+copy "ca_ES"
|
||||
+END LC_NUMERIC
|
||||
+
|
||||
+LC_TIME
|
||||
+copy "ca_ES"
|
||||
+END LC_TIME
|
||||
+
|
||||
+LC_MESSAGES
|
||||
+copy "ca_ES"
|
||||
+END LC_MESSAGES
|
||||
+
|
||||
+LC_PAPER
|
||||
+copy "ca_ES"
|
||||
+END LC_PAPER
|
||||
+
|
||||
+LC_NAME
|
||||
+copy "ca_ES"
|
||||
+END LC_NAME
|
||||
+
|
||||
+LC_ADDRESS
|
||||
+copy "ca_ES"
|
||||
+END LC_ADDRESS
|
||||
+
|
||||
+LC_TELEPHONE
|
||||
+copy "ca_ES"
|
||||
+END LC_TELEPHONE
|
||||
+
|
||||
+LC_MEASUREMENT
|
||||
+copy "ca_ES"
|
||||
+END LC_MEASUREMENT
|
@ -1,34 +0,0 @@
|
||||
commit ae7080d30c68cfa0c81ce3422dca948f64a94f50
|
||||
Author: Jia Liu <proljc@gmail.com>
|
||||
Date: Sat Sep 7 00:01:08 2013 +0800
|
||||
|
||||
sunrpc/rpc/types.h: fix OS X and FreeBSD build problems
|
||||
|
||||
When I build arm-linux-gcc on OS X, I find glibc will get a build error
|
||||
in sunrpc/rpc/types.h, so I add __APPLE_CC__ to make OS X build OK.
|
||||
For FreeBSD, Add __FreeBSD__ to make it build OK, too.
|
||||
|
||||
URL: http://sourceware.org/ml/libc-alpha/2013-09/msg00155.html
|
||||
URL: http://sourceware.org/ml/libc-alpha/2013-09/msg00217.html
|
||||
URL: http://sourceware.org/ml/libc-alpha/2013-09/msg00240.html
|
||||
Signed-off-by: Jia Liu <proljc@gmail.com>
|
||||
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
---
|
||||
sunrpc/rpc/types.h | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
--- a/sunrpc/rpc/types.h
|
||||
+++ b/sunrpc/rpc/types.h
|
||||
@@ -68,6 +68,11 @@
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
|
||||
+#if defined __APPLE_CC__ || defined __FreeBSD__
|
||||
+# define __u_char_defined
|
||||
+# define __daddr_t_defined
|
||||
+#endif
|
||||
+
|
||||
#ifndef __u_char_defined
|
||||
typedef __u_char u_char;
|
||||
typedef __u_short u_short;
|
43
packages/glibc/2.12.1/0023-nscd-one-fork.patch
vendored
43
packages/glibc/2.12.1/0023-nscd-one-fork.patch
vendored
@ -1,43 +0,0 @@
|
||||
only fork one to assist in stop-start-daemon assumptions about daemon behavior
|
||||
|
||||
http://bugs.gentoo.org/190785
|
||||
|
||||
---
|
||||
nscd/nscd.c | 12 +++---------
|
||||
1 file changed, 3 insertions(+), 9 deletions(-)
|
||||
|
||||
--- a/nscd/nscd.c
|
||||
+++ b/nscd/nscd.c
|
||||
@@ -182,6 +182,9 @@
|
||||
if (pid != 0)
|
||||
exit (0);
|
||||
|
||||
+ if (write_pid (_PATH_NSCDPID) < 0)
|
||||
+ dbg_log ("%s: %s", _PATH_NSCDPID, strerror (errno));
|
||||
+
|
||||
int nullfd = open (_PATH_DEVNULL, O_RDWR);
|
||||
if (nullfd != -1)
|
||||
{
|
||||
@@ -231,12 +234,6 @@
|
||||
for (i = min_close_fd; i < getdtablesize (); i++)
|
||||
close (i);
|
||||
|
||||
- pid = fork ();
|
||||
- if (pid == -1)
|
||||
- error (EXIT_FAILURE, errno, _("cannot fork"));
|
||||
- if (pid != 0)
|
||||
- exit (0);
|
||||
-
|
||||
setsid ();
|
||||
|
||||
if (chdir ("/") != 0)
|
||||
@@ -245,9 +242,6 @@
|
||||
|
||||
openlog ("nscd", LOG_CONS | LOG_ODELAY, LOG_DAEMON);
|
||||
|
||||
- if (write_pid (_PATH_NSCDPID) < 0)
|
||||
- dbg_log ("%s: %s", _PATH_NSCDPID, strerror (errno));
|
||||
-
|
||||
if (!init_logfile ())
|
||||
dbg_log (_("Could not create log file"));
|
||||
|
249
packages/glibc/2.12.1/0024-hppa-nptl-carlos.patch
vendored
249
packages/glibc/2.12.1/0024-hppa-nptl-carlos.patch
vendored
@ -1,249 +0,0 @@
|
||||
|
||||
|
||||
---
|
||||
elf/rtld.c | 10 +++++-----
|
||||
include/atomic.h | 26 +++++++++++++-------------
|
||||
nptl/Makefile | 35 ++++++++++++++++++++++++++++++++---
|
||||
nptl/pthread_barrier_wait.c | 2 +-
|
||||
nptl/sysdeps/pthread/Makefile | 2 ++
|
||||
stdio-common/Makefile | 2 +-
|
||||
sunrpc/clnt_udp.c | 2 +-
|
||||
7 files changed, 55 insertions(+), 24 deletions(-)
|
||||
|
||||
--- a/elf/rtld.c
|
||||
+++ b/elf/rtld.c
|
||||
@@ -390,14 +390,14 @@
|
||||
know it is available. We do not have to clear the memory if we
|
||||
do not have to use the temporary bootstrap_map. Global variables
|
||||
are initialized to zero by default. */
|
||||
-#ifndef DONT_USE_BOOTSTRAP_MAP
|
||||
+#if !defined DONT_USE_BOOTSTRAP_MAP
|
||||
# ifdef HAVE_BUILTIN_MEMSET
|
||||
__builtin_memset (bootstrap_map.l_info, '\0', sizeof (bootstrap_map.l_info));
|
||||
# else
|
||||
- for (size_t cnt = 0;
|
||||
- cnt < sizeof (bootstrap_map.l_info) / sizeof (bootstrap_map.l_info[0]);
|
||||
- ++cnt)
|
||||
- bootstrap_map.l_info[cnt] = 0;
|
||||
+ /* Clear the whole bootstrap_map structure */
|
||||
+ for (char *cnt = (char *)&(bootstrap_map);
|
||||
+ cnt < ((char *)&(bootstrap_map) + sizeof (bootstrap_map));
|
||||
+ *cnt++ = '\0');
|
||||
# endif
|
||||
# if USE___THREAD
|
||||
bootstrap_map.l_tls_modid = 0;
|
||||
--- a/include/atomic.h
|
||||
+++ b/include/atomic.h
|
||||
@@ -185,7 +185,7 @@
|
||||
__typeof (*(mem)) __atg5_value = (newvalue); \
|
||||
\
|
||||
do \
|
||||
- __atg5_oldval = *__atg5_memp; \
|
||||
+ __atg5_oldval = *(volatile __typeof (mem))__atg5_memp; \
|
||||
while (__builtin_expect \
|
||||
(atomic_compare_and_exchange_bool_acq (__atg5_memp, __atg5_value, \
|
||||
__atg5_oldval), 0)); \
|
||||
@@ -206,7 +206,7 @@
|
||||
__typeof (*(mem)) __atg6_value = (value); \
|
||||
\
|
||||
do \
|
||||
- __atg6_oldval = *__atg6_memp; \
|
||||
+ __atg6_oldval = *(volatile __typeof (mem))__atg6_memp; \
|
||||
while (__builtin_expect \
|
||||
(atomic_compare_and_exchange_bool_acq (__atg6_memp, \
|
||||
__atg6_oldval \
|
||||
@@ -224,7 +224,7 @@
|
||||
__typeof (*(mem)) __atg7_value = (value); \
|
||||
\
|
||||
do \
|
||||
- __atg7_oldv = *__atg7_memp; \
|
||||
+ __atg7_oldv = *(volatile __typeof (mem))__atg7_memp; \
|
||||
while (__builtin_expect \
|
||||
(catomic_compare_and_exchange_bool_acq (__atg7_memp, \
|
||||
__atg7_oldv \
|
||||
@@ -242,7 +242,7 @@
|
||||
__typeof (mem) __atg8_memp = (mem); \
|
||||
__typeof (*(mem)) __atg8_value = (value); \
|
||||
do { \
|
||||
- __atg8_oldval = *__atg8_memp; \
|
||||
+ __atg8_oldval = *(volatile __typeof (mem))__atg8_memp; \
|
||||
if (__atg8_oldval >= __atg8_value) \
|
||||
break; \
|
||||
} while (__builtin_expect \
|
||||
@@ -259,7 +259,7 @@
|
||||
__typeof (mem) __atg9_memp = (mem); \
|
||||
__typeof (*(mem)) __atg9_value = (value); \
|
||||
do { \
|
||||
- __atg9_oldv = *__atg9_memp; \
|
||||
+ __atg9_oldv = *(volatile __typeof (mem))__atg9_memp; \
|
||||
if (__atg9_oldv >= __atg9_value) \
|
||||
break; \
|
||||
} while (__builtin_expect \
|
||||
@@ -277,7 +277,7 @@
|
||||
__typeof (mem) __atg10_memp = (mem); \
|
||||
__typeof (*(mem)) __atg10_value = (value); \
|
||||
do { \
|
||||
- __atg10_oldval = *__atg10_memp; \
|
||||
+ __atg10_oldval = *(volatile __typeof (mem))__atg10_memp; \
|
||||
if (__atg10_oldval <= __atg10_value) \
|
||||
break; \
|
||||
} while (__builtin_expect \
|
||||
@@ -361,7 +361,7 @@
|
||||
\
|
||||
do \
|
||||
{ \
|
||||
- __atg11_oldval = *__atg11_memp; \
|
||||
+ __atg11_oldval = *(volatile __typeof (mem))__atg11_memp; \
|
||||
if (__builtin_expect (__atg11_oldval <= 0, 0)) \
|
||||
break; \
|
||||
} \
|
||||
@@ -400,7 +400,7 @@
|
||||
__typeof (*(mem)) __atg14_mask = ((__typeof (*(mem))) 1 << (bit)); \
|
||||
\
|
||||
do \
|
||||
- __atg14_old = (*__atg14_memp); \
|
||||
+ __atg14_old = (*(volatile __typeof (mem))__atg14_memp); \
|
||||
while (__builtin_expect \
|
||||
(atomic_compare_and_exchange_bool_acq (__atg14_memp, \
|
||||
__atg14_old | __atg14_mask,\
|
||||
@@ -418,7 +418,7 @@
|
||||
__typeof (*(mem)) __atg15_mask = (mask); \
|
||||
\
|
||||
do \
|
||||
- __atg15_old = (*__atg15_memp); \
|
||||
+ __atg15_old = (*(volatile __typeof (mem))__atg15_memp); \
|
||||
while (__builtin_expect \
|
||||
(atomic_compare_and_exchange_bool_acq (__atg15_memp, \
|
||||
__atg15_old & __atg15_mask, \
|
||||
@@ -450,7 +450,7 @@
|
||||
__typeof (*(mem)) __atg16_mask = (mask); \
|
||||
\
|
||||
do \
|
||||
- __atg16_old = (*__atg16_memp); \
|
||||
+ __atg16_old = (*(volatile __typeof (mem))__atg16_memp); \
|
||||
while (__builtin_expect \
|
||||
(atomic_compare_and_exchange_bool_acq (__atg16_memp, \
|
||||
__atg16_old & __atg16_mask,\
|
||||
@@ -468,7 +468,7 @@
|
||||
__typeof (*(mem)) __atg17_mask = (mask); \
|
||||
\
|
||||
do \
|
||||
- __atg17_old = (*__atg17_memp); \
|
||||
+ __atg17_old = (*(volatile __typeof (mem))__atg17_memp); \
|
||||
while (__builtin_expect \
|
||||
(atomic_compare_and_exchange_bool_acq (__atg17_memp, \
|
||||
__atg17_old | __atg17_mask, \
|
||||
@@ -484,7 +484,7 @@
|
||||
__typeof (*(mem)) __atg18_mask = (mask); \
|
||||
\
|
||||
do \
|
||||
- __atg18_old = (*__atg18_memp); \
|
||||
+ __atg18_old = (*(volatile __typeof (mem))__atg18_memp); \
|
||||
while (__builtin_expect \
|
||||
(catomic_compare_and_exchange_bool_acq (__atg18_memp, \
|
||||
__atg18_old | __atg18_mask,\
|
||||
@@ -500,7 +500,7 @@
|
||||
__typeof (*(mem)) __atg19_mask = (mask); \
|
||||
\
|
||||
do \
|
||||
- __atg19_old = (*__atg19_memp); \
|
||||
+ __atg19_old = (*(volatile __typeof (mem))__atg19_memp); \
|
||||
while (__builtin_expect \
|
||||
(atomic_compare_and_exchange_bool_acq (__atg19_memp, \
|
||||
__atg19_old | __atg19_mask,\
|
||||
--- a/nptl/Makefile
|
||||
+++ b/nptl/Makefile
|
||||
@@ -264,9 +264,9 @@
|
||||
# Files which must not be linked with libpthread.
|
||||
tests-nolibpthread = tst-unload
|
||||
|
||||
-# This sets the stack resource limit to 1023kb, which is not a multiple
|
||||
-# of the page size since every architecture's page size is > 1k.
|
||||
-tst-oddstacklimit-ENV = ; ulimit -s 1023;
|
||||
+# This sets the stack resource limit to 8193kb, which is not a multiple
|
||||
+# of the page size since every architecture's page size is 4096 bytes.
|
||||
+tst-oddstacklimit-ENV = ; ulimit -s 8193;
|
||||
|
||||
distribute = eintr.c tst-cleanup4aux.c
|
||||
|
||||
@@ -425,6 +425,35 @@
|
||||
CFLAGS-tst-cleanupx4.c += -fexceptions
|
||||
CFLAGS-tst-oncex3.c += -fexceptions
|
||||
CFLAGS-tst-oncex4.c += -fexceptions
|
||||
+
|
||||
+ldflags-libgcc_s = --as-needed -lgcc_s --no-as-needed
|
||||
+LDFLAGS-tst-cancelx2 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx3 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx4 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx5 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx6 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx7 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx8 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx9 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx10 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx11 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx12 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx13 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx14 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx15 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx16 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx17 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx18 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx20 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cancelx21 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cleanupx0 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cleanupx1 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cleanupx2 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cleanupx3 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-cleanupx4 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-oncex3 += $(ldflags-libgcc_s)
|
||||
+LDFLAGS-tst-oncex4 += $(ldflags-libgcc_s)
|
||||
+
|
||||
CFLAGS-tst-align.c += $(stack-align-test-flags)
|
||||
CFLAGS-tst-align3.c += $(stack-align-test-flags)
|
||||
CFLAGS-tst-initializers1.c = -W -Wall -Werror
|
||||
--- a/nptl/pthread_barrier_wait.c
|
||||
+++ b/nptl/pthread_barrier_wait.c
|
||||
@@ -64,7 +64,7 @@
|
||||
do
|
||||
lll_futex_wait (&ibarrier->curr_event, event,
|
||||
ibarrier->private ^ FUTEX_PRIVATE_FLAG);
|
||||
- while (event == ibarrier->curr_event);
|
||||
+ while (event == *(volatile unsigned int *)&ibarrier->curr_event);
|
||||
}
|
||||
|
||||
/* Make sure the init_count is stored locally or in a register. */
|
||||
--- a/nptl/sysdeps/pthread/Makefile
|
||||
+++ b/nptl/sysdeps/pthread/Makefile
|
||||
@@ -33,7 +33,9 @@
|
||||
|
||||
ifeq ($(have-forced-unwind),yes)
|
||||
tests += tst-mqueue8x
|
||||
+ldflags-libgcc_s = --as-needed -lgcc_s --no-as-needed
|
||||
CFLAGS-tst-mqueue8x.c += -fexceptions
|
||||
+LDFLAGS-tst-mqueue8x += $(ldflags-libgcc_s)
|
||||
endif
|
||||
endif
|
||||
|
||||
--- a/stdio-common/Makefile
|
||||
+++ b/stdio-common/Makefile
|
||||
@@ -82,7 +82,7 @@
|
||||
$(SHELL) -e tst-printf.sh $(common-objpfx) '$(run-program-prefix)'
|
||||
endif
|
||||
|
||||
-CFLAGS-vfprintf.c = -Wno-uninitialized
|
||||
+CFLAGS-vfprintf.c = -Wno-uninitialized -fno-delayed-branch
|
||||
CFLAGS-vfwprintf.c = -Wno-uninitialized
|
||||
CFLAGS-tst-printf.c = -Wno-format
|
||||
CFLAGS-tstdiomisc.c = -Wno-format
|
||||
--- a/sunrpc/clnt_udp.c
|
||||
+++ b/sunrpc/clnt_udp.c
|
||||
@@ -456,7 +456,7 @@
|
||||
while (inlen < 0 && errno == EINTR);
|
||||
if (inlen < 0)
|
||||
{
|
||||
- if (errno == EWOULDBLOCK)
|
||||
+ if (errno == EWOULDBLOCK || errno == EAGAIN)
|
||||
continue;
|
||||
cu->cu_error.re_errno = errno;
|
||||
return (cu->cu_error.re_status = RPC_CANTRECV);
|
@ -1,69 +0,0 @@
|
||||
With latest versions of glibc, a lot of apps failed on a PaX enabled
|
||||
system with:
|
||||
cannot enable executable stack as shared object requires: Permission denied
|
||||
|
||||
This is due to PaX 'exec-protecting' the stack, and ld.so then trying
|
||||
to make the stack executable due to some libraries not containing the
|
||||
PT_GNU_STACK section. Bug #32960. <azarah@gentoo.org> (12 Nov 2003).
|
||||
|
||||
Patch also NPTL. Bug #116086. <kevquinn@gentoo.org> (20 Dec 2005).
|
||||
|
||||
---
|
||||
nptl/allocatestack.c | 3 ++-
|
||||
sysdeps/unix/sysv/linux/dl-execstack.c | 19 ++++++++++++++++---
|
||||
2 files changed, 18 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/nptl/allocatestack.c
|
||||
+++ b/nptl/allocatestack.c
|
||||
@@ -329,7 +329,8 @@
|
||||
# error "Define either _STACK_GROWS_DOWN or _STACK_GROWS_UP"
|
||||
#endif
|
||||
if (mprotect (stack, len, PROT_READ | PROT_WRITE | PROT_EXEC) != 0)
|
||||
- return errno;
|
||||
+ if (errno != EACCES) /* PAX is enabled */
|
||||
+ return errno;
|
||||
|
||||
return 0;
|
||||
}
|
||||
--- a/sysdeps/unix/sysv/linux/dl-execstack.c
|
||||
+++ b/sysdeps/unix/sysv/linux/dl-execstack.c
|
||||
@@ -63,7 +63,10 @@
|
||||
else
|
||||
# endif
|
||||
{
|
||||
- result = errno;
|
||||
+ if (errno == EACCES) /* PAX is enabled */
|
||||
+ result = 0;
|
||||
+ else
|
||||
+ result = errno;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
@@ -89,7 +92,12 @@
|
||||
page -= size;
|
||||
else
|
||||
{
|
||||
- if (errno != ENOMEM) /* Unexpected failure mode. */
|
||||
+ if (errno == EACCES) /* PAX is enabled */
|
||||
+ {
|
||||
+ result = 0;
|
||||
+ goto out;
|
||||
+ }
|
||||
+ else if (errno != ENOMEM) /* Unexpected failure mode. */
|
||||
{
|
||||
result = errno;
|
||||
goto out;
|
||||
@@ -115,7 +123,12 @@
|
||||
page += size;
|
||||
else
|
||||
{
|
||||
- if (errno != ENOMEM) /* Unexpected failure mode. */
|
||||
+ if (errno == EACCES) /* PAX is enabled */
|
||||
+ {
|
||||
+ result = 0;
|
||||
+ goto out;
|
||||
+ }
|
||||
+ else if (errno != ENOMEM) /* Unexpected failure mode. */
|
||||
{
|
||||
result = errno;
|
||||
goto out;
|
@ -1,35 +0,0 @@
|
||||
|
||||
|
||||
---
|
||||
elf/elf.h | 13 +++++++++++++
|
||||
1 file changed, 13 insertions(+)
|
||||
|
||||
--- a/elf/elf.h
|
||||
+++ b/elf/elf.h
|
||||
@@ -580,6 +580,7 @@
|
||||
#define PT_GNU_EH_FRAME 0x6474e550 /* GCC .eh_frame_hdr segment */
|
||||
#define PT_GNU_STACK 0x6474e551 /* Indicates stack executability */
|
||||
#define PT_GNU_RELRO 0x6474e552 /* Read-only after relocation */
|
||||
+#define PT_PAX_FLAGS 0x65041580 /* Indicates PaX flag markings */
|
||||
#define PT_LOSUNW 0x6ffffffa
|
||||
#define PT_SUNWBSS 0x6ffffffa /* Sun Specific segment */
|
||||
#define PT_SUNWSTACK 0x6ffffffb /* Stack segment */
|
||||
@@ -593,6 +594,18 @@
|
||||
#define PF_X (1 << 0) /* Segment is executable */
|
||||
#define PF_W (1 << 1) /* Segment is writable */
|
||||
#define PF_R (1 << 2) /* Segment is readable */
|
||||
+#define PF_PAGEEXEC (1 << 4) /* Enable PAGEEXEC */
|
||||
+#define PF_NOPAGEEXEC (1 << 5) /* Disable PAGEEXEC */
|
||||
+#define PF_SEGMEXEC (1 << 6) /* Enable SEGMEXEC */
|
||||
+#define PF_NOSEGMEXEC (1 << 7) /* Disable SEGMEXEC */
|
||||
+#define PF_MPROTECT (1 << 8) /* Enable MPROTECT */
|
||||
+#define PF_NOMPROTECT (1 << 9) /* Disable MPROTECT */
|
||||
+#define PF_RANDEXEC (1 << 10) /* Enable RANDEXEC */
|
||||
+#define PF_NORANDEXEC (1 << 11) /* Disable RANDEXEC */
|
||||
+#define PF_EMUTRAMP (1 << 12) /* Enable EMUTRAMP */
|
||||
+#define PF_NOEMUTRAMP (1 << 13) /* Disable EMUTRAMP */
|
||||
+#define PF_RANDMMAP (1 << 14) /* Enable RANDMMAP */
|
||||
+#define PF_NORANDMMAP (1 << 15) /* Disable RANDMMAP */
|
||||
#define PF_MASKOS 0x0ff00000 /* OS-specific */
|
||||
#define PF_MASKPROC 0xf0000000 /* Processor-specific */
|
||||
|
@ -1,196 +0,0 @@
|
||||
when glibc runs its tests, it does so by invoking the local library loader.
|
||||
in Gentoo, we build/run inside of our "sandbox" which itself is linked against
|
||||
libdl (so that it can load libraries and pull out symbols). the trouble
|
||||
is that when you upgrade from an older glibc to the new one, often times
|
||||
internal symbols change name or abi. this is normally OK as you cannot use
|
||||
libc.so from say version 2.3.6 but libpthread.so from say version 2.5, so
|
||||
we always say "keep all of the glibc libraries from the same build". but
|
||||
when glibc runs its tests, it uses dynamic paths to point to its new local
|
||||
copies of libraries. if the test doesnt use libdl, then glibc doesnt add
|
||||
its path, and when sandbox triggers the loading of libdl, glibc does so
|
||||
from the host system system. this gets us into the case of all libraries
|
||||
are from the locally compiled version of glibc except for libdl.so.
|
||||
|
||||
Fix by Wormo
|
||||
|
||||
http://bugs.gentoo.org/56898
|
||||
|
||||
---
|
||||
grp/tst_fgetgrent.sh | 3 ++-
|
||||
iconvdata/run-iconv-test.sh | 2 +-
|
||||
iconvdata/tst-table.sh | 5 ++++-
|
||||
intl/tst-codeset.sh | 3 +++
|
||||
intl/tst-gettext.sh | 5 ++++-
|
||||
intl/tst-gettext2.sh | 5 ++++-
|
||||
intl/tst-translit.sh | 5 ++++-
|
||||
malloc/tst-mtrace.sh | 5 ++++-
|
||||
nptl/tst-tls6.sh | 4 ++--
|
||||
posix/globtest.sh | 2 +-
|
||||
posix/tst-getconf.sh | 5 ++++-
|
||||
posix/wordexp-tst.sh | 5 ++++-
|
||||
12 files changed, 37 insertions(+), 12 deletions(-)
|
||||
|
||||
--- a/grp/tst_fgetgrent.sh
|
||||
+++ b/grp/tst_fgetgrent.sh
|
||||
@@ -24,7 +24,8 @@
|
||||
rtld_installed_name=$1; shift
|
||||
|
||||
testout=${common_objpfx}/grp/tst_fgetgrent.out
|
||||
-library_path=${common_objpfx}
|
||||
+# make sure libdl is also in path in case sandbox is in use
|
||||
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
|
||||
|
||||
result=0
|
||||
|
||||
--- a/iconvdata/run-iconv-test.sh
|
||||
+++ b/iconvdata/run-iconv-test.sh
|
||||
@@ -34,7 +34,7 @@
|
||||
export GCONV_PATH
|
||||
|
||||
# We have to have some directories in the library path.
|
||||
-LIBPATH=$codir:$codir/iconvdata
|
||||
+LIBPATH=$codir:$codir/iconvdata:$codir/dlfcn
|
||||
|
||||
# How the start the iconv(1) program.
|
||||
ICONV='$codir/elf/ld.so --library-path $LIBPATH --inhibit-rpath ${from}.so \
|
||||
--- a/iconvdata/tst-table.sh
|
||||
+++ b/iconvdata/tst-table.sh
|
||||
@@ -59,8 +59,11 @@
|
||||
irreversible=${charset}.irreversible
|
||||
fi
|
||||
|
||||
+# make sure libdl is also in path in case sandbox is in use
|
||||
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
|
||||
+
|
||||
# iconv in one direction.
|
||||
-${common_objpfx}elf/ld.so --library-path $common_objpfx \
|
||||
+${common_objpfx}elf/ld.so --library-path $library_path \
|
||||
${objpfx}tst-table-from ${charset} \
|
||||
> ${objpfx}tst-${charset}.table
|
||||
|
||||
--- a/intl/tst-codeset.sh
|
||||
+++ b/intl/tst-codeset.sh
|
||||
@@ -37,6 +37,9 @@
|
||||
LOCPATH=${common_objpfx}localedata
|
||||
export LOCPATH
|
||||
|
||||
+# make sure libdl is also in path in case sandbox is in use
|
||||
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
|
||||
+
|
||||
${common_objpfx}elf/ld.so --library-path $common_objpfx \
|
||||
${objpfx}tst-codeset > ${objpfx}tst-codeset.out
|
||||
|
||||
--- a/intl/tst-gettext.sh
|
||||
+++ b/intl/tst-gettext.sh
|
||||
@@ -51,9 +51,12 @@
|
||||
LOCPATH=${common_objpfx}localedata
|
||||
export LOCPATH
|
||||
|
||||
+# make sure libdl is also in path in case sandbox is in use
|
||||
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
|
||||
+
|
||||
# Now run the test.
|
||||
MALLOC_TRACE=$malloc_trace LOCPATH=${objpfx}localedir:$LOCPATH \
|
||||
-${common_objpfx}elf/ld.so --library-path $common_objpfx \
|
||||
+${common_objpfx}elf/ld.so --library-path $library_path \
|
||||
${objpfx}tst-gettext > ${objpfx}tst-gettext.out ${objpfx}domaindir
|
||||
|
||||
exit $?
|
||||
--- a/intl/tst-gettext2.sh
|
||||
+++ b/intl/tst-gettext2.sh
|
||||
@@ -65,8 +65,11 @@
|
||||
LOCPATH=${objpfx}domaindir
|
||||
export LOCPATH
|
||||
|
||||
+# make sure libdl is also in path in case sandbox is in use
|
||||
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
|
||||
+
|
||||
# Now run the test.
|
||||
-${common_objpfx}elf/ld.so --library-path $common_objpfx \
|
||||
+${common_objpfx}elf/ld.so --library-path $library_path \
|
||||
${objpfx}tst-gettext2 > ${objpfx}tst-gettext2.out ${objpfx}domaindir &&
|
||||
cmp ${objpfx}tst-gettext2.out - <<EOF
|
||||
String1 - Lang1: 1st string
|
||||
--- a/intl/tst-translit.sh
|
||||
+++ b/intl/tst-translit.sh
|
||||
@@ -36,7 +36,10 @@
|
||||
LOCPATH=${common_objpfx}localedata
|
||||
export LOCPATH
|
||||
|
||||
-${common_objpfx}elf/ld.so --library-path $common_objpfx \
|
||||
+# make sure libdl is also in path in case sandbox is in use
|
||||
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
|
||||
+
|
||||
+${common_objpfx}elf/ld.so --library-path $library_path \
|
||||
${objpfx}tst-translit > ${objpfx}tst-translit.out ${objpfx}domaindir
|
||||
|
||||
exit $?
|
||||
--- a/malloc/tst-mtrace.sh
|
||||
+++ b/malloc/tst-mtrace.sh
|
||||
@@ -24,9 +24,12 @@
|
||||
status=0
|
||||
trap "rm -f ${common_objpfx}malloc/tst-mtrace.leak; exit 1" 1 2 15
|
||||
|
||||
+# make sure libdl is also in path in case sandbox is in use
|
||||
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
|
||||
+
|
||||
MALLOC_TRACE=${common_objpfx}malloc/tst-mtrace.leak \
|
||||
LOCPATH=${common_objpfx}localedata GCONV_PATH=${common_objpfx}iconvdata \
|
||||
-${common_objpfx}elf/ld.so --library-path $common_objpfx \
|
||||
+${common_objpfx}elf/ld.so --library-path $library_path \
|
||||
${common_objpfx}malloc/tst-mtrace || status=1
|
||||
|
||||
if test $status -eq 0 && test -f ${common_objpfx}malloc/mtrace; then
|
||||
--- a/nptl/tst-tls6.sh
|
||||
+++ b/nptl/tst-tls6.sh
|
||||
@@ -5,8 +5,8 @@
|
||||
rtld_installed_name=$1; shift
|
||||
logfile=$common_objpfx/nptl/tst-tls6.out
|
||||
|
||||
-# We have to find libc and nptl
|
||||
-library_path=${common_objpfx}:${common_objpfx}nptl
|
||||
+# We have to find libc and nptl (also libdl in case sandbox is in use)
|
||||
+library_path=${common_objpfx}:${common_objpfx}nptl:${common_objpfx}/dlfcn
|
||||
tst_tls5="${elf_objpfx}${rtld_installed_name} --library-path ${library_path} \
|
||||
${common_objpfx}/nptl/tst-tls5"
|
||||
|
||||
--- a/posix/globtest.sh
|
||||
+++ b/posix/globtest.sh
|
||||
@@ -18,7 +18,7 @@
|
||||
esac
|
||||
|
||||
# We have to find the libc and the NSS modules.
|
||||
-library_path=${common_objpfx}:${common_objpfx}nss:${common_objpfx}nis:${common_objpfx}db2:${common_objpfx}hesiod
|
||||
+library_path=${common_objpfx}:${common_objpfx}nss:${common_objpfx}nis:${common_objpfx}db2:${common_objpfx}hesiod:${common_objpfx}/dlfcn
|
||||
|
||||
# Since we use `sort' we must make sure to use the same locale everywhere.
|
||||
LC_ALL=C
|
||||
--- a/posix/tst-getconf.sh
|
||||
+++ b/posix/tst-getconf.sh
|
||||
@@ -10,7 +10,10 @@
|
||||
else
|
||||
rtld_installed_name=$1; shift
|
||||
runit() {
|
||||
- ${elf_objpfx}${rtld_installed_name} --library-path ${common_objpfx} "$@"
|
||||
+
|
||||
+ # make sure libdl is also in path in case sandbox is in use
|
||||
+ library_path=${common_objpfx}:${common_objpfx}/dlfcn
|
||||
+ ${elf_objpfx}${rtld_installed_name} --library-path ${library_path} "$@"
|
||||
}
|
||||
fi
|
||||
|
||||
--- a/posix/wordexp-tst.sh
|
||||
+++ b/posix/wordexp-tst.sh
|
||||
@@ -19,8 +19,11 @@
|
||||
"
|
||||
export IFS
|
||||
|
||||
+# make sure libdl is also in path in case sandbox is in use
|
||||
+library_path=${common_objpfx}:${common_objpfx}/dlfcn
|
||||
+
|
||||
failed=0
|
||||
-${elf_objpfx}${rtld_installed_name} --library-path ${common_objpfx} \
|
||||
+${elf_objpfx}${rtld_installed_name} --library-path ${library_path} \
|
||||
${common_objpfx}posix/wordexp-test '$*' > ${testout}1
|
||||
cat <<"EOF" | cmp - ${testout}1 >> $logfile || failed=1
|
||||
wordexp returned 0
|
62
packages/glibc/2.12.1/0028-fnmatch.patch
vendored
62
packages/glibc/2.12.1/0028-fnmatch.patch
vendored
@ -1,62 +0,0 @@
|
||||
http://sourceware.org/ml/libc-hacker/2002-11/msg00071.html
|
||||
|
||||
When fnmatch detects an invalid multibyte character it should fall back to
|
||||
single byte matching, so that "*" has a chance to match such a string.
|
||||
|
||||
Andreas.
|
||||
|
||||
2005-04-12 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
* posix/fnmatch.c (fnmatch): If conversion to wide character
|
||||
fails fall back to single byte matching.
|
||||
|
||||
---
|
||||
posix/fnmatch.c | 16 ++++++++--------
|
||||
1 file changed, 8 insertions(+), 8 deletions(-)
|
||||
|
||||
--- a/posix/fnmatch.c
|
||||
+++ b/posix/fnmatch.c
|
||||
@@ -327,6 +327,7 @@
|
||||
# if HANDLE_MULTIBYTE
|
||||
if (__builtin_expect (MB_CUR_MAX, 1) != 1)
|
||||
{
|
||||
+ const char *orig_pattern = pattern;
|
||||
mbstate_t ps;
|
||||
size_t n;
|
||||
const char *p;
|
||||
@@ -382,10 +383,8 @@
|
||||
wstring = (wchar_t *) alloca ((n + 1) * sizeof (wchar_t));
|
||||
n = mbsrtowcs (wstring, &p, n + 1, &ps);
|
||||
if (__builtin_expect (n == (size_t) -1, 0))
|
||||
- /* Something wrong.
|
||||
- XXX Do we have to set `errno' to something which mbsrtows hasn't
|
||||
- already done? */
|
||||
- return -1;
|
||||
+ /* Something wrong. Fall back to single byte matching. */
|
||||
+ goto try_singlebyte;
|
||||
if (p)
|
||||
{
|
||||
memset (&ps, '\0', sizeof (ps));
|
||||
@@ -397,10 +396,8 @@
|
||||
prepare_wstring:
|
||||
n = mbsrtowcs (NULL, &string, 0, &ps);
|
||||
if (__builtin_expect (n == (size_t) -1, 0))
|
||||
- /* Something wrong.
|
||||
- XXX Do we have to set `errno' to something which mbsrtows hasn't
|
||||
- already done? */
|
||||
- return -1;
|
||||
+ /* Something wrong. Fall back to single byte matching. */
|
||||
+ goto try_singlebyte;
|
||||
wstring = (wchar_t *) alloca ((n + 1) * sizeof (wchar_t));
|
||||
assert (mbsinit (&ps));
|
||||
(void) mbsrtowcs (wstring, &string, n + 1, &ps);
|
||||
@@ -408,6 +405,9 @@
|
||||
|
||||
return internal_fnwmatch (wpattern, wstring, wstring + n,
|
||||
flags & FNM_PERIOD, flags, NULL);
|
||||
+
|
||||
+ try_singlebyte:
|
||||
+ pattern = orig_pattern;
|
||||
}
|
||||
# endif /* mbstate_t and mbsrtowcs or _LIBC. */
|
||||
|
@ -1,17 +0,0 @@
|
||||
timezone data has been split into the package sys-libs/timezone-data
|
||||
|
||||
---
|
||||
Makeconfig | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/Makeconfig
|
||||
+++ b/Makeconfig
|
||||
@@ -944,7 +944,7 @@
|
||||
stdlib stdio-common libio malloc string wcsmbs time dirent \
|
||||
grp pwd posix io termios resource misc socket sysvipc gmon \
|
||||
gnulib iconv iconvdata wctype manual shadow gshadow po argp \
|
||||
- crypt nss localedata timezone rt conform debug \
|
||||
+ crypt nss localedata rt conform debug \
|
||||
$(add-on-subdirs) $(dlfcn) $(binfmt-subdir)
|
||||
|
||||
ifndef avoid-generated
|
18
packages/glibc/2.12.1/0030-alpha-xstat.patch
vendored
18
packages/glibc/2.12.1/0030-alpha-xstat.patch
vendored
@ -1,18 +0,0 @@
|
||||
---
|
||||
sysdeps/unix/sysv/linux/kernel-features.h | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
--- a/sysdeps/unix/sysv/linux/kernel-features.h
|
||||
+++ b/sysdeps/unix/sysv/linux/kernel-features.h
|
||||
@@ -386,6 +386,11 @@
|
||||
# define __ASSUME_GETDENTS32_D_TYPE 1
|
||||
#endif
|
||||
|
||||
+/* Starting with version 2.6.4, alpha stat64 syscalls are available. */
|
||||
+#if __LINUX_KERNEL_VERSION >= 0x020604 && defined __alpha__
|
||||
+# define __ASSUME_STAT64_SYSCALL 1
|
||||
+#endif
|
||||
+
|
||||
/* Starting with version 2.5.3, the initial location returned by `brk'
|
||||
after exec is always rounded up to the next page. */
|
||||
#if __LINUX_KERNEL_VERSION >= 132355
|
17
packages/glibc/2.12.1/0031-alpha-creat.patch
vendored
17
packages/glibc/2.12.1/0031-alpha-creat.patch
vendored
@ -1,17 +0,0 @@
|
||||
alpha does not have a __NR_creat
|
||||
|
||||
http://bugs.gentoo.org/227275
|
||||
http://sourceware.org/bugzilla/show_bug.cgi?id=6650
|
||||
|
||||
---
|
||||
sysdeps/unix/sysv/linux/wordsize-64/creat64.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
--- a/sysdeps/unix/sysv/linux/wordsize-64/creat64.c
|
||||
+++ b/sysdeps/unix/sysv/linux/wordsize-64/creat64.c
|
||||
@@ -1 +1,5 @@
|
||||
/* Defined as alias for the syscall. */
|
||||
+#include <sysdep.h>
|
||||
+#ifndef __NR_creat
|
||||
+#include "../../../../../io/creat64.c"
|
||||
+#endif
|
@ -1,122 +0,0 @@
|
||||
2009-07-25 Aurelien Jarno <aurelien@aurel32.net>
|
||||
|
||||
* sysdeps/unix/sysv/linux/kernel-features.h: define
|
||||
__ASSUME_FDATASYNC.
|
||||
* sysdeps/unix/sysv/linux/fdatasync.c: New file.
|
||||
* sysdeps/unix/sysv/linux/Makefile: compile fdatasync.c with
|
||||
-fexceptions.
|
||||
* sysdeps/unix/sysv/linux/syscalls.list: Remove fdatasync.
|
||||
|
||||
sysdeps/unix/sysv/linux/Makefile | 1
|
||||
sysdeps/unix/sysv/linux/fdatasync.c | 69 ++++++++++++++++++++++++++++++
|
||||
sysdeps/unix/sysv/linux/kernel-features.h | 6 ++
|
||||
sysdeps/unix/sysv/linux/syscalls.list | 1
|
||||
4 files changed, 76 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/sysdeps/unix/sysv/linux/Makefile
|
||||
+++ b/sysdeps/unix/sysv/linux/Makefile
|
||||
@@ -20,6 +20,7 @@
|
||||
setfsuid setfsgid makedev epoll_pwait signalfd \
|
||||
eventfd eventfd_read eventfd_write
|
||||
|
||||
+CFLAGS-fdatasync.c = -fexceptions
|
||||
CFLAGS-gethostid.c = -fexceptions
|
||||
|
||||
sysdep_headers += sys/mount.h sys/acct.h sys/sysctl.h \
|
||||
--- /dev/null
|
||||
+++ b/sysdeps/unix/sysv/linux/fdatasync.c
|
||||
@@ -0,0 +1,69 @@
|
||||
+/* fdatasync -- synchronize at least the data part of a file with
|
||||
+ the underlying media. Linux version.
|
||||
+
|
||||
+ Copyright (C) 2007 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 <errno.h>
|
||||
+#include <unistd.h>
|
||||
+
|
||||
+#include <sysdep-cancel.h>
|
||||
+#include <sys/syscall.h>
|
||||
+#include <bp-checks.h>
|
||||
+
|
||||
+#include <kernel-features.h>
|
||||
+
|
||||
+#if defined __NR_fdatasync && !defined __ASSUME_FDATASYNC
|
||||
+static int __have_no_fdatasync;
|
||||
+#endif
|
||||
+
|
||||
+static int
|
||||
+do_fdatasync (int fd)
|
||||
+{
|
||||
+#ifdef __ASSUME_FDATASYNC
|
||||
+ return INLINE_SYSCALL (fdatasync, 1, fd);
|
||||
+#elif defined __NR_fdatasync
|
||||
+ if (!__builtin_expect (__have_no_fdatasync, 0))
|
||||
+ {
|
||||
+ int result = INLINE_SYSCALL (fdatasync, 1, fd);
|
||||
+ if (__builtin_expect (result, 0) != -1 || errno != ENOSYS)
|
||||
+ return result;
|
||||
+
|
||||
+ __have_no_fdatasync = 1;
|
||||
+ }
|
||||
+#endif
|
||||
+ return INLINE_SYSCALL (fsync, 1, fd);
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+__fdatasync (int fd)
|
||||
+{
|
||||
+ if (SINGLE_THREAD_P)
|
||||
+ return do_fdatasync (fd);
|
||||
+
|
||||
+ int oldtype = LIBC_CANCEL_ASYNC ();
|
||||
+
|
||||
+ int result = do_fdatasync (fd);
|
||||
+
|
||||
+ LIBC_CANCEL_RESET (oldtype);
|
||||
+
|
||||
+ return result;
|
||||
+}
|
||||
+
|
||||
+weak_alias (__fdatasync, fdatasync)
|
||||
+
|
||||
--- a/sysdeps/unix/sysv/linux/kernel-features.h
|
||||
+++ b/sysdeps/unix/sysv/linux/kernel-features.h
|
||||
@@ -459,6 +459,12 @@
|
||||
# define __ASSUME_FUTEX_LOCK_PI 1
|
||||
#endif
|
||||
|
||||
+/* Support for fsyncdata syscall was added in 2.6.22 on alpha, but it
|
||||
+ was already present in 2.0 kernels on other architectures. */
|
||||
+#if (!defined __alpha || __LINUX_KERNEL_VERSION >= 0x020616)
|
||||
+# define __ASSUME_FDATASYNC 1
|
||||
+#endif
|
||||
+
|
||||
/* Support for utimensat syscall was added in 2.6.22, on SH
|
||||
only after 2.6.22-rc1. */
|
||||
#if __LINUX_KERNEL_VERSION >= 0x020616 \
|
||||
--- a/sysdeps/unix/sysv/linux/syscalls.list
|
||||
+++ b/sysdeps/unix/sysv/linux/syscalls.list
|
||||
@@ -11,7 +11,6 @@
|
||||
epoll_create1 EXTRA epoll_create1 i:i epoll_create1
|
||||
epoll_ctl EXTRA epoll_ctl i:iiip epoll_ctl
|
||||
epoll_wait EXTRA epoll_wait Ci:ipii epoll_wait
|
||||
-fdatasync - fdatasync Ci:i fdatasync
|
||||
flock - flock i:ii __flock flock
|
||||
fork - fork i: __libc_fork __fork fork
|
||||
get_kernel_syms EXTRA get_kernel_syms i:p get_kernel_syms
|
412
packages/glibc/2.12.1/0033-ppc-atomic.patch
vendored
412
packages/glibc/2.12.1/0033-ppc-atomic.patch
vendored
@ -1,412 +0,0 @@
|
||||
sniped from suse
|
||||
|
||||
---
|
||||
sysdeps/powerpc/bits/atomic.h | 66 ++++++++++-----------
|
||||
sysdeps/powerpc/powerpc32/bits/atomic.h | 16 ++---
|
||||
sysdeps/powerpc/powerpc64/bits/atomic.h | 98 ++++++++++++++++----------------
|
||||
3 files changed, 90 insertions(+), 90 deletions(-)
|
||||
|
||||
--- a/sysdeps/powerpc/bits/atomic.h
|
||||
+++ b/sysdeps/powerpc/bits/atomic.h
|
||||
@@ -85,14 +85,14 @@
|
||||
__typeof (*(mem)) __tmp; \
|
||||
__typeof (mem) __memp = (mem); \
|
||||
__asm __volatile ( \
|
||||
- "1: lwarx %0,0,%1" MUTEX_HINT_ACQ "\n" \
|
||||
+ "1: lwarx %0,%y1" MUTEX_HINT_ACQ "\n" \
|
||||
" cmpw %0,%2\n" \
|
||||
" bne 2f\n" \
|
||||
- " stwcx. %3,0,%1\n" \
|
||||
+ " stwcx. %3,%y1\n" \
|
||||
" bne- 1b\n" \
|
||||
"2: " __ARCH_ACQ_INSTR \
|
||||
- : "=&r" (__tmp) \
|
||||
- : "b" (__memp), "r" (oldval), "r" (newval) \
|
||||
+ : "=&r" (__tmp), "+Z" (*__memp) \
|
||||
+ : "r" (oldval), "r" (newval) \
|
||||
: "cr0", "memory"); \
|
||||
__tmp; \
|
||||
})
|
||||
@@ -102,14 +102,14 @@
|
||||
__typeof (*(mem)) __tmp; \
|
||||
__typeof (mem) __memp = (mem); \
|
||||
__asm __volatile (__ARCH_REL_INSTR "\n" \
|
||||
- "1: lwarx %0,0,%1" MUTEX_HINT_REL "\n" \
|
||||
+ "1: lwarx %0,%y1" MUTEX_HINT_REL "\n" \
|
||||
" cmpw %0,%2\n" \
|
||||
" bne 2f\n" \
|
||||
- " stwcx. %3,0,%1\n" \
|
||||
+ " stwcx. %3,%y1\n" \
|
||||
" bne- 1b\n" \
|
||||
"2: " \
|
||||
- : "=&r" (__tmp) \
|
||||
- : "b" (__memp), "r" (oldval), "r" (newval) \
|
||||
+ : "=&r" (__tmp), "+Z" (__memp) \
|
||||
+ : "r" (oldval), "r" (newval) \
|
||||
: "cr0", "memory"); \
|
||||
__tmp; \
|
||||
})
|
||||
@@ -118,12 +118,12 @@
|
||||
({ \
|
||||
__typeof (*mem) __val; \
|
||||
__asm __volatile ( \
|
||||
- "1: lwarx %0,0,%2" MUTEX_HINT_ACQ "\n" \
|
||||
- " stwcx. %3,0,%2\n" \
|
||||
+ "1: lwarx %0,%y1" MUTEX_HINT_ACQ "\n" \
|
||||
+ " stwcx. %2,%y1\n" \
|
||||
" bne- 1b\n" \
|
||||
" " __ARCH_ACQ_INSTR \
|
||||
- : "=&r" (__val), "=m" (*mem) \
|
||||
- : "b" (mem), "r" (value), "m" (*mem) \
|
||||
+ : "=&r" (__val), "+Z" (*mem) \
|
||||
+ : "r" (value) \
|
||||
: "cr0", "memory"); \
|
||||
__val; \
|
||||
})
|
||||
@@ -132,11 +132,11 @@
|
||||
({ \
|
||||
__typeof (*mem) __val; \
|
||||
__asm __volatile (__ARCH_REL_INSTR "\n" \
|
||||
- "1: lwarx %0,0,%2" MUTEX_HINT_REL "\n" \
|
||||
- " stwcx. %3,0,%2\n" \
|
||||
+ "1: lwarx %0,%y1" MUTEX_HINT_REL "\n" \
|
||||
+ " stwcx. %2,%y1\n" \
|
||||
" bne- 1b" \
|
||||
- : "=&r" (__val), "=m" (*mem) \
|
||||
- : "b" (mem), "r" (value), "m" (*mem) \
|
||||
+ : "=&r" (__val), "+Z" (*mem) \
|
||||
+ : "r" (value) \
|
||||
: "cr0", "memory"); \
|
||||
__val; \
|
||||
})
|
||||
@@ -144,12 +144,12 @@
|
||||
#define __arch_atomic_exchange_and_add_32(mem, value) \
|
||||
({ \
|
||||
__typeof (*mem) __val, __tmp; \
|
||||
- __asm __volatile ("1: lwarx %0,0,%3\n" \
|
||||
- " add %1,%0,%4\n" \
|
||||
- " stwcx. %1,0,%3\n" \
|
||||
+ __asm __volatile ("1: lwarx %0,%y2\n" \
|
||||
+ " add %1,%0,%3\n" \
|
||||
+ " stwcx. %1,%y2\n" \
|
||||
" bne- 1b" \
|
||||
- : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
|
||||
- : "b" (mem), "r" (value), "m" (*mem) \
|
||||
+ : "=&b" (__val), "=&r" (__tmp), "+Z" (*mem) \
|
||||
+ : "r" (value) \
|
||||
: "cr0", "memory"); \
|
||||
__val; \
|
||||
})
|
||||
@@ -157,12 +157,12 @@
|
||||
#define __arch_atomic_increment_val_32(mem) \
|
||||
({ \
|
||||
__typeof (*(mem)) __val; \
|
||||
- __asm __volatile ("1: lwarx %0,0,%2\n" \
|
||||
+ __asm __volatile ("1: lwarx %0,%y1\n" \
|
||||
" addi %0,%0,1\n" \
|
||||
- " stwcx. %0,0,%2\n" \
|
||||
+ " stwcx. %0,%y1\n" \
|
||||
" bne- 1b" \
|
||||
- : "=&b" (__val), "=m" (*mem) \
|
||||
- : "b" (mem), "m" (*mem) \
|
||||
+ : "=&b" (__val), "+Z" (*mem) \
|
||||
+ : \
|
||||
: "cr0", "memory"); \
|
||||
__val; \
|
||||
})
|
||||
@@ -170,27 +170,27 @@
|
||||
#define __arch_atomic_decrement_val_32(mem) \
|
||||
({ \
|
||||
__typeof (*(mem)) __val; \
|
||||
- __asm __volatile ("1: lwarx %0,0,%2\n" \
|
||||
+ __asm __volatile ("1: lwarx %0,%y1\n" \
|
||||
" subi %0,%0,1\n" \
|
||||
- " stwcx. %0,0,%2\n" \
|
||||
+ " stwcx. %0,%y1\n" \
|
||||
" bne- 1b" \
|
||||
- : "=&b" (__val), "=m" (*mem) \
|
||||
- : "b" (mem), "m" (*mem) \
|
||||
+ : "=&b" (__val), "+Z" (*mem) \
|
||||
+ : \
|
||||
: "cr0", "memory"); \
|
||||
__val; \
|
||||
})
|
||||
|
||||
#define __arch_atomic_decrement_if_positive_32(mem) \
|
||||
({ int __val, __tmp; \
|
||||
- __asm __volatile ("1: lwarx %0,0,%3\n" \
|
||||
+ __asm __volatile ("1: lwarx %0,%y2\n" \
|
||||
" cmpwi 0,%0,0\n" \
|
||||
" addi %1,%0,-1\n" \
|
||||
" ble 2f\n" \
|
||||
- " stwcx. %1,0,%3\n" \
|
||||
+ " stwcx. %1,%y2\n" \
|
||||
" bne- 1b\n" \
|
||||
"2: " __ARCH_ACQ_INSTR \
|
||||
- : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
|
||||
- : "b" (mem), "m" (*mem) \
|
||||
+ : "=&b" (__val), "=&r" (__tmp), "+Z" (*mem) \
|
||||
+ : \
|
||||
: "cr0", "memory"); \
|
||||
__val; \
|
||||
})
|
||||
--- a/sysdeps/powerpc/powerpc32/bits/atomic.h
|
||||
+++ b/sysdeps/powerpc/powerpc32/bits/atomic.h
|
||||
@@ -44,14 +44,14 @@
|
||||
({ \
|
||||
unsigned int __tmp; \
|
||||
__asm __volatile ( \
|
||||
- "1: lwarx %0,0,%1" MUTEX_HINT_ACQ "\n" \
|
||||
+ "1: lwarx %0,%y1" MUTEX_HINT_ACQ "\n" \
|
||||
" subf. %0,%2,%0\n" \
|
||||
" bne 2f\n" \
|
||||
- " stwcx. %3,0,%1\n" \
|
||||
+ " stwcx. %3,%y1\n" \
|
||||
" bne- 1b\n" \
|
||||
"2: " __ARCH_ACQ_INSTR \
|
||||
- : "=&r" (__tmp) \
|
||||
- : "b" (mem), "r" (oldval), "r" (newval) \
|
||||
+ : "=&r" (__tmp), "+Z" (*(mem)) \
|
||||
+ : "r" (oldval), "r" (newval) \
|
||||
: "cr0", "memory"); \
|
||||
__tmp != 0; \
|
||||
})
|
||||
@@ -60,14 +60,14 @@
|
||||
({ \
|
||||
unsigned int __tmp; \
|
||||
__asm __volatile (__ARCH_REL_INSTR "\n" \
|
||||
- "1: lwarx %0,0,%1" MUTEX_HINT_REL "\n" \
|
||||
+ "1: lwarx %0,%y1" MUTEX_HINT_REL "\n" \
|
||||
" subf. %0,%2,%0\n" \
|
||||
" bne 2f\n" \
|
||||
- " stwcx. %3,0,%1\n" \
|
||||
+ " stwcx. %3,%y1\n" \
|
||||
" bne- 1b\n" \
|
||||
"2: " \
|
||||
- : "=&r" (__tmp) \
|
||||
- : "b" (mem), "r" (oldval), "r" (newval) \
|
||||
+ : "=&r" (__tmp), "+Z" (*(mem)) \
|
||||
+ : "r" (oldval), "r" (newval) \
|
||||
: "cr0", "memory"); \
|
||||
__tmp != 0; \
|
||||
})
|
||||
--- a/sysdeps/powerpc/powerpc64/bits/atomic.h
|
||||
+++ b/sysdeps/powerpc/powerpc64/bits/atomic.h
|
||||
@@ -44,14 +44,14 @@
|
||||
({ \
|
||||
unsigned int __tmp, __tmp2; \
|
||||
__asm __volatile (" clrldi %1,%1,32\n" \
|
||||
- "1: lwarx %0,0,%2" MUTEX_HINT_ACQ "\n" \
|
||||
+ "1: lwarx %0,%y2" MUTEX_HINT_ACQ "\n" \
|
||||
" subf. %0,%1,%0\n" \
|
||||
" bne 2f\n" \
|
||||
- " stwcx. %4,0,%2\n" \
|
||||
+ " stwcx. %4,%y2\n" \
|
||||
" bne- 1b\n" \
|
||||
"2: " __ARCH_ACQ_INSTR \
|
||||
- : "=&r" (__tmp), "=r" (__tmp2) \
|
||||
- : "b" (mem), "1" (oldval), "r" (newval) \
|
||||
+ : "=&r" (__tmp), "=r" (__tmp2), "+Z" (*(mem)) \
|
||||
+ : "1" (oldval), "r" (newval) \
|
||||
: "cr0", "memory"); \
|
||||
__tmp != 0; \
|
||||
})
|
||||
@@ -61,14 +61,14 @@
|
||||
unsigned int __tmp, __tmp2; \
|
||||
__asm __volatile (__ARCH_REL_INSTR "\n" \
|
||||
" clrldi %1,%1,32\n" \
|
||||
- "1: lwarx %0,0,%2" MUTEX_HINT_REL "\n" \
|
||||
+ "1: lwarx %0,%y2" MUTEX_HINT_REL "\n" \
|
||||
" subf. %0,%1,%0\n" \
|
||||
" bne 2f\n" \
|
||||
- " stwcx. %4,0,%2\n" \
|
||||
+ " stwcx. %4,%y2\n" \
|
||||
" bne- 1b\n" \
|
||||
"2: " \
|
||||
- : "=&r" (__tmp), "=r" (__tmp2) \
|
||||
- : "b" (mem), "1" (oldval), "r" (newval) \
|
||||
+ : "=&r" (__tmp), "=r" (__tmp2), "+Z" (*(mem)) \
|
||||
+ : "1" (oldval), "r" (newval) \
|
||||
: "cr0", "memory"); \
|
||||
__tmp != 0; \
|
||||
})
|
||||
@@ -82,14 +82,14 @@
|
||||
({ \
|
||||
unsigned long __tmp; \
|
||||
__asm __volatile ( \
|
||||
- "1: ldarx %0,0,%1" MUTEX_HINT_ACQ "\n" \
|
||||
+ "1: ldarx %0,%y1" MUTEX_HINT_ACQ "\n" \
|
||||
" subf. %0,%2,%0\n" \
|
||||
" bne 2f\n" \
|
||||
- " stdcx. %3,0,%1\n" \
|
||||
+ " stdcx. %3,%y1\n" \
|
||||
" bne- 1b\n" \
|
||||
"2: " __ARCH_ACQ_INSTR \
|
||||
- : "=&r" (__tmp) \
|
||||
- : "b" (mem), "r" (oldval), "r" (newval) \
|
||||
+ : "=&r" (__tmp), "+Z" (*(mem)) \
|
||||
+ : "r" (oldval), "r" (newval) \
|
||||
: "cr0", "memory"); \
|
||||
__tmp != 0; \
|
||||
})
|
||||
@@ -98,14 +98,14 @@
|
||||
({ \
|
||||
unsigned long __tmp; \
|
||||
__asm __volatile (__ARCH_REL_INSTR "\n" \
|
||||
- "1: ldarx %0,0,%2" MUTEX_HINT_REL "\n" \
|
||||
+ "1: ldarx %0,%y1" MUTEX_HINT_REL "\n" \
|
||||
" subf. %0,%2,%0\n" \
|
||||
" bne 2f\n" \
|
||||
- " stdcx. %3,0,%1\n" \
|
||||
+ " stdcx. %3,%y1\n" \
|
||||
" bne- 1b\n" \
|
||||
"2: " \
|
||||
- : "=&r" (__tmp) \
|
||||
- : "b" (mem), "r" (oldval), "r" (newval) \
|
||||
+ : "=&r" (__tmp), "+Z" (*(mem)) \
|
||||
+ : "r" (oldval), "r" (newval) \
|
||||
: "cr0", "memory"); \
|
||||
__tmp != 0; \
|
||||
})
|
||||
@@ -115,14 +115,14 @@
|
||||
__typeof (*(mem)) __tmp; \
|
||||
__typeof (mem) __memp = (mem); \
|
||||
__asm __volatile ( \
|
||||
- "1: ldarx %0,0,%1" MUTEX_HINT_ACQ "\n" \
|
||||
+ "1: ldarx %0,%y1" MUTEX_HINT_ACQ "\n" \
|
||||
" cmpd %0,%2\n" \
|
||||
" bne 2f\n" \
|
||||
- " stdcx. %3,0,%1\n" \
|
||||
+ " stdcx. %3,%y1\n" \
|
||||
" bne- 1b\n" \
|
||||
"2: " __ARCH_ACQ_INSTR \
|
||||
- : "=&r" (__tmp) \
|
||||
- : "b" (__memp), "r" (oldval), "r" (newval) \
|
||||
+ : "=&r" (__tmp), "+Z" (*__memp) \
|
||||
+ : "r" (oldval), "r" (newval) \
|
||||
: "cr0", "memory"); \
|
||||
__tmp; \
|
||||
})
|
||||
@@ -132,14 +132,14 @@
|
||||
__typeof (*(mem)) __tmp; \
|
||||
__typeof (mem) __memp = (mem); \
|
||||
__asm __volatile (__ARCH_REL_INSTR "\n" \
|
||||
- "1: ldarx %0,0,%1" MUTEX_HINT_REL "\n" \
|
||||
+ "1: ldarx %0,%y1" MUTEX_HINT_REL "\n" \
|
||||
" cmpd %0,%2\n" \
|
||||
" bne 2f\n" \
|
||||
- " stdcx. %3,0,%1\n" \
|
||||
+ " stdcx. %3,%y1\n" \
|
||||
" bne- 1b\n" \
|
||||
"2: " \
|
||||
- : "=&r" (__tmp) \
|
||||
- : "b" (__memp), "r" (oldval), "r" (newval) \
|
||||
+ : "=&r" (__tmp), "+Z" (*__memp) \
|
||||
+ : "r" (oldval), "r" (newval) \
|
||||
: "cr0", "memory"); \
|
||||
__tmp; \
|
||||
})
|
||||
@@ -148,12 +148,12 @@
|
||||
({ \
|
||||
__typeof (*mem) __val; \
|
||||
__asm __volatile (__ARCH_REL_INSTR "\n" \
|
||||
- "1: ldarx %0,0,%2" MUTEX_HINT_ACQ "\n" \
|
||||
- " stdcx. %3,0,%2\n" \
|
||||
+ "1: ldarx %0,%y1" MUTEX_HINT_ACQ "\n" \
|
||||
+ " stdcx. %2,%y1\n" \
|
||||
" bne- 1b\n" \
|
||||
" " __ARCH_ACQ_INSTR \
|
||||
- : "=&r" (__val), "=m" (*mem) \
|
||||
- : "b" (mem), "r" (value), "m" (*mem) \
|
||||
+ : "=&r" (__val), "+Z" (*(mem)) \
|
||||
+ : "r" (value) \
|
||||
: "cr0", "memory"); \
|
||||
__val; \
|
||||
})
|
||||
@@ -162,11 +162,11 @@
|
||||
({ \
|
||||
__typeof (*mem) __val; \
|
||||
__asm __volatile (__ARCH_REL_INSTR "\n" \
|
||||
- "1: ldarx %0,0,%2" MUTEX_HINT_REL "\n" \
|
||||
- " stdcx. %3,0,%2\n" \
|
||||
+ "1: ldarx %0,%y1" MUTEX_HINT_REL "\n" \
|
||||
+ " stdcx. %2,%y1\n" \
|
||||
" bne- 1b" \
|
||||
- : "=&r" (__val), "=m" (*mem) \
|
||||
- : "b" (mem), "r" (value), "m" (*mem) \
|
||||
+ : "=&r" (__val), "+Z" (*(mem)) \
|
||||
+ : "r" (value) \
|
||||
: "cr0", "memory"); \
|
||||
__val; \
|
||||
})
|
||||
@@ -174,12 +174,12 @@
|
||||
#define __arch_atomic_exchange_and_add_64(mem, value) \
|
||||
({ \
|
||||
__typeof (*mem) __val, __tmp; \
|
||||
- __asm __volatile ("1: ldarx %0,0,%3\n" \
|
||||
- " add %1,%0,%4\n" \
|
||||
- " stdcx. %1,0,%3\n" \
|
||||
+ __asm __volatile ("1: ldarx %0,%y2\n" \
|
||||
+ " add %1,%0,%3\n" \
|
||||
+ " stdcx. %1,%y2\n" \
|
||||
" bne- 1b" \
|
||||
- : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
|
||||
- : "b" (mem), "r" (value), "m" (*mem) \
|
||||
+ : "=&b" (__val), "=&r" (__tmp), "+Z" (*(mem)) \
|
||||
+ : "r" (value) \
|
||||
: "cr0", "memory"); \
|
||||
__val; \
|
||||
})
|
||||
@@ -187,12 +187,12 @@
|
||||
#define __arch_atomic_increment_val_64(mem) \
|
||||
({ \
|
||||
__typeof (*(mem)) __val; \
|
||||
- __asm __volatile ("1: ldarx %0,0,%2\n" \
|
||||
+ __asm __volatile ("1: ldarx %0,%y1\n" \
|
||||
" addi %0,%0,1\n" \
|
||||
- " stdcx. %0,0,%2\n" \
|
||||
+ " stdcx. %0,%y1\n" \
|
||||
" bne- 1b" \
|
||||
- : "=&b" (__val), "=m" (*mem) \
|
||||
- : "b" (mem), "m" (*mem) \
|
||||
+ : "=&b" (__val), "+Z" (*(mem)) \
|
||||
+ : \
|
||||
: "cr0", "memory"); \
|
||||
__val; \
|
||||
})
|
||||
@@ -200,27 +200,27 @@
|
||||
#define __arch_atomic_decrement_val_64(mem) \
|
||||
({ \
|
||||
__typeof (*(mem)) __val; \
|
||||
- __asm __volatile ("1: ldarx %0,0,%2\n" \
|
||||
+ __asm __volatile ("1: ldarx %0,%y1\n" \
|
||||
" subi %0,%0,1\n" \
|
||||
- " stdcx. %0,0,%2\n" \
|
||||
+ " stdcx. %0,%y1\n" \
|
||||
" bne- 1b" \
|
||||
- : "=&b" (__val), "=m" (*mem) \
|
||||
- : "b" (mem), "m" (*mem) \
|
||||
+ : "=&b" (__val), "+Z" (*(mem)) \
|
||||
+ : \
|
||||
: "cr0", "memory"); \
|
||||
__val; \
|
||||
})
|
||||
|
||||
#define __arch_atomic_decrement_if_positive_64(mem) \
|
||||
({ int __val, __tmp; \
|
||||
- __asm __volatile ("1: ldarx %0,0,%3\n" \
|
||||
+ __asm __volatile ("1: ldarx %0,%y2\n" \
|
||||
" cmpdi 0,%0,0\n" \
|
||||
" addi %1,%0,-1\n" \
|
||||
" ble 2f\n" \
|
||||
- " stdcx. %1,0,%3\n" \
|
||||
+ " stdcx. %1,%y2\n" \
|
||||
" bne- 1b\n" \
|
||||
"2: " __ARCH_ACQ_INSTR \
|
||||
- : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
|
||||
- : "b" (mem), "m" (*mem) \
|
||||
+ : "=&b" (__val), "=&r" (__tmp), "+Z" (*(mem)) \
|
||||
+ : \
|
||||
: "cr0", "memory"); \
|
||||
__val; \
|
||||
})
|
@ -1,19 +0,0 @@
|
||||
---
|
||||
elf/dl-lookup.c | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
--- a/elf/dl-lookup.c
|
||||
+++ b/elf/dl-lookup.c
|
||||
@@ -301,6 +301,12 @@
|
||||
/* FALLTHROUGH */
|
||||
case STB_GLOBAL:
|
||||
success:
|
||||
+#ifdef __mips__
|
||||
+ /* HACK: MIPS marks its lazy evaluation stubs with SHN_UNDEF
|
||||
+ symbols, we skip them. */
|
||||
+ if (sym->st_shndx == SHN_UNDEF)
|
||||
+ break;
|
||||
+#endif
|
||||
/* Global definition. Just what we need. */
|
||||
result->s = sym;
|
||||
result->m = (struct link_map *) map;
|
16
packages/glibc/2.12.1/0035-alpha-atfcts.patch
vendored
16
packages/glibc/2.12.1/0035-alpha-atfcts.patch
vendored
@ -1,16 +0,0 @@
|
||||
---
|
||||
sysdeps/unix/sysv/linux/kernel-features.h | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/sysdeps/unix/sysv/linux/kernel-features.h
|
||||
+++ b/sysdeps/unix/sysv/linux/kernel-features.h
|
||||
@@ -437,7 +437,8 @@
|
||||
the code. On PPC they were introduced in 2.6.17-rc1,
|
||||
on SH in 2.6.19-rc1. */
|
||||
#if __LINUX_KERNEL_VERSION >= 0x020611 \
|
||||
- && (!defined __sh__ || __LINUX_KERNEL_VERSION >= 0x020613)
|
||||
+ && (!defined __sh__ || __LINUX_KERNEL_VERSION >= 0x020613) \
|
||||
+ && (!defined __alpha__)
|
||||
# define __ASSUME_ATFCTS 1
|
||||
#endif
|
||||
|
15
packages/glibc/2.12.1/0036-syslog.patch
vendored
15
packages/glibc/2.12.1/0036-syslog.patch
vendored
@ -1,15 +0,0 @@
|
||||
---
|
||||
misc/syslog.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/misc/syslog.c
|
||||
+++ b/misc/syslog.c
|
||||
@@ -152,7 +152,7 @@
|
||||
#define INTERNALLOG LOG_ERR|LOG_CONS|LOG_PERROR|LOG_PID
|
||||
/* Check for invalid bits. */
|
||||
if (pri & ~(LOG_PRIMASK|LOG_FACMASK)) {
|
||||
- syslog(INTERNALLOG,
|
||||
+ __syslog(INTERNALLOG,
|
||||
"syslog: unknown facility/priority: %x", pri);
|
||||
pri &= LOG_PRIMASK|LOG_FACMASK;
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
---
|
||||
debug/readlink_chk.c | 2 +-
|
||||
debug/readlinkat_chk.c | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/debug/readlink_chk.c
|
||||
+++ b/debug/readlink_chk.c
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
ssize_t
|
||||
-__readlink_chk (const char *path, void *buf, size_t len, size_t buflen)
|
||||
+__readlink_chk (const char *path, char *buf, size_t len, size_t buflen)
|
||||
{
|
||||
if (len > buflen)
|
||||
__chk_fail ();
|
||||
--- a/debug/readlinkat_chk.c
|
||||
+++ b/debug/readlinkat_chk.c
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
|
||||
ssize_t
|
||||
-__readlinkat_chk (int fd, const char *path, void *buf, size_t len,
|
||||
+__readlinkat_chk (int fd, const char *path, char *buf, size_t len,
|
||||
size_t buflen)
|
||||
{
|
||||
if (len > buflen)
|
37
packages/glibc/2.12.1/0038-march-i686.patch
vendored
37
packages/glibc/2.12.1/0038-march-i686.patch
vendored
@ -1,37 +0,0 @@
|
||||
2007-02-15 Khem Raj <kraj@xxxxxxxxxx>
|
||||
|
||||
* sysdeps/unix/sysv/linux/i386/sysdep.h: Re-define __i686.
|
||||
* nptl/sysdeps/pthread/pt-initfini.c: Ditto.
|
||||
|
||||
---
|
||||
nptl/sysdeps/pthread/pt-initfini.c | 5 +++++
|
||||
sysdeps/unix/sysv/linux/i386/sysdep.h | 4 ++++
|
||||
2 files changed, 9 insertions(+)
|
||||
|
||||
--- a/nptl/sysdeps/pthread/pt-initfini.c
|
||||
+++ b/nptl/sysdeps/pthread/pt-initfini.c
|
||||
@@ -45,6 +45,11 @@
|
||||
/* Embed an #include to pull in the alignment and .end directives. */
|
||||
asm ("\n#include \"defs.h\"");
|
||||
|
||||
+asm ("\n#if defined __i686 && defined __ASSEMBLER__");
|
||||
+asm ("\n#undef __i686");
|
||||
+asm ("\n#define __i686 __i686");
|
||||
+asm ("\n#endif");
|
||||
+
|
||||
/* The initial common code ends here. */
|
||||
asm ("\n/*@HEADER_ENDS*/");
|
||||
|
||||
--- a/sysdeps/unix/sysv/linux/i386/sysdep.h
|
||||
+++ b/sysdeps/unix/sysv/linux/i386/sysdep.h
|
||||
@@ -29,6 +29,10 @@
|
||||
#include <dl-sysdep.h>
|
||||
#include <tls.h>
|
||||
|
||||
+#if defined __i686 && defined __ASSEMBLER__
|
||||
+#undef __i686
|
||||
+#define __i686 __i686
|
||||
+#endif
|
||||
|
||||
/* For Linux we can use the system call table in the header file
|
||||
/usr/include/asm/unistd.h
|
31
packages/glibc/2.12.1/0039-typedef-caddr.patch
vendored
31
packages/glibc/2.12.1/0039-typedef-caddr.patch
vendored
@ -1,31 +0,0 @@
|
||||
---
|
||||
posix/sys/types.h | 3 +++
|
||||
sunrpc/rpc/types.h | 3 +++
|
||||
2 files changed, 6 insertions(+)
|
||||
|
||||
--- a/posix/sys/types.h
|
||||
+++ b/posix/sys/types.h
|
||||
@@ -114,7 +114,10 @@
|
||||
#ifdef __USE_BSD
|
||||
# ifndef __daddr_t_defined
|
||||
typedef __daddr_t daddr_t;
|
||||
+# if ! defined(caddr_t) && ! defined(__caddr_t_defined)
|
||||
typedef __caddr_t caddr_t;
|
||||
+# define __caddr_t_defined
|
||||
+# endif
|
||||
# define __daddr_t_defined
|
||||
# endif
|
||||
#endif
|
||||
--- a/sunrpc/rpc/types.h
|
||||
+++ b/sunrpc/rpc/types.h
|
||||
@@ -85,7 +85,10 @@
|
||||
#endif
|
||||
#ifndef __daddr_t_defined
|
||||
typedef __daddr_t daddr_t;
|
||||
+# if ! defined(caddr_t) && ! defined(__caddr_t_defined)
|
||||
typedef __caddr_t caddr_t;
|
||||
+# define __caddr_t_defined
|
||||
+# endif
|
||||
# define __daddr_t_defined
|
||||
#endif
|
||||
|
@ -1,62 +0,0 @@
|
||||
commit 5874510faaf3cbd0bb112aaacab9f225002beed1
|
||||
Author: Joseph Myers <joseph@codesourcery.com>
|
||||
Date: Tue Nov 8 23:44:51 2016 +0000
|
||||
|
||||
Fix rpcgen buffer overrun (bug 20790).
|
||||
|
||||
Building with GCC 7 produces an error building rpcgen:
|
||||
|
||||
rpc_parse.c: In function 'get_prog_declaration':
|
||||
rpc_parse.c:543:25: error: may write a terminating nul past the end of the destination [-Werror=format-length=]
|
||||
sprintf (name, "%s%d", ARGNAME, num); /* default name of argument */
|
||||
~~~~^
|
||||
rpc_parse.c:543:5: note: format output between 5 and 14 bytes into a destination of size 10
|
||||
sprintf (name, "%s%d", ARGNAME, num); /* default name of argument */
|
||||
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
That buffer overrun is for the case where the .x file declares a
|
||||
program with a million arguments. The strcpy two lines above can
|
||||
generate a buffer overrun much more simply for a long argument name.
|
||||
|
||||
The limit on length of line read by rpcgen (MAXLINESIZE == 1024)
|
||||
provides a bound on the buffer size needed, so this patch just changes
|
||||
the buffer size to MAXLINESIZE to avoid both possible buffer
|
||||
overruns. A testcase is added that rpcgen does not crash with a
|
||||
500-character argument name, where it previously crashed.
|
||||
|
||||
It would not at all surprise me if there are many other ways of
|
||||
crashing rpcgen with either valid or invalid input; fuzz testing would
|
||||
likely find various such bugs, though I don't think they are that
|
||||
important to fix (rpcgen is not that likely to be used with untrusted
|
||||
.x files as input). (As well as fuzz-findable bugs there are probably
|
||||
also issues when various int variables get overflowed on very large
|
||||
input.) The test infrastructure for rpcgen-not-crashing tests would
|
||||
need extending if tests are to be added for cases where rpcgen should
|
||||
produce an error, as opposed to cases where it should succeed.
|
||||
|
||||
Tested for x86_64 and x86.
|
||||
|
||||
[BZ #20790]
|
||||
* sunrpc/rpc_parse.c (get_prog_declaration): Increase buffer size
|
||||
to MAXLINESIZE.
|
||||
* sunrpc/bug20790.x: New file.
|
||||
* sunrpc/Makefile [$(run-built-tests) = yes] (rpcgen-tests): New
|
||||
variable.
|
||||
[$(run-built-tests) = yes] (tests-special): Add $(rpcgen-tests).
|
||||
[$(run-built-tests) = yes] ($(rpcgen-tests)): New rule.
|
||||
|
||||
---
|
||||
sunrpc/rpc_parse.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/sunrpc/rpc_parse.c
|
||||
+++ b/sunrpc/rpc_parse.c
|
||||
@@ -520,7 +520,7 @@
|
||||
get_prog_declaration (declaration * dec, defkind dkind, int num /* arg number */ )
|
||||
{
|
||||
token tok;
|
||||
- char name[10]; /* argument name */
|
||||
+ char name[MAXLINESIZE]; /* argument name */
|
||||
|
||||
if (dkind == DEF_PROGRAM)
|
||||
{
|
19
packages/glibc/2.12.1/0041-make-382.patch
vendored
19
packages/glibc/2.12.1/0041-make-382.patch
vendored
@ -1,19 +0,0 @@
|
||||
http://git.frugalware.org/gitweb/gitweb.cgi?p=frugalware-current.git;a=blob_plain;f=source/base/glibc/make-3.82-fix.patch;hb=8217c32ecc2e14962847ba3d8a272eb64a3dba4f
|
||||
|
||||
---
|
||||
manual/Makefile | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/manual/Makefile
|
||||
+++ b/manual/Makefile
|
||||
@@ -237,7 +237,9 @@
|
||||
.PHONY: stubs
|
||||
stubs: $(objpfx)stubs
|
||||
endif
|
||||
-$(objpfx)stubs ../po/manual.pot $(objpfx)stamp%:
|
||||
+$(objpfx)stubs ../po/manual.pot:
|
||||
+ touch $@
|
||||
+$(objpfx)stamp%:
|
||||
$(make-target-directory)
|
||||
touch $@
|
||||
|
@ -1,64 +0,0 @@
|
||||
commit f88759ea9bd3c8d8fef28f123ba9767cb0e421a3
|
||||
Author: Joseph Myers <joseph@codesourcery.com>
|
||||
Date: Wed Dec 21 23:44:01 2016 +0000
|
||||
|
||||
Fix nss_nisplus build with mainline GCC (bug 20978).
|
||||
|
||||
glibc build with current mainline GCC fails because
|
||||
nis/nss_nisplus/nisplus-alias.c contains code
|
||||
|
||||
if (name != NULL)
|
||||
{
|
||||
*errnop = EINVAL;
|
||||
return NSS_STATUS_UNAVAIL;
|
||||
}
|
||||
|
||||
char buf[strlen (name) + 9 + tablename_len];
|
||||
|
||||
producing an error about strlen being called on a pointer that is
|
||||
always NULL (and a subsequent use of that pointer with a %s format in
|
||||
snprintf).
|
||||
|
||||
As Andreas noted, the bogus conditional comes from a 1997 change:
|
||||
|
||||
- if (name == NULL || strlen(name) > 8)
|
||||
- return NSS_STATUS_NOTFOUND;
|
||||
- else
|
||||
+ if (name != NULL || strlen(name) <= 8)
|
||||
|
||||
So the intention is clearly to return an error for NULL name.
|
||||
|
||||
This patch duly inverts the sense of the conditional. It fixes the
|
||||
build with GCC mainline, and passes usual glibc testsuite testing for
|
||||
x86_64. However, I have not tried any actual substantive nisplus
|
||||
testing, do not have an environment for such testing, and do not know
|
||||
whether it is possible that strlen (name) or tablename_len might be
|
||||
large so that the VLA for buf is actually a security issue. However,
|
||||
if it is a security issue, there are plenty of other similar instances
|
||||
in the nisplus code (that haven't been hidden by a bogus comparison
|
||||
with NULL) - and nis_table.c:__create_ib_request uses strdupa on the
|
||||
string passed to nis_list, so a local fix in the caller wouldn't
|
||||
suffice anyway (see bug 20987). (Calls to strdupa and other such
|
||||
macros that use alloca must be considered equally questionable
|
||||
regarding stack overflow issues as direct calls to alloca and VLA
|
||||
declarations.)
|
||||
|
||||
[BZ #20978]
|
||||
* nis/nss_nisplus/nisplus-alias.c (_nss_nisplus_getaliasbyname_r):
|
||||
Compare name == NULL, not name != NULL.
|
||||
|
||||
---
|
||||
nis/nss_nisplus/nisplus-alias.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/nis/nss_nisplus/nisplus-alias.c
|
||||
+++ b/nis/nss_nisplus/nisplus-alias.c
|
||||
@@ -293,7 +293,7 @@
|
||||
return status;
|
||||
}
|
||||
|
||||
- if (name != NULL)
|
||||
+ if (name == NULL)
|
||||
{
|
||||
*errnop = EINVAL;
|
||||
return NSS_STATUS_UNAVAIL;
|
32
packages/glibc/2.12.1/0043-obstack-common.patch
vendored
32
packages/glibc/2.12.1/0043-obstack-common.patch
vendored
@ -1,32 +0,0 @@
|
||||
commit 39b1f6172a2f9ddc74a8f82d6e84dd13b22dbaf2
|
||||
Author: Peter Collingbourne <pcc@google.com>
|
||||
Date: Wed May 15 20:28:08 2013 +0200
|
||||
|
||||
Move _obstack_compat out of common
|
||||
|
||||
it is impossible to create an alias of a common symbol (as
|
||||
compat_symbol does), because common symbols do not have a section or
|
||||
an offset until linked. GNU as tolerates aliases of common symbols by
|
||||
simply creating another common symbol, but other assemblers (notably
|
||||
LLVM's integrated assembler) are less tolerant.
|
||||
|
||||
2013-05-15 Peter Collingbourne <pcc@google.com>
|
||||
|
||||
* malloc/obstack.c (_obstack_compat): Add initializer.
|
||||
-
|
||||
|
||||
---
|
||||
malloc/obstack.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/malloc/obstack.c
|
||||
+++ b/malloc/obstack.c
|
||||
@@ -117,7 +117,7 @@
|
||||
/* A looong time ago (before 1994, anyway; we're not sure) this global variable
|
||||
was used by non-GNU-C macros to avoid multiple evaluation. The GNU C
|
||||
library still exports it because somebody might use it. */
|
||||
-struct obstack *_obstack_compat;
|
||||
+struct obstack *_obstack_compat = 0;
|
||||
compat_symbol (libc, _obstack_compat, _obstack, GLIBC_2_0);
|
||||
# endif
|
||||
# endif
|
72
packages/glibc/2.12.1/0044-new-tools.patch
vendored
72
packages/glibc/2.12.1/0044-new-tools.patch
vendored
@ -1,72 +0,0 @@
|
||||
---
|
||||
configure | 8 ++++----
|
||||
configure.in | 8 ++++----
|
||||
2 files changed, 8 insertions(+), 8 deletions(-)
|
||||
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -5079,7 +5079,7 @@
|
||||
ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'`
|
||||
case $ac_prog_version in
|
||||
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
|
||||
- 3.4* | 4.[0-9]* )
|
||||
+ 3.4* | [4-9].* | [1-9][0-9]* )
|
||||
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
|
||||
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
|
||||
|
||||
@@ -5142,7 +5142,7 @@
|
||||
ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'`
|
||||
case $ac_prog_version in
|
||||
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
|
||||
- 3.79* | 3.[89]*)
|
||||
+ 3.79* | 3.[89]* | [4-9].* | [1-9][0-9]*)
|
||||
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
|
||||
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
|
||||
|
||||
@@ -5269,7 +5269,7 @@
|
||||
ac_prog_version=`$MAKEINFO --version 2>&1 | sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'`
|
||||
case $ac_prog_version in
|
||||
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
|
||||
- 4.*)
|
||||
+ [4-9].*)
|
||||
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
|
||||
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
|
||||
|
||||
@@ -5329,7 +5329,7 @@
|
||||
# Found it, now check the version.
|
||||
{ $as_echo "$as_me:$LINENO: checking version of $SED" >&5
|
||||
$as_echo_n "checking version of $SED... " >&6; }
|
||||
- ac_prog_version=`$SED --version 2>&1 | sed -n 's/^.*GNU sed version \([0-9]*\.[0-9.]*\).*$/\1/p'`
|
||||
+ ac_prog_version=`$SED --version 2>&1 | sed -n 's/^.*GNU sed[^0-9]* \([0-9]*\.[0-9.]*\).*$/\1/p'`
|
||||
case $ac_prog_version in
|
||||
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
|
||||
3.0[2-9]*|3.[1-9]*|[4-9]*)
|
||||
--- a/configure.in
|
||||
+++ b/configure.in
|
||||
@@ -960,11 +960,11 @@
|
||||
# These programs are version sensitive.
|
||||
AC_CHECK_TOOL_PREFIX
|
||||
AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
|
||||
- [version \([egcygnustpi-]*[0-9.]*\)], [3.4* | 4.[0-9]* ],
|
||||
+ [version \([egcygnustpi-]*[0-9.]*\)], [3.4* | [4-9].* | [1-9][0-9].* ],
|
||||
critic_missing="$critic_missing gcc")
|
||||
AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
|
||||
[GNU Make[^0-9]*\([0-9][0-9.]*\)],
|
||||
- [3.79* | 3.[89]*], critic_missing="$critic_missing make")
|
||||
+ [3.79* | 3.[89]* | [4-9].* | [1-9][0-9]*], critic_missing="$critic_missing make")
|
||||
|
||||
AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
|
||||
[GNU gettext.* \([0-9]*\.[0-9.]*\)],
|
||||
@@ -972,10 +972,10 @@
|
||||
MSGFMT=: aux_missing="$aux_missing msgfmt")
|
||||
AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
|
||||
[GNU texinfo.* \([0-9][0-9.]*\)],
|
||||
- [4.*],
|
||||
+ [[4-9].*],
|
||||
MAKEINFO=: aux_missing="$aux_missing makeinfo")
|
||||
AC_CHECK_PROG_VER(SED, sed, --version,
|
||||
- [GNU sed version \([0-9]*\.[0-9.]*\)],
|
||||
+ [GNU sed[^0-9]* \([0-9]*\.[0-9.]*\)],
|
||||
[3.0[2-9]*|3.[1-9]*|[4-9]*],
|
||||
SED=: aux_missing="$aux_missing sed")
|
||||
|
@ -1,73 +0,0 @@
|
||||
commit e4043b84c49e1cf9bcf1e8320233343ecc34f8eb
|
||||
Author: Joseph Myers <joseph@codesourcery.com>
|
||||
Date: Tue Jun 27 17:12:13 2017 +0000
|
||||
|
||||
Fix strftime build with GCC 8.
|
||||
|
||||
Building with current GCC mainline fails with:
|
||||
|
||||
strftime_l.c: In function '__strftime_internal':
|
||||
strftime_l.c:719:4: error: macro expands to multiple statements [-Werror=multistatement-macros]
|
||||
digits = d > width ? d : width; \
|
||||
^
|
||||
strftime_l.c:1260:6: note: in expansion of macro 'DO_NUMBER'
|
||||
DO_NUMBER (1, tp->tm_year + TM_YEAR_BASE);
|
||||
^~~~~~~~~
|
||||
strftime_l.c:1259:4: note: some parts of macro expansion are not guarded by this 'else' clause
|
||||
else
|
||||
^~~~
|
||||
|
||||
In fact this particular instance is harmless; the code looks like:
|
||||
|
||||
if (modifier == L_('O'))
|
||||
goto bad_format;
|
||||
else
|
||||
DO_NUMBER (1, tp->tm_year + TM_YEAR_BASE);
|
||||
|
||||
and because of the goto, it doesn't matter that part of the expansion
|
||||
isn't under the "else" conditional. But it's also clearly bad style
|
||||
to rely on that. This patch changes DO_NUMBER and DO_NUMBER_SPACEPAD
|
||||
to use do { } while (0) to avoid such problems.
|
||||
|
||||
Tested (full testsuite) for x86_64 (GCC 6), and with
|
||||
build-many-glibcs.py with GCC mainline, in conjunction with my libgcc
|
||||
patch <https://gcc.gnu.org/ml/gcc-patches/2017-06/msg02032.html>.
|
||||
|
||||
* time/strftime_l.c (DO_NUMBER): Define using do { } while (0).
|
||||
(DO_NUMBER_SPACEPAD): Likewise.
|
||||
|
||||
---
|
||||
time/strftime_l.c | 22 ++++++++++++++++------
|
||||
1 file changed, 16 insertions(+), 6 deletions(-)
|
||||
|
||||
--- a/time/strftime_l.c
|
||||
+++ b/time/strftime_l.c
|
||||
@@ -742,12 +742,22 @@
|
||||
format_char = *f;
|
||||
switch (format_char)
|
||||
{
|
||||
-#define DO_NUMBER(d, v) \
|
||||
- digits = d > width ? d : width; \
|
||||
- number_value = v; goto do_number
|
||||
-#define DO_NUMBER_SPACEPAD(d, v) \
|
||||
- digits = d > width ? d : width; \
|
||||
- number_value = v; goto do_number_spacepad
|
||||
+#define DO_NUMBER(d, v) \
|
||||
+ do \
|
||||
+ { \
|
||||
+ digits = d > width ? d : width; \
|
||||
+ number_value = v; \
|
||||
+ goto do_number; \
|
||||
+ } \
|
||||
+ while (0)
|
||||
+#define DO_NUMBER_SPACEPAD(d, v) \
|
||||
+ do \
|
||||
+ { \
|
||||
+ digits = d > width ? d : width; \
|
||||
+ number_value = v; \
|
||||
+ goto do_number_spacepad; \
|
||||
+ } \
|
||||
+ while (0)
|
||||
|
||||
case L_('%'):
|
||||
if (modifier != 0)
|
@ -1,29 +0,0 @@
|
||||
commit 2180fee114b778515b3f560e5ff1e795282e60b0
|
||||
Author: Steve Ellcey <sellcey@caviumnetworks.com>
|
||||
Date: Wed Nov 15 08:58:48 2017 -0800
|
||||
|
||||
Check length of ifname before copying it into to ifreq structure.
|
||||
|
||||
[BZ #22442]
|
||||
* sysdeps/unix/sysv/linux/if_index.c (__if_nametoindex):
|
||||
Check if ifname is too long.
|
||||
|
||||
---
|
||||
sysdeps/unix/sysv/linux/if_index.c | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
--- a/sysdeps/unix/sysv/linux/if_index.c
|
||||
+++ b/sysdeps/unix/sysv/linux/if_index.c
|
||||
@@ -54,6 +54,12 @@
|
||||
if (fd < 0)
|
||||
return 0;
|
||||
|
||||
+ if (strlen (ifname) >= IFNAMSIZ)
|
||||
+ {
|
||||
+ __set_errno (ENODEV);
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
strncpy (ifr.ifr_name, ifname, sizeof (ifr.ifr_name));
|
||||
if (__ioctl (fd, SIOCGIFINDEX, &ifr) < 0)
|
||||
{
|
80
packages/glibc/2.12.1/0047-utmp-nonstring.patch
vendored
80
packages/glibc/2.12.1/0047-utmp-nonstring.patch
vendored
@ -1,80 +0,0 @@
|
||||
commit 7532837d7b03b3ca5b9a63d77a5bd81dd23f3d9c
|
||||
Author: Martin Sebor <msebor@redhat.com>
|
||||
Date: Wed Nov 15 17:39:59 2017 -0700
|
||||
|
||||
The -Wstringop-truncation option new in GCC 8 detects common misuses
|
||||
of the strncat and strncpy function that may result in truncating
|
||||
the copied string before the terminating NUL. To avoid false positive
|
||||
warnings for correct code that intentionally creates sequences of
|
||||
characters that aren't guaranteed to be NUL-terminated, arrays that
|
||||
are intended to store such sequences should be decorated with a new
|
||||
nonstring attribute. This change add this attribute to Glibc and
|
||||
uses it to suppress such false positives.
|
||||
|
||||
ChangeLog:
|
||||
* misc/sys/cdefs.h (__attribute_nonstring__): New macro.
|
||||
* sysdeps/gnu/bits/utmp.h (struct utmp): Use it.
|
||||
* sysdeps/unix/sysv/linux/s390/bits/utmp.h (struct utmp): Same.
|
||||
|
||||
---
|
||||
misc/sys/cdefs.h | 9 +++++++++
|
||||
sysdeps/gnu/bits/utmp.h | 9 ++++++---
|
||||
sysdeps/unix/sysv/linux/s390/bits/utmp.h | 9 ++++++---
|
||||
3 files changed, 21 insertions(+), 6 deletions(-)
|
||||
|
||||
--- a/misc/sys/cdefs.h
|
||||
+++ b/misc/sys/cdefs.h
|
||||
@@ -350,6 +350,15 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
+#if __GNUC_PREREQ (8, 0)
|
||||
+/* Describes a char array whose address can safely be passed as the first
|
||||
+ argument to strncpy and strncat, as the char array is not necessarily
|
||||
+ a NUL-terminated string. */
|
||||
+# define __attribute_nonstring__ __attribute__ ((__nonstring__))
|
||||
+#else
|
||||
+# define __attribute_nonstring__
|
||||
+#endif
|
||||
+
|
||||
#include <bits/wordsize.h>
|
||||
|
||||
#if defined __LONG_DOUBLE_MATH_OPTIONAL && defined __NO_LONG_DOUBLE_MATH
|
||||
--- a/sysdeps/gnu/bits/utmp.h
|
||||
+++ b/sysdeps/gnu/bits/utmp.h
|
||||
@@ -61,10 +61,13 @@
|
||||
{
|
||||
short int ut_type; /* Type of login. */
|
||||
pid_t ut_pid; /* Process ID of login process. */
|
||||
- char ut_line[UT_LINESIZE]; /* Devicename. */
|
||||
+ char ut_line[UT_LINESIZE]
|
||||
+ __attribute_nonstring__; /* Devicename. */
|
||||
char ut_id[4]; /* Inittab ID. */
|
||||
- char ut_user[UT_NAMESIZE]; /* Username. */
|
||||
- char ut_host[UT_HOSTSIZE]; /* Hostname for remote login. */
|
||||
+ char ut_user[UT_NAMESIZE]
|
||||
+ __attribute_nonstring__; /* Username. */
|
||||
+ char ut_host[UT_HOSTSIZE]
|
||||
+ __attribute_nonstring__; /* Hostname for remote login. */
|
||||
struct exit_status ut_exit; /* Exit status of a process marked
|
||||
as DEAD_PROCESS. */
|
||||
/* The ut_session and ut_tv fields must be the same size when compiled
|
||||
--- a/sysdeps/unix/sysv/linux/s390/bits/utmp.h
|
||||
+++ b/sysdeps/unix/sysv/linux/s390/bits/utmp.h
|
||||
@@ -61,10 +61,13 @@
|
||||
{
|
||||
short int ut_type; /* Type of login. */
|
||||
pid_t ut_pid; /* Process ID of login process. */
|
||||
- char ut_line[UT_LINESIZE]; /* Devicename. */
|
||||
+ char ut_line[UT_LINESIZE]
|
||||
+ __attribute_nonstring__; /* Devicename. */
|
||||
char ut_id[4]; /* Inittab ID. */
|
||||
- char ut_user[UT_NAMESIZE]; /* Username. */
|
||||
- char ut_host[UT_HOSTSIZE]; /* Hostname for remote login. */
|
||||
+ char ut_user[UT_NAMESIZE]
|
||||
+ __attribute_nonstring__; /* Username. */
|
||||
+ char ut_host[UT_HOSTSIZE]
|
||||
+ __attribute_nonstring__; /* Hostname for remote login. */
|
||||
struct exit_status ut_exit; /* Exit status of a process marked
|
||||
as DEAD_PROCESS. */
|
||||
/* The ut_session and ut_tv fields must be the same size when compiled
|
@ -1,47 +0,0 @@
|
||||
commit 4bae615022cb5a5da79ccda83cc6c9ba9f2d479c
|
||||
Author: Joseph Myers <joseph@codesourcery.com>
|
||||
Date: Wed Nov 22 18:44:23 2017 +0000
|
||||
|
||||
Avoid use of strlen in getlogin_r (bug 22447).
|
||||
|
||||
Building glibc with current mainline GCC fails, among other reasons,
|
||||
because of an error for use of strlen on the nonstring ut_user field.
|
||||
This patch changes the problem code in getlogin_r to use __strnlen
|
||||
instead. It also needs to set the trailing NUL byte of the result
|
||||
explicitly, because of the case where ut_user does not have such a
|
||||
trailing NUL byte (but the result should always have one).
|
||||
|
||||
Tested for x86_64. Also tested that, in conjunction with
|
||||
<https://sourceware.org/ml/libc-alpha/2017-11/msg00797.html>, it fixes
|
||||
the build for arm with mainline GCC.
|
||||
|
||||
[BZ #22447]
|
||||
* sysdeps/unix/getlogin_r.c (__getlogin_r): Use __strnlen not
|
||||
strlen to compute length of ut_user and set trailing NUL byte of
|
||||
result explicitly.
|
||||
|
||||
---
|
||||
sysdeps/unix/getlogin_r.c | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/sysdeps/unix/getlogin_r.c
|
||||
+++ b/sysdeps/unix/getlogin_r.c
|
||||
@@ -83,7 +83,7 @@
|
||||
|
||||
if (result == 0)
|
||||
{
|
||||
- size_t needed = strlen (ut->ut_user) + 1;
|
||||
+ size_t needed = __strnlen (ut->ut_user, UT_NAMESIZE) + 1;
|
||||
|
||||
if (needed > name_len)
|
||||
{
|
||||
@@ -92,7 +92,8 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
- memcpy (name, ut->ut_user, needed);
|
||||
+ memcpy (name, ut->ut_user, needed - 1);
|
||||
+ name[needed - 1] = 0;
|
||||
result = 0;
|
||||
}
|
||||
}
|
@ -1,25 +0,0 @@
|
||||
commit e69897bf202e18034cbef26f363bae64de70a196
|
||||
Author: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Date: Sun Nov 12 22:00:28 2017 -0800
|
||||
|
||||
timezone: pacify GCC -Wstringop-truncation
|
||||
|
||||
Problem reported by Martin Sebor in:
|
||||
https://sourceware.org/ml/libc-alpha/2017-11/msg00336.html
|
||||
* timezone/zic.c (writezone): Use memcpy, not strncpy.
|
||||
|
||||
---
|
||||
timezone/zic.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/timezone/zic.c
|
||||
+++ b/timezone/zic.c
|
||||
@@ -1648,7 +1648,7 @@
|
||||
#define DO(field) (void) fwrite((void *) tzh.field, \
|
||||
(size_t) sizeof tzh.field, (size_t) 1, fp)
|
||||
tzh = tzh0;
|
||||
- (void) strncpy(tzh.tzh_magic, TZ_MAGIC, sizeof tzh.tzh_magic);
|
||||
+ memcpy(tzh.tzh_magic, TZ_MAGIC, sizeof tzh.tzh_magic);
|
||||
tzh.tzh_version[0] = ZIC_VERSION;
|
||||
convert(eitol(thistypecnt), tzh.tzh_ttisgmtcnt);
|
||||
convert(eitol(thistypecnt), tzh.tzh_ttisstdcnt);
|
@ -1,292 +0,0 @@
|
||||
commit 95f5a9a866695da4e038aa4e6ccbbfd5d9cf63b7
|
||||
Author: Joseph Myers <joseph@codesourcery.com>
|
||||
Date: Tue Jul 3 19:14:59 2012 +0000
|
||||
|
||||
Avoid use of libgcc_s and libgcc_eh when building glibc.
|
||||
|
||||
---
|
||||
Makeconfig | 69 ++++++++++++++++++++++++++++++++++++++++++++++-------
|
||||
Rules | 39 +++++++++++++++++++++++------
|
||||
elf/Makefile | 6 +++-
|
||||
elf/static-stubs.c | 46 +++++++++++++++++++++++++++++++++++
|
||||
4 files changed, 142 insertions(+), 18 deletions(-)
|
||||
|
||||
--- a/Makeconfig
|
||||
+++ b/Makeconfig
|
||||
@@ -429,9 +429,9 @@
|
||||
LDFLAGS-rtld += $(hashstyle-LDFLAGS)
|
||||
endif
|
||||
|
||||
-# Command for linking programs with the C library.
|
||||
+# Commands for linking programs with the C library.
|
||||
ifndef +link
|
||||
-+link = $(CC) -nostdlib -nostartfiles -o $@ \
|
||||
++link-before-libc = $(CC) -nostdlib -nostartfiles -o $@ \
|
||||
$(sysdep-LDFLAGS) $(config-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
|
||||
$(combreloc-LDFLAGS) $(relro-LDFLAGS) $(hashstyle-LDFLAGS) \
|
||||
$(addprefix $(csu-objpfx),$(start-installed-name)) \
|
||||
@@ -440,7 +440,10 @@
|
||||
$(start-installed-name))\
|
||||
$(+preinit) $(link-extra-libs) \
|
||||
$(common-objpfx)libc% $(+postinit),$^) \
|
||||
- $(link-extra-libs) $(link-libc) $(+postctor) $(+postinit)
|
||||
+ $(link-extra-libs)
|
||||
++link-after-libc = $(+postctor) $(+postinit)
|
||||
++link = $(+link-before-libc) $(link-libc) $(+link-after-libc)
|
||||
++link-tests = $(+link-before-libc) $(link-libc-tests) $(+link-after-libc)
|
||||
endif
|
||||
# Command for linking PIE programs with the C library.
|
||||
ifndef +link-pie
|
||||
@@ -457,7 +460,7 @@
|
||||
endif
|
||||
# Command for statically linking programs with the C library.
|
||||
ifndef +link-static
|
||||
-+link-static = $(CC) -nostdlib -nostartfiles -static -o $@ \
|
||||
++link-static-before-libc = $(CC) -nostdlib -nostartfiles -static -o $@ \
|
||||
$(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
|
||||
$(addprefix $(csu-objpfx),$(static-start-installed-name)) \
|
||||
$(+preinit) $(+prector) \
|
||||
@@ -465,7 +468,12 @@
|
||||
$(start-installed-name))\
|
||||
$(+preinit) $(link-extra-libs-static) \
|
||||
$(common-objpfx)libc% $(+postinit),$^) \
|
||||
- $(link-extra-libs-static) $(link-libc-static) $(+postctor) $(+postinit)
|
||||
+ $(link-extra-libs-static) $(link-libc-static)
|
||||
++link-static-after-libc = $(+postctor) $(+postinit)
|
||||
++link-static = $(+link-static-before-libc) $(link-libc-static) \
|
||||
+ $(+link-static-after-libc)
|
||||
++link-static-tests = $(+link-static-before-libc) $(link-libc-static-tests) \
|
||||
+ $(+link-static-after-libc)
|
||||
endif
|
||||
# Command for statically linking bounded-pointer programs with the C library.
|
||||
ifndef +link-bounded
|
||||
@@ -490,10 +498,12 @@
|
||||
# We need the versioned name of libc.so in the deps of $(others) et al
|
||||
# so that the symlink to libc.so is created before anything tries to
|
||||
# run the linked programs.
|
||||
-link-libc = -Wl,-rpath-link=$(rpath-link) \
|
||||
+link-libc-before-gnulib = -Wl,-rpath-link=$(rpath-link) \
|
||||
$(common-objpfx)libc.so$(libc.so-version) \
|
||||
$(common-objpfx)$(patsubst %,$(libtype.oS),c) \
|
||||
- $(as-needed) $(common-objpfx)elf/ld.so $(no-as-needed) $(gnulib)
|
||||
+ $(as-needed) $(common-objpfx)elf/ld.so $(no-as-needed)
|
||||
+link-libc = $(link-libc-before-gnulib) $(gnulib)
|
||||
+link-libc-tests = $(link-libc-before-gnulib) $(gnulib-tests)
|
||||
# This is how to find at build-time things that will be installed there.
|
||||
rpath-dirs = math elf dlfcn nss nis rt resolv crypt
|
||||
endif
|
||||
@@ -504,6 +514,7 @@
|
||||
nssobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)nss)
|
||||
resolvobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)resolv)
|
||||
link-libc = $(common-objpfx)libc.a $(otherlibs) $(gnulib) $(common-objpfx)libc.a $(gnulib)
|
||||
+link-libc-tests = $(common-objpfx)libc.a $(otherlibs) $(gnulib-tests) $(common-objpfx)libc.a $(gnulib-tests)
|
||||
endif
|
||||
endif
|
||||
|
||||
@@ -532,14 +543,50 @@
|
||||
# The static libraries.
|
||||
ifeq (yes,$(build-static))
|
||||
link-libc-static = $(common-objpfx)libc.a $(static-gnulib) $(otherlibs) $(common-objpfx)libc.a
|
||||
+link-libc-static-tests = $(common-objpfx)libc.a $(static-gnulib-tests) $(otherlibs) $(common-objpfx)libc.a
|
||||
else
|
||||
ifeq (yes,$(build-shared))
|
||||
# We can try to link the programs with lib*_pic.a...
|
||||
link-libc-static = $(static-gnulib) $(common-objpfx)libc_pic.a
|
||||
+link-libc-static-tests = $(static-gnulib-tests) $(common-objpfx)libc_pic.a
|
||||
endif
|
||||
endif
|
||||
link-libc-bounded = $(common-objpfx)libc_b.a $(gnulib) $(common-objpfx)libc_b.a
|
||||
|
||||
+# How to link against libgcc. Some libgcc functions, such as those
|
||||
+# for "long long" arithmetic or software floating point, can always be
|
||||
+# built without use of C library headers and do not have any global
|
||||
+# state so can safely be linked statically into any executable or
|
||||
+# shared library requiring them; these functions are in libgcc.a.
|
||||
+# Other functions, relating to exception handling, may require C
|
||||
+# library headers to build and it may not be safe to have more than
|
||||
+# one copy of them in a process; these functions are only in
|
||||
+# libgcc_s.so and libgcc_eh.a.
|
||||
+#
|
||||
+# To avoid circular dependencies when bootstrapping, it is desirable
|
||||
+# to avoid use of libgcc_s and libgcc_eh in building glibc. Where any
|
||||
+# glibc functionality (in particular, thread cancellation) requires
|
||||
+# exception handling, this is implemented through dlopen of libgcc_s
|
||||
+# to avoid unnecessary dependencies on libgcc_s by programs not using
|
||||
+# that functionality; executables built with glibc do not use
|
||||
+# exception handling other than through thread cancellation.
|
||||
+#
|
||||
+# Undefined references to functions from libgcc_eh or libgcc_s may
|
||||
+# arise for code built with -fexceptions. In the case of statically
|
||||
+# linked programs installed by glibc, unwinding will never actually
|
||||
+# occur at runtime and the use of elf/static-stubs.c to resolve these
|
||||
+# references is safe. In the case of statically linked test programs
|
||||
+# and test programs built with -fexceptions, unwinding may occur in
|
||||
+# some cases and it is preferable to link with libgcc_eh or libgcc_s
|
||||
+# so that the testing is as similar as possible to how programs will
|
||||
+# be built with the installed glibc.
|
||||
+#
|
||||
+# Some architectures have architecture-specific systems for exception
|
||||
+# handling that may involve undefined references to
|
||||
+# architecture-specific functions. On those architectures,
|
||||
+# gnulib-arch and static-gnulib-arch may be defined in sysdeps
|
||||
+# makefiles to use additional libraries for linking executables and
|
||||
+# shared libraries built by glibc.
|
||||
ifndef gnulib
|
||||
ifneq ($(have-cc-with-libunwind),yes)
|
||||
libunwind =
|
||||
@@ -551,8 +598,12 @@
|
||||
else
|
||||
libgcc_eh := -Wl,--as-needed -lgcc_s$(libgcc_s_suffix) $(libunwind) -Wl,--no-as-needed
|
||||
endif
|
||||
-gnulib := -lgcc $(libgcc_eh)
|
||||
-static-gnulib := -lgcc -lgcc_eh $(libunwind)
|
||||
+gnulib-arch =
|
||||
+gnulib = -lgcc $(gnulib-arch)
|
||||
+gnulib-tests := -lgcc $(libgcc_eh)
|
||||
+static-gnulib-arch =
|
||||
+static-gnulib = -lgcc $(static-gnulib-arch)
|
||||
+static-gnulib-tests := -lgcc -lgcc_eh $(libunwind)
|
||||
libc.so-gnulib := -lgcc
|
||||
endif
|
||||
ifeq ($(elf),yes)
|
||||
--- a/Rules
|
||||
+++ b/Rules
|
||||
@@ -104,29 +104,52 @@
|
||||
endif
|
||||
|
||||
ifeq ($(build-programs),yes)
|
||||
-binaries-all = $(others) $(sysdep-others) $(tests) $(xtests) $(test-srcs)
|
||||
-binaries-static = $(others-static) $(tests-static) $(xtests-static)
|
||||
+binaries-all-notests = $(others) $(sysdep-others)
|
||||
+binaries-all-tests = $(tests) $(xtests) $(test-srcs)
|
||||
+binaries-all = $(binaries-all-notests) $(binaries-all-tests)
|
||||
+binaries-static-notests = $(others-static)
|
||||
+binaries-static-tests = $(tests-static) $(xtests-static)
|
||||
+binaries-static = $(binaries-static-notests) $(binaries-static-tests)
|
||||
else
|
||||
-binaries-all = $(tests) $(xtests) $(test-srcs)
|
||||
+binaries-all-notests =
|
||||
+binaries-all-tests = $(tests) $(xtests) $(test-srcs)
|
||||
+binaries-all = $(binaries-all-tests)
|
||||
+binaries-static-notests =
|
||||
+binaries-static-tests =
|
||||
binaries-static =
|
||||
endif
|
||||
|
||||
-binaries-shared = $(filter-out $(binaries-static), $(binaries-all))
|
||||
+binaries-shared-tests = $(filter-out $(binaries-static), $(binaries-all-tests))
|
||||
+binaries-shared-notests = $(filter-out $(binaries-static), $(binaries-all-notests))
|
||||
|
||||
-ifneq "$(strip $(binaries-shared))" ""
|
||||
-$(addprefix $(objpfx),$(binaries-shared)): %: %.o \
|
||||
+ifneq "$(strip $(binaries-shared-notests))" ""
|
||||
+$(addprefix $(objpfx),$(binaries-shared-notests)): %: %.o \
|
||||
$(sort $(filter $(common-objpfx)lib%,$(link-libc))) \
|
||||
$(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit)
|
||||
$(+link)
|
||||
endif
|
||||
|
||||
-ifneq "$(strip $(binaries-static))" ""
|
||||
-$(addprefix $(objpfx),$(binaries-static)): %: %.o \
|
||||
+ifneq "$(strip $(binaries-shared-tests))" ""
|
||||
+$(addprefix $(objpfx),$(binaries-shared-tests)): %: %.o \
|
||||
+ $(sort $(filter $(common-objpfx)lib%,$(link-libc))) \
|
||||
+ $(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit)
|
||||
+ $(+link-tests)
|
||||
+endif
|
||||
+
|
||||
+ifneq "$(strip $(binaries-static-notests))" ""
|
||||
+$(addprefix $(objpfx),$(binaries-static-notests)): %: %.o \
|
||||
$(sort $(filter $(common-objpfx)lib%,$(link-libc-static))) \
|
||||
$(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit)
|
||||
$(+link-static)
|
||||
endif
|
||||
|
||||
+ifneq "$(strip $(binaries-static-tests))" ""
|
||||
+$(addprefix $(objpfx),$(binaries-static-tests)): %: %.o \
|
||||
+ $(sort $(filter $(common-objpfx)lib%,$(link-libc-static-tests))) \
|
||||
+ $(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit)
|
||||
+ $(+link-static-tests)
|
||||
+endif
|
||||
+
|
||||
ifeq ($(build-bounded),yes)
|
||||
binaries-bounded = $(addsuffix -bp,$(tests) $(xtests) $(test-srcs))
|
||||
$(addprefix $(objpfx),$(binaries-bounded)): %-bp: %.ob \
|
||||
--- a/elf/Makefile
|
||||
+++ b/elf/Makefile
|
||||
@@ -157,6 +157,8 @@
|
||||
install-bin = sprof
|
||||
others-static = sln
|
||||
install-rootsbin = sln
|
||||
+sln-modules := static-stubs
|
||||
+extra-objs += $(sln-modules:=.o)
|
||||
|
||||
ifeq (yes,$(use-ldconfig))
|
||||
ifeq (yes,$(build-shared))
|
||||
@@ -164,7 +166,7 @@
|
||||
others += ldconfig
|
||||
install-rootsbin += ldconfig
|
||||
|
||||
-ldconfig-modules := cache readlib xmalloc xstrdup chroot_canon
|
||||
+ldconfig-modules := cache readlib xmalloc xstrdup chroot_canon static-stubs
|
||||
extra-objs += $(ldconfig-modules:=.o)
|
||||
|
||||
# To find xmalloc.c and xstrdup.c
|
||||
@@ -455,6 +457,8 @@
|
||||
|
||||
$(objpfx)sprof: $(libdl)
|
||||
|
||||
+$(objpfx)sln: $(sln-modules:%=$(objpfx)%.o)
|
||||
+
|
||||
$(objpfx)ldconfig: $(ldconfig-modules:%=$(objpfx)%.o)
|
||||
SYSCONF-FLAGS := -D'SYSCONFDIR="$(sysconfdir)"'
|
||||
CFLAGS-ldconfig.c = $(SYSCONF-FLAGS) -D'LIBDIR="$(libdir)"' \
|
||||
--- /dev/null
|
||||
+++ b/elf/static-stubs.c
|
||||
@@ -0,0 +1,46 @@
|
||||
+/* Stub implementations of functions to link into statically linked
|
||||
+ programs without needing libgcc_eh.
|
||||
+ Copyright (C) 2012 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, see
|
||||
+ <http://www.gnu.org/licenses/>. */
|
||||
+
|
||||
+/* Avoid backtrace (and so _Unwind_Backtrace) dependencies from
|
||||
+ sysdeps/unix/sysv/linux/libc_fatal.c. */
|
||||
+#include <sysdeps/posix/libc_fatal.c>
|
||||
+
|
||||
+#include <stdlib.h>
|
||||
+#include <unwind.h>
|
||||
+
|
||||
+/* These programs do not use thread cancellation, so _Unwind_Resume
|
||||
+ and the personality routine are never actually called. */
|
||||
+
|
||||
+void
|
||||
+_Unwind_Resume (struct _Unwind_Exception *exc __attribute__ ((unused)))
|
||||
+{
|
||||
+ abort ();
|
||||
+}
|
||||
+
|
||||
+_Unwind_Reason_Code
|
||||
+__gcc_personality_v0 (int version __attribute__ ((unused)),
|
||||
+ _Unwind_Action actions __attribute__ ((unused)),
|
||||
+ _Unwind_Exception_Class exception_class
|
||||
+ __attribute__ ((unused)),
|
||||
+ struct _Unwind_Exception *ue_header
|
||||
+ __attribute__ ((unused)),
|
||||
+ struct _Unwind_Context *context __attribute__ ((unused)))
|
||||
+{
|
||||
+ abort ();
|
||||
+}
|
12
packages/glibc/2.12.1/chksum
vendored
12
packages/glibc/2.12.1/chksum
vendored
@ -1,12 +0,0 @@
|
||||
md5 glibc-2.12.1.tar.xz 4802b783766b5b487c601a19b5ce35f1
|
||||
sha1 glibc-2.12.1.tar.xz c278d7f163b302f783e47f0d3287c85cf5f00c62
|
||||
sha256 glibc-2.12.1.tar.xz 9e633fb278b411a90636cc1c4bf1ffddcc8b0d214f5bacd74bfcdaac81d6035e
|
||||
sha512 glibc-2.12.1.tar.xz f374c2f277052ae5b426a97e0d19a896582a61ddad17a5e1cafcff6ad5b19624cf104c20267d9a54c565177c5517c232c6088001978c642c3c21f3fab6d555a0
|
||||
md5 glibc-2.12.1.tar.bz2 be0ea9e587f08c87604fe10a91f72afd
|
||||
sha1 glibc-2.12.1.tar.bz2 ef5ca1e765719d3290bd24f94705f27534f3744b
|
||||
sha256 glibc-2.12.1.tar.bz2 759f115c52bc12c5bb453af559dcd456d32138250b7cc96e47804e3d0ec97407
|
||||
sha512 glibc-2.12.1.tar.bz2 e01eaf0c93b20549e159adf7e838458216245c6781d225de908804b275a967712d4f4dfe5b5aefc3e16b75a8593f2aba2f7bc287c89a6c39c9e929cd228766d1
|
||||
md5 glibc-2.12.1.tar.gz a8e77cd873125d9b46ca2e46ee1a13d0
|
||||
sha1 glibc-2.12.1.tar.gz 9e252bad90b7a19256e578acf0f4ab1ff40b9fb9
|
||||
sha256 glibc-2.12.1.tar.gz 5ae2edf67169aac932a281cbe636f8be42a854cc3d8b7f325c53b949eab72d48
|
||||
sha512 glibc-2.12.1.tar.gz 6be9cd92515801f4f3694676b4c0c690b8031e74a6f233a42dfac5d8aaaddb6f2cbe78d7a9f81d97f58eb5144b56d1f655e33c6f94f5d7b5404fc5a12de8a8cc
|
1
packages/glibc/2.12.1/version.desc
vendored
1
packages/glibc/2.12.1/version.desc
vendored
@ -1 +0,0 @@
|
||||
obsolete='yes'
|
@ -8,26 +8,12 @@ glibc_get()
|
||||
local version
|
||||
|
||||
CT_Fetch GLIBC
|
||||
if [ "${CT_GLIBC_USE_PORTS_EXTERNAL}" = "y" ]; then
|
||||
CT_Fetch GLIBC_PORTS
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
glibc_extract()
|
||||
{
|
||||
CT_ExtractPatch GLIBC
|
||||
if [ "${CT_GLIBC_USE_PORTS_EXTERNAL}" = "y" ]; then
|
||||
CT_ExtractPatch GLIBC_PORTS
|
||||
|
||||
# This may create a bogus symlink if glibc-ports is using custom
|
||||
# sources or has an overlay (and glibc is shared). However,
|
||||
# we do not support concurrent use of the source directory
|
||||
# and next run, if using different glibc-ports source, will override
|
||||
# this symlink anyway.
|
||||
CT_DoExecLog ALL ln -sf "${CT_SRC_DIR}/${CT_GLIBC_PORTS_DIR_NAME}" \
|
||||
"${CT_SRC_DIR}/${CT_GLIBC_DIR_NAME}/ports"
|
||||
fi
|
||||
}
|
||||
|
||||
# This function builds and install the full C library
|
||||
@ -308,9 +294,6 @@ glibc_add_ons_list()
|
||||
local sep="$1"
|
||||
local addons_list
|
||||
|
||||
if [ "${CT_GLIBC_USE_PORTS_ADDON}" = "y" ]; then
|
||||
addons_list="${addons_list}${sep}ports"
|
||||
fi
|
||||
if [ "${CT_GLIBC_USE_NPTL_ADDON}" = "y" ]; then
|
||||
addons_list="${addons_list}${sep}nptl"
|
||||
fi
|
||||
|
Loading…
Reference in New Issue
Block a user