[yocto] Unable to get serial console login prompt - PowerPC 440 Virtex 5 processor

Khem Raj raj.khem at gmail.com
Tue Aug 14 07:26:53 PDT 2012



-Khem

On Aug 14, 2012, at 2:54 AM, Elvis Dowson <elvis.dowson at gmail.com> wrote:

> Hi Khem,
> 
> On Aug 14, 2012, at 12:26 PM, Elvis Dowson wrote:
> 
>> So gcc-4.6.3, eglibc-2.13, from poky/denzil branch also failed, the same as the poky/master branch with gcc-4.6.3, eglibc-2.13. So I guess the I'll need to do a diff between the Denx ELDK 5.2.1 release, which is based on poky/denzil, and that of the current poky/denzil branch to see which recipes are different, and to try and isolate the cause of the kernel panics, when trying to run init=/bash/sh.
>> 
>> Hopefully, that comparison will yield some clues.


There are differences in eglibc.inc and initrd recipes. Try to see if they make difference
Also the libgcc one after the above two



> 
> I did a comparision betwen the poky/meta and the eldk/meta directories for the denzil branch. The ELDK one is roughly behind by around 2 updates to the denzil branch, I think.
> 
> One thing that I found, was the the ELDK install the no-float libraries for soft-floating point on the target, whereas the current poky/denzil branch does not:
> 
> diff --git a/tool/yocto/poky/meta/recipes-devtools/gcc/libgcc_4.6.bb b/tool/eldk/meta/recipes-devtools/gcc/libgcc_4.6.bb
> index 9a8b20d..f75ca34 100644
> --- a/tool/yocto/poky/meta/recipes-devtools/gcc/libgcc_4.6.bb
> +++ b/tool/eldk/meta/recipes-devtools/gcc/libgcc_4.6.bb
> @@ -16,8 +16,10 @@ PACKAGES = "\
>  FILES_${PN} = "${base_libdir}/libgcc*.so.*"
>  FILES_${PN}-dev = " \
>    ${base_libdir}/libgcc*.so \
> -  ${libdir}/${TARGET_SYS}/${BINV}/*crt* \
> -  ${libdir}/${TARGET_SYS}/${BINV}/libgcc*"
> +  ${libdir}/${TARGET_SYS}/${BINV}/crt* \
> +  ${libdir}/${TARGET_SYS}/${BINV}/libgcc* \
> +  ${libdir}/${TARGET_SYS}/${BINV}/nof/crt* \
> +  ${libdir}/${TARGET_SYS}/${BINV}/nof/libgcc*"
>  FILES_libgcov${PKGSUFFIX}-dev = " \
>    ${libdir}/${TARGET_SYS}/${BINV}/libgcov.a"
>  
> Could this be the reason? Apart from the one above, here are all the other differences under recipes-core. Do let me know if any of them stand-out:
> 
> diff --git a/tool/yocto/poky/meta/recipes-core/eglibc/eglibc-package.inc b/tool/eldk/meta/recipes-core/eglibc/eglibc-package.inc
> index 3c371a7..0db221f 100644
> --- a/tool/yocto/poky/meta/recipes-core/eglibc/eglibc-package.inc
> +++ b/tool/eldk/meta/recipes-core/eglibc/eglibc-package.inc
> @@ -20,12 +20,11 @@ USE_LDCONFIG ?= "1"
>  PKGSUFFIX = ""
>  PKGSUFFIX_virtclass-nativesdk = "-nativesdk"
>  
> -PACKAGES = "${PN}-dbg ${PN} catchsegv${PKGSUFFIX} sln${PKGSUFFIX} nscd${PKGSUFFIX} ldd${PKGSUFFIX} ${PN}-mtrace ${PN}-utils eglibc-extra-nss${PKGSUFFIX} eglibc-thread-db${PKGSUFFIX} ${PN}-pic ${PN}-dev ${PN}-staticdev ${PN}-doc libcidn${PKGSUFFIX} libmemusage${PKGSUFFIX} libsegfault${PKGSUFFIX} ${PN}-pcprofile libsotruss${PKGSUFFIX}"
> +PACKAGES = "${PN}-dbg ${PN} catchsegv${PKGSUFFIX} sln${PKGSUFFIX} nscd${PKGSUFFIX} ldd${PKGSUFFIX} ${PN}-utils eglibc-extra-nss${PKGSUFFIX} eglibc-thread-db${PKGSUFFIX} ${PN}-pic ${PN}-dev ${PN}-staticdev ${PN}-doc libcidn${PKGSUFFIX} libmemusage${PKGSUFFIX} libsegfault${PKGSUFFIX} ${PN}-pcprofile libsotruss${PKGSUFFIX}"
>  
>  # The ld.so in this eglibc supports the GNU_HASH
>  RPROVIDES_${PN} = "glibc${PKGSUFFIX} rtld(GNU_HASH)"
>  RPROVIDES_${PN}-utils = "glibc${PKGSUFFIX}-utils"
> -RPROVIDES_${PN}-mtrace = "glibc${PKGSUFFIX}-mtrace libc-mtrace"
>  RPROVIDES_${PN}-pic = "glibc${PKGSUFFIX}-pic"
>  RPROVIDES_${PN}-dev = "glibc${PKGSUFFIX}-dev"
>  RPROVIDES_${PN}-staticdev = "glibc${PKGSUFFIX}-staticdev"
> @@ -49,13 +48,11 @@ FILES_${PN}-dev_append += "${bindir}/rpcgen ${libdir}/*_nonshared.a \
>  	${base_libdir}/*_nonshared.a ${base_libdir}/*.o ${datadir}/aclocal"
>  FILES_${PN}-staticdev_append += "${libdir}/*.a ${base_libdir}/*.a"
>  FILES_nscd${PKGSUFFIX} = "${sbindir}/nscd*"
> -FILES_${PN}-mtrace = "${bindir}/mtrace"
>  FILES_${PN}-utils = "${bindir}/* ${sbindir}/*"
>  FILES_${PN}-dbg += "${libexecdir}/*/.debug ${libdir}/audit/.debug"
>  FILES_catchsegv${PKGSUFFIX} = "${bindir}/catchsegv"
>  RDEPENDS_catchsegv${PKGSUFFIX} = "libsegfault"
>  RDEPENDS_${PN}-utils += "bash"
> -RDEPENDS_${PN}-mtrace += "perl"
>  FILES_${PN}-pcprofile = "${base_libdir}/libpcprofile.so"
>  FILES_eglibc-thread-db${PKGSUFFIX} = "${base_libdir}/libthread_db.so.* ${base_libdir}/libthread_db-*.so"
>  RPROVIDES_${PN}-dev += "libc-dev"
> @@ -71,8 +68,6 @@ SUMMARY_ldd = "print shared library dependencies"
>  DESCRIPTION_ldd = "/usr/bin/ldd prints shared library dependencies for each program or shared library specified on the command line."
>  SUMMARY_${PN}-utils = "Miscellaneous utilities provided by eglibc"
>  DESCRIPTION_${PN}-utils = "Miscellaneous utilities including getconf, iconf, locale, gencat, tzselect, zic, rpcinfo, ..."
> -SUMMARY_${PN}-mtrace = "mtrace utility provided by eglibc"
> -DESCRIPTION_${PN}-mtrace = "mtrace utility provided by eglibc"
>  DESCRIPTION_libsotruss = "Library to support sotruss which traces calls through PLTs"
>  
>  inherit libc-common multilib_header
> diff --git a/tool/yocto/poky/meta/recipes-core/eglibc/eglibc.inc b/tool/eldk/meta/recipes-core/eglibc/eglibc.inc
> index 51061bc..8e3fe50 100644
> --- a/tool/yocto/poky/meta/recipes-core/eglibc/eglibc.inc
> +++ b/tool/eldk/meta/recipes-core/eglibc/eglibc.inc
> @@ -32,8 +32,6 @@ require eglibc-options.inc
>  
>  LEAD_SONAME = "libc.so"
>  
> -CACHED_CONFIGUREVARS += "ac_cv_path_KSH=${base_bindir}/bash \
> -                       ac_cv_path_BASH_SHELL=${base_bindir}/bash"
>  GLIBC_EXTRA_OECONF ?= ""
>  GLIBC_EXTRA_OECONF_virtclass-nativesdk = ""
>  INHIBIT_DEFAULT_DEPS = "1"
> diff --git a/tool/yocto/poky/meta/recipes-core/eglibc/eglibc_2.13.bb b/tool/eldk/meta/recipes-core/eglibc/eglibc_2.13.bb
> index 690f99d..d8a41dc 100644
> --- a/tool/yocto/poky/meta/recipes-core/eglibc/eglibc_2.13.bb
> +++ b/tool/eldk/meta/recipes-core/eglibc/eglibc_2.13.bb
> @@ -3,7 +3,7 @@ require eglibc.inc
>  SRCREV = "15508"
>  
>  DEPENDS += "gperf-native"
> -PR = "r28"
> +PR = "r26"
>  PR_append = "+svnr${SRCPV}"
>  
>  EGLIBC_BRANCH="eglibc-2_13"
> diff --git a/tool/yocto/poky/meta/recipes-core/eglibc/eglibc_2.15.bb b/tool/eldk/meta/recipes-core/eglibc/eglibc_2.15.bb
> index f5219d1..713efc3 100644
> --- a/tool/yocto/poky/meta/recipes-core/eglibc/eglibc_2.15.bb
> +++ b/tool/eldk/meta/recipes-core/eglibc/eglibc_2.15.bb
> @@ -3,7 +3,7 @@ require eglibc.inc
>  SRCREV = "17386"
>  
>  DEPENDS += "gperf-native"
> -PR = "r7"
> +PR = "r6"
>  PR_append = "+svnr${SRCPV}"
>  
>  EGLIBC_BRANCH="eglibc-2_15"
> diff --git a/tool/yocto/poky/meta/recipes-core/initrdscripts/files/init-install.sh b/tool/eldk/meta/recipes-core/initrdscripts/files/init-install.sh
> index 01ff829..90978dd 100644
> --- a/tool/yocto/poky/meta/recipes-core/initrdscripts/files/init-install.sh
> +++ b/tool/eldk/meta/recipes-core/initrdscripts/files/init-install.sh
> @@ -16,7 +16,7 @@ swap_ratio=5
>  found="no"
>  
>  echo "Searching for a hard drive..."
> -for device in 'hda' 'hdb' 'sda' 'sdb' 'mmcblk0' 'mmcblk1'
> +for device in 'hda' 'hdb' 'sda' 'sdb'
>    do
>    if [ -e /sys/block/${device}/removable ]; then
>        if [ "$(cat /sys/block/${device}/removable)" = "0" ]; then
> @@ -62,7 +62,13 @@ rm -f /etc/udev/scripts/mount*
>  #
>  # Unmount anything the automounter had mounted
>  #
> -umount /dev/${device}* 2> /dev/null || /bin/true
> +umount /dev/${device} 2> /dev/null || /bin/true
> +umount /dev/${device}1 2> /dev/null || /bin/true
> +umount /dev/${device}2 2> /dev/null || /bin/true
> +umount /dev/${device}3 2> /dev/null || /bin/true
> +umount /dev/${device}4 2> /dev/null || /bin/true
> +umount /dev/${device}5 2> /dev/null || /bin/true
> +umount /dev/${device}6 2> /dev/null || /bin/true
>  
>  if [ ! -b /dev/sda ] ; then
>      mknod /dev/sda b 8 0
> @@ -88,23 +94,14 @@ rootfs_start=$((boot_size + 1))
>  rootfs_end=$((rootfs_start+rootfs_size))
>  swap_start=$((rootfs_end+1))
>  
> -# MMC devices are special in a couple of ways
> -# 1) they use a partition prefix character 'p'
> -# 2) they are detected asynchronously (need rootwait)
> -rootwait=""
> -part_prefix=""
> -if [ ! "${device#mmcblk}" = "${device}" ]; then
> -	part_prefix="p"
> -	rootwait="rootwait"
> -fi
> -bootfs=/dev/${device}${part_prefix}1
> -rootfs=/dev/${device}${part_prefix}2
> -swap=/dev/${device}${part_prefix}3
> +bootfs=/dev/${device}1
> +rootfs=/dev/${device}2
> +swap=/dev/${device}3
>  
>  echo "*****************"
> -echo "Boot partition size:   $boot_size MB ($bootfs)"
> -echo "Rootfs partition size: $rootfs_size MB ($rootfs)"
> -echo "Swap partition size:   $swap_size MB ($swap)"
> +echo "Boot partition size:   $boot_size MB (/dev/${device}1)"
> +echo "Rootfs partition size: $rootfs_size MB (/dev/${device}2)"
> +echo "Swap partition size:   $swap_size MB (/dev/${device}3)"
>  echo "*****************"
>  echo "Deleting partition table on /dev/${device} ..."
>  dd if=/dev/zero of=/dev/${device} bs=512 count=2
> @@ -112,24 +109,24 @@ dd if=/dev/zero of=/dev/${device} bs=512 count=2
>  echo "Creating new partition table on /dev/${device} ..."
>  parted /dev/${device} mklabel msdos
>  
> -echo "Creating boot partition on $bootfs"
> +echo "Creating boot partition on /dev/${device}1"
>  parted /dev/${device} mkpart primary 1 $boot_size
>  
> -echo "Creating rootfs partition on $rootfs"
> +echo "Creating rootfs partition on /dev/${device}2"
>  parted /dev/${device} mkpart primary $rootfs_start $rootfs_end
>  
> -echo "Creating swap partition on $swap"
> +echo "Creating swap partition on /dev/${device}3"
>  parted /dev/${device} mkpart primary $swap_start $disk_size
>  
>  parted /dev/${device} print
>  
> -echo "Formatting $bootfs to ext2..."
> +echo "Formatting /dev/${device}1 to ext2..."
>  mkfs.ext3 $bootfs
>  
> -echo "Formatting $rootfs to ext3..."
> +echo "Formatting /dev/${device}2 to ext3..."
>  mkfs.ext3 $rootfs
>  
> -echo "Formatting swap partition...($swap)"
> +echo "Formatting swap partition...(/dev/${device}3)"
>  mkswap $swap
>  
>  mkdir /ssd
> @@ -153,7 +150,7 @@ fi
>  
>  if [ -f /ssd/etc/grub.d/40_custom ] ; then
>      echo "Preparing custom grub2 menu..."
> -    sed -i "s at __ROOTFS__@$rootfs $rootwait at g" /ssd/etc/grub.d/40_custom
> +    sed -i "s at __ROOTFS__@$rootfs at g" /ssd/etc/grub.d/40_custom
>      sed -i "s/__VIDEO_MODE__/$3/g" /ssd/etc/grub.d/40_custom
>      sed -i "s/__VGA_MODE__/$4/g" /ssd/etc/grub.d/40_custom
>      mount $bootfs /bootmnt
> diff --git a/tool/yocto/poky/meta/recipes-core/initrdscripts/initramfs-live-install_1.0.bb b/tool/eldk/meta/recipes-core/initrdscripts/initramfs-live-install_1.0.bb
> index ac73ef8..793a4b7 100644
> --- a/tool/yocto/poky/meta/recipes-core/initrdscripts/initramfs-live-install_1.0.bb
> +++ b/tool/eldk/meta/recipes-core/initrdscripts/initramfs-live-install_1.0.bb
> @@ -3,7 +3,7 @@ LICENSE = "MIT"
>  LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
>  SRC_URI = "file://init-install.sh"
>  
> -PR = "r7"
> +PR = "r6"
>  
>  RDEPENDS_${PN} = "grub parted e2fsprogs-mke2fs"
>  
> diff --git a/tool/yocto/poky/meta/recipes-core/ncurses/ncurses.inc b/tool/eldk/meta/recipes-core/ncurses/ncurses.inc
> index b031119..ae99e2c 100644
> --- a/tool/yocto/poky/meta/recipes-core/ncurses/ncurses.inc
> +++ b/tool/eldk/meta/recipes-core/ncurses/ncurses.inc
> @@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://ncurses/base/version.c;beginline=1;endline=27;md5=cbc
>  SECTION = "libs"
>  DEPENDS = "ncurses-native"
>  DEPENDS_virtclass-native = ""
> -INC_PR = "r9"
> +INC_PR = "r8"
>  
>  inherit autotools binconfig multilib_header
>  
> @@ -107,15 +107,10 @@ do_test() {
>          diff curses-narrowc.h curses-widec.h
>  }
>  
> -# Split original _install_opts to two parts.
> -# One is the options to install contents, the other is the parameters \
> -# when running command "make install"
>  _install_opts = "\
> -  install.libs install.includes install.man \
> -"
> -_install_cfgs = "\
>    DESTDIR='${D}' \
>    PKG_CONFIG_LIBDIR='${libdir}/pkgconfig' \
> +  install.libs install.includes install.man \
>  "
>  
>  python do_install () {
> @@ -127,19 +122,11 @@ shell_do_install() {
>          # Order of installation is important; widec installs a 'curses.h'
>          # header with more definitions and must be installed last hence.
>          # Compatibility of these headers will be checked in 'do_test()'.
> -        oe_runmake -C narrowc ${_install_cfgs} ${_install_opts} \
> -                install.progs
> -
> -        # The install.data should run after install.libs, otherwise
> -        # there would be a race issue in a very critical conditon, since
> -        # tic will be run by install.data, and tic needs libtinfo.so
> -        # which would be regenerated by install.libs.
> -        oe_runmake -C narrowc ${_install_cfgs} \
> -                install.data
> -
> +        oe_runmake -C narrowc ${_install_opts} \
> +                install.data install.progs
>  
>          ! ${ENABLE_WIDEC} || \
> -            oe_runmake -C widec ${_install_cfgs} ${_install_opts}
> +            oe_runmake -C widec ${_install_opts}
>  
>          cd narrowc
>  
> diff --git a/tool/yocto/poky/meta/recipes-core/tasks/task-core-tools-debug.bb b/tool/eldk/meta/recipes-core/tasks/task-core-tools-debug.bb
> index 1dddbb8..3c92f3f 100644
> --- a/tool/yocto/poky/meta/recipes-core/tasks/task-core-tools-debug.bb
> +++ b/tool/eldk/meta/recipes-core/tasks/task-core-tools-debug.bb
> @@ -17,14 +17,10 @@ PACKAGE_ARCH = "${MACHINE_ARCH}"
>  
>  ALLOW_EMPTY = "1"
>  
> -MTRACE = ""
> -MTRACE_libc-glibc = "libc-mtrace"
> -
>  RDEPENDS_${PN} = "\
>      gdb \
>      gdbserver \
>      tcf-agent \
>      rsync \
>      strace \
> -    ${MTRACE} \
>      "
> diff --git a/tool/yocto/poky/meta/recipes-core/uclibc/uclibc.inc b/tool/eldk/meta/recipes-core/uclibc/uclibc.inc
> index 55ab0c9..893d8fd 100644
> --- a/tool/yocto/poky/meta/recipes-core/uclibc/uclibc.inc
> +++ b/tool/eldk/meta/recipes-core/uclibc/uclibc.inc
> @@ -13,7 +13,7 @@ SECTION = "libs"
>  LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=a6f89e2100d9b6cdffcea4f398e37343 \
>  		    file://COPYING.LIB.boilerplate;md5=aaddeadcddeb918297e0e4afc52ce46f \
>  file://${S}/test/regex/testregex.c;startline=1;endline=31;md5=234efb227d0a40677f895e4a1e26e960"
> -INC_PR = "r7"
> +INC_PR = "r6"
>  
>  require uclibc-config.inc
>  STAGINGCC = "gcc-cross-intermediate"
> @@ -48,9 +48,9 @@ RDEPENDS_${PN}-dev = "linux-libc-headers-dev"
>  
>  INHIBIT_DEFAULT_DEPS = "1"
>  
> -# Ensure the uclibc-dev package is processed before uclibc-staticdev to allow
> -# *_nonshared.a libraries to be packaged in the uclibc-dev package.
> -PACKAGES = "${PN}-dbg ${PN}-dev ${PN}-staticdev ${PN} ${PN}-doc ldd uclibc-utils-dbg uclibc-utils uclibc-gconv uclibc-thread-db uclibc-argp uclibc-backtrace uclibc-libcrypt uclibc-libintl uclibc-libnsl uclibc-libresolv uclibc-libm uclibc-libdl uclibc-libutil uclibc-libpthread uclibc-librt"
> +PACKAGES =+ "ldd uclibc-utils-dbg uclibc-utils uclibc-gconv uclibc-thread-db uclibc-argp uclibc-backtrace"
> +PACKAGES =+ "uclibc-libcrypt uclibc-libintl uclibc-libnsl uclibc-libresolv uclibc-libm"
> +PACKAGES =+ "uclibc-libdl uclibc-libutil uclibc-libpthread uclibc-librt"
>  
>  FILES_uclibc-libcrypt = "${base_libdir}/libcrypt*.so.* ${base_libdir}/libcrypt-*.so"
>  FILES_uclibc-libintl = "${base_libdir}/libintl*.so.* ${base_libdir}/libintl-*.so"
> @@ -88,8 +88,7 @@ RPROVIDES_${PN}-dev += "libc-dev virtual-libc-dev"
>  # uclibc does not really have libsegfault but then using the one from glibc is also not
>  # going to work. So we pretend that we have it to make bitbake not pull other recipes
>  # to satisfy this dependency for the images/tasks
> -
> -RPROVIDES_uclibc += "libsegfault rtld(GNU_HASH)"
> +RPROVIDES_uclibc += "libsegfault"
>  
>  SRC_URI = "\
>          http://www.uclibc.org/downloads/uClibc-${PV}.tar.bz2;name=uClibc-${PV} \
> diff --git a/tool/yocto/poky/meta/recipes-devtools/binutils/binutils.inc b/tool/eldk/meta/recipes-devtools/binutils/binutils.inc
> index 552b808..e343242 100644
> --- a/tool/yocto/poky/meta/recipes-devtools/binutils/binutils.inc
> +++ b/tool/eldk/meta/recipes-devtools/binutils/binutils.inc
> @@ -32,7 +32,6 @@ FILES_${PN}-symlinks = " \
>  	${bindir}/addr2line \
>  	${bindir}/as \
>  	${bindir}/c++filt \
> -	${bindir}/embedspu \
>  	${bindir}/gprof \
>  	${bindir}/ld \
>  	${bindir}/ld.bfd \
> diff --git a/tool/yocto/poky/meta/recipes-devtools/dpkg/dpkg/dpkg-deb-avoid-fflush.patch b/tool/yocto/poky/meta/recipes-devtools/dpkg/dpkg/dpkg-deb-avoid-fflush.patch
> deleted file mode 100644
> index a5d6b61..0000000
> --- a/tool/yocto/poky/meta/recipes-devtools/dpkg/dpkg/dpkg-deb-avoid-fflush.patch
> +++ /dev/null
> @@ -1,198 +0,0 @@
> -From 78eaf928d30d0b16e05d8d63c55a3632a135ed9a Mon Sep 17 00:00:00 2001
> -From: Guillem Jover <guillem at debian.org>
> -Date: Thu, 4 Nov 2010 00:51:13 +0100
> -Subject: [PATCH] dpkg-deb: Use fd instead of stream based buffered I/O
> -
> -Behaviour of fflush() on input streams is undefined per POSIX, avoid
> -mixing stream and file descriptor based I/O, and only use the latter
> -instead.
> -
> -Upstream-Status: Backport of revision 2d420ee1d05033d237462a0075facfe406b08043 (in 1.16.x)
> -
> ----
> - dpkg-deb/extract.c |   83 ++++++++++++++++++++++++++++++++++++++-------------
> - 1 files changed, 62 insertions(+), 21 deletions(-)
> -
> -diff --git a/dpkg-deb/extract.c b/dpkg-deb/extract.c
> -index 22aea98..0f5ac88 100644
> ---- a/dpkg-deb/extract.c
> -+++ b/dpkg-deb/extract.c
> -@@ -31,6 +31,7 @@
> - #include <ctype.h>
> - #include <string.h>
> - #include <dirent.h>
> -+#include <fcntl.h>
> - #include <unistd.h>
> - #include <ar.h>
> - #include <stdbool.h>
> -@@ -61,13 +62,41 @@ static void movecontrolfiles(const char *thing) {
> - }
> - 
> - static void DPKG_ATTR_NORET
> --readfail(FILE *a, const char *filename, const char *what)
> -+read_fail(int rc, const char *filename, const char *what)
> - {
> --  if (ferror(a)) {
> --    ohshite(_("error reading %s from file %.255s"), what, filename);
> --  } else {
> -+  if (rc == 0)
> -     ohshit(_("unexpected end of file in %s in %.255s"),what,filename);
> -+  else
> -+    ohshite(_("error reading %s from file %.255s"), what, filename);
> -+}
> -+
> -+static ssize_t
> -+read_line(int fd, char *buf, size_t min_size, size_t max_size)
> -+{
> -+  ssize_t line_size = 0;
> -+  size_t n = min_size;
> -+
> -+  while (line_size < (ssize_t)max_size) {
> -+    ssize_t r;
> -+    char *nl;
> -+
> -+    r = read(fd, buf + line_size, n);
> -+    if (r <= 0)
> -+      return r;
> -+
> -+    nl = strchr(buf + line_size, '\n');
> -+    line_size += r;
> -+
> -+    if (nl != NULL) {
> -+      nl[1] = '\0';
> -+      return line_size;
> -+    }
> -+
> -+    n = 1;
> -   }
> -+
> -+  buf[line_size] = '\0';
> -+  return line_size;
> - }
> - 
> - static size_t
> -@@ -115,19 +144,26 @@ void extracthalf(const char *debar, const char *directory,
> -   char versionbuf[40];
> -   float versionnum;
> -   size_t ctrllennum, memberlen= 0;
> -+  ssize_t r;
> -   int dummy;
> -   pid_t c1=0,c2,c3;
> -   int p1[2], p2[2];
> --  FILE *ar;
> -+  int arfd;
> -   struct stat stab;
> -   char nlc;
> -   int adminmember;
> -   bool oldformat, header_done;
> -   struct compressor *decompressor = &compressor_gzip;
> -   
> --  ar= fopen(debar,"r"); if (!ar) ohshite(_("failed to read archive `%.255s'"),debar);
> --  if (fstat(fileno(ar),&stab)) ohshite(_("failed to fstat archive"));
> --  if (!fgets(versionbuf,sizeof(versionbuf),ar)) readfail(ar,debar,_("version number"));
> -+  arfd = open(debar, O_RDONLY);
> -+  if (arfd < 0)
> -+    ohshite(_("failed to read archive `%.255s'"), debar);
> -+  if (fstat(arfd, &stab))
> -+    ohshite(_("failed to fstat archive"));
> -+
> -+  r = read_line(arfd, versionbuf, strlen(DPKG_AR_MAGIC), sizeof(versionbuf));
> -+  if (r < 0)
> -+    read_fail(r, debar, _("archive magic version number"));
> - 
> -   if (!strcmp(versionbuf, DPKG_AR_MAGIC)) {
> -     oldformat = false;
> -@@ -137,8 +173,9 @@ void extracthalf(const char *debar, const char *directory,
> -     for (;;) {
> -       struct ar_hdr arh;
> - 
> --      if (fread(&arh,1,sizeof(arh),ar) != sizeof(arh))
> --        readfail(ar,debar,_("between members"));
> -+      r = read(arfd, &arh, sizeof(arh));
> -+      if (r != sizeof(arh))
> -+        read_fail(r, debar, _("archive member header"));
> - 
> -       dpkg_ar_normalize_name(&arh);
> - 
> -@@ -153,8 +190,9 @@ void extracthalf(const char *debar, const char *directory,
> -         if (strncmp(arh.ar_name, DEBMAGIC, sizeof(arh.ar_name)) != 0)
> -           ohshit(_("file `%.250s' is not a debian binary archive (try dpkg-split?)"),debar);
> -         infobuf= m_malloc(memberlen+1);
> --        if (fread(infobuf,1, memberlen + (memberlen&1), ar) != memberlen + (memberlen&1))
> --          readfail(ar,debar,_("header info member"));
> -+        r = read(arfd, infobuf, memberlen + (memberlen & 1));
> -+        if ((size_t)r != (memberlen + (memberlen & 1)))
> -+          read_fail(r, debar, _("archive information header member"));
> -         infobuf[memberlen] = '\0';
> -         cur= strchr(infobuf,'\n');
> -         if (!cur) ohshit(_("archive has no newlines in header"));
> -@@ -174,7 +212,8 @@ void extracthalf(const char *debar, const char *directory,
> -           /* Members with `_' are noncritical, and if we don't understand them
> -            * we skip them.
> -            */
> --	stream_null_copy(ar, memberlen + (memberlen&1),_("skipped member data from %s"), debar);
> -+        fd_null_copy(arfd, memberlen + (memberlen & 1),
> -+                     _("skipped archive member data from %s"), debar);
> -       } else {
> - 	if (strncmp(arh.ar_name, ADMINMEMBER, sizeof(arh.ar_name)) == 0)
> - 	  adminmember = 1;
> -@@ -198,7 +237,8 @@ void extracthalf(const char *debar, const char *directory,
> -           ctrllennum= memberlen;
> -         }
> -         if (!adminmember != !admininfo) {
> --	  stream_null_copy(ar, memberlen + (memberlen&1),_("skipped member data from %s"), debar);
> -+          fd_null_copy(arfd, memberlen + (memberlen & 1),
> -+                       _("skipped archive member data from %s"), debar);
> -         } else {
> -           break; /* Yes ! - found it. */
> -         }
> -@@ -221,8 +261,10 @@ void extracthalf(const char *debar, const char *directory,
> -     l = strlen(versionbuf);
> -     if (l && versionbuf[l - 1] == '\n')
> -       versionbuf[l - 1] = '\0';
> --    if (!fgets(ctrllenbuf,sizeof(ctrllenbuf),ar))
> --      readfail(ar, debar, _("control information length"));
> -+
> -+    r = read_line(arfd, ctrllenbuf, 1, sizeof(ctrllenbuf));
> -+    if (r < 0)
> -+      read_fail(r, debar, _("archive control member size"));
> -     if (sscanf(ctrllenbuf,"%zi%c%d",&ctrllennum,&nlc,&dummy) !=2 || nlc != '\n')
> -       ohshit(_("archive has malformatted control length `%s'"), ctrllenbuf);
> - 
> -@@ -230,7 +272,8 @@ void extracthalf(const char *debar, const char *directory,
> -       memberlen = ctrllennum;
> -     } else {
> -       memberlen = stab.st_size - ctrllennum - strlen(ctrllenbuf) - l;
> --      stream_null_copy(ar, ctrllennum, _("skipped control area from %s"), debar);
> -+      fd_null_copy(arfd, ctrllennum,
> -+                   _("skipped archive control member data from %s"), debar);
> -     }
> - 
> -     if (admininfo >= 2) {
> -@@ -252,13 +295,11 @@ void extracthalf(const char *debar, const char *directory,
> - 
> -   }
> - 
> --  safe_fflush(ar);
> --
> -   m_pipe(p1);
> -   c1 = subproc_fork();
> -   if (!c1) {
> -     close(p1[0]);
> --    stream_fd_copy(ar, p1[1], memberlen, _("failed to write to pipe in copy"));
> -+    fd_fd_copy(arfd, p1[1], memberlen, _("failed to write to pipe in copy"));
> -     if (close(p1[1]))
> -       ohshite(_("failed to close pipe in copy"));
> -     exit(0);
> -@@ -275,7 +316,7 @@ void extracthalf(const char *debar, const char *directory,
> -     decompress_filter(decompressor, 0, 1, _("data"));
> -   }
> -   close(p1[0]);
> --  fclose(ar);
> -+  close(arfd);
> -   if (taroption) close(p2[1]);
> - 
> -   if (taroption && directory) {
> --- 
> -1.7.7.6
> -
> diff --git a/tool/yocto/poky/meta/recipes-devtools/dpkg/dpkg_1.15.8.7.bb b/tool/eldk/meta/recipes-devtools/dpkg/dpkg_1.15.8.7.bb
> index 1e7ef25..f1030fa 100644
> --- a/tool/yocto/poky/meta/recipes-devtools/dpkg/dpkg_1.15.8.7.bb
> +++ b/tool/eldk/meta/recipes-devtools/dpkg/dpkg_1.15.8.7.bb
> @@ -5,11 +5,10 @@ SRC_URI += "file://noman.patch \
>              file://check_snprintf.patch \
>              file://check_version.patch \
>              file://perllibdir.patch \
> -            file://preinst.patch \
> -            file://dpkg-deb-avoid-fflush.patch"
> +            file://preinst.patch"
>  
>  SRC_URI[md5sum] = "d1731d4147c1ea3b537a4d094519a6dc"
>  SRC_URI[sha256sum] = "1ec1376471b04717a4497e5d7a27cd545248c92116898ce0c53ced8ea94267b5"
>  
> -PR = "${INC_PR}.4"
> +PR = "${INC_PR}.3"
>  
> diff --git a/tool/eldk/meta/recipes-devtools/gcc/gcc-4.6/t-mips.patch b/tool/eldk/meta/recipes-devtools/gcc/gcc-4.6/t-mips.patch
> new file mode 100644
> index 0000000..4786f95
> --- /dev/null
> +++ b/tool/eldk/meta/recipes-devtools/gcc/gcc-4.6/t-mips.patch
> @@ -0,0 +1,10 @@
> +--- gcc-4_6-branch/gcc/config/mips/t-mips.orig  2011-09-03 05:58:07.000000000 +0300
> ++++ gcc-4_6-branch/gcc/config/mips/t-mips       2011-10-18 19:14:39.000000000 +0300
> +@@ -39,3 +39,7 @@
> +        cat $(srcdir)/config/fp-bit.c >> fp-bit.c
> +
> + LIB2_SIDITI_CONV_FUNCS=yes
> ++
> ++MULTILIB_OPTIONS = msoft-float
> ++MULTILIB_DIRNAMES = nof
> ++MULTILIB_MATCHES =
> diff --git a/tool/yocto/poky/meta/recipes-devtools/gcc/gcc-4.6.inc b/tool/eldk/meta/recipes-devtools/gcc/gcc-4.6.inc
> index 020e21b..9fd152a 100644
> --- a/tool/yocto/poky/meta/recipes-devtools/gcc/gcc-4.6.inc
> +++ b/tool/eldk/meta/recipes-devtools/gcc/gcc-4.6.inc
> @@ -74,6 +74,7 @@ SRC_URI = "svn://gcc.gnu.org/svn/gcc/branches;module=${BRANCH};proto=http \
>  	   file://GPLUSPLUS_INCLUDE_DIR_with_sysroot.patch \
>  	   file://fortran-cross-compile-hack.patch \
>  	   file://cpp-honour-sysroot.patch \
> +	   file://t-mips.patch \
>  	  "
>  
>  SRC_URI_append_sh3  = " file://sh3-installfix-fixheaders.patch "
> diff --git a/tool/yocto/poky/meta/recipes-devtools/gcc/gcc-configure-common.inc b/tool/eldk/meta/recipes-devtools/gcc/gcc-configure-common.inc
> index 9542dc9..da60089 100644
> --- a/tool/yocto/poky/meta/recipes-devtools/gcc/gcc-configure-common.inc
> +++ b/tool/eldk/meta/recipes-devtools/gcc/gcc-configure-common.inc
> @@ -25,7 +25,8 @@ EXTRA_OECONF_PATHS ?= ""
>  EXTRA_OECONF_INITIAL ?= ""
>  EXTRA_OECONF_INTERMEDIATE ?= ""
>  
> -GCCMULTILIB = "--disable-multilib"
> +MULTILIB_ARCH_LIST = "mips"
> +GCCMULTILIB = '${@base_contains("MULTILIB_ARCH_LIST", "${TARGET_ARCH}", "--enable-multilib", "--disable-multilib",d)}'
>  
>  EXTRA_OECONF = "${@['--enable-clocale=generic', ''][d.getVar('USE_NLS', True) != 'no']} \
>                  --with-gnu-ld \
> diff --git a/tool/yocto/poky/meta/recipes-devtools/gcc/gcc-package-target.inc b/tool/eldk/meta/recipes-devtools/gcc/gcc-package-target.inc
> index a499c88..3076670 100644
> --- a/tool/yocto/poky/meta/recipes-devtools/gcc/gcc-package-target.inc
> +++ b/tool/eldk/meta/recipes-devtools/gcc/gcc-package-target.inc
> @@ -1,5 +1,5 @@
>  PACKAGES = "\
> -  ${PN} ${PN}-plugins ${PN}-symlinks \
> +  ${PN} ${PN}-symlinks \
>    g++ g++-symlinks \
>    cpp cpp-symlinks \
>    g77 g77-symlinks \
> @@ -40,11 +40,6 @@ FILES_${PN}-symlinks = "\
>    ${bindir}/gccbug \
>  "
>  
> -FILES_${PN}-plugins = "\
> -  ${gcclibdir}/${TARGET_SYS}/${BINV}/plugin \
> -"
> -ALLOW_EMPTY_${PN}-plugins = "1"
> -
>  FILES_g77 = "\
>    ${bindir}/${TARGET_PREFIX}g77 \
>    ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/f771 \
> @@ -93,7 +88,6 @@ do_install () {
>  	rm -r ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/install-tools
>  	rm -r ${D}${libexecdir}/gcc/${TARGET_SYS}/${BINV}/install-tools
>  	rm -rf ${D}${libexecdir}/gcc/${TARGET_SYS}/${BINV}/*.la
> -	rmdir ${D}${includedir}
>  
>  	# Hack around specs file assumptions
>  	test -f ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/specs && sed -i -e '/^*cross_compile:$/ { n; s/1/0/; }' ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/specs
> diff --git a/tool/yocto/poky/meta/recipes-devtools/gcc/libgcc_4.6.bb b/tool/eldk/meta/recipes-devtools/gcc/libgcc_4.6.bb
> index 9a8b20d..f75ca34 100644
> --- a/tool/yocto/poky/meta/recipes-devtools/gcc/libgcc_4.6.bb
> +++ b/tool/eldk/meta/recipes-devtools/gcc/libgcc_4.6.bb
> @@ -16,8 +16,10 @@ PACKAGES = "\
>  FILES_${PN} = "${base_libdir}/libgcc*.so.*"
>  FILES_${PN}-dev = " \
>    ${base_libdir}/libgcc*.so \
> -  ${libdir}/${TARGET_SYS}/${BINV}/*crt* \
> -  ${libdir}/${TARGET_SYS}/${BINV}/libgcc*"
> +  ${libdir}/${TARGET_SYS}/${BINV}/crt* \
> +  ${libdir}/${TARGET_SYS}/${BINV}/libgcc* \
> +  ${libdir}/${TARGET_SYS}/${BINV}/nof/crt* \
> +  ${libdir}/${TARGET_SYS}/${BINV}/nof/libgcc*"
>  FILES_libgcov${PKGSUFFIX}-dev = " \
>    ${libdir}/${TARGET_SYS}/${BINV}/libgcov.a"
>  
> 
> Best regards,
> 
> Elvis Dowson
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20120814/d0533172/attachment.html>


More information about the yocto mailing list