瀏覽代碼

fix eglibc/glibc support on lemote 64 bit

Waldemar Brodkorb 15 年之前
父節點
當前提交
973e48a122

+ 3 - 4
package/eglibc/Makefile

@@ -23,12 +23,11 @@ ifeq ($(ADK_SSP),y)
 	$(CP) $(STAGING_DIR)/lib/libssp.so* $(IDIR_EGLIBC)/lib/
 endif
 	$(CP) $(STAGING_DIR)/lib/libgcc_s.so.* $(IDIR_EGLIBC)/lib/
-	$(CP) $(STAGING_DIR)/lib/ld-*.so* $(IDIR_EGLIBC)/lib/
-	-for file in libc libcrypt libdl libm libresolv librt libutil libnss_compat libnss_dns libnss_files; do \
+	-for file in libc ld libcrypt libdl libm libresolv librt libutil libnss_compat libnss_dns libnss_files; do \
 		$(CP) $(STAGING_DIR)/lib/$$file.so.* $(IDIR_EGLIBC)/lib/; \
 		$(CP) $(STAGING_DIR)/lib/$$file-$(PKG_VERSION).so $(IDIR_EGLIBC)/lib/; \
 	done
-	# create ld.so link for ldd
-	cd $(IDIR_EGLIBC)/lib && ln -sf ld-$(PKG_VERSION).so ld.so
+	# create ld.so link for x86 linker 
+	cd $(IDIR_EGLIBC)/lib && ln -sf ld-$(PKG_VERSION).so ld-linux.so.2
 
 include ${TOPDIR}/mk/pkg-bottom.mk

+ 2 - 2
package/glibc/Makefile

@@ -28,7 +28,7 @@ endif
 		$(CP) $(STAGING_DIR)/lib/$$file.so.* $(IDIR_GLIBC)/lib/; \
 		$(CP) $(STAGING_DIR)/lib/$$file-$(PKG_VERSION).so $(IDIR_GLIBC)/lib/; \
 	done
-	# create ld.so link for ldd
-	cd $(IDIR_GLIBC)/lib && ln -sf ld-linux.so.2 ld.so
+	# create ld.so link for mips gcc linker option
+	cd $(IDIR_GLIBC)/lib && ln -sf ld-linux.so.2 ld.so.1
 
 include ${TOPDIR}/mk/pkg-bottom.mk

+ 4 - 0
target/lemote/Makefile

@@ -17,6 +17,10 @@ ifeq ($(FS),nfsroot)
 imageinstall: $(BIN_DIR)/$(ROOTFSTARBALL)
 	@echo 'The kernel file is: ${BIN_DIR}/${DEVICE}-${ARCH}-kernel'
 	@echo 'The nfs root tarball is: ${BIN_DIR}/${ROOTFSTARBALL}'
+	@echo 'Boot your lemote and type following commands in PMON:'
+	@echo 'PMON> ifaddr rtl0 <ip-address-client>'
+	@echo 'PMON> load tftp://<ip-address-server>/lemote-mips-kernel'
+	@echo 'PMON> g console=tty root=/dev/nfs ip=dhcp init=/init'
 endif
 ifeq ($(FS),initramfs)
 imageinstall: $(BIN_DIR)/$(INITRAMFS)

+ 2 - 1
toolchain/eglibc/Makefile

@@ -30,7 +30,8 @@ EGLIBC_ENV:=		PATH='${TARGET_PATH}' \
 			RANLIB=${REAL_GNU_TARGET_NAME}-ranlib \
 			libc_cv_forced_unwind=yes \
 			libc_cv_c_cleanup=yes \
-			libc_cv_gnu99_inline=yes
+			libc_cv_gnu99_inline=yes \
+			libc_cv_slibdir="/lib" 
 
 ifeq ($(ADK_DEVICE_NO_FPU),y)
 EGLIBC_CONFOPTS+=       --without-fp

+ 15 - 15
toolchain/gcc/patches/no-lib64.patch

@@ -1,6 +1,6 @@
-diff -Nur gcc-4.4.0.orig/gcc/config/i386/linux64.h gcc-4.4.0/gcc/config/i386/linux64.h
---- gcc-4.4.0.orig/gcc/config/i386/linux64.h	2009-04-10 01:23:07.000000000 +0200
-+++ gcc-4.4.0/gcc/config/i386/linux64.h	2009-06-19 15:43:10.419891589 +0200
+diff -Nur gcc-4.4.1.orig/gcc/config/i386/linux64.h gcc-4.4.1/gcc/config/i386/linux64.h
+--- gcc-4.4.1.orig/gcc/config/i386/linux64.h	2009-04-10 01:23:07.000000000 +0200
++++ gcc-4.4.1/gcc/config/i386/linux64.h	2009-08-21 18:34:13.000000000 +0200
 @@ -59,7 +59,7 @@
     done.  */
  
@@ -10,9 +10,9 @@ diff -Nur gcc-4.4.0.orig/gcc/config/i386/linux64.h gcc-4.4.0/gcc/config/i386/lin
  
  #undef ASM_SPEC
  #define ASM_SPEC "%{v:-V} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} \
-diff -Nur gcc-4.4.0.orig/gcc/config/i386/t-linux64 gcc-4.4.0/gcc/config/i386/t-linux64
---- gcc-4.4.0.orig/gcc/config/i386/t-linux64	2008-07-02 17:59:19.000000000 +0200
-+++ gcc-4.4.0/gcc/config/i386/t-linux64	2009-06-19 15:43:10.419891589 +0200
+diff -Nur gcc-4.4.1.orig/gcc/config/i386/t-linux64 gcc-4.4.1/gcc/config/i386/t-linux64
+--- gcc-4.4.1.orig/gcc/config/i386/t-linux64	2008-07-02 17:59:19.000000000 +0200
++++ gcc-4.4.1/gcc/config/i386/t-linux64	2009-08-21 18:34:13.000000000 +0200
 @@ -7,7 +7,7 @@
  
  MULTILIB_OPTIONS = m64/m32
@@ -22,9 +22,9 @@ diff -Nur gcc-4.4.0.orig/gcc/config/i386/t-linux64 gcc-4.4.0/gcc/config/i386/t-l
  
  LIBGCC = stmp-multilib
  INSTALL_LIBGCC = install-multilib
-diff -Nur gcc-4.4.0.orig/gcc/config/linux.h gcc-4.4.0/gcc/config/linux.h
---- gcc-4.4.0.orig/gcc/config/linux.h	2009-04-10 01:23:07.000000000 +0200
-+++ gcc-4.4.0/gcc/config/linux.h	2009-06-19 15:42:51.508828335 +0200
+diff -Nur gcc-4.4.1.orig/gcc/config/linux.h gcc-4.4.1/gcc/config/linux.h
+--- gcc-4.4.1.orig/gcc/config/linux.h	2009-04-10 01:23:07.000000000 +0200
++++ gcc-4.4.1/gcc/config/linux.h	2009-08-21 18:34:13.000000000 +0200
 @@ -119,7 +119,7 @@
     supporting both 32-bit and 64-bit compilation.  */
  #define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
@@ -34,9 +34,9 @@ diff -Nur gcc-4.4.0.orig/gcc/config/linux.h gcc-4.4.0/gcc/config/linux.h
  #define LINUX_DYNAMIC_LINKER \
    CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
  #define LINUX_DYNAMIC_LINKER32 \
-diff -Nur gcc-4.4.0.orig/gcc/config/mips/linux64.h gcc-4.4.0/gcc/config/mips/linux64.h
---- gcc-4.4.0.orig/gcc/config/mips/linux64.h	2009-02-20 16:20:38.000000000 +0100
-+++ gcc-4.4.0/gcc/config/mips/linux64.h	2009-06-19 15:43:10.419891589 +0200
+diff -Nur gcc-4.4.1.orig/gcc/config/mips/linux64.h gcc-4.4.1/gcc/config/mips/linux64.h
+--- gcc-4.4.1.orig/gcc/config/mips/linux64.h	2009-02-20 16:20:38.000000000 +0100
++++ gcc-4.4.1/gcc/config/mips/linux64.h	2009-08-21 18:37:19.000000000 +0200
 @@ -36,7 +36,7 @@
    %{profile:-lc_p} %{!profile:-lc}}"
  
@@ -46,9 +46,9 @@ diff -Nur gcc-4.4.0.orig/gcc/config/mips/linux64.h gcc-4.4.0/gcc/config/mips/lin
  #define GLIBC_DYNAMIC_LINKERN32 "/lib32/ld.so.1"
  #define UCLIBC_DYNAMIC_LINKERN32 "/lib32/ld-uClibc.so.0"
  #define LINUX_DYNAMIC_LINKERN32 \
-diff -Nur gcc-4.4.0.orig/gcc/config/mips/t-linux64 gcc-4.4.0/gcc/config/mips/t-linux64
---- gcc-4.4.0.orig/gcc/config/mips/t-linux64	2006-06-06 14:51:24.000000000 +0200
-+++ gcc-4.4.0/gcc/config/mips/t-linux64	2009-06-19 15:43:10.419891589 +0200
+diff -Nur gcc-4.4.1.orig/gcc/config/mips/t-linux64 gcc-4.4.1/gcc/config/mips/t-linux64
+--- gcc-4.4.1.orig/gcc/config/mips/t-linux64	2006-06-06 14:51:24.000000000 +0200
++++ gcc-4.4.1/gcc/config/mips/t-linux64	2009-08-21 18:34:13.000000000 +0200
 @@ -1,6 +1,6 @@
  MULTILIB_OPTIONS = mabi=n32/mabi=32/mabi=64
  MULTILIB_DIRNAMES = n32 32 64

+ 2 - 1
toolchain/glibc/Makefile

@@ -36,7 +36,8 @@ GLIBC_ENV:=		PATH='${TARGET_PATH}' \
 			LD=${REAL_GNU_TARGET_NAME}-ld \
 			libc_cv_forced_unwind=yes \
 			libc_cv_c_cleanup=yes \
-			libc_cv_gnu99_inline=yes
+			libc_cv_gnu99_inline=yes \
+			libc_cv_slibdir="/lib"
 
 ifeq ($(ADK_DEVICE_NO_FPU),y)
 GLIBC_CONFOPTS+=	--without-fp

+ 0 - 26
toolchain/glibc/patches/mips64.patch

@@ -30,29 +30,3 @@ diff -Nur glibc-2.10-current.orig/ports/sysdeps/mips/preconfigure glibc-2.10-cur
  		fi
  		;;
  mips*)		base_machine=mips machine=mips/mips32/$machine ;;
-diff -Nur glibc-2.10-current.orig/ports/sysdeps/unix/sysv/linux/mips/configure glibc-2.10-current/ports/sysdeps/unix/sysv/linux/mips/configure
---- glibc-2.10-current.orig/ports/sysdeps/unix/sysv/linux/mips/configure	2009-05-26 22:53:29.000000000 +0200
-+++ glibc-2.10-current/ports/sysdeps/unix/sysv/linux/mips/configure	2009-05-27 20:34:25.000000000 +0200
-@@ -84,22 +84,6 @@
-   # and libc_cv_localedir.
-   test -n "$libc_cv_slibdir" || \
-   case $machine in
--  mips/mips64/n64/* )
--    libc_cv_slibdir="/lib64"
--    if test "$libdir" = '${exec_prefix}/lib'; then
--      libdir='${exec_prefix}/lib64';
--      # Locale data can be shared between 32bit and 64bit libraries
--      libc_cv_localedir='${exec_prefix}/lib/locale'
--    fi
--    ;;
--  mips/mips64/n32/* )
--    libc_cv_slibdir="/lib32"
--    if test "$libdir" = '${exec_prefix}/lib'; then
--      libdir='${exec_prefix}/lib32';
--      # Locale data can be shared between 32bit and 64bit libraries
--      libc_cv_localedir='${exec_prefix}/lib/locale'
--    fi
--    ;;
-   *)
-     libc_cv_slibdir="/lib"
-     ;;