Skip to content
Snippets Groups Projects
Commit a3edea1b authored by Nicolas Thill's avatar Nicolas Thill
Browse files

add support for alternative C libraries (currently only glibc/eglibc) other...

add support for alternative C libraries (currently only glibc/eglibc) other (related) changes: - kernel headers are now installed using "make headers_install" on 2.6 - target names now contain an openwrt "vendor" tag (e.g. mips-openwrt-linux-gnu) - build directory names now contain gcc/libc name/version - default cpu for x86 is now i486 (required to build glibc/eglibc)

SVN-Revision: 13931
parent 001fd438
Branches
Tags
No related merge requests found
Showing
with 581 additions and 68 deletions
diff -ruN eglibc-2.7-orig/ports/sysdeps/unix/sysv/linux/arm/ioperm.c eglibc-2.7/ports/sysdeps/unix/sysv/linux/arm/ioperm.c
--- eglibc-2.7-orig/ports/sysdeps/unix/sysv/linux/arm/ioperm.c 2006-08-17 03:23:58.000000000 +0200
+++ eglibc-2.7/ports/sysdeps/unix/sysv/linux/arm/ioperm.c 2008-11-04 16:12:24.375864916 +0100
@@ -45,7 +45,6 @@
#include <sys/mman.h>
#include <linux/version.h>
-#include <asm/page.h>
#include <sys/sysctl.h>
#define PATH_ARM_SYSTYPE "/etc/arm_systype"
diff -ruN eglibc-2.7-orig/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h eglibc-2.7/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
--- eglibc-2.7-orig/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h 2007-06-06 19:48:04.000000000 +0200
+++ eglibc-2.7/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h 2008-11-04 16:48:29.000000000 +0100
@@ -73,6 +73,9 @@
# define DOCARGS_5 DOCARGS_4
# define UNDOCARGS_5 UNDOCARGS_4
+# define DOCARGS_6 DOCARGS_5
+# define UNDOCARGS_6 UNDOCARGS_5
+
# ifdef IS_IN_libpthread
# define CENABLE bl PLTJMP(__pthread_enable_asynccancel)
# define CDISABLE bl PLTJMP(__pthread_disable_asynccancel)
diff -ruN eglibc-2.7-orig/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h eglibc-2.7/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h
--- eglibc-2.7-orig/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h 2007-09-12 18:26:54.000000000 +0200
+++ eglibc-2.7/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h 2008-11-04 17:11:21.000000000 +0100
@@ -25,6 +25,7 @@
#include <atomic.h>
#include <sysdep.h>
#include <kernel-features.h>
+#include <tls.h>
#define FUTEX_WAIT 0
#define FUTEX_WAKE 1
diff -ruN eglibc-2.7-orig/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h eglibc-2.7/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
--- eglibc-2.7-orig/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h 2007-06-06 19:48:04.000000000 +0200
+++ eglibc-2.7/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h 2008-11-04 16:48:29.000000000 +0100
@@ -73,6 +73,9 @@
# define DOCARGS_5 DOCARGS_4
# define UNDOCARGS_5 UNDOCARGS_4
+# define DOCARGS_6 DOCARGS_5
+# define UNDOCARGS_6 UNDOCARGS_5
+
# ifdef IS_IN_libpthread
# define CENABLE bl PLTJMP(__pthread_enable_asynccancel)
# define CDISABLE bl PLTJMP(__pthread_disable_asynccancel)
diff -ruN eglibc-2.7-orig/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h eglibc-2.7/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h
--- eglibc-2.7-orig/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h 2007-09-12 18:26:54.000000000 +0200
+++ eglibc-2.7/ports/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h 2008-11-04 17:11:21.000000000 +0100
@@ -25,6 +25,7 @@
#include <atomic.h>
#include <sysdep.h>
#include <kernel-features.h>
+#include <tls.h>
#define FUTEX_WAIT 0
#define FUTEX_WAKE 1
......@@ -40,6 +40,7 @@ config EXTRA_GCC_CONFIG_OPTIONS
config SSP_SUPPORT
bool
depends !GCC_VERSION_3_4_6
prompt "Enable Smash Stacking Protection support" if TOOLCHAINOPTS
default n
help
......
# Makefile for to build a gcc/uClibc toolchain
#
# Copyright (C) 2002-2003 Erik Andersen <andersen@uclibc.org>
# Copyright (C) 2004 Manuel Novoa III <mjn3@uclibc.org>
# Copyright (C) 2005-2006 Felix Fietkau <nbd@openwrt.org>
# Copyright (C) 2006-2008 OpenWrt.org
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
......@@ -40,111 +40,163 @@ PATCH_DIR=./patches/$(PKG_VERSION)
STAGING_DIR_HOST:=$(TOOLCHAIN_DIR)
BUILD_DIR_HOST:=$(BUILD_DIR_TOOLCHAIN)
override CONFIG_AUTOREBUILD=
include $(INCLUDE_DIR)/host-build.mk
STAMP_BUILT:=$(TOOLCHAIN_DIR)/stamp/.gcc-initial_installed
BUILD_DIR1:=$(BUILD_DIR_HOST)/gcc-$(PKG_VERSION)-initial
BUILD_DIR2:=$(BUILD_DIR_HOST)/gcc-$(PKG_VERSION)-final
PKG_BUILD_DIR0:=$(PKG_BUILD_DIR)-minimal
PKG_BUILD_DIR1:=$(PKG_BUILD_DIR)-initial
PKG_BUILD_DIR2:=$(PKG_BUILD_DIR)-final
SEP:=,
TARGET_LANGUAGES:="c$(if $(CONFIG_INSTALL_LIBSTDCPP),$(SEP)c++)$(if $(CONFIG_INSTALL_LIBGCJ),$(SEP)java)"
ifeq ($(CONFIG_SSP_SUPPORT),y)
SSP:=--enable-libssp
else
SSP:=--disable-libssp
endif
EXTRA_TARGET=$(if $(CONFIG_EXTRA_TARGET_ARCH),--enable-biarch --enable-targets=$(call qstrip,$(CONFIG_EXTRA_TARGET_ARCH_NAME))-linux-uclibc)
define Stage1/Configure
$(SED) 's,TARGET_CROSS=.*,TARGET_CROSS=$(REAL_GNU_TARGET_NAME)-,' $(TOOLCHAIN_DIR)/info.mk
$(SED) 's,GCC_VERSION=.*,GCC_VERSION=$(PKG_VERSION),' $(TOOLCHAIN_DIR)/info.mk
mkdir -p $(BUILD_DIR1)
(cd $(BUILD_DIR1); rm -f config.cache; \
SHELL="$(BASH)" \
$(PKG_BUILD_DIR)/configure \
--prefix=$(TOOLCHAIN_DIR) \
GCC_CONFIGURE_COMMON:= \
SHELL="$(BASH)" \
$(PKG_BUILD_DIR)/configure \
--prefix=$(TOOLCHAIN_DIR)/usr \
--build=$(GNU_HOST_NAME) \
--host=$(GNU_HOST_NAME) \
--target=$(REAL_GNU_TARGET_NAME) \
--enable-languages=c \
--disable-shared \
--with-sysroot=$(BUILD_DIR_HOST)/uClibc_dev/ \
--disable-__cxa_atexit \
--enable-target-optspace \
--with-gnu-ld \
--disable-nls \
--enable-target-optspace \
--disable-libmudflap \
--disable-multilib \
$(SSP) \
$(EXTRA_TARGET) \
--disable-nls \
$(SOFT_FLOAT_CONFIG_OPTION) \
$(call qstrip,$(CONFIG_EXTRA_GCC_CONFIG_OPTIONS)) \
ifneq ($(CONFIG_SSP_SUPPORT),)
GCC_CONFIGURE_COMMON+= \
--enable-libssp
else
GCC_CONFIGURE_COMMON+= \
--disable-libssp
endif
ifneq ($(CONFIG_EXTRA_TARGET_ARCH),)
GCC_CONFIGURE_COMMON+= \
--enable-biarch \
--enable-targets=$(call qstrip,$(CONFIG_EXTRA_TARGET_ARCH_NAME))-linux-$(TARGET_SUFFIX)
endif
ifeq ($(LIBC),uClibc)
GCC_CONFIGURE_COMMON+= \
--disable-__cxa_atexit
else
GCC_CONFIGURE_COMMON+= \
--enable-__cxa_atexit
endif
GCC_CONFIGURE_STAGE0:= \
$(GCC_CONFIGURE_COMMON) \
--with-newlib \
--without-headers \
--enable-languages=c \
--disable-libgomp \
--disable-libssp \
--disable-shared \
--disable-threads \
GCC_CONFIGURE_STAGE1:= \
$(GCC_CONFIGURE_COMMON) \
--with-newlib \
--with-sysroot=$(BUILD_DIR_TOOLCHAIN)/$(LIBC)-dev \
--enable-languages=c \
--disable-shared \
--disable-threads \
GCC_CONFIGURE_STAGE2:= \
$(GCC_CONFIGURE_COMMON) \
--enable-languages=$(TARGET_LANGUAGES) \
--enable-shared \
--enable-threads \
--with-slibdir=$(TOOLCHAIN_DIR)/lib \
GCC_MAKE:= \
export SHELL="$(BASH)"; \
$(MAKE) \
define Build/SetToolchainInfo
$(SED) 's,TARGET_CROSS=.*,TARGET_CROSS=$(REAL_GNU_TARGET_NAME)-,' $(TOOLCHAIN_DIR)/info.mk
$(SED) 's,GCC_VERSION=.*,GCC_VERSION=$(PKG_VERSION),' $(TOOLCHAIN_DIR)/info.mk
endef
define Stage0/Configure
mkdir -p $(PKG_BUILD_DIR0)
(cd $(PKG_BUILD_DIR0); rm -f config.cache; \
$(GCC_CONFIGURE_STAGE0) \
);
endef
define Stage0/Compile
$(GCC_MAKE) -C $(PKG_BUILD_DIR0) all-gcc
endef
define Stage0/Install
$(GCC_MAKE) -C $(PKG_BUILD_DIR0) install-gcc
endef
define Stage1/Configure
mkdir -p $(PKG_BUILD_DIR1)
(cd $(PKG_BUILD_DIR1); rm -f config.cache; \
$(GCC_CONFIGURE_STAGE1) \
);
endef
define Stage1/Compile
export SHELL="$(BASH)"; $(MAKE) -C $(BUILD_DIR1) all-gcc
$(GCC_MAKE) -C $(PKG_BUILD_DIR1) all-build-libiberty all-gcc
endef
define Stage1/Install
export SHELL="$(BASH)"; $(MAKE) -C $(BUILD_DIR1) install-gcc
$(GCC_MAKE) -C $(PKG_BUILD_DIR1) install-gcc
# XXX: glibc insists on linking against libgcc_eh
( cd $(TOOLCHAIN_DIR)/usr/lib/gcc/$(REAL_GNU_TARGET_NAME)/$(PKG_VERSION) ; \
[ -e libgcc_eh.a ] || ln -sf libgcc.a libgcc_eh.a ; \
)
endef
define Stage2/Configure
mkdir -p $(BUILD_DIR2) $(TOOLCHAIN_DIR)/$(REAL_GNU_TARGET_NAME)
mkdir -p $(PKG_BUILD_DIR2) $(TOOLCHAIN_DIR)/usr/$(REAL_GNU_TARGET_NAME)
# Important! Required for limits.h to be fixed.
rm -rf $(TOOLCHAIN_DIR)/$(REAL_GNU_TARGET_NAME)/sys-include
ln -sf ../include $(TOOLCHAIN_DIR)/$(REAL_GNU_TARGET_NAME)/sys-include
rm -rf $(TOOLCHAIN_DIR)/$(REAL_GNU_TARGET_NAME)/lib
ln -sf ../lib $(TOOLCHAIN_DIR)/$(REAL_GNU_TARGET_NAME)/lib
(cd $(BUILD_DIR2); rm -f config.cache; \
SHELL="$(BASH)" \
$(PKG_BUILD_DIR)/configure \
--prefix=$(TOOLCHAIN_DIR) \
--build=$(GNU_HOST_NAME) \
--host=$(GNU_HOST_NAME) \
--target=$(REAL_GNU_TARGET_NAME) \
--enable-languages=$(TARGET_LANGUAGES) \
--enable-shared \
--disable-__cxa_atexit \
--enable-target-optspace \
--with-gnu-ld \
--disable-nls \
--disable-libmudflap \
--disable-multilib \
$(SSP) \
$(EXTRA_TARGET) \
$(SOFT_FLOAT_CONFIG_OPTION) \
$(call qstrip,$(CONFIG_EXTRA_GCC_CONFIG_OPTIONS)) \
rm -rf $(TOOLCHAIN_DIR)/usr/$(REAL_GNU_TARGET_NAME)/sys-include
ln -sf ../include $(TOOLCHAIN_DIR)/usr/$(REAL_GNU_TARGET_NAME)/sys-include
rm -rf $(TOOLCHAIN_DIR)/usr/$(REAL_GNU_TARGET_NAME)/lib
ln -sf ../lib $(TOOLCHAIN_DIR)/usr/$(REAL_GNU_TARGET_NAME)/lib
(cd $(PKG_BUILD_DIR2); rm -f config.cache; \
$(GCC_CONFIGURE_STAGE2) \
);
endef
define Stage2/Compile
export SHELL="\$(BASH)"; \$(MAKE) -C \$(BUILD_DIR2) all
$(GCC_MAKE) -C $(PKG_BUILD_DIR2) all
endef
define SetupExtraArch
for app in $(TOOLCHAIN_DIR)/bin/$(OPTIMIZE_FOR_CPU)*-{gcc,gcc-*,g++}; do \
for app in $(TOOLCHAIN_DIR)/usr/bin/$(OPTIMIZE_FOR_CPU)*-{gcc,gcc-*,g++}; do \
[ -e $$$$app ] || continue; \
old_base=$$$$(basename $$$$app); \
new_base=$(call qstrip,$(CONFIG_EXTRA_TARGET_ARCH_NAME))-$$$${old_base##$(OPTIMIZE_FOR_CPU)-}; \
sed -e "s/@CC_BASE@/$$$$old_base/" \
-e 's/@EXTRA_ARCH_OPTS@/$(call qstrip,$(CONFIG_EXTRA_TARGET_ARCH_OPTS))/' \
./files/alternate-arch-cc.in > \
$(TOOLCHAIN_DIR)/bin/$$$$new_base; \
chmod a+x $(TOOLCHAIN_DIR)/bin/$$$$new_base; \
$(TOOLCHAIN_DIR)/usr/bin/$$$$new_base; \
chmod a+x $(TOOLCHAIN_DIR)/usr/bin/$$$$new_base; \
done
endef
define Stage2/Install
$(MAKE) -C $(BUILD_DIR2) \
SHELL="$(BASH)" \
install
$(GCC_MAKE) -C $(PKG_BUILD_DIR2) install
# Set up the symlinks to enable lying about target name.
set -e; \
(cd $(TOOLCHAIN_DIR); \
(cd $(TOOLCHAIN_DIR)/usr; \
ln -sf $(REAL_GNU_TARGET_NAME) $(GNU_TARGET_NAME); \
cd bin; \
for app in $(REAL_GNU_TARGET_NAME)-* ; do \
......@@ -155,21 +207,28 @@ define Stage2/Install
$(if $(CONFIG_EXTRA_TARGET_ARCH),$(call SetupExtraArch))
endef
define Build/Prepare
$(call Build/SetToolchainInfo)
$(call Build/Prepare/Default)
ln -snf $(PKG_NAME)-$(PKG_VERSION) $(BUILD_DIR_TOOLCHAIN)/$(PKG_NAME)
$(CP) $(SCRIPT_DIR)/config.{guess,sub} $(PKG_BUILD_DIR)/
$(SED) 's,\(version_string.. = "[0-9\.]*\).*\(";\),\1 (OpenWrt-2.0)\2,' $(PKG_BUILD_DIR)/gcc/version.c
$(SED) 's,\(bug_report_url.. = "\).*\(";\),\1<URL:https://dev.openwrt.org/>\2,' $(PKG_BUILD_DIR)/gcc/version.c
(cd $(PKG_BUILD_DIR)/libstdc++-v3; autoconf;);
$(SED) 's,gcc_no_link=yes,gcc_no_link=no,' $(PKG_BUILD_DIR)/libstdc++-v3/configure
$(call Stage0/Configure)
$(call Stage0/Compile)
$(call Stage0/Install)
endef
define Build/Configure
$(call Stage1/Configure)
endef
define Build/Compile
$(call Stage1/Configure)
$(call Stage1/Compile)
$(if $(wildcard $(TOOLCHAIN_DIR)/bin/$(GNU_TARGET_NAME)-gcc),,$(call Stage1/Install))
$(call Stage1/Install)
endef
define Build/Install
......@@ -181,11 +240,13 @@ endef
define Build/Clean
rm -rf \
$(PKG_BUILD_DIR) \
$(BUILD_DIR1) \
$(BUILD_DIR2) \
$(TOOLCHAIN_DIR)/$(REAL_GNU_TARGET_NAME) \
$(TOOLCHAIN_DIR)/bin/$(REAL_GNU_TARGET_NAME)-gc* \
$(TOOLCHAIN_DIR)/bin/$(REAL_GNU_TARGET_NAME)-c*
$(PKG_BUILD_DIR0) \
$(PKG_BUILD_DIR1) \
$(PKG_BUILD_DIR2) \
$(BUILD_DIR_TOOLCHAIN)/$(PKG_NAME) \
$(TOOLCHAIN_DIR)/usr/$(REAL_GNU_TARGET_NAME) \
$(TOOLCHAIN_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-gc* \
$(TOOLCHAIN_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-c*
endef
$(eval $(call HostBuild))
#
# Copyright (C) 2006-2008 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=glibc-ports
PKG_VERSION:=$(call qstrip,$(CONFIG_GLIBC_VERSION))
ifeq ($(PKG_VERSION),2.3.6)
PKG_MD5SUM:=40dce745d34ff80401da2fdfe58f6d53
endif
ifeq ($(PKG_VERSION),2.6.1)
PKG_MD5SUM:=53d88ca624642dd267752ccce77b19d0
endif
ifeq ($(PKG_VERSION),2.7)
PKG_MD5SUM:=eaeb8527b8fa286c2d887157214f9998
endif
PKG_SOURCE_URL:=@GNU/glibc/
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_CAT:=bzcat
PATCH_DIR:=./patches/$(PKG_VERSION)
STAGING_DIR_HOST:=$(TOOLCHAIN_DIR)
BUILD_DIR_HOST:=$(BUILD_DIR_TOOLCHAIN)
override CONFIG_AUTOREBUILD=
include $(INCLUDE_DIR)/host-build.mk
STAMP_BUILT:=$(TOOLCHAIN_DIR)/stamp/.glibc-ports_built
STAMP_INSTALLED:=$(TOOLCHAIN_DIR)/stamp/.glibc-ports_installed
define Build/Prepare
$(call Build/Prepare/Default)
ln -snf $(PKG_NAME)-$(PKG_VERSION) $(BUILD_DIR_TOOLCHAIN)/$(PKG_NAME)
endef
define Build/Configure
endef
define Build/Compile
endef
define Build/Install
endef
define Build/Clean
rm -rf \
$(PKG_BUILD_DIR) \
$(BUILD_DIR_TOOLCHAIN)/$(PKG_NAME)
endef
$(eval $(call HostBuild))
http://sourceware.org/ml/crossgcc/2008-05/msg00014.html
diff -durN glibc-ports-2.6.1.orig/sysdeps/unix/sysv/linux/arm/ioperm.c glibc-ports-2.6.1/sysdeps/unix/sysv/linux/arm/ioperm.c
--- glibc-ports-2.6.1.orig/sysdeps/unix/sysv/linux/arm/ioperm.c 2005-06-10 13:12:09.000000000 +0200
+++ glibc-ports-2.6.1/sysdeps/unix/sysv/linux/arm/ioperm.c 2008-05-18 16:19:45.000000000 +0200
@@ -45,7 +45,6 @@
#include <sys/mman.h>
#include <linux/version.h>
-#include <asm/page.h>
#include <sys/sysctl.h>
#define PATH_ARM_SYSTYPE "/etc/arm_systype"
diff -durN glibc-ports-2.6.1.orig/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h glibc-ports-2.6.1/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
--- glibc-ports-2.6.1.orig/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h 2005-11-16 20:22:59.000000000 +0100
+++ glibc-ports-2.6.1/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h 2007-09-06 13:53:16.000000000 +0200
@@ -132,3 +132,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 -ruN glibc-ports-2.7-orig/sysdeps/mips/mips32/Makefile glibc-ports-2.7/sysdeps/mips/mips32/Makefile
--- glibc-ports-2.7-orig/ports/sysdeps/mips/mips32/Makefile 2003-03-29 09:15:28.000000000 +0100
+++ glibc-ports-2.7/sysdeps/mips/mips32/Makefile 2008-10-01 17:04:40.475005748 +0200
@@ -1,3 +1,7 @@
+ifeq ($(filter -DBOOTSTRAP_GCC,$(CFLAGS)),)
ifeq ($(filter -mabi=32,$(CC)),)
CC += -mabi=32
endif
+else
+CC += -D"_MIPS_SZPTR=32"
+endif
From: http://sourceware.org/ml/crossgcc/2008-10/msg00044.html
From: http://sources.redhat.com/ml/libc-ports/2007-06/msg00005.html
2007-06-07 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/nofpu/Makefile: Remove fe_nomask from libm-support.
diff -urN glibc-ports-2.6.1.orig/sysdeps/powerpc/nofpu/Makefile glibc-ports-2.6.1/sysdeps/powerpc/nofpu/Makefile
--- glibc-ports-2.6.1.orig/sysdeps/powerpc/nofpu/Makefile 2006-11-22 09:13:11.000000000 -0600
+++ glibc-ports-2.6.1/sysdeps/powerpc/nofpu/Makefile 2007-06-07 09:53:05.708240976 -0500
@@ -6,7 +6,7 @@
endif
ifeq ($(subdir),math)
-libm-support += fenv_const fe_nomask
+libm-support += fenv_const
CPPFLAGS += -I../soft-fp/
# The follow CFLAGS are a work around for GCC Bugzilla Bug 29253
# "expand_abs wrong default code for floating point"
http://sourceware.org/ml/crossgcc/2008-05/msg00014.html
diff -durN glibc-ports-2.6.1.orig/sysdeps/unix/sysv/linux/arm/ioperm.c glibc-ports-2.6.1/sysdeps/unix/sysv/linux/arm/ioperm.c
--- glibc-ports-2.6.1.orig/sysdeps/unix/sysv/linux/arm/ioperm.c 2005-06-10 13:12:09.000000000 +0200
+++ glibc-ports-2.6.1/sysdeps/unix/sysv/linux/arm/ioperm.c 2008-05-18 16:19:45.000000000 +0200
@@ -45,7 +45,6 @@
#include <sys/mman.h>
#include <linux/version.h>
-#include <asm/page.h>
#include <sys/sysctl.h>
#define PATH_ARM_SYSTYPE "/etc/arm_systype"
diff -durN glibc-ports-2.6.1.orig/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h glibc-ports-2.6.1/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
--- glibc-ports-2.6.1.orig/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h 2005-11-16 20:22:59.000000000 +0100
+++ glibc-ports-2.6.1/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h 2007-09-06 13:53:16.000000000 +0200
@@ -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
http://sourceware.org/ml/libc-ports/2008-02/msg00005.html
diff -durN glibc-ports-2.7.orig/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h glibc-ports-2.7/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
--- glibc-ports-2.7.orig/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h 2007-06-06 19:27:04.000000000 +0200
+++ glibc-ports-2.7/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h 2008-05-18 16:57:21.000000000 +0200
@@ -73,6 +73,9 @@
# define DOCARGS_5 DOCARGS_4
# define UNDOCARGS_5 UNDOCARGS_4
+# define DOCARGS_6 DOCARGS_5
+# define UNDOCARGS_6 UNDOCARGS_5
+
# ifdef IS_IN_libpthread
# define CENABLE bl PLTJMP(__pthread_enable_asynccancel)
# define CDISABLE bl PLTJMP(__pthread_disable_asynccancel)
http://www.nabble.com/arm-linux-compilation-failure-and-possible-fix-td19229074.html
diff -durN glibc-ports-2.7.orig/sysdeps/unix/sysv/linux/arm/ioperm.c glibc-ports-2.7/sysdeps/unix/sysv/linux/arm/ioperm.c
--- glibc-ports-2.7.orig/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h.orig 2008-10-04 20:46:13.000000000 +0200
+++ glibc-ports-2.7/sysdeps/unix/sysv/linux/arm/nptl/lowlevellock.h 2008-10-04 20:45:40.000000000 +0200
@@ -25,6 +25,7 @@
#include <atomic.h>
#include <sysdep.h>
#include <kernel-features.h>
+#include <tls.h>
#define FUTEX_WAIT 0
#define FUTEX_WAKE 1
diff -ruN glibc-ports-2.7-orig/sysdeps/mips/mips32/Makefile glibc-ports-2.7/sysdeps/mips/mips32/Makefile
--- glibc-ports-2.7-orig/sysdeps/mips/mips32/Makefile 2003-03-29 09:15:28.000000000 +0100
+++ glibc-ports-2.7/sysdeps/mips/mips32/Makefile 2008-10-01 17:04:40.475005748 +0200
@@ -1,3 +1,7 @@
+ifeq ($(filter -DBOOTSTRAP_GCC,$(CFLAGS)),)
ifeq ($(filter -mabi=32,$(CC)),)
CC += -mabi=32
endif
+else
+CC += -D"_MIPS_SZPTR=32"
+endif
choice
prompt "glibc version"
depends on TOOLCHAINOPTS && USE_GLIBC
default GLIBC_VERSION_2_6_1
help
Select the version of glibc you wish to use.
config GLIBC_VERSION_2_3_6
bool "glibc 2.3.6"
config GLIBC_VERSION_2_6_1
bool "glibc 2.6.1"
config GLIBC_VERSION_2_7
bool "glibc 2.7"
endchoice
config GLIBC_VERSION
string
depends on USE_GLIBC
default "2.3.6" if GLIBC_VERSION_2_3_6
default "2.6.1" if GLIBC_VERSION_2_6_1
default "2.7" if GLIBC_VERSION_2_7
default "2.7"
config GLIBC_PORTS
bool
depends on USE_GLIBC
default y if GLIBC_VERSION_2_3_6 && (arm || armeb || mips || mipsel)
default y if GLIBC_VERSION_2_6_1 && (arm || armeb || mips || mipsel || powerpc)
default y if GLIBC_VERSION_2_7 && (arm || armeb || mips || mipsel || powerpc)
default n
#
# Copyright (C) 2006-2008 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=glibc
PKG_VERSION:=$(call qstrip,$(CONFIG_GLIBC_VERSION))
ifeq ($(PKG_VERSION),2.3.6)
PKG_MD5SUM:=bfdce99f82d6dbcb64b7f11c05d6bc96
endif
ifeq ($(PKG_VERSION),2.6.1)
PKG_MD5SUM:=11cf6d3fc86dbe0890b8d00372eb6286
endif
ifeq ($(PKG_VERSION),2.7)
PKG_MD5SUM:=065c5952b439deba40083ccd67bcc8f7
endif
PKG_SOURCE_URL:=@GNU/glibc/
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_CAT:=bzcat
PATCH_DIR:=./patches/$(PKG_VERSION)
STAGING_DIR_HOST:=$(TOOLCHAIN_DIR)
BUILD_DIR_HOST:=$(BUILD_DIR_TOOLCHAIN)
override CONFIG_AUTOREBUILD=
include $(INCLUDE_DIR)/host-build.mk
STAMP_BUILT:=$(TOOLCHAIN_DIR)/stamp/.glibc_built
STAMP_INSTALLED:=$(TOOLCHAIN_DIR)/stamp/.glibc_installed
PKG_BUILD_DIR1:=$(PKG_BUILD_DIR)-initial
PKG_BUILD_DIR2:=$(PKG_BUILD_DIR)-final
GLIBC_ADD_ONS+=nptl,
ifneq ($(CONFIG_GLIBC_PORTS),)
GLIBC_ADD_ONS+=ports,
define Build/Prepare/ports
ln -snf ../glibc-ports $(PKG_BUILD_DIR)/ports
endef
endif
# XXX: {e,}glibc does not build w/ -Os
# http://sourceware.org/bugzilla/show_bug.cgi?id=5203
GLIBC_CFLAGS:=$(subst -Os,-O2,$(TARGET_CFLAGS))
GLIBC_CONFIGURE_COMMON:= \
BUILD_CC="$(HOSTCC)" \
$(TARGET_CONFIGURE_OPTS) \
CFLAGS="$(GLIBC_CFLAGS)" \
libc_cv_forced_unwind=yes \
libc_cv_c_cleanup=yes \
libc_cv_386_tls=yes \
$(PKG_BUILD_DIR)/configure \
--prefix=/usr \
--build=$(GNU_HOST_NAME) \
--host=$(REAL_GNU_TARGET_NAME) \
--with-headers="$(TOOLCHAIN_DIR)/usr/include" \
--disable-debug \
--disable-profile \
--enable-add-ons="$(GLIBC_ADD_ONS)" \
--without-gd \
--without-cvs \
ifeq ($(CONFIG_SOFT_FLOAT),)
GLIBC_CONFIGURE_COMMON+= \
--with-fp
else
GLIBC_CONFIGURE_COMMON+= \
--without-fp
endif
GLIBC_CONFIGURE_STAGE1:= \
$(GLIBC_CONFIGURE_COMMON) \
--disable-sanity-checks \
--enable-hacker-mode \
GLIBC_CONFIGURE_STAGE2:= \
$(GLIBC_CONFIGURE_COMMON) \
GLIBC_MAKE:= \
$(MAKE) \
define Build/SetToolchainInfo
$(SED) 's,^\(LIBC_TYPE\)=.*,\1=$(PKG_NAME),' $(TOOLCHAIN_DIR)/info.mk
$(SED) 's,^\(LIBC_URL\)=.*,\1=http://www.gnu.org/software/libc/,' $(TOOLCHAIN_DIR)/info.mk
$(SED) 's,^\(LIBC_VERSION\)=.*,\1=$(PKG_VERSION),' $(TOOLCHAIN_DIR)/info.mk
$(SED) 's,^\(LIBC_PATCHVER\)=.*,\1=,' $(TOOLCHAIN_DIR)/info.mk
endef
define Stage1/Configure
mkdir -p $(PKG_BUILD_DIR1)
( cd $(PKG_BUILD_DIR1); rm -f config.cache; \
$(GLIBC_CONFIGURE_STAGE1) \
);
endef
define Stage1/Compile
endef
define Stage1/Install
$(GLIBC_MAKE) -C $(PKG_BUILD_DIR1) \
CFLAGS="-DBOOTSTRAP_GCC" \
cross-compiling=yes \
install_root="$(BUILD_DIR_TOOLCHAIN)/$(LIBC)-dev" \
install-headers
[ -f $(BUILD_DIR_TOOLCHAIN)/$(LIBC)-dev/usr/include/bits/stdio_lim.h ] || \
$(CP) $(PKG_BUILD_DIR1)/bits/stdio_lim.h \
$(BUILD_DIR_TOOLCHAIN)/$(LIBC)-dev/usr/include/bits/stdio_lim.h
[ -f $(BUILD_DIR_TOOLCHAIN)/$(LIBC)-dev/usr/include/gnu/stubs.h ] || \
touch $(BUILD_DIR_TOOLCHAIN)/$(LIBC)-dev/usr/include/gnu/stubs.h
endef
define Stage2/Configure
mkdir -p $(PKG_BUILD_DIR2)
( cd $(PKG_BUILD_DIR2); rm -f config.cache; \
$(GLIBC_CONFIGURE_STAGE2) \
);
endef
define Stage2/Compile
$(GLIBC_MAKE) -C $(PKG_BUILD_DIR2) all
endef
define Stage2/Install
$(GLIBC_MAKE) -C $(PKG_BUILD_DIR2) \
install_root="$(TOOLCHAIN_DIR)" \
install
( cd $(TOOLCHAIN_DIR) ; \
for d in lib usr/lib ; do \
for f in libc.so libpthread.so libgcc_s.so ; do \
if [ -f $$$$d/$$$$f -a ! -L $$$$d/$$$$f ] ; then \
$(SED) 's,/usr/lib/,,g;s,/lib/,,g' $$$$d/$$$$f ; \
fi \
done \
done \
)
endef
define Build/Prepare
$(call Build/SetToolchainInfo)
$(call Build/Prepare/Default)
ln -snf $(PKG_NAME)-$(PKG_VERSION) $(BUILD_DIR_TOOLCHAIN)/$(PKG_NAME)
$(call Build/Prepare/ports)
$(call Stage1/Configure)
$(call Stage1/Compile)
$(call Stage1/Install)
endef
define Build/Configure
endef
define Build/Compile
$(call Stage2/Configure)
$(call Stage2/Compile)
$(call Stage2/Install)
endef
define Build/Install
endef
define Build/Clean
rm -rf \
$(PKG_BUILD_DIR) \
$(PKG_BUILD_DIR1) \
$(PKG_BUILD_DIR2) \
$(BUILD_DIR_TOOLCHAIN)/$(LIBC)-dev \
$(BUILD_DIR_TOOLCHAIN)/$(PKG_NAME)
endef
$(eval $(call HostBuild))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment