* 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
* [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
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