From 83b20f850881580660b74d571edf2f2586a7d473 Mon Sep 17 00:00:00 2001 From: Alexandru-Cezar Sardan Date: Thu, 27 Feb 2014 14:17:35 +0200 Subject: 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 Signed-off-by: Saul Wold Signed-off-by: Richard Purdie --- 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 (limited to 'meta/recipes-devtools') diff --git a/meta/recipes-devtools/gcc/gcc-4.8.inc b/meta/recipes-devtools/gcc/gcc-4.8.inc index fdd0c12ae0..f5e583d766 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 0000000000..b98f8ff01d --- /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 +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 +--- + 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 fe98238677..b185660ffd 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) +} -- cgit v1.2.3-54-g00ecf