* [PATCH] gcc: Enable SPE & AltiVec generation on powepc*linux target.
@ 2014-02-27 12:17 Alexandru-Cezar Sardan
2014-02-28 12:47 ` David Nyström
0 siblings, 1 reply; 8+ messages in thread
From: Alexandru-Cezar Sardan @ 2014-02-27 12:17 UTC (permalink / raw)
To: openembedded-core
[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>
---
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(-)
create mode 100644 meta/recipes-devtools/gcc/gcc-4.8/0049-Enable-SPE-AltiVec-generation-on-powepc-linux-target.patch
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)
+}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] gcc: Enable SPE & AltiVec generation on powepc*linux target.
2014-02-27 12:17 [PATCH] gcc: Enable SPE & AltiVec generation on powepc*linux target Alexandru-Cezar Sardan
@ 2014-02-28 12:47 ` David Nyström
2014-02-28 12:51 ` alexandru.sardan
0 siblings, 1 reply; 8+ messages in thread
From: David Nyström @ 2014-02-28 12:47 UTC (permalink / raw)
To: Alexandru-Cezar Sardan, openembedded-core
On 2014-02-27 13:17, Alexandru-Cezar Sardan wrote:
> [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>
> ---
> 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(-)
> create mode 100644 meta/recipes-devtools/gcc/gcc-4.8/0049-Enable-SPE-AltiVec-generation-on-powepc-linux-target.patch
>
+1
I hope this patch will be considered for dora as well as long as we dont
see any issues with it.
Br,
David
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] gcc: Enable SPE & AltiVec generation on powepc*linux target.
2014-02-28 12:47 ` David Nyström
@ 2014-02-28 12:51 ` alexandru.sardan
0 siblings, 0 replies; 8+ messages in thread
From: alexandru.sardan @ 2014-02-28 12:51 UTC (permalink / raw)
To: David Nyström, openembedded-core@lists.openembedded.org
Will it be automatically cherry picked to Dora?
Regards,
Alex
> -----Original Message-----
> From: David Nyström [mailto:david.nystrom@enea.com]
> Sent: Friday, February 28, 2014 2:47 PM
> To: Sardan Alexandru Cezar-B41700; openembedded-
> core@lists.openembedded.org
> Subject: Re: [OE-core] [PATCH] gcc: Enable SPE & AltiVec generation on
> powepc*linux target.
>
> On 2014-02-27 13:17, Alexandru-Cezar Sardan wrote:
> > [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>
> > ---
> > 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(-)
> > create mode 100644 meta/recipes-devtools/gcc/gcc-4.8/0049-Enable-SPE-
> AltiVec-generation-on-powepc-linux-target.patch
> >
>
> +1
>
> I hope this patch will be considered for dora as well as long as we dont
> see any issues with it.
>
> Br,
> David
>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [oe-commits] Alexandru-Cezar Sardan : gcc: Enable SPE & AltiVec generation on powepc*linux target.
[not found] <20140228135521.C895C50390@opal>
@ 2014-02-28 16:08 ` Martin Jansa
2014-03-03 15:27 ` [PATCH] " Alexandru-Cezar Sardan
0 siblings, 1 reply; 8+ messages in thread
From: Martin Jansa @ 2014-02-28 16:08 UTC (permalink / raw)
To: Alexandru-Cezar Sardan; +Cc: openembedded-core
[-- 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 --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH] gcc: Enable SPE & AltiVec generation on powepc*linux target.
2014-02-28 16:08 ` [oe-commits] Alexandru-Cezar Sardan : gcc: Enable SPE & AltiVec generation on powepc*linux target Martin Jansa
@ 2014-03-03 15:27 ` Alexandru-Cezar Sardan
2014-03-03 15:31 ` alexandru.sardan
0 siblings, 1 reply; 8+ messages in thread
From: Alexandru-Cezar Sardan @ 2014-03-03 15:27 UTC (permalink / raw)
To: openembedded-core
[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.
(From OE-Core rev: 97f2a81d6796ddaf7bbaab86c2ab9039673c732c)
Signed-off-by: Alexandru-Cezar Sardan <alexandru.sardan@freescale.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
---
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(-)
create mode 100644 meta/recipes-devtools/gcc/gcc-4.8/0049-Enable-SPE-AltiVec-generation-on-powepc-linux-target.patch
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..96f1969 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) and os.path.lexists(d.getVar('D', True) + d.getVar('libdir', True)):
+ 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)
+}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] gcc: Enable SPE & AltiVec generation on powepc*linux target.
2014-03-03 15:27 ` [PATCH] " Alexandru-Cezar Sardan
@ 2014-03-03 15:31 ` alexandru.sardan
2014-03-03 15:32 ` Richard Purdie
0 siblings, 1 reply; 8+ messages in thread
From: alexandru.sardan @ 2014-03-03 15:31 UTC (permalink / raw)
To: alexandru.sardan@freescale.com,
openembedded-core@lists.openembedded.org
I've added an additional check to make sure the symlink is not created in
a non-existent directory.
Alex
> -----Original Message-----
> From: Alexandru-Cezar Sardan [mailto:alexandru.sardan@freescale.com]
> Sent: Monday, March 03, 2014 5:28 PM
> To: openembedded-core@lists.openembedded.org
> Cc: Sardan Alexandru Cezar-B41700; Saul Wold; Richard Purdie
> Subject: [PATCH] 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.
>
> (From OE-Core rev: 97f2a81d6796ddaf7bbaab86c2ab9039673c732c)
>
> Signed-off-by: Alexandru-Cezar Sardan <alexandru.sardan@freescale.com>
> Signed-off-by: Saul Wold <sgw@linux.intel.com>
> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
> ---
> 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(-)
> create mode 100644 meta/recipes-devtools/gcc/gcc-4.8/0049-Enable-SPE-
> AltiVec-generation-on-powepc-linux-target.patch
>
> 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..96f1969 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) and os.path.lexists(d.getVar('D',
> True) + d.getVar('libdir', True)):
> + 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)
> +}
> --
> 1.7.9.5
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] gcc: Enable SPE & AltiVec generation on powepc*linux target.
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
0 siblings, 1 reply; 8+ messages in thread
From: Richard Purdie @ 2014-03-03 15:32 UTC (permalink / raw)
To: alexandru.sardan@freescale.com; +Cc: openembedded-core@lists.openembedded.org
On Mon, 2014-03-03 at 15:31 +0000, alexandru.sardan@freescale.com wrote:
> I've added an additional check to make sure the symlink is not created in
> a non-existent directory.
Since the change was merged, could you send an incremental patch against
master please?
Thanks,
Richard
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH] libgcc: make sure symlinks are created in a valid directory
2014-03-03 15:32 ` Richard Purdie
@ 2014-03-03 17:45 ` Alexandru-Cezar Sardan
0 siblings, 0 replies; 8+ messages in thread
From: Alexandru-Cezar Sardan @ 2014-03-03 17:45 UTC (permalink / raw)
To: openembedded-core
When adding extra symlinks, we have to make sure that the directory
that the links are created in is valid. Added a check for this.
This is an incremental addition to commit
97f2a81d6796ddaf7bbaab86c2ab9039673c732c
Signed-off-by: Alexandru-Cezar Sardan <alexandru.sardan@freescale.com>
---
meta/recipes-devtools/gcc/libgcc.inc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meta/recipes-devtools/gcc/libgcc.inc b/meta/recipes-devtools/gcc/libgcc.inc
index b185660..96f1969 100644
--- a/meta/recipes-devtools/gcc/libgcc.inc
+++ b/meta/recipes-devtools/gcc/libgcc.inc
@@ -150,7 +150,7 @@ python do_extra_symlinks() {
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):
+ if not os.path.lexists(dest) and os.path.lexists(d.getVar('D', True) + d.getVar('libdir', True)):
os.symlink(src, dest)
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 8+ messages in thread
end of thread, other threads:[~2014-03-03 17:46 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20140228135521.C895C50390@opal>
2014-02-28 16:08 ` [oe-commits] Alexandru-Cezar Sardan : gcc: Enable SPE & AltiVec generation on powepc*linux target Martin Jansa
2014-03-03 15:27 ` [PATCH] " 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
2014-02-27 12:17 [PATCH] gcc: Enable SPE & AltiVec generation on powepc*linux target Alexandru-Cezar Sardan
2014-02-28 12:47 ` David Nyström
2014-02-28 12:51 ` alexandru.sardan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox