1
0
mirror of https://git.yoctoproject.org/poky synced 2026-06-12 04:40:24 +00:00

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>
This commit is contained in:
Alexandru-Cezar Sardan
2014-02-27 14:17:35 +02:00
committed by Richard Purdie
parent 9744e0fb0a
commit 83b20f8508
3 changed files with 66 additions and 1 deletions
+1
View File
@@ -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"
@@ -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
+23 -1
View File
@@ -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)
}