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:
Chris Packham 2022-05-08 14:06:21 +12:00
parent 53bbdc7425
commit 6d5227b63b
68 changed files with 0 additions and 4138 deletions

View File

@ -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

View File

@ -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 *);

View File

@ -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.

View File

@ -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>

View File

@ -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;
}

View File

@ -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;

View File

@ -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

View File

@ -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

View File

@ -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,

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -1,2 +0,0 @@
archive_formats='.tar.bz2 .tar.gz'
obsolete='yes'

View File

@ -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'

View File

@ -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@

View File

@ -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;

View File

@ -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);

View File

@ -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

View File

@ -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;

View File

@ -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()"));

View File

@ -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))

View File

@ -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)

View File

@ -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

View File

@ -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; \

View File

@ -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.

View File

@ -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

View File

@ -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);

View File

@ -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

View File

@ -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
}

View File

@ -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) \

View File

@ -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 &lt;kazu@codesourcery.com&gt;
* 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__);*/

View File

@ -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>

View File

@ -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

View File

@ -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

View File

@ -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"
%

View File

@ -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

View File

@ -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;

View File

@ -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"));

View File

@ -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);

View File

@ -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;

View File

@ -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 */

View File

@ -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

View File

@ -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. */

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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; \
})

View File

@ -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;

View File

@ -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

View File

@ -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;
}

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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)
{

View File

@ -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 $@

View File

@ -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;

View File

@ -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

View File

@ -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")

View File

@ -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)

View File

@ -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)
{

View File

@ -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

View File

@ -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;
}
}

View File

@ -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);

View File

@ -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 ();
+}

View File

@ -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

View File

@ -1 +0,0 @@
obsolete='yes'

View File

@ -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