Make Super-H finally compile a complete (C-only) toolchain:

- new, un-tested patches
 - an sh4 sample to work on, and to try to reproduce later.

 /trunk/patches/glibc/2.7/250-sh-chop-linux-version.patch         |   49    49     0     0 ++
 /trunk/patches/glibc/2.7/240-sh-lowlevellock-asm.patch           |   56    56     0     0 +++
 /trunk/patches/glibc/2.7/270-sh-fix-procfs.patch                 |   11    11     0     0 +
 /trunk/patches/glibc/2.7/280-sh-fix-kernel-heders-location.patch |   23    23     0     0 +
 /trunk/patches/glibc/2.7/260-sh-syscall-error-path.patch         |   26    26     0     0 +
 /trunk/samples/sh4-unknown-linux-gnu/crosstool.config            |  311   311     0     0 ++++++++++++++
 /trunk/samples/sh4-unknown-linux-gnu/reported.by                 |    3     3     0     0 +
 7 files changed, 479 insertions(+)
This commit is contained in:
Yann E. MORIN" 2008-10-22 20:50:10 +00:00
parent 9d4c07f32f
commit c15b9fb7ea
7 changed files with 479 additions and 0 deletions

View File

@ -0,0 +1,56 @@
--- glibc-2.7/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S.orig 2007-08-03 16:44:15.000000000 +0100
+++ glibc-2.7/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S 2008-08-19 21:08:19.000000000 +0100
@@ -76,7 +76,7 @@
add tmp2, tmp ; \
mov.l @tmp, tmp2 ; \
bra 98f ; \
- mov #FUTEX_PRIVATE_FLAG, tmp
+ mov #FUTEX_PRIVATE_FLAG, tmp ; \
99: .word PRIVATE_FUTEX - TLS_PRE_TCB_SIZE ; \
98: extu.b tmp, tmp ; \
xor tmp, reg ; \
@@ -88,7 +88,7 @@
add tmp2, tmp ; \
mov.l @tmp, tmp2 ; \
bra 98f ; \
- mov #FUTEX_PRIVATE_FLAG, tmp
+ mov #FUTEX_PRIVATE_FLAG, tmp ; \
99: .word PRIVATE_FUTEX - TLS_PRE_TCB_SIZE ; \
98: extu.b tmp, tmp ; \
xor tmp, reg ; \
@@ -96,13 +96,13 @@
mov #FUTEX_WAIT, tmp ; \
or tmp, reg
# endif
-# define LOAD_FUTEX_WAKE(reg,tmp) \
+# define LOAD_FUTEX_WAKE(reg,tmp,tmp2) \
stc gbr, tmp ; \
mov.w 99f, tmp2 ; \
add tmp2, tmp ; \
mov.l @tmp, tmp2 ; \
bra 98f ; \
- mov #FUTEX_PRIVATE_FLAG, tmp
+ mov #FUTEX_PRIVATE_FLAG, tmp ; \
99: .word PRIVATE_FUTEX - TLS_PRE_TCB_SIZE ; \
98: extu.b tmp, tmp ; \
xor tmp, reg ; \
--- glibc-2.7/nptl/sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S.orig 2007-08-03 16:44:57.000000000 +0100
+++ glibc-2.7/nptl/sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S 2008-08-19 21:08:22.000000000 +0100
@@ -42,7 +42,7 @@
add tmp2, tmp ; \
mov.l @tmp, tmp2 ; \
bra 98f ; \
- mov #FUTEX_PRIVATE_FLAG, tmp
+ mov #FUTEX_PRIVATE_FLAG, tmp ; \
99: .word PRIVATE_FUTEX - TLS_PRE_TCB_SIZE ; \
98: extu.b tmp, tmp ; \
xor tmp, reg ; \
@@ -54,7 +54,7 @@
add tmp2, tmp ; \
mov.l @tmp, tmp2 ; \
bra 98f ; \
- mov #FUTEX_PRIVATE_FLAG, tmp
+ mov #FUTEX_PRIVATE_FLAG, tmp ; \
99: .word PRIVATE_FUTEX - TLS_PRE_TCB_SIZE ; \
98: extu.b tmp, tmp ; \
xor tmp, reg ; \

View File

@ -0,0 +1,49 @@
--- glibc-2.7/sysdeps/unix/sysv/linux/dl-osinfo.h.orig 2007-09-15 23:54:08.000000000 +0100
+++ glibc-2.7/sysdeps/unix/sysv/linux/dl-osinfo.h 2008-08-20 09:26:26.000000000 +0100
@@ -83,6 +83,10 @@
int parts;
char *cp;
struct utsname uts;
+ int dotsfound = 0;
+ int versionindex = 0;
+ char *choppoint;
+
/* Try the uname system call. */
if (__uname (&uts))
@@ -102,8 +106,34 @@
else
buf = uts.release;
+ /* We are only interested in the first three kernel numbers, so */
+ /* chop off anything past that: */
+
+ choppoint = buf;
+ while (1)
+ {
+ versionindex++;
+ if (versionindex == 63) break;
+ if (*choppoint == '.') dotsfound++;
+ choppoint++;
+ if (dotsfound == 2)
+ {
+ if (*choppoint == '0' || *choppoint == '1'
+ || *choppoint == '2' || *choppoint == '3'
+ || *choppoint == '4' || *choppoint == '5'
+ || *choppoint == '6' || *choppoint == '7'
+ || *choppoint == '8' || *choppoint == '9')
+ continue;
+ else
+ {
+ *choppoint = 0;
+ break;
+ }
+ }
+ }
+
/* Now convert it into a number. The string consists of at most
- three parts. */
+ three parts. Now it does, anyway. ;-) */
version = 0;
parts = 0;
cp = buf;

View File

@ -0,0 +1,26 @@
--- glibc-2.7/sysdeps/unix/sysv/linux/sh/sysdep.S.orig 2005-12-30 22:16:43.000000000 +0000
+++ glibc-2.7/sysdeps/unix/sysv/linux/sh/sysdep.S 2008-08-19 22:33:14.000000000 +0100
@@ -32,3 +32,13 @@
#define __syscall_error __syscall_error_1
#include <sysdeps/unix/sh/sysdep.S>
+
+ .data
+ .align 3
+ .globl ___fpscr_values
+ .type ___fpscr_values, @object
+ .size ___fpscr_values, 8
+___fpscr_values:
+ .long 0
+ .long 0x80000
+weak_alias (___fpscr_values, __fpscr_values)
--- glibc-2.7/sysdeps/unix/sysv/linux/sh/Versions.orig 2003-09-01 05:05:09.000000000 +0100
+++ glibc-2.7/sysdeps/unix/sysv/linux/sh/Versions 2008-08-19 22:33:14.000000000 +0100
@@ -2,6 +2,7 @@
GLIBC_2.2 {
# functions used in other libraries
__xstat64; __fxstat64; __lxstat64;
+ __fpscr_values;
# a*
alphasort64;

View File

@ -0,0 +1,11 @@
--- a/sysdeps/unix/sysv/linux/sh/sys/procfs.h
+++ b/sysdeps/unix/sysv/linux/sh/sys/procfs.h
@@ -29,7 +29,6 @@
#include <sys/types.h>
#include <sys/ucontext.h>
#include <sys/user.h>
-#include <asm/elf.h>
__BEGIN_DECLS

View File

@ -0,0 +1,23 @@
diff -durN glibc-2.7.orig/sysdeps/unix/sysv/linux/sh/sys/procfs.h glibc-2.7/sysdeps/unix/sysv/linux/sh/sys/procfs.h
--- glibc-2.7.orig/sysdeps/unix/sysv/linux/sh/sys/procfs.h 2008-10-22 21:23:32.000000000 +0200
+++ glibc-2.7/sysdeps/unix/sysv/linux/sh/sys/procfs.h 2008-10-22 21:41:54.000000000 +0200
@@ -29,6 +29,7 @@
#include <sys/types.h>
#include <sys/ucontext.h>
#include <sys/user.h>
+#include <asm/ptrace.h>
__BEGIN_DECLS
diff -durN glibc-2.7.orig/sysdeps/unix/sysv/linux/sh/sys/user.h glibc-2.7/sysdeps/unix/sysv/linux/sh/sys/user.h
--- glibc-2.7.orig/sysdeps/unix/sysv/linux/sh/sys/user.h 2008-10-22 21:23:32.000000000 +0200
+++ glibc-2.7/sysdeps/unix/sysv/linux/sh/sys/user.h 2008-10-22 21:33:34.000000000 +0200
@@ -21,8 +21,6 @@
#include <features.h>
-#include <asm/user.h>
-
#undef start_thread
#endif /* sys/user.h */

View File

@ -0,0 +1,311 @@
#
# Automatically generated make config: don't edit
# crosstool-NG version: 1.2.0+svn_trunk@1115
# Wed Oct 22 22:21:15 2008
#
#
# Paths and misc options
#
#
# crosstool-NG behavior
#
# CT_OBSOLETE is not set
CT_EXPERIMENTAL=y
CT_DEBUG_CT=y
# CT_DEBUG_PAUSE_STEPS is not set
CT_DEBUG_CT_SAVE_STEPS=y
CT_DEBUG_CT_SAVE_STEPS_GZIP=y
#
# Paths
#
CT_LOCAL_TARBALLS_DIR="${HOME}/src"
CT_SAVE_TARBALLS=y
CT_WORK_DIR="${CT_TOP_DIR}/targets"
CT_PREFIX_DIR="${HOME}/x-tools/${CT_TARGET}"
CT_INSTALL_DIR="${CT_PREFIX_DIR}"
# CT_CUSTOM_PATCH is not set
CT_REMOVE_DOCS=y
CT_INSTALL_DIR_RO=y
#
# Downloading
#
# CT_FORCE_DOWNLOAD is not set
# CT_USE_PROXY is not set
CT_PROXY_TYPE="none"
# CT_USE_LAN_MIRROR is not set
CT_CONNECT_TIMEOUT=10
# CT_ONLY_DOWNLOAD is not set
#
# Extracting
#
# CT_FORCE_EXTRACT is not set
CT_OVERIDE_CONFIG_GUESS_SUB=y
# CT_ONLY_EXTRACT is not set
#
# Build behavior
#
CT_PARALLEL_JOBS=1
CT_LOAD=0
CT_NICE=0
CT_USE_PIPES=y
# CT_CONFIG_SHELL_ASH is not set
#
# Logging
#
# CT_LOG_ERROR is not set
# CT_LOG_WARN is not set
# CT_LOG_INFO is not set
CT_LOG_EXTRA=y
# CT_LOG_DEBUG is not set
# CT_LOG_ALL is not set
CT_LOG_LEVEL_MAX="EXTRA"
# CT_LOG_SEE_TOOLS_WARN is not set
CT_LOG_PROGRESS_BAR=y
CT_LOG_TO_FILE=y
CT_LOG_FILE_COMPRESS=y
#
# Target options
#
CT_ARCH="sh"
# CT_ARCH_SUPPORT_ARCH is not set
# CT_ARCH_SUPPORT_ABI is not set
# CT_ARCH_SUPPORT_CPU is not set
# CT_ARCH_SUPPORT_TUNE is not set
# CT_ARCH_SUPPORT_FPU is not set
CT_ARCH_SUPPORTS_BOTH_ENDIAN=y
# CT_ARCH_DEFAULT_BE is not set
CT_ARCH_DEFAULT_LE=y
# CT_ARCH_BE is not set
CT_ARCH_LE=y
CT_ARCH_FLOAT_HW=y
# CT_ARCH_FLOAT_SW is not set
CT_TARGET_CFLAGS=""
CT_TARGET_LDFLAGS=""
#
# General target options
#
# CT_ARCH_alpha is not set
# CT_ARCH_arm is not set
# CT_ARCH_ia64 is not set
# CT_ARCH_mips is not set
# CT_ARCH_powerpc is not set
CT_ARCH_sh=y
# CT_ARCH_x86 is not set
# CT_ARCH_x86_64 is not set
# CT_ARCH_SH_SH3 is not set
CT_ARCH_SH_SH4=y
# CT_ARCH_SH_SH4A is not set
CT_ARCH_SH_VARIANT="sh4"
#
# Target optimisations
#
#
# Toolchain options
#
#
# General toolchain options
#
CT_USE_SYSROOT=y
CT_SHARED_LIBS=y
CT_TARGET_VENDOR=""
CT_TARGET_ALIAS_SED_EXPR=""
CT_TARGET_ALIAS=""
#
# Toolchain type
#
# CT_NATIVE is not set
CT_CROSS=y
# CT_CROSS_NATIVE is not set
# CT_CANADIAN is not set
CT_TOOLCHAIN_TYPE="cross"
CT_BUILD=""
CT_CC_NATIVE="gcc"
#
# Operating System
#
# CT_BARE_METAL is not set
CT_KERNEL="linux"
CT_KERNEL_VERSION="2.6.26.6"
# CT_KERNEL_bare_metal is not set
CT_KERNEL_linux=y
CT_KERNEL_LINUX_INSTALL=y
# CT_KERNEL_LINUX_INSTALL_CHECK is not set
# CT_KERNEL_V_2_6_18_8 is not set
# CT_KERNEL_V_2_6_19_7 is not set
# CT_KERNEL_V_2_6_20_21 is not set
# CT_KERNEL_V_2_6_21_7 is not set
# CT_KERNEL_V_2_6_22_19 is not set
# CT_KERNEL_V_2_6_23_17 is not set
# CT_KERNEL_V_2_6_24_7 is not set
# CT_KERNEL_V_2_6_25_18 is not set
# CT_KERNEL_V_2_6_26 is not set
# CT_KERNEL_V_2_6_26_1 is not set
# CT_KERNEL_V_2_6_26_2 is not set
# CT_KERNEL_V_2_6_26_3 is not set
# CT_KERNEL_V_2_6_26_4 is not set
# CT_KERNEL_V_2_6_26_5 is not set
CT_KERNEL_V_2_6_26_6=y
# CT_KERNEL_V_2_6_27 is not set
# CT_KERNEL_V_2_6_27_1 is not set
# CT_KERNEL_V_2_6_27_2 is not set
CT_KERNEL_LINUX_VERBOSITY_0=y
# CT_KERNEL_LINUX_VERBOSITY_1 is not set
# CT_KERNEL_LINUX_VERBOSITY_2 is not set
CT_KERNEL_LINUX_VERBOSE_LEVEL=0
# CT_KERNEL_LINUX_USE_CUSTOM_DIR is not set
#
# GMP and MPFR
#
CT_GMP_MPFR=y
# CT_GMP_MPFR_TARGET is not set
# CT_GMP_V_4_2_2 is not set
CT_GMP_V_4_2_4=y
CT_GMP_VERSION="4.2.4"
# CT_GMP_CHECK is not set
# CT_MPFR_V_2_3_1 is not set
CT_MPFR_V_2_3_2=y
CT_MPFR_VERSION="2.3.2"
# CT_MPFR_CHECK is not set
#
# binutils
#
CT_BINUTILS_VERSION="2.18"
# CT_BINUTILS_V_2_14 is not set
# CT_BINUTILS_V_2_15 is not set
# CT_BINUTILS_V_2_16_1 is not set
# CT_BINUTILS_V_2_17 is not set
CT_BINUTILS_V_2_18=y
# CT_BINUTILS_V_2_18_50_0_4 is not set
# CT_BINUTILS_V_2_18_50_0_6 is not set
# CT_BINUTILS_V_2_18_50_0_7 is not set
# CT_BINUTILS_V_2_18_50_0_8 is not set
# CT_BINUTILS_V_2_18_50_0_9 is not set
# CT_BINUTILS_V_2_18_90 is not set
# CT_BINUTILS_V_2_18_91 is not set
# CT_BINUTILS_V_2_18_92 is not set
# CT_BINUTILS_V_2_18_93 is not set
# CT_BINUTILS_V_2_19_50_0_1 is not set
CT_BINUTILS_EXTRA_CONFIG=""
# CT_BINUTILS_FOR_TARGET is not set
#
# C compiler
#
CT_CC="gcc"
CT_CC_VERSION="4.2.4"
CT_CC_gcc=y
# CT_CC_V_2_95_3 is not set
# CT_CC_V_3_2_3 is not set
# CT_CC_V_3_3_6 is not set
# CT_CC_V_3_4_6 is not set
# CT_CC_V_4_0_0 is not set
# CT_CC_V_4_0_1 is not set
# CT_CC_V_4_0_2 is not set
# CT_CC_V_4_0_3 is not set
# CT_CC_V_4_0_4 is not set
# CT_CC_V_4_1_0 is not set
# CT_CC_V_4_1_1 is not set
# CT_CC_V_4_1_2 is not set
# CT_CC_V_4_2_0 is not set
# CT_CC_V_4_2_1 is not set
# CT_CC_V_4_2_2 is not set
# CT_CC_V_4_2_3 is not set
CT_CC_V_4_2_4=y
# CT_CC_V_4_3_0 is not set
# CT_CC_V_4_3_1 is not set
# CT_CC_V_4_3_2 is not set
# CT_CC_GCC_4_3_or_later is not set
CT_CC_CXA_ATEXIT=y
CT_CC_SJLJ_EXCEPTIONS_CONFIGURE=y
# CT_CC_SJLJ_EXCEPTIONS_USE is not set
# CT_CC_SJLJ_EXCEPTIONS_DONT_USE is not set
CT_CC_CORE_EXTRA_CONFIG=""
CT_CC_EXTRA_CONFIG=""
CT_CC_SUPPORT_CXX=y
CT_CC_SUPPORT_FORTRAN=y
CT_CC_SUPPORT_JAVA=y
CT_CC_SUPPORT_ADA=y
CT_CC_SUPPORT_OBJC=y
CT_CC_SUPPORT_OBJCXX=y
#
# Additional supported languages:
#
# CT_CC_LANG_CXX is not set
# CT_CC_LANG_FORTRAN is not set
# CT_CC_LANG_JAVA is not set
# CT_CC_LANG_ADA is not set
# CT_CC_LANG_OBJC is not set
# CT_CC_LANG_OBJCXX is not set
CT_CC_LANG_OTHERS=""
CT_LIBC="glibc"
#
# C-library
#
CT_LIBC_VERSION="2.7"
# CT_LIBC_eglibc is not set
CT_LIBC_glibc=y
# CT_LIBC_uClibc is not set
# CT_LIBC_V_2_3_6 is not set
# CT_LIBC_V_2_5 is not set
# CT_LIBC_V_2_5_1 is not set
# CT_LIBC_V_2_6 is not set
# CT_LIBC_V_2_6_1 is not set
CT_LIBC_V_2_7=y
# CT_LIBC_V_LATEST is not set
# CT_LIBC_V_date is not set
#
# Common C library options
#
CT_LIBC_SUPPORT_NPTL=y
CT_LIBC_SUPPORT_LINUXTHREADS=y
CT_THREADS="nptl"
CT_THREADS_NPTL=y
# CT_THREADS_LINUXTHREADS is not set
# CT_THREADS_NONE is not set
#
# glibc/eglibc common options
#
CT_LIBC_GLIBC_EXTRA_CONFIG=""
CT_LIBC_GLIBC_EXTRA_CFLAGS=""
CT_LIBC_EXTRA_CC_ARGS=""
# CT_LIBC_GLIBC_USE_PORTS is not set
CT_LIBC_ADDONS_LIST=""
# CT_LIBC_GLIBC_KERNEL_VERSION_NONE is not set
CT_LIBC_GLIBC_KERNEL_VERSION_AS_HEADERS=y
# CT_LIBC_GLIBC_KERNEL_VERSION_CHOSEN is not set
CT_LIBC_GLIBC_MIN_KERNEL="2.6.26.6"
#
# Tools facilities
#
# CT_TOOL_libelf is not set
# CT_TOOL_sstrip is not set
#
# Debug facilities
#
# CT_DEBUG_dmalloc is not set
# CT_DEBUG_duma is not set
# CT_DEBUG_gdb is not set
# CT_DEBUG_ltrace is not set
# CT_DEBUG_strace is not set

View File

@ -0,0 +1,3 @@
reporter_name="YEM"
reporter_url="http://ymorin.is-a-geek.org/"
reporter_comment="EXPERIMENTAL Super-H sh4 sample."