gcc-multilib-config: make aarch64 support multilib
cover gcc-multilib-config: make aarch64 support multilib
The following changes since commit e44ed8c18e395b9c055aefee113b90708e8a8a2f:
build-appliance-image: Update to jethro head revision (2015-11-03 14:02:57 +0000)
are available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib rbt/lib32-gcc
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=rbt/lib32-gcc
Robert Yang (1):
gcc-multilib-config: make aarch64 support multilib
meta/recipes-devtools/gcc/gcc-multilib-config.inc | 7 +++++++ 1 file changed, 7 insertions(+)
Signature · 1 line
1.7.9.5
PATCH 1/1 gcc-multilib-config: make aarch64 support multilib
Fixed:
MACHINE = qemuarm64
require conf/multilib.conf
MULTILIBS = "multilib:lib32" DEFAULTTUNE_virtclass-multilib-lib32 = "armv7at-neon"
$ bitbake core-image-minimal -cpopulate_sdk
WARNING: gcc multilib setup is not supported for TARGET_ARCH=aarch64
WARNING: gcc multilib setup is not supported for TARGET_ARCH=aarch64
[YOCTO #8638]
--- meta/recipes-devtools/gcc/gcc-multilib-config.inc | 7 +++++++ 1 file changed, 7 insertions(+)
meta/recipes-devtools/gcc/gcc-multilib-config.inc +7 -0
@@ -29,6 +29,9 @@ python gcc_multilib_setup() { bb.utils.remove(build_conf_dir, True) ml_globs = ('%s/*/t-linux64' % src_conf_dir, '%s/*/linux64.h' % src_conf_dir, + '%s/aarch64/t-aarch64' % src_conf_dir, + '%s/aarch64/aarch64.h' % src_conf_dir, + '%s/aarch64/aarch64-cores.def' % src_conf_dir, '%s/*/linux.h' % src_conf_dir, '%s/linux.h' % src_conf_dir)
@@ -130,6 +133,8 @@ python gcc_multilib_setup() { 'mips64' : ['gcc/config/mips/t-linux64'], 'powerpc' : ['gcc/config/rs6000/t-linux64'], 'powerpc64' : ['gcc/config/rs6000/t-linux64'], + 'aarch64' : ['gcc/config/aarch64/t-aarch64'], + 'arm' : ['gcc/config/aarch64/t-aarch64'], } gcc_header_config_files = {
@@ -140,6 +145,8 @@ python gcc_multilib_setup() { 'mips64' : ['gcc/config/mips/linux.h', 'gcc/config/mips/linux64.h'], 'powerpc' : ['gcc/config/rs6000/linux64.h'], 'powerpc64' : ['gcc/config/rs6000/linux64.h'], + 'aarch64' : ['gcc/config/aarch64/aarch64.h'], + 'arm' : ['gcc/config/aarch64/aarch64.h'], } libdir32 = 'SYSTEMLIBS_DIR'
Signature · 1 line
1.7.9.5
Quoted 42 lines · Robert Yang
Fixed:
MACHINE = qemuarm64
requireconf/multilib.conf
MULTILIBS = "multilib:lib32" DEFAULTTUNE_virtclass-multilib-lib32 = "armv7at-neon"$ bitbake core-image-minimal -cpopulate_sdkWARNING: gcc multilib setup is not supported for TARGET_ARCH=aarch64
WARNING: gcc multilib setup is not supported for TARGET_ARCH=aarch64[YOCTO #8638]
Signed-off-by Robert Yang <[email protected]>--- meta/recipes-devtools/gcc/gcc-multilib-config.inc | 7 +++++++ 1 file changed, 7 insertions(+)meta/recipes-devtools/gcc/gcc-multilib-config.inc +5
-0@@ -29,6 +29,9 @@ python gcc_multilib_setup() { bb.utils.remove(build_conf_dir, True) ml_globs = ('%s/*/t-linux64' % src_conf_dir, '%s/*/linux64.h' % src_conf_dir, + '%s/aarch64/t-aarch64' % src_conf_dir, + '%s/aarch64/aarch64.h' % src_conf_dir, + '%s/aarch64/aarch64-cores.def' % src_conf_dir, '%s/*/linux.h' % src_conf_dir, '%s/linux.h' % src_conf_dir)@@ -130,6 +133,8 @@ python gcc_multilib_setup() { 'mips64' : ['gcc/config/mips/t-linux64'], 'powerpc' : ['gcc/config/rs6000/t-linux64'], 'powerpc64' : ['gcc/config/rs6000/t-linux64'], + 'aarch64' : ['gcc/config/aarch64/t-aarch64'], + 'arm' : ['gcc/config/aarch64/t-aarch64'], } gcc_header_config_files = {
meta/recipes-devtools/gcc/gcc-multilib-config.inc python gcc_multilib_setup() { · line 150
Quoted 6 lines
meta/recipes-devtools/gcc/gcc-multilib-config.inc +2
-0@@ -140,6 +145,8 @@ python gcc_multilib_setup() { 'mips64' : ['gcc/config/mips/linux.h', 'gcc/config/mips/linux64.h'], 'powerpc' : ['gcc/config/rs6000/linux64.h'], 'powerpc64' : ['gcc/config/rs6000/linux64.h'], + 'aarch64' : ['gcc/config/aarch64/aarch64.h'], + 'arm' : ['gcc/config/aarch64/aarch64.h'], }
I'm not sure the above is correct in this case. As I believe GCC treats aarch64 and arm as different architectures unlike MIPS, Power and IA32.
In this case, I would expect two specific cross compilers to be generated, one for armv7 and one for aarch64, instead of a combination single compiler that understand both.
So in this case, it might be better to have an exception to the warning message... (unless I'm wrong, in which case this IS likely a correct fix....)
Hopefully Khem and/or Richard will be able to comment as they are more familiar with this code path.
Quoted 3 lines
meta/recipes-devtools/gcc/gcc-multilib-config.inc +0
-0libdir32 = 'SYSTEMLIBS_DIR'
Quoted 53 lines · Mark Hatle
Quoted 42 lines · Robert Yang
Fixed:
MACHINE = qemuarm64
requireconf/multilib.conf
MULTILIBS = "multilib:lib32" DEFAULTTUNE_virtclass-multilib-lib32 = "armv7at-neon"$ bitbake core-image-minimal -cpopulate_sdkWARNING: gcc multilib setup is not supported for TARGET_ARCH=aarch64
WARNING: gcc multilib setup is not supported for TARGET_ARCH=aarch64[YOCTO #8638]
Signed-off-by Robert Yang <[email protected]>--- meta/recipes-devtools/gcc/gcc-multilib-config.inc | 7 +++++++ 1 file changed, 7 insertions(+)meta/recipes-devtools/gcc/gcc-multilib-config.inc +5
-0@@ -29,6 +29,9 @@ python gcc_multilib_setup() { bb.utils.remove(build_conf_dir, True) ml_globs = ('%s/*/t-linux64' % src_conf_dir, '%s/*/linux64.h' % src_conf_dir, + '%s/aarch64/t-aarch64' % src_conf_dir, + '%s/aarch64/aarch64.h' % src_conf_dir, + '%s/aarch64/aarch64-cores.def' % src_conf_dir, '%s/*/linux.h' % src_conf_dir, '%s/linux.h' % src_conf_dir)@@ -130,6 +133,8 @@ python gcc_multilib_setup() { 'mips64' : ['gcc/config/mips/t-linux64'], 'powerpc' : ['gcc/config/rs6000/t-linux64'], 'powerpc64' : ['gcc/config/rs6000/t-linux64'], + 'aarch64' : ['gcc/config/aarch64/t-aarch64'], + 'arm' : ['gcc/config/aarch64/t-aarch64'], } gcc_header_config_files = {meta/recipes-devtools/gcc/gcc-multilib-config.inc python gcc_multilib_setup() { · line 150
Quoted 6 lines
meta/recipes-devtools/gcc/gcc-multilib-config.inc +2
-0@@ -140,6 +145,8 @@ python gcc_multilib_setup() { 'mips64' : ['gcc/config/mips/linux.h', 'gcc/config/mips/linux64.h'], 'powerpc' : ['gcc/config/rs6000/linux64.h'], 'powerpc64' : ['gcc/config/rs6000/linux64.h'], + 'aarch64' : ['gcc/config/aarch64/aarch64.h'], + 'arm' : ['gcc/config/aarch64/aarch64.h'], }I'm not sure the above is correct in this case. As I believe GCC treats aarch64 and arm as different architectures unlike MIPS, Power and IA32.
Quoted 3 lines
In this case, I would expect two specific cross compilers to be generated, one for armv7 and one for aarch64, instead of a combination single compiler that understand both.
Hi Mark,
I think that there are two compilers ? For example, gcc and lib32-gcc. Yes, Hopefully we can get feed back from Khem or RP.
// Robert
Quoted 12 lines
So in this case, it might be better to have an exception to the warning message... (unless I'm wrong, in which case this IS likely a correct fix....)
Hopefully Khem and/or Richard will be able to comment as they are more familiar with this code path.
Quoted 3 lines
meta/recipes-devtools/gcc/gcc-multilib-config.inc +0
-0libdir32 = 'SYSTEMLIBS_DIR'
Quoted 56 lines · Mark Hatle
Quoted 42 lines · Robert Yang
Fixed:
MACHINE = qemuarm64
requireconf/multilib.conf
MULTILIBS = "multilib:lib32" DEFAULTTUNE_virtclass-multilib-lib32 = "armv7at-neon"$ bitbake core-image-minimal -cpopulate_sdkWARNING: gcc multilib setup is not supported for TARGET_ARCH=aarch64
WARNING: gcc multilib setup is not supported for TARGET_ARCH=aarch64[YOCTO #8638]
Signed-off-by Robert Yang <[email protected]>---
meta/recipes-devtools/gcc/gcc-multilib-config.inc | 7 +++++++1 file changed, 7 insertions(+)meta/recipes-devtools/gcc/gcc-multilib-config.inc +5
-0@@ -29,6 +29,9 @@ python gcc_multilib_setup() { bb.utils.remove(build_conf_dir, True) ml_globs = ('%s/*/t-linux64' % src_conf_dir, '%s/*/linux64.h' % src_conf_dir, + '%s/aarch64/t-aarch64' % src_conf_dir, + '%s/aarch64/aarch64.h' % src_conf_dir, + '%s/aarch64/aarch64-cores.def' % src_conf_dir, '%s/*/linux.h' % src_conf_dir, '%s/linux.h' % src_conf_dir)@@ -130,6 +133,8 @@ python gcc_multilib_setup() { 'mips64' : ['gcc/config/mips/t-linux64'], 'powerpc' : ['gcc/config/rs6000/t-linux64'], 'powerpc64' : ['gcc/config/rs6000/t-linux64'], + 'aarch64' : ['gcc/config/aarch64/t-aarch64'], + 'arm' : ['gcc/config/aarch64/t-aarch64'], } gcc_header_config_files = {meta/recipes-devtools/gcc/gcc-multilib-config.inc python gcc_multilib_setup() { · line 150
Quoted 6 lines
meta/recipes-devtools/gcc/gcc-multilib-config.inc +2
-0@@ -140,6 +145,8 @@ python gcc_multilib_setup() { 'mips64' : ['gcc/config/mips/linux.h', 'gcc/config/mips/linux64.h'], 'powerpc' : ['gcc/config/rs6000/linux64.h'], 'powerpc64' : ['gcc/config/rs6000/linux64.h'], + 'aarch64' : ['gcc/config/aarch64/aarch64.h'], + 'arm' : ['gcc/config/aarch64/aarch64.h'], }I'm not sure the above is correct in this case. As I believe GCC treats aarch64 and arm as different architectures unlike MIPS, Power and IA32.
Quoted 4 lines
In this case, I would expect two specific cross compilers to be generated, one for armv7 and one for aarch64, instead of a combination single compiler that understand both.
Well not entirely so, gcc can support ilp32 as a mutlilib variant for aarch64 so this patch is fine although if we should support ilp32 as a variant is another question, which folks can chime in and provide feedback if they have use of it. but nevertheless this patch should be ok
Quoted 10 lines
So in this case, it might be better to have an exception to the warning message... (unless I'm wrong, in which case this IS likely a correct fix....)
Hopefully Khem and/or Richard will be able to comment as they are more familiar with this code path.
Quoted 3 lines
meta/recipes-devtools/gcc/gcc-multilib-config.inc +0
-0libdir32 = 'SYSTEMLIBS_DIR'
Quoted 61 lines · Khem Raj
Quoted 56 lines · Mark Hatle
Quoted 42 lines · Robert Yang
Fixed:
MACHINE = qemuarm64
requireconf/multilib.conf
MULTILIBS = "multilib:lib32" DEFAULTTUNE_virtclass-multilib-lib32 = "armv7at-neon"$ bitbake core-image-minimal -cpopulate_sdkWARNING: gcc multilib setup is not supported for TARGET_ARCH=aarch64
WARNING: gcc multilib setup is not supported for TARGET_ARCH=aarch64[YOCTO #8638]
Signed-off-by Robert Yang <[email protected]>---
meta/recipes-devtools/gcc/gcc-multilib-config.inc | 7 +++++++1 file changed, 7 insertions(+)meta/recipes-devtools/gcc/gcc-multilib-config.inc +5
-0@@ -29,6 +29,9 @@ python gcc_multilib_setup() { bb.utils.remove(build_conf_dir, True) ml_globs = ('%s/*/t-linux64' % src_conf_dir, '%s/*/linux64.h' % src_conf_dir, + '%s/aarch64/t-aarch64' % src_conf_dir, + '%s/aarch64/aarch64.h' % src_conf_dir, + '%s/aarch64/aarch64-cores.def' % src_conf_dir, '%s/*/linux.h' % src_conf_dir, '%s/linux.h' % src_conf_dir)@@ -130,6 +133,8 @@ python gcc_multilib_setup() { 'mips64' : ['gcc/config/mips/t-linux64'], 'powerpc' : ['gcc/config/rs6000/t-linux64'], 'powerpc64' : ['gcc/config/rs6000/t-linux64'], + 'aarch64' : ['gcc/config/aarch64/t-aarch64'], + 'arm' : ['gcc/config/aarch64/t-aarch64'], } gcc_header_config_files = {meta/recipes-devtools/gcc/gcc-multilib-config.inc python gcc_multilib_setup() { · line 150
Quoted 6 lines
meta/recipes-devtools/gcc/gcc-multilib-config.inc +2
-0@@ -140,6 +145,8 @@ python gcc_multilib_setup() { 'mips64' : ['gcc/config/mips/linux.h', 'gcc/config/mips/linux64.h'], 'powerpc' : ['gcc/config/rs6000/linux64.h'], 'powerpc64' : ['gcc/config/rs6000/linux64.h'], + 'aarch64' : ['gcc/config/aarch64/aarch64.h'], + 'arm' : ['gcc/config/aarch64/aarch64.h'], }I'm not sure the above is correct in this case. As I believe GCC treats aarch64 and arm as different architectures unlike MIPS, Power and IA32.
Quoted 4 lines
In this case, I would expect two specific cross compilers to be generated, one for armv7 and one for aarch64, instead of a combination single compiler that understand both.
Quoted 4 lines
Well not entirely so, gcc can support ilp32 as a mutlilib variant for aarch64 so this patch is fine although if we should support ilp32 as a variant is another question, which folks can chime in and provide feedback if they have use of it. but nevertheless this patch should be ok
I've seen no real world need for ilp32 at this point.. but I have seen many requests to run armv7 code on an aarch64 system. (Compatibility multilib.)
--Mark
Quoted 11 lines
Quoted 10 lines
So in this case, it might be better to have an exception to the warning message... (unless I'm wrong, in which case this IS likely a correct fix....)
Hopefully Khem and/or Richard will be able to comment as they are more familiar with this code path.
Quoted 3 lines
meta/recipes-devtools/gcc/gcc-multilib-config.inc +0
-0libdir32 = 'SYSTEMLIBS_DIR'