All of lore.kernel.org
 help / color / mirror / Atom feed
From: Martin Jansa <martin.jansa@gmail.com>
To: Alexandru-Cezar Sardan <alexandru.sardan@freescale.com>
Cc: openembedded-core@lists.openembedded.org
Subject: Re: [oe-commits] Alexandru-Cezar Sardan : gcc: Enable SPE & AltiVec generation on powepc*linux target.
Date: Fri, 28 Feb 2014 17:08:57 +0100	[thread overview]
Message-ID: <20140228160857.GL26981@jama> (raw)
In-Reply-To: <20140228135521.C895C50390@opal>

[-- Attachment #1: Type: text/plain, Size: 10293 bytes --]

On Fri, Feb 28, 2014 at 01:55:21PM +0000, git@git.openembedded.org wrote:
> Module: openembedded-core.git
> Branch: master
> Commit: 97f2a81d6796ddaf7bbaab86c2ab9039673c732c
> URL:    http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=97f2a81d6796ddaf7bbaab86c2ab9039673c732c
> 
> Author: Alexandru-Cezar Sardan <alexandru.sardan@freescale.com>
> Date:   Thu Feb 27 14:17:35 2014 +0200
> 
> gcc: Enable SPE & AltiVec generation on powepc*linux target.
> 
> [ADT bug #5761] -- https://bugzilla.yoctoproject.org/show_bug.cgi?id=5761
> 
> Also this patch adds symlinks to libgcc such that a GCC configured
> by passing the target parameter without LIBCEXTENSION and ABIEXTENSION
> specifiers to find the correct startup files from a libgcc configured
> with these variables.
> 
> Signed-off-by: Alexandru-Cezar Sardan <alexandru.sardan@freescale.com>
> Signed-off-by: Saul Wold <sgw@linux.intel.com>
> 
> ---
> 
>  meta/recipes-devtools/gcc/gcc-4.8.inc              |  1 +
>  ...AltiVec-generation-on-powepc-linux-target.patch | 42 ++++++++++++++++++++++
>  meta/recipes-devtools/gcc/libgcc.inc               | 24 ++++++++++++-
>  3 files changed, 66 insertions(+), 1 deletion(-)
> 
> diff --git a/meta/recipes-devtools/gcc/gcc-4.8.inc b/meta/recipes-devtools/gcc/gcc-4.8.inc
> index fdd0c12..f5e583d 100644
> --- a/meta/recipes-devtools/gcc/gcc-4.8.inc
> +++ b/meta/recipes-devtools/gcc/gcc-4.8.inc
> @@ -69,6 +69,7 @@ SRC_URI = "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \
>  	   file://0046-libatomic-deptracking.patch \
>  	   file://0047-repomembug.patch \
>  	   file://0048-PR58854_fix_arm_apcs_epilogue.patch \
> +	   file://0049-Enable-SPE-AltiVec-generation-on-powepc-linux-target.patch \ 
>  	  "
>  SRC_URI[md5sum] = "a3d7d63b9cb6b6ea049469a0c4a43c9d"
>  SRC_URI[sha256sum] = "09dc2276c73424bbbfda1dbddc62bbbf900c9f185acf7f3e1d773ce2d7e3cdc8"
> diff --git a/meta/recipes-devtools/gcc/gcc-4.8/0049-Enable-SPE-AltiVec-generation-on-powepc-linux-target.patch b/meta/recipes-devtools/gcc/gcc-4.8/0049-Enable-SPE-AltiVec-generation-on-powepc-linux-target.patch
> new file mode 100644
> index 0000000..b98f8ff
> --- /dev/null
> +++ b/meta/recipes-devtools/gcc/gcc-4.8/0049-Enable-SPE-AltiVec-generation-on-powepc-linux-target.patch
> @@ -0,0 +1,42 @@
> +From 9e0e19eac2562f73858602fe26e2044eb8b20c47 Mon Sep 17 00:00:00 2001
> +From: Alexandru-Cezar Sardan <alexandru.sardan@freescale.com>
> +Date: Wed, 5 Feb 2014 16:52:31 +0200
> +Subject: [PATCH] Enable SPE & AltiVec generation on powepc*linux target
> +
> +When is configured with --target=powerpc-linux, the resulting GCC will 
> +not be able to generate code for SPE targets (e500v1/v2).
> +GCC configured with --target=powerpc-linuxspe will not be able to
> +generate AltiVec instructions (for e6500).
> +This patch modifies the configured file such that SPE or AltiVec code
> +can be generated when gcc is configured with --target=powerpc-linux.
> +The ABI and speciffic instructions can be selected through the
> +"-mabi=spe or -mabi=altivec" and the "-mspe or -maltivec" parameters.
> +
> +Upstream-Status: Inappropriate [configuration]
> +
> +Signed-off-by: Alexandru-Cezar Sardan <alexandru.sardan@freescale.com>
> +---
> + gcc/config.gcc |    7 ++++++-
> + 1 file changed, 6 insertions(+), 1 deletion(-)
> +
> +diff --git a/gcc/config.gcc b/gcc/config.gcc
> +index cb7a94e..d392c2b 100644
> +--- a/gcc/config.gcc
> ++++ b/gcc/config.gcc
> +@@ -2068,7 +2068,12 @@ powerpc-*-rtems*)
> + 	tmake_file="rs6000/t-fprules rs6000/t-rtems t-rtems rs6000/t-ppccomm"
> + 	;;
> + powerpc*-*-linux*)
> +-	tm_file="${tm_file} dbxelf.h elfos.h freebsd-spec.h rs6000/sysv4.h"
> ++	case ${target} in
> ++	    powerpc*-*-linux*spe* | powerpc*-*-linux*altivec*)
> ++		tm_file="${tm_file} dbxelf.h elfos.h freebsd-spec.h rs6000/sysv4.h" ;;
> ++	    *)
> ++		tm_file="${tm_file} dbxelf.h elfos.h freebsd-spec.h rs6000/sysv4.h rs6000/linuxaltivec.h rs6000/linuxspe.h rs6000/e500.h" ;;
> ++	esac
> + 	extra_options="${extra_options} rs6000/sysv4.opt"
> + 	tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
> + 	case ${target} in
> +-- 
> +1.7.9.5
> +
> diff --git a/meta/recipes-devtools/gcc/libgcc.inc b/meta/recipes-devtools/gcc/libgcc.inc
> index fe98238..b185660 100644
> --- a/meta/recipes-devtools/gcc/libgcc.inc
> +++ b/meta/recipes-devtools/gcc/libgcc.inc
> @@ -17,7 +17,8 @@ FILES_${PN}-dev = " \
>    ${libdir}/${TARGET_SYS}/${BINV}/32 \
>    ${libdir}/${TARGET_SYS}/${BINV}/x32 \
>    ${libdir}/${TARGET_SYS}/${BINV}/n32 \
> -  ${libdir}/${TARGET_SYS}/${BINV}/libgcc*"
> +  ${libdir}/${TARGET_SYS}/${BINV}/libgcc* \
> +  ${@base_conditional('TARGET_SYS_NO_EXTENSION', '${TARGET_SYS}', '', '${libdir}/${TARGET_SYS_NO_EXTENSION}', d)}"
>  FILES_libgcov-dev = " \
>    ${libdir}/${TARGET_SYS}/${BINV}/libgcov.a \
>    "
> @@ -141,3 +142,24 @@ python do_multilib_install() {
>              os.unlink(dest)
>          os.symlink(src, dest)
>  }
> +
> +addtask extra_symlinks after do_multilib_install before do_package do_populate_sysroot
> +python do_extra_symlinks() {
> +    targetsysnoext = d.getVar('TARGET_SYS_NO_EXTENSION', True)
> +
> +    if targetsysnoext != d.getVar('TARGET_SYS', True):
> +        dest = d.getVar('D', True) + d.getVar('libdir', True) + '/' + targetsysnoext
> +        src = d.getVar('TARGET_SYS', True)
> +        if not os.path.lexists(dest):
> +            os.symlink(src, dest)
> +}
> +
> +python () {
> +    targetsysnoext = d.getVar('TARGET_SYS', True)
> +
> +    for suffix in [d.getVar('ABIEXTENSION', True), d.getVar('LIBCEXTENSION', True)]:
> +        if suffix and targetsysnoext.endswith(suffix):
> +            targetsysnoext = targetsysnoext[:-len(suffix)]
> +
> +    d.setVar('TARGET_SYS_NO_EXTENSION', targetsysnoext)
> +}

This seems to trigger some issues (probably caused by rm_work) when it
tries to run new do_extra_symlinks task in already removed directories

in first build it somehow passed, but created empty libgcc packages (instead of populated libgcc1)
NOTE: Preparing runqueue
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
NOTE: Running task 250 of 6994 (ID: 72, /OE/build/shr-core/openembedded-core/meta/recipes-kernel/linux/linux-yocto_3.10.bb, do_fetch)
NOTE: Running task 1300 of 6994 (ID: 2432, /OE/build/shr-core/openembedded-core/meta/recipes-devtools/gcc/libgcc_4.8.bb, do_extra_symlinks)
NOTE: recipe linux-yocto-3.10.32+gitAUTOINC+7b3b87d4d5_78afd3095c-r0: task do_fetch: Started
NOTE: recipe libgcc-4.8.2-r0: task do_extra_symlinks: Started
NOTE: recipe libgcc-4.8.2-r0: task do_extra_symlinks: Succeeded
NOTE: Running task 1301 of 6994 (ID: 2435, /OE/build/shr-core/openembedded-core/meta/recipes-devtools/gcc/libgcc_4.8.bb, do_populate_sysroot)
NOTE: recipe libgcc-4.8.2-r0: task do_populate_sysroot: Started
NOTE: recipe libgcc-4.8.2-r0: task do_populate_sysroot: Succeeded
NOTE: Running task 1429 of 6994 (ID: 2442, /OE/build/shr-core/openembedded-core/meta/recipes-devtools/gcc/libgcc_4.8.bb, do_package)
NOTE: recipe libgcc-4.8.2-r0: task do_package: Started
NOTE: recipe linux-yocto-3.10.32+gitAUTOINC+7b3b87d4d5_78afd3095c-r0: task do_fetch: Succeeded
...
| WARNING: The license listed LGPLv2.1 was not in the licenses collected for eglibc-locale
| WARNING: The license listed CC-BY-SA was not in the licenses collected for fso-sounds
| ls: cannot access /OE/build/shr-core/tmp-eglibc/sysroots/qemux86-64/pkgdata/runtime-reverse/libgcc1: No such file or directory
| readlink: missing operand
| Try 'readlink --help' for more information.
| basename: missing operand
| Try 'basename --help' for more information.
| WARNING: /OE/build/shr-core/tmp-eglibc/work/qemux86_64-oe-linux/shr-image/2.0-r20/temp/run.license_create_manifest.13979:1 exit 1 from
|   pkged_name="$(basename $(readlink ${filename}))"
| DEBUG: Python function do_rootfs finished
| ERROR: Function failed: license_create_manifest (log file is located at /OE/build/shr-core/tmp-eglibc/work/qemux86_64-oe-linux/shr-image/2.0-r20/temp/log.do_rootfs.13979)
NOTE: recipe shr-image-2.0-r20: task do_rootfs: Failed

and in 2nd build (just different MACHINE) it failed soon enough:
NOTE: Preparing runqueue
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
NOTE: Running task 267 of 7022 (ID: 72, /OE/build/shr-core/openembedded-core/meta/recipes-kernel/linux/linux-yocto_3.10.bb, do_fetch)
NOTE: Running task 1307 of 7022 (ID: 2361, /OE/build/shr-core/openembedded-core/meta/recipes-devtools/gcc/libgcc_4.8.bb, do_extra_symlinks)
NOTE: recipe linux-yocto-3.10.32+gitAUTOINC+7b3b87d4d5_78afd3095c-r0: task do_fetch: Started
NOTE: recipe libgcc-4.8.2-r0: task do_extra_symlinks: Started
ERROR: Error executing a python function in /OE/build/shr-core/openembedded-core/meta/recipes-devtools/gcc/libgcc_4.8.bb:

The stack trace of python calls that resulted in this exception/failure was:
File: 'do_extra_symlinks', lineno: 12, function: <module>
     0008:        if not os.path.lexists(dest):
     0009:            os.symlink(src, dest)
     0010:
     0011:
 *** 0012:do_extra_symlinks(d)
     0013:
File: 'do_extra_symlinks', lineno: 9, function: do_extra_symlinks
     0005:    if targetsysnoext != d.getVar('TARGET_SYS', True):
     0006:        dest = d.getVar('D', True) + d.getVar('libdir', True) + '/' + targetsysnoext
     0007:        src = d.getVar('TARGET_SYS', True)
     0008:        if not os.path.lexists(dest):
 *** 0009:            os.symlink(src, dest)
     0010:
     0011:
     0012:do_extra_symlinks(d)
     0013:
Exception: OSError: [Errno 2] No such file or directory

ERROR: Function failed: do_extra_symlinks
ERROR: Logfile of failure stored in: /OE/build/shr-core/tmp-eglibc/work/xscalete-oe-linux-gnueabi/libgcc/4.8.2-r0/temp/log.do_extra_symlinks.29190
NOTE: recipe libgcc-4.8.2-r0: task do_extra_symlinks: Failed
ERROR: Task 2361 (/OE/build/shr-core/openembedded-core/meta/recipes-devtools/gcc/libgcc_4.8.bb, do_extra_symlinks) failed with exit code '1'
NOTE: recipe linux-yocto-3.10.32+gitAUTOINC+7b3b87d4d5_78afd3095c-r0: task do_fetch: Succeeded

-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa@gmail.com

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 205 bytes --]

       reply	other threads:[~2014-02-28 16:08 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20140228135521.C895C50390@opal>
2014-02-28 16:08 ` Martin Jansa [this message]
2014-03-03 15:27   ` [PATCH] gcc: Enable SPE & AltiVec generation on powepc*linux target Alexandru-Cezar Sardan
2014-03-03 15:31     ` alexandru.sardan
2014-03-03 15:32       ` Richard Purdie
2014-03-03 17:45         ` [PATCH] libgcc: make sure symlinks are created in a valid directory Alexandru-Cezar Sardan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140228160857.GL26981@jama \
    --to=martin.jansa@gmail.com \
    --cc=alexandru.sardan@freescale.com \
    --cc=openembedded-core@lists.openembedded.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.