commit fcfc0fa90d6f35224368c63c2ec852dbd41c5076 Author: Marek Lindner Date: Fri Apr 3 17:05:20 2009 +0000 initial commit - fails to build at glibc patches diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..f096826 --- /dev/null +++ b/Makefile @@ -0,0 +1,134 @@ +# +# "PI Makefile" - for setting up the PI development environment +# +# (C) Copyright 2009 PI, Inc. +# Author: xiangfu liu +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# version 3 as published by the Free Software Foundation. + +# This program 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 General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA + + +BINUTILS_VER=binutils-2.17 +GCC_VER=gcc-4.1.2 +GLIBC_VER=glibc-2.6.1 +GLIBC_PORTS_VER=glibc-ports-2.6.1 + +TOOLCHAIN_PATH=toolchain +DL_PATH=$(TOOLCHAIN_PATH)/dl +INSTALL_PATH=install +PATCHES_PATH=patches +GLIBC_PATCHES_PATH=$(PATCHES_PATH)/glibc + +BINUTILS_PACKAGE=$(BINUTILS_VER).tar.bz2 +BINUTILS_URL= \ + ftp://ftp.gnu.org/gnu/binutils/$(BINUTILS_PACKAGE) +GCC_PACKAGE=$(GCC_VER).tar.bz2 +GCC_URL=ftp://ftp.gnu.org/gnu/gcc/$(GCC_VER)/$(GCC_PACKAGE) +GLIBC_PACKAGE=$(GLIBC_VER).tar.bz2 +GLIBC_URL=ftp://ftp.gnu.org/gnu/glibc/$(GLIBC_PACKAGE) +GLIBC_PORTS_PACKAGE=$(GLIBC_PORTS_VER).tar.bz2 +GLIBC_PORTS_URL=ftp://ftp.gnu.org/gnu/glibc/$(GLIBC_PORTS_PACKAGE) + +CFLAGS="-O2" + +export PATH:=$(PWD)/install/bin:$(PATH) + + +toolchain: binutils gcc glibc + + +### misc + +$(DL_PATH): + mkdir -p $(DL_PATH) + +$(INSTALL_PATH): + mkdir -p $(INSTALL_PATH) + +%$(BINUTILS_PACKAGE): URL=$(BINUTILS_URL) +%$(GCC_PACKAGE): URL=$(GCC_URL) +%$(GLIBC_PACKAGE): URL=$(GLIBC_URL) +%$(GLIBC_PORTS_PACKAGE): URL=$(GLIBC_PORTS_URL) + +%.bz2: $(DL_PATH) $(INSTALL_PATH) + wget -c -O $@ $(URL) + touch $@ + + +### toolchain stuff + +binutils: $(DL_PATH)/$(BINUTILS_PACKAGE) + tar -xvjf $(DL_PATH)/$(BINUTILS_PACKAGE) -C $(TOOLCHAIN_PATH) + mkdir -p $(TOOLCHAIN_PATH)/$(BINUTILS_VER)/build + cd $(TOOLCHAIN_PATH)/$(BINUTILS_VER)/build && \ + ../configure --target=mipsel-linux --prefix=$(PWD)/$(INSTALL_PATH) --disable-werror \ + && make CFLAGS=$(CFLAGS) && make install + touch $@ + +gcc: $(DL_PATH)/$(GCC_PACKAGE) + tar -xvjf $(DL_PATH)/$(GCC_PACKAGE) -C $(TOOLCHAIN_PATH) + cd $(TOOLCHAIN_PATH)/$(GCC_VER)/libiberty && \ + cat strsignal.c | sed -e 's/#ifndef HAVE_PSIGNAL/#if 0/g' >junk.c && \ + cp -f strsignal.c strsignal.c.fixed && mv -f junk.c strsignal.c + mkdir -p $(TOOLCHAIN_PATH)/$(GCC_VER)/build + cd $(TOOLCHAIN_PATH)/$(GCC_VER)/build && \ + ../configure --target=mipsel-linux \ + --host=i686-pc-linux-gnu --prefix=$(PWD)/$(INSTALL_PATH) \ + --disable-shared --disable-threads --disable-multilib \ + --enable-languages=c && make CFLAGS=$(CFLAGS) all-gcc && make install-gcc + touch $@ + +glibc: $(DL_PATH)/$(GLIBC_PACKAGE) $(DL_PATH)/$(GLIBC_PORTS_PACKAGE) + [ -e $(TOOLCHAIN_PATH)/$(GLIBC_VER)/ports ] && rm -rf $(TOOLCHAIN_PATH)/$(GLIBC_VER)/ports + tar -xvjf $(DL_PATH)/$(GLIBC_PACKAGE) -C $(TOOLCHAIN_PATH) + tar -xvjf $(DL_PATH)/$(GLIBC_PORTS_PACKAGE) -C $(TOOLCHAIN_PATH)/$(GLIBC_VER) + mv $(TOOLCHAIN_PATH)/$(GLIBC_VER)/$(GLIBC_PORTS_VER) $(TOOLCHAIN_PATH)/$(GLIBC_VER)/ports + cd $(TOOLCHAIN_PATH)/$(GLIBC_VER) && \ + patch -Np1 -i $(PWD)/$(GLIBC_PATCHES_PATH)/glibc-2.6.1-cross_hacks-1.patch && \ + patch -Np1 -i $(PWD)/$(GLIBC_PATCHES_PATH)/glibc-2.6.1-libgcc_eh-1.patch && \ + patch -Np1 -i $(PWD)/$(GLIBC_PATCHES_PATH)/glibc-2.6.1-localedef_segfault-1.patch && \ + patch -Np1 -i $(PWD)/$(GLIBC_PATCHES_PATH)/glibc-2.6.1-mawk_fix-1.patch + mkdir -p $(TOOLCHAIN_PATH)/$(GLIBC_VER)/build + cd $(TOOLCHAIN_PATH)/$(GLIBC_VER)/build && \ + echo "libc_cv_forced_unwind=yes" > config.cache && \ + echo "libc_cv_c_cleanup=yes" >> config.cache && \ + echo "libc_cv_mips_tls=yes" >> config.cache && \ + BUILD_CC="gcc" CC="mipsel-linux-gcc" \ + AR="mipsel-linux-ar" RANLIB="mipsel-linux-ranlib" \ + ../configure --prefix=/usr --libexecdir=/usr/lib/glibc \ + --host=mipsel-linux --build=i686-pc-linux-gnu \ + --disable-profile --enable-add-ons --with-tls --enable-kernel=2.6.0 \ + --with-__thread --with-binutils=$(INSTALL_PATH)/bin \ + --cache-file=config.cache && make CFLAGS=$(CFLAGS) && make install + touch $@ + + +### clean up + +distclean: clean clean-toolchain + +clean: + +clean-toolchain: + rm -rf $(TOOLCHAIN_PATH)/$(BINUTILS_VER) + rm -rf $(TOOLCHAIN_PATH)/$(GCC_VER) + rm -rf $(TOOLCHAIN_PATH)/$(GLIBC_VER) + rm -rf $(INSTALL_PATH) binutils gcc glibc + +testhelp: + make --print-data-base --question | \ + awk '/^[^.%][-A-Za-z0-9_]*:/ \ +{ print substr($$1, 1, length($$1)-1) }' | \ + sort | \ + pr --omit-pagination --width=80 --columns=1 diff --git a/patches/glibc/glibc-2.6.1-RTLD_SINGLE_THREAD_P-1.patch b/patches/glibc/glibc-2.6.1-RTLD_SINGLE_THREAD_P-1.patch new file mode 100755 index 0000000..33d5282 --- /dev/null +++ b/patches/glibc/glibc-2.6.1-RTLD_SINGLE_THREAD_P-1.patch @@ -0,0 +1,20 @@ +Submitted By: Joe Ciccone +Date: 07-02-2007 +Initial Package Version: 2.6 +Origin: http://sourceware.org/ml/libc-ports/2007-05/msg00051.html +Upstream Status: Unknown +Description: Defines RTLD_SINGLE_THREAD_P for arm. + +diff -Naur glibc-2.6.orig/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h glibc-2.6/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h +--- glibc-2.6.orig/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h 2007-07-02 17:39:22.000000000 -0400 ++++ glibc-2.6/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h 2007-07-02 17:39:36.000000000 -0400 +@@ -126,3 +126,9 @@ + # define NO_CANCELLATION 1 + + #endif ++ ++#ifndef __ASSEMBLER__ ++# define RTLD_SINGLE_THREAD_P \ ++ __builtin_expect (THREAD_GETMEM (THREAD_SELF, \ ++ header.multiple_threads) == 0, 1) ++#endif diff --git a/patches/glibc/glibc-2.6.1-alpha_ioperm_fix-1.patch b/patches/glibc/glibc-2.6.1-alpha_ioperm_fix-1.patch new file mode 100755 index 0000000..7536960 --- /dev/null +++ b/patches/glibc/glibc-2.6.1-alpha_ioperm_fix-1.patch @@ -0,0 +1,46 @@ +Submitted By: Joe Ciccone +Date: 2007-05-19 +Initial Package Version: 2.6 +Origin: Joe Ciccone +Upstream Status: Unknown +Description: Fixes a build issue with alpha on some processors. The + instructions being modified are specific to ev56/ev6. + +diff -Naur glibc-2.6.orig/sysdeps/unix/sysv/linux/alpha/ioperm.c glibc-2.6/sysdeps/unix/sysv/linux/alpha/ioperm.c +--- glibc-2.6.orig/sysdeps/unix/sysv/linux/alpha/ioperm.c 2007-05-07 15:57:20.000000000 -0700 ++++ glibc-2.6/sysdeps/unix/sysv/linux/alpha/ioperm.c 2007-05-19 13:29:49.000000000 -0700 +@@ -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; + } + + diff --git a/patches/glibc/glibc-2.6.1-cross_hacks-1.patch b/patches/glibc/glibc-2.6.1-cross_hacks-1.patch new file mode 100755 index 0000000..ee531ae --- /dev/null +++ b/patches/glibc/glibc-2.6.1-cross_hacks-1.patch @@ -0,0 +1,439 @@ +Submitted By: Joe Ciccone +Date: 2006-11-26 +Initial Package Version: 2.5 + Rediffed against 2.6 by Joe Ciccone +Origin: Joe Ciccone +Upstream Status: Unknown +Description: Adds native compile support to the build system then uses that + support to build zic-native, for installing timezone info, + rpcgen-native, for building librpcsvc.a, and localedef-native, + for creating the locale-archive. + +diff -Naur glibc-2.6.orig/iconv/Makefile glibc-2.6/iconv/Makefile +--- glibc-2.6.orig/iconv/Makefile 2007-07-02 15:20:36.000000000 -0400 ++++ glibc-2.6/iconv/Makefile 2007-07-02 15:28:24.000000000 -0400 +@@ -56,6 +56,9 @@ + iconvconfig.h + + others = iconv_prog iconvconfig ++ifneq ($(cross-compiling),no) ++others-native = iconvconfig-native ++endif + install-others = $(inst_bindir)/iconv + install-sbin = iconvconfig + +@@ -78,6 +81,7 @@ + + $(objpfx)iconv_prog: $(iconv_prog-modules:%=$(objpfx)%.o) + $(objpfx)iconvconfig: $(iconvconfig-modules:%=$(objpfx)%.o) ++$(objpfx)iconvconfig-native: $(iconvconfig-modules:%=$(objpfx)%-native.o) + + ifneq ($(cross-compiling),yes) + xtests: test-iconvconfig +diff -Naur glibc-2.6.orig/iconvdata/Makefile glibc-2.6/iconvdata/Makefile +--- glibc-2.6.orig/iconvdata/Makefile 2007-07-02 15:20:35.000000000 -0400 ++++ glibc-2.6/iconvdata/Makefile 2007-07-02 15:28:24.000000000 -0400 +@@ -312,23 +312,25 @@ + + headers: $(addprefix $(objpfx), $(generated-modules:=.h)) + ++ifeq ($(cross-compiling),no) ++iconvconfig-cmd = LC_ALL=C LANGUAGE=C \ ++ $(common-objpfx)elf/ld.so --library-path $(rpath-link) \ ++ $(common-objpfx)iconv/iconvconfig ++else ++iconvconfig-cmd = LC_ALL=C LANGUAGE=C \ ++ $(common-objpfx)iconv/iconvconfig-native ++endif ++ + $(addprefix $(inst_gconvdir)/, $(modules.so)): \ + $(inst_gconvdir)/%: $(objpfx)% $(+force) + $(do-install-program) + $(inst_gconvdir)/gconv-modules: gconv-modules $(+force) + $(do-install) +-ifeq (no,$(cross-compiling)) + # Update the $(prefix)/lib/gconv/gconv-modules.cache file. This is necessary + # if this libc has more gconv modules than the previously installed one. + if test -f "$(inst_gconvdir)/gconv-modules.cache"; then \ +- LC_ALL=C LANGUAGE=C \ +- $(common-objpfx)elf/ld.so --library-path $(rpath-link) \ +- $(common-objpfx)iconv/iconvconfig \ +- $(addprefix --prefix=,$(install_root)); \ ++ $(iconvconfig-cmd) $(addprefix --prefix=,$(install_root)); \ + fi +-else +- @echo '*@*@*@ You should recreate $(inst_gconvdir)/gconv-modules.cache' +-endif + + endif # build-shared = yes + +diff -Naur glibc-2.6.orig/include-native/bits/libc-tsd.h glibc-2.6/include-native/bits/libc-tsd.h +--- glibc-2.6.orig/include-native/bits/libc-tsd.h 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.6/include-native/bits/libc-tsd.h 2007-07-02 15:28:24.000000000 -0400 +@@ -0,0 +1,3 @@ ++#ifndef __libc_tsd_define ++#define __libc_tsd_define(A,B) ++#endif +diff -Naur glibc-2.6.orig/include-native/config.h glibc-2.6/include-native/config.h +--- glibc-2.6.orig/include-native/config.h 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.6/include-native/config.h 2007-07-02 15:28:24.000000000 -0400 +@@ -0,0 +1 @@ ++/* Empty */ +diff -Naur glibc-2.6.orig/include-native/gnu/stubs.h glibc-2.6/include-native/gnu/stubs.h +--- glibc-2.6.orig/include-native/gnu/stubs.h 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.6/include-native/gnu/stubs.h 2007-07-02 15:28:24.000000000 -0400 +@@ -0,0 +1 @@ ++/* Empty */ +diff -Naur glibc-2.6.orig/include-native/intl/loadinfo.h glibc-2.6/include-native/intl/loadinfo.h +--- glibc-2.6.orig/include-native/intl/loadinfo.h 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.6/include-native/intl/loadinfo.h 2007-07-02 15:28:24.000000000 -0400 +@@ -0,0 +1,4 @@ ++#ifndef LOADINFO_H ++#define LOADINFO_H ++struct loaded_l10nfile; ++#endif +diff -Naur glibc-2.6.orig/include-native/libintl.h glibc-2.6/include-native/libintl.h +--- glibc-2.6.orig/include-native/libintl.h 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.6/include-native/libintl.h 2007-07-02 15:28:24.000000000 -0400 +@@ -0,0 +1,13 @@ ++#include_next ++ ++#ifndef _ ++#define _(X) (X) ++#endif ++ ++#ifndef N_ ++#define N_(X) (X) ++#endif ++ ++#ifndef _libc_intl_domainname ++#define _libc_intl_domainname "libc" ++#endif +diff -Naur glibc-2.6.orig/include-native/symbol-hacks.h glibc-2.6/include-native/symbol-hacks.h +--- glibc-2.6.orig/include-native/symbol-hacks.h 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.6/include-native/symbol-hacks.h 2007-07-02 15:28:24.000000000 -0400 +@@ -0,0 +1 @@ ++/* Empty */ +diff -Naur glibc-2.6.orig/include-native/tls.h glibc-2.6/include-native/tls.h +--- glibc-2.6.orig/include-native/tls.h 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.6/include-native/tls.h 2007-07-02 15:28:24.000000000 -0400 +@@ -0,0 +1,11 @@ ++#ifndef _include_tls_h ++#define _include_tls_h 1 ++ ++#if USE_TLS && HAVE___THREAD \ ++ && (!defined NOT_IN_libc || defined IS_IN_libpthread) ++# define USE___THREAD 1 ++#else ++# define USE___THREAD 0 ++#endif ++ ++#endif +diff -Naur glibc-2.6.orig/locale/Makefile glibc-2.6/locale/Makefile +--- glibc-2.6.orig/locale/Makefile 2007-07-02 15:20:37.000000000 -0400 ++++ glibc-2.6/locale/Makefile 2007-07-02 15:28:24.000000000 -0400 +@@ -44,6 +44,9 @@ + aux = $(categories:%=lc-%) $(categories:%=C-%) SYS_libc C_name \ + xlocale localename global-locale coll-lookup + others = localedef locale ++ifneq ($(cross-compiling),no) ++others-native = localedef-native ++endif + #others-static = localedef locale + install-bin = localedef locale + extra-objs = $(localedef-modules:=.o) $(localedef-aux:=.o) \ +@@ -81,6 +84,12 @@ + $(objpfx)locale: $(locale-modules:%=$(objpfx)%.o) + $(objpfx)localedef $(objpfx)locale: $(lib-modules:%=$(objpfx)%.o) + ++ifneq ($(cross-compiling),no) ++$(objpfx)localedef-native: $(localedef-modules:%=$(objpfx)%-native.o) ++$(objpfx)localedef-native: $(localedef-aux:%=$(objpfx)%-native.o) ++$(objpfx)localedef-native: $(lib-modules:%=$(objpfx)%-native.o) ++endif ++ + C-translit.h: C-translit.h.in gen-translit.pl + $(PERL) gen-translit.pl < $< > $@.tmp + mv -f $@.tmp $@ +diff -Naur glibc-2.6.orig/localedata/Makefile glibc-2.6/localedata/Makefile +--- glibc-2.6.orig/localedata/Makefile 2007-07-02 15:20:34.000000000 -0400 ++++ glibc-2.6/localedata/Makefile 2007-07-02 15:28:24.000000000 -0400 +@@ -206,8 +206,13 @@ + INSTALL-SUPPORTED-LOCALES=$(addprefix install-, $(SUPPORTED-LOCALES)) + + # Sometimes the whole collection of locale files should be installed. ++ifeq ($(cross-compiling),no) + LOCALEDEF=I18NPATH=. GCONV_PATH=$(common-objpfx)iconvdata LC_ALL=C \ + $(common-objpfx)elf/ld.so --library-path $(rpath-link) $(common-objpfx)locale/localedef ++else ++LOCALEDEF=I18NPATH=. GCONV_PATH=$(common-objpfx)iconvdata LC_ALL=C \ ++$(common-objpfx)locale/localedef-native ++endif + install-locales: $(INSTALL-SUPPORTED-LOCALES) + + install-locales-dir: +diff -Naur glibc-2.6.orig/Makeconfig glibc-2.6/Makeconfig +--- glibc-2.6.orig/Makeconfig 2007-07-02 15:20:36.000000000 -0400 ++++ glibc-2.6/Makeconfig 2007-07-02 15:32:37.000000000 -0400 +@@ -445,6 +445,13 @@ + $(common-objpfx)libc% $(+postinit),$^) \ + $(link-extra-libs-static) $(link-libc-static) $(+postctor) $(+postinit) + endif ++# Command for linking programs against the host system. ++ifndef +link-native +++link-native = $(BUILD_CC) -static -g -o $@ $^ \ ++ $(LDFLAGS) $(LDFLAGS-$(@F)) \ ++ $(combreloc-LDFLAGS) $(relro-LDFLAGS) \ ++ $(link-extra-libs) ++endif + # Command for statically linking bounded-pointer programs with the C library. + ifndef +link-bounded + +link-bounded = $(CC) -nostdlib -nostartfiles -static -fbounded-pointers -o $@ \ +@@ -658,6 +665,8 @@ + $(+sysdep-includes) $(includes) \ + $(patsubst %/,-I%,$(..)) $(libio-include) -I. $(sysincludes) + +++includes-native = -I$(..)include-native -I$(objpfx) -I. ++ + # Since libio has several internal header files, we use a -I instead + # of many little headers in the include directory. + libio-include = -I$(..)libio +@@ -672,10 +681,15 @@ + $(foreach lib,$(libof-$(basename $(@F))) \ + $(libof-$( +Date: 2006-11-30 +Initial Package Version: 2.5 + Rediffed against 2.6 by Joe Ciccone +Upstream Status: In CVS +Origin: http://lists.parisc-linux.org/pipermail/parisc-linux/2006-July/029549.html +Description: Adds the TLS reloc numbers to elf.h + Works around a bug in the data initialization. + Adds a missing macro. + +diff -Naur glibc-2.6.orig/elf/elf.h glibc-2.6/elf/elf.h +--- glibc-2.6.orig/elf/elf.h 2007-07-04 21:13:57.000000000 -0400 ++++ glibc-2.6/elf/elf.h 2007-07-04 21:14:25.000000000 -0400 +@@ -1710,6 +1710,8 @@ + #define R_PARISC_LTOFF_FPTR14R 62 /* LT-rel. fct ptr, right 14 bits. */ + #define R_PARISC_FPTR64 64 /* 64 bits function address. */ + #define R_PARISC_PLABEL32 65 /* 32 bits function address. */ ++#define R_PARISC_PLABEL21L 66 /* Left 21 bits of fdesc address */ ++#define R_PARISC_PLABEL14R 70 /* Right 14 bits of fdesc address */ + #define R_PARISC_PCREL64 72 /* 64 bits PC-rel. address. */ + #define R_PARISC_PCREL22F 74 /* 22 bits PC-rel. address. */ + #define R_PARISC_PCREL14WR 75 /* PC-rel. address, right 14 bits. */ +@@ -1770,6 +1772,29 @@ + #define R_PARISC_LTOFF_TP16F 229 /* 16 bits LT-TP-rel. address. */ + #define R_PARISC_LTOFF_TP16WF 230 /* 16 bits LT-TP-rel. address. */ + #define R_PARISC_LTOFF_TP16DF 231 /* 16 bits LT-TP-rel. address. */ ++ ++#define R_PARISC_GNU_VTENTRY 232 ++#define R_PARISC_GNU_VTINHERIT 233 ++#define R_PARISC_TLS_GD21L 234 /* GD 21-bit left */ ++#define R_PARISC_TLS_GD14R 235 /* GD 14-bit right */ ++#define R_PARISC_TLS_GDCALL 236 /* GD call to __t_g_a */ ++#define R_PARISC_TLS_LDM21L 237 /* LD module 21-bit left */ ++#define R_PARISC_TLS_LDM14R 238 /* LD module 14-bit right */ ++#define R_PARISC_TLS_LDMCALL 239 /* LD module call to __t_g_a */ ++#define R_PARISC_TLS_LDO21L 240 /* LD offset 21-bit left */ ++#define R_PARISC_TLS_LDO14R 241 /* LD offset 14-bit right */ ++#define R_PARISC_TLS_DTPMOD32 242 /* DTP module 32-bit */ ++#define R_PARISC_TLS_DTPMOD64 243 /* DTP module 64-bit */ ++#define R_PARISC_TLS_DTPOFF32 244 /* DTP offset 32-bit */ ++#define R_PARISC_TLS_DTPOFF64 245 /* DTP offset 32-bit */ ++ ++#define R_PARISC_TLS_LE21L R_PARISC_TPREL21L ++#define R_PARISC_TLS_LE14R R_PARISC_TPREL14R ++#define R_PARISC_TLS_IE21L R_PARISC_LTOFF_TP21L ++#define R_PARISC_TLS_IE14R R_PARISC_LTOFF_TP14R ++#define R_PARISC_TLS_TPREL32 R_PARISC_TPREL32 ++#define R_PARISC_TLS_TPREL64 R_PARISC_TPREL64 ++ + #define R_PARISC_HIRESERVE 255 + + /* Legal values for p_type field of Elf32_Phdr/Elf64_Phdr. */ +diff -Naur glibc-2.6.orig/elf/rtld.c glibc-2.6/elf/rtld.c +--- glibc-2.6.orig/elf/rtld.c 2007-07-04 21:13:57.000000000 -0400 ++++ glibc-2.6/elf/rtld.c 2007-07-04 21:14:25.000000000 -0400 +@@ -379,14 +379,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; +diff -Naur glibc-2.6.orig/sysdeps/unix/sysv/linux/getcwd.c glibc-2.6/sysdeps/unix/sysv/linux/getcwd.c +--- glibc-2.6.orig/sysdeps/unix/sysv/linux/getcwd.c 2007-07-04 21:13:56.000000000 -0400 ++++ glibc-2.6/sysdeps/unix/sysv/linux/getcwd.c 2007-07-04 21:14:25.000000000 -0400 +@@ -31,6 +31,9 @@ + + #include + ++#ifndef MAX ++# define MAX(a, b) ((a) < (b) ? (b) : (a)) ++#endif + + /* If we compile the file for use in ld.so we don't need the feature + that getcwd() allocates the buffers itself. */ diff --git a/patches/glibc/glibc-2.6.1-libgcc_eh-1.patch b/patches/glibc/glibc-2.6.1-libgcc_eh-1.patch new file mode 100755 index 0000000..fc31752 --- /dev/null +++ b/patches/glibc/glibc-2.6.1-libgcc_eh-1.patch @@ -0,0 +1,125 @@ +Submitted By: Joe Ciccone +Date: 2006-11-09 +Initial Package Version: 2.5 +Origin: Joe Ciccone +Upstream Status: Unknown +Description: Checks to see if libgcc_eh has been provided by gcc. If it has + the glibc will attempt to link to it. + +diff -Naur glibc-2.6.orig/config.make.in glibc-2.6/config.make.in +--- glibc-2.6.orig/config.make.in 2007-06-23 21:26:46.000000000 -0400 ++++ glibc-2.6/config.make.in 2007-06-23 21:27:16.000000000 -0400 +@@ -59,6 +59,7 @@ + have-libaudit = @have_libaudit@ + have-libcap = @have_libcap@ + have-cc-with-libunwind = @libc_cv_cc_with_libunwind@ ++have-cc-with-libgcc_eh = @libc_cv_cc_with_libgcc_eh@ + fno-unit-at-a-time = @fno_unit_at_a_time@ + bind-now = @bindnow@ + have-hash-style = @libc_cv_hashstyle@ +diff -Naur glibc-2.6.orig/configure.in glibc-2.6/configure.in +--- glibc-2.6.orig/configure.in 2007-06-23 21:26:48.000000000 -0400 ++++ glibc-2.6/configure.in 2007-06-23 21:27:16.000000000 -0400 +@@ -1388,6 +1388,23 @@ + AC_DEFINE(HAVE_CC_WITH_LIBUNWIND) + fi + ++ AC_CACHE_CHECK(whether to link against libgcc_eh, ++ libc_cv_cc_with_libgcc_eh, [ ++ cat > conftest.c <&1 >/dev/null | grep -q " -lgcc_eh "; then ++ libc_cv_cc_with_libgcc_eh=yes ++ else ++ libc_cv_cc_with_libgcc_eh=no ++ fi ++ rm -f conftest*]) ++ AC_SUBST(libc_cv_cc_with_libgcc_eh) ++ if test $libc_cv_cc_with_libgcc_eh = yes; then ++ AC_DEFINE(HAVE_CC_WITH_LIBGCC_EH) ++ fi ++ + AC_CACHE_CHECK(for -z nodelete option, + libc_cv_z_nodelete, [dnl + cat > conftest.c < + #endif" + +-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS with_fp with_cvs enable_check_abi oldest_abi bindnow force_install all_warnings build build_cpu build_vendor build_os host host_cpu host_vendor host_os subdirs add_ons add_on_subdirs base_machine submachine sysnames sysdeps_add_ons INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC OBJEXT BUILD_CC cross_compiling CPP CXX CXXFLAGS ac_ct_CXX AR OBJDUMP RANLIB ac_ct_RANLIB MIG AS LD PWD_P MAKE MSGFMT MAKEINFO SED AUTOCONF SYSINCLUDES CXX_SYSINCLUDES libc_cv_gcc_static_libgcc BASH libc_cv_have_bash2 KSH libc_cv_have_ksh AWK PERL INSTALL_INFO BISON VERSIONING libc_cv_cc_with_libunwind libc_cv_Bgroup libc_cv_libgcc_s_suffix libc_cv_as_needed ASFLAGS_config libc_cv_z_combreloc libc_cv_z_execstack libc_cv_fpie libc_cv_hashstyle fno_unit_at_a_time libc_cv_ssp libc_cv_gnu89_inline libc_cv_have_initfini no_whole_archive exceptions LIBGD have_libaudit have_libcap have_selinux EGREP sizeof_long_double libc_cv_gcc_unwind_find_fde uname_sysname uname_release uname_version old_glibc_headers libc_cv_slibdir libc_cv_localedir libc_cv_sysconfdir libc_cv_rootsbindir libc_cv_forced_unwind use_ldconfig ldd_rewrite_script elf xcoff static shared pic_default profile omitfp bounded static_nss nopic_initfini DEFINES mach_interface_list VERSION RELEASE LIBOBJS LTLIBOBJS' ++ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS with_fp with_cvs enable_check_abi oldest_abi bindnow force_install all_warnings build build_cpu build_vendor build_os host host_cpu host_vendor host_os subdirs add_ons add_on_subdirs base_machine submachine sysnames sysdeps_add_ons INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC OBJEXT BUILD_CC cross_compiling CPP CXX CXXFLAGS ac_ct_CXX AR OBJDUMP RANLIB ac_ct_RANLIB MIG AS LD PWD_P MAKE MSGFMT MAKEINFO SED AUTOCONF SYSINCLUDES CXX_SYSINCLUDES libc_cv_gcc_static_libgcc BASH libc_cv_have_bash2 KSH libc_cv_have_ksh AWK PERL INSTALL_INFO BISON VERSIONING libc_cv_cc_with_libunwind libc_cv_cc_with_libgcc_eh libc_cv_Bgroup libc_cv_libgcc_s_suffix libc_cv_as_needed ASFLAGS_config libc_cv_z_combreloc libc_cv_z_execstack libc_cv_fpie libc_cv_hashstyle fno_unit_at_a_time libc_cv_ssp libc_cv_gnu89_inline libc_cv_have_initfini no_whole_archive exceptions LIBGD have_libaudit have_libcap have_selinux EGREP sizeof_long_double libc_cv_gcc_unwind_find_fde uname_sysname uname_release uname_version old_glibc_headers libc_cv_slibdir libc_cv_localedir libc_cv_sysconfdir libc_cv_rootsbindir libc_cv_forced_unwind use_ldconfig ldd_rewrite_script elf xcoff static shared pic_default profile omitfp bounded static_nss nopic_initfini DEFINES mach_interface_list VERSION RELEASE LIBOBJS LTLIBOBJS' + ac_subst_files='' + + # Initialize some variables set by options. +@@ -5542,6 +5542,33 @@ + + fi + ++ { echo "$as_me:$LINENO: checking whether to link against libgcc_eh" >&5 ++echo $ECHO_N "checking whether to link against libgcc_eh... $ECHO_C" >&6; } ++if test "${libc_cv_cc_with_libgcc_eh+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ++ cat > conftest.c <&1 >/dev/null | grep -q " -lgcc_eh "; then ++ libc_cv_cc_with_libgcc_eh=yes ++ else ++ libc_cv_cc_with_libgcc_eh=no ++ fi ++ rm -f conftest* ++fi ++{ echo "$as_me:$LINENO: result: $libc_cv_cc_with_libgcc_eh" >&5 ++echo "${ECHO_T}$libc_cv_cc_with_libgcc_eh" >&6; } ++ ++ if test $libc_cv_cc_with_libgcc_eh = yes; then ++ cat >>confdefs.h <<\_ACEOF ++#define HAVE_CC_WITH_LIBGCC_EH 1 ++_ACEOF ++ ++ fi ++ + echo "$as_me:$LINENO: checking for -z nodelete option" >&5 + echo $ECHO_N "checking for -z nodelete option... $ECHO_C" >&6 + if test "${libc_cv_z_nodelete+set}" = set; then +@@ -8543,6 +8570,7 @@ + s,@BISON@,$BISON,;t t + s,@VERSIONING@,$VERSIONING,;t t + s,@libc_cv_cc_with_libunwind@,$libc_cv_cc_with_libunwind,;t t ++s,@libc_cv_cc_with_libgcc_eh@,$libc_cv_cc_with_libgcc_eh,;t t + s,@libc_cv_Bgroup@,$libc_cv_Bgroup,;t t + s,@libc_cv_libgcc_s_suffix@,$libc_cv_libgcc_s_suffix,;t t + s,@libc_cv_as_needed@,$libc_cv_as_needed,;t t diff --git a/patches/glibc/glibc-2.6.1-localedef_segfault-1.patch b/patches/glibc/glibc-2.6.1-localedef_segfault-1.patch new file mode 100755 index 0000000..5a03fd5 --- /dev/null +++ b/patches/glibc/glibc-2.6.1-localedef_segfault-1.patch @@ -0,0 +1,56 @@ +Submitted By: Jim Gifford (patches at jg555 dot com) +Date: 2007-05-19 +Initial Package Version: 2.6 +Origin: Debian +Upstream Status: Unknown +Description: Fixes Segfault when using localdef. + This problem is only noticed when using PaX + and some architectures besides x86. + See debian bug # 231438 + +diff -Naur glibc-2.6.orig/locale/programs/3level.h glibc-2.6/locale/programs/3level.h +--- glibc-2.6.orig/locale/programs/3level.h 2005-12-06 21:47:27.000000000 -0800 ++++ glibc-2.6/locale/programs/3level.h 2007-05-19 13:38:01.000000000 -0700 +@@ -202,6 +202,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 diff --git a/patches/glibc/glibc-2.6.1-mawk_fix-1.patch b/patches/glibc/glibc-2.6.1-mawk_fix-1.patch new file mode 100755 index 0000000..ff8a3d1 --- /dev/null +++ b/patches/glibc/glibc-2.6.1-mawk_fix-1.patch @@ -0,0 +1,39 @@ +Submitted By: Mark Vels +Date: 2007-07-20 +Initial Package Version: 2.6 +Origin: original patch glibc-2.6-mawk_fix-1.patch by Jim Gifford +Upstream Status: Not submitted +Description: Fixes build if host distro is using mawk. + Distro's known to have this issue are Debian + and Ubuntu + + Changes wrt version 1: added two more cases. + +diff -Naur glibc-2.6.orig/scripts/gen-sorted.awk glibc-2.6/scripts/gen-sorted.awk +--- glibc-2.6.orig/scripts/gen-sorted.awk 2006-02-28 07:05:57.000000000 +0000 ++++ glibc-2.6/scripts/gen-sorted.awk 2007-07-20 21:03:50.000000000 +0000 +@@ -16,7 +16,7 @@ + { + subdir = type = FILENAME; + sub(/^.*\//, "", type); +- sub(/\/[^/]+$/, "", subdir); ++ sub(/\/[^\/]+$/, "", subdir); + sub(/^.*\//, "", subdir); + thisdir = ""; + } +@@ -56,13 +56,13 @@ + # The Subdirs file comes from an add-on that should have the subdirectory. + dir = FILENAME; + do +- sub(/\/[^/]+$/, "", dir); ++ sub(/\/[^\/]+$/, "", dir); + while (dir !~ /\/sysdeps$/); + sub(/\/sysdeps$/, "", dir); + if (system("test -d " dir "/" thisdir) == 0) + dir = dir "/" thisdir; + else { +- sub(/\/[^/]+$/, "", dir); ++ sub(/\/[^\/]+$/, "", dir); + if (system("test -d " dir "/" thisdir) == 0) + dir = dir "/" thisdir; + else { diff --git a/patches/glibc/glibc-2.6.1-sysdep_cancel-1.patch b/patches/glibc/glibc-2.6.1-sysdep_cancel-1.patch new file mode 100755 index 0000000..11f256a --- /dev/null +++ b/patches/glibc/glibc-2.6.1-sysdep_cancel-1.patch @@ -0,0 +1,34 @@ +Submitted By: Joe Ciccone +Date: 2007-07-04 +Initial Package Version: 2.6 +Upstream Status: Unknown +Description: Use one instead of two seperate regions. This reverts the following + patch from upstream. + http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/nptl/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h.diff?cvsroot=glibc&r1=text&tr1=1.4.2.2&r2=text&tr2=1.7&f=u + +diff -Naur glibc-2.6.orig/nptl/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h glibc-2.6/nptl/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h +--- glibc-2.6.orig/nptl/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h 2007-07-04 16:48:49.000000000 -0400 ++++ glibc-2.6/nptl/sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h 2007-07-04 16:50:30.000000000 -0400 +@@ -55,7 +55,6 @@ + bne a3, SYSCALL_ERROR_LABEL; \ + __LABEL($pseudo_ret) \ + .subsection 2; \ +- cfi_startproc; \ + __LABEL($pseudo_cancel) \ + subq sp, 64, sp; \ + cfi_def_cfa_offset(64); \ +@@ -91,13 +90,12 @@ + cfi_def_cfa_offset(0); \ + __LABEL($syscall_error) \ + SYSCALL_ERROR_HANDLER; \ +- cfi_endproc; \ + .previous + + # undef PSEUDO_END + # define PSEUDO_END(sym) \ +- cfi_endproc; \ + .subsection 2; \ ++ cfi_endproc; \ + .size sym, .-sym + + # define SAVE_ARGS_0 /* Nothing. */