summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mk/vars.mk8
-rw-r--r--toolchain/eglibc/Makefile10
-rw-r--r--toolchain/glibc/Makefile13
-rw-r--r--toolchain/glibc/Makefile.inc2
-rw-r--r--toolchain/glibc/patches/longjmp_chk.patch56
5 files changed, 63 insertions, 26 deletions
diff --git a/mk/vars.mk b/mk/vars.mk
index 2151348b0..345531b3f 100644
--- a/mk/vars.mk
+++ b/mk/vars.mk
@@ -37,15 +37,15 @@ PACKAGE_DIR:= $(BIN_DIR)/packages
TARGET_DIR:= $(BASE_DIR)/root_${ADK_TARGET}_${ADK_LIBC}
TARGET_DIR_PFX:= $(BASE_DIR)/root_*
TARGET_PATH= ${SCRIPT_DIR}:${STAGING_TOOLS}/bin:${STAGING_DIR}/scripts:${_PATH}
-REAL_GNU_TARGET_NAME= $(CPU_ARCH)-linux-$(ADK_TARGET_SUFFIX)
-GNU_TARGET_NAME= $(CPU_ARCH)-linux
+REAL_GNU_TARGET_NAME= $(CPU_ARCH)-openadk-linux-$(ADK_TARGET_SUFFIX)
+GNU_TARGET_NAME= $(CPU_ARCH)-openadk-linux
TOOLCHAIN_SYSROOT:= $(TOOLCHAIN_BUILD_DIR)/libc_dev
ifeq ($(ADK_NATIVE),y)
-TARGET_COMPILER_PREFIX?=
TARGET_CROSS:=
+TARGET_COMPILER_PREFIX?=
else
+TARGET_CROSS:= $(STAGING_TOOLS)/bin/$(REAL_GNU_TARGET_NAME)-
TARGET_COMPILER_PREFIX?=${TARGET_CROSS}
-TARGET_CROSS:= $(STAGING_TOOLS)/bin/$(CPU_ARCH)-linux-$(ADK_TARGET_SUFFIX)-
endif
TARGET_CC:= ${TARGET_COMPILER_PREFIX}gcc
TARGET_CXX:= ${TARGET_COMPILER_PREFIX}g++
diff --git a/toolchain/eglibc/Makefile b/toolchain/eglibc/Makefile
index aeec91c90..1605113c6 100644
--- a/toolchain/eglibc/Makefile
+++ b/toolchain/eglibc/Makefile
@@ -60,16 +60,6 @@ $(WRKBUILD)/.headers: $(WRKBUILD)/.headers_configure
PATH='${TARGET_PATH}' \
$(MAKE) -C $(EGLIBC_BUILD_DIR_INITIAL) \
install-headers install-bootstrap-headers=yes
- PATH='${TARGET_PATH}' \
- $(MAKE) -C $(EGLIBC_BUILD_DIR_INITIAL) \
- csu/subdir_lib
- ( cd $(EGLIBC_BUILD_DIR_INITIAL); \
- $(CP) csu/crt1.o csu/crti.o csu/crtn.o \
- $(TOOLCHAIN_SYSROOT)/usr/lib \
- );
- PATH='${TARGET_PATH}' \
- $(TARGET_CC) -nostdlib -nostartfiles -shared -x c /dev/null \
- -o $(TOOLCHAIN_SYSROOT)/usr/lib/libc.so
touch $@
$(WRKBUILD)/.configured:
diff --git a/toolchain/glibc/Makefile b/toolchain/glibc/Makefile
index 978794dc9..2058c41d4 100644
--- a/toolchain/glibc/Makefile
+++ b/toolchain/glibc/Makefile
@@ -63,16 +63,6 @@ $(WRKBUILD)/.headers: $(WRKBUILD)/.headers_configure
install_root=$(TOOLCHAIN_SYSROOT) \
install-headers
touch $(TOOLCHAIN_SYSROOT)/usr/include/gnu/stubs.h
- PATH='${TARGET_PATH}' \
- $(MAKE) -C $(GLIBC_BUILD_DIR_INITIAL) \
- csu/subdir_lib
- ( cd $(GLIBC_BUILD_DIR_INITIAL); \
- $(CP) csu/crt1.o csu/crti.o csu/crtn.o \
- $(TOOLCHAIN_SYSROOT)/usr/lib \
- );
- PATH='${TARGET_PATH}' \
- $(TARGET_CC) -nostdlib -nostartfiles -shared -x c /dev/null \
- -o $(TOOLCHAIN_SYSROOT)/usr/lib/libc.so
touch $@
$(WRKBUILD)/.configured:
@@ -92,7 +82,8 @@ $(WRKBUILD)/.compiled:
touch $@
$(WRKBUILD)/.installed:
- ${GLIBC_ENV} $(MAKE) -C $(GLIBC_BUILD_DIR_FINAL) install_root=$(STAGING_DIR) install
+ ${GLIBC_ENV} $(MAKE) -C $(GLIBC_BUILD_DIR_FINAL) \
+ install_root=$(STAGING_DIR) install
touch $(STAGING_DIR)/usr/include/gnu/stubs.h
touch $@
diff --git a/toolchain/glibc/Makefile.inc b/toolchain/glibc/Makefile.inc
index 596c71955..23659af5d 100644
--- a/toolchain/glibc/Makefile.inc
+++ b/toolchain/glibc/Makefile.inc
@@ -2,7 +2,7 @@
# material, please see the LICENCE file in the top-level directory.
PKG_NAME:= glibc
-PKG_VERSION:= 2.11
+PKG_VERSION:= 2.11.1
PKG_RELEASE:= 1
PKG_MD5SUM:= 55d50abb2d7c366bde6fb5e35e681f9b
PKG_SITES:= ${MASTER_SITE_GNU:=glibc/}
diff --git a/toolchain/glibc/patches/longjmp_chk.patch b/toolchain/glibc/patches/longjmp_chk.patch
new file mode 100644
index 000000000..b2590460c
--- /dev/null
+++ b/toolchain/glibc/patches/longjmp_chk.patch
@@ -0,0 +1,56 @@
+diff -Nur glibc-2.11.orig/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S glibc-2.11/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S
+--- glibc-2.11.orig/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S 2009-10-30 18:17:08.000000000 +0100
++++ glibc-2.11/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S 2010-02-19 08:06:22.000000000 +0100
+@@ -33,10 +33,10 @@
+ cfi_register(%ebx,%ecx); \
+ LOAD_PIC_REG (bx); \
+ leal longjmp_msg@GOTOFF(%ebx), %eax; \
+- call __GI___fortify_fail@PLT
++ call HIDDEN_JUMPTARGET(__fortify_fail)
+ #else
+ # define CALL_FAIL movl $longjmp_msg, %eax; \
+- call __fortify_fail
++ call HIDDEN_JUMPTARGET(__fortify_fail)
+ #endif
+
+
+diff -Nur glibc-2.11.orig/sysdeps/unix/sysv/linux/ia64/____longjmp_chk.S glibc-2.11/sysdeps/unix/sysv/linux/ia64/____longjmp_chk.S
+--- glibc-2.11.orig/sysdeps/unix/sysv/linux/ia64/____longjmp_chk.S 2009-10-30 18:17:08.000000000 +0100
++++ glibc-2.11/sysdeps/unix/sysv/linux/ia64/____longjmp_chk.S 2010-02-19 08:06:22.000000000 +0100
+@@ -30,19 +30,13 @@
+
+ #define __longjmp ____longjmp_chk
+
+-#ifdef PIC
+-# define CALL_FAIL __GI___fortify_fail
+-#else
+-# define CALL_FAIL __fortify_fail
+-#endif
+-
+ #define CHECK_RSP(reg) \
+ cmp.ltu p0, p8 = reg, r12; \
+ (p8) br.cond.dpnt .Lok;; \
+ addl r28 = @ltoffx(longjmp_msg#), r1;; \
+ ld8.mov r28 = [r28], longjmp_msg#;; \
+ ld8 out0 = [r28]; \
+- br.call.sptk.many b0 = CALL_FAIL#;; \
++ br.call.sptk.many b0 = HIDDEN_JUMPTARGET(__fortify_fail)#;; \
+ .Lok:
+
+ #include "__longjmp.S"
+diff -Nur glibc-2.11.orig/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S glibc-2.11/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S
+--- glibc-2.11.orig/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S 2009-10-30 18:17:08.000000000 +0100
++++ glibc-2.11/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S 2010-02-19 08:06:22.000000000 +0100
+@@ -31,10 +31,10 @@
+
+ #ifdef PIC
+ # define CALL_FAIL leaq longjmp_msg(%rip), %rdi; \
+- call __GI___fortify_fail
++ call HIDDEN_JUMPTARGET(__fortify_fail)
+ #else
+ # define CALL_FAIL movq $longjmp_msg, %rdi; \
+- call __fortify_fail
++ call HIDDEN_JUMPTARGET(__fortify_fail)
+ #endif
+
+ #define CHECK_RSP(reg) \