RFC - Enable GCC 5.3 transactional support
cover RFC - Enable GCC 5.3 transactional support
GCC has supported -fgnu-tm, libitm and __transaction_stomic [and related] since GCC 4.7. OE however has not activated the functionality. I'm starting to see some data base programs (and RPM) that can make use of the functionality to create better thread-safe code.
This includes a patch to GCC. I've verified it is working based on the recent rpm 5.4.16 work. It also should not expand the size of the target unless the user adds the libitm support to their system.
I'd recommend we consider this patch to enable the additional support.
The following changes since commit 8b7ff912ccaadfc0f355642f2a9f99c334a61253:
db: remove the NO_UPDATE_REASON and replace it a comment about RPM (2016-02-29 22:13:42 -0600)
are available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib mhatle/gcc-libitm
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=mhatle/gcc-libitm
Mark Hatle (1):
gcc: Add support for atomic opertions (libitm) where available
meta/recipes-devtools/gcc/gcc-5.3.inc | 2 ++ meta/recipes-devtools/gcc/gcc-runtime.inc | 22 +++++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-)
Signature · 1 line
2.5.0
PATCH 1/1 gcc: Add support for atomic opertions (libitm) where available
GCC 4.7 and newer have supported various automic operation directives, however these have not been previously enabled.
--- meta/recipes-devtools/gcc/gcc-5.3.inc | 2 ++ meta/recipes-devtools/gcc/gcc-runtime.inc | 22 +++++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-)
meta/recipes-devtools/gcc/gcc-5.3.inc +2 -0
@@ -103,6 +103,7 @@ LTO = "--enable-lto" EXTRA_OECONF_BASE = "\ ${LTO} \ --enable-libssp \ + --enable-libitm \ --disable-bootstrap \ --disable-libmudflap \ --with-system-zlib \
@@ -118,6 +119,7 @@ EXTRA_OECONF_BASE = "\ EXTRA_OECONF_INITIAL = "\ --disable-libmudflap \ --disable-libgomp \ + --disable-libitm \ --disable-libquadmath \ --with-system-zlib \ --disable-lto \
meta/recipes-devtools/gcc/gcc-runtime.inc +21 -1
@@ -10,9 +10,14 @@ EXTRA_OECONF_PATHS = "\ EXTRA_OECONF_append_linuxstdbase = " --enable-clocale=gnu" -RUNTIMETARGET = "libssp libstdc++-v3 libgomp libatomic \ +RUNTIMELIBITM = "libitm" +RUNTIMELIBITM_mips = "" +RUNTIMELIBITM_mips64 = "" + +RUNTIMETARGET = "libssp libstdc++-v3 libgomp libatomic ${RUNTIMELIBITM} \ ${@bb.utils.contains_any('FORTRAN', [',fortran',',f77'], 'libquadmath', '', d)} \ " + # ? # libiberty # libmudflap
@@ -49,6 +54,7 @@ do_install () { oe_runmake 'DESTDIR=${D}' MULTIBUILDTOP=${B}/$target/$d/ install done rm -rf ${D}${infodir}/libgomp.info ${D}${infodir}/dir + rm -rf ${D}${infodir}/libitm.info ${D}${infodir}/dir rm -rf ${D}${infodir}/libquadmath.info ${D}${infodir}/dir if [ -d ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/finclude ]; then rmdir --ignore-fail-on-non-empty -p ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/finclude
@@ -94,6 +100,9 @@ PACKAGES = "\ libatomic \ libatomic-dev \ libatomic-staticdev \ + libitm \ + libitm-dev \ + libitm-staticdev \ " # Most libraries are licensed with the exception, but
@@ -121,6 +130,9 @@ LICENSE_libquadmath-staticdev = "GPL-3.0-with-GCC-exception" LICENSE_libatomic = "GPL-3.0-with-GCC-exception" LICENSE_libatomic-dev = "GPL-3.0-with-GCC-exception" LICENSE_libatomic-staticdev = "GPL-3.0-with-GCC-exception" +LICENSE_libitm = "GPL-3.0-with-GCC-exception" +LICENSE_libitm-dev = "GPL-3.0-with-GCC-exception" +LICENSE_libitm-staticdev = "GPL-3.0-with-GCC-exception" LICENSE_libgomp = "GPLv3" LICENSE_libgomp-dev = "GPLv3"
@@ -196,6 +208,14 @@ FILES_libatomic-dev = "\ " FILES_libatomic-staticdev = "${libdir}/libatomic.a" +FILES_libitm = "${libdir}/libitm.so.*" +FILES_libitm-dev = "\ + ${libdir}/libitm.so \ + ${libdir}/libitm.la \ + ${libdir}/libitm.spec \ +" +FILES_libitm-staticdev = "${libdir}/libitm.a" + do_package_write_ipk[depends] += "virtual/${MLPREFIX}libc:do_packagedata" do_package_write_deb[depends] += "virtual/${MLPREFIX}libc:do_packagedata" do_package_write_rpm[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
Signature · 1 line
2.5.0
Re: [PATCH 1/1] gcc: Add support for atomic opertions (libitm) where available
Quoted 3 lines · Mark Hatle
GCC 4.7 and newer have supported various automic operation directives, however these have not been previously enabled.
this is ok
Quoted 97 lines
Signed-off-by Mark Hatle <[email protected]>--- meta/recipes-devtools/gcc/gcc-5.3.inc | 2 ++ meta/recipes-devtools/gcc/gcc-runtime.inc | 22 +++++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-)meta/recipes-devtools/gcc/gcc-5.3.inc +2
-0@@ -103,6 +103,7 @@ LTO = "--enable-lto" EXTRA_OECONF_BASE = "\ ${LTO} \ --enable-libssp \ + --enable-libitm \ --disable-bootstrap \ --disable-libmudflap \ --with-system-zlib \@@ -118,6 +119,7 @@ EXTRA_OECONF_BASE = "\ EXTRA_OECONF_INITIAL = "\ --disable-libmudflap \ --disable-libgomp \ + --disable-libitm \ --disable-libquadmath \ --with-system-zlib \ --disable-lto \meta/recipes-devtools/gcc/gcc-runtime.inc +21
-2@@ -10,9 +10,14 @@ EXTRA_OECONF_PATHS = "\ EXTRA_OECONF_append_linuxstdbase = " --enable-clocale=gnu" -RUNTIMETARGET = "libssp libstdc++-v3 libgomp libatomic \ +RUNTIMELIBITM = "libitm" +RUNTIMELIBITM_mips = "" +RUNTIMELIBITM_mips64 = "" + +RUNTIMETARGET = "libssp libstdc++-v3 libgomp libatomic ${RUNTIMELIBITM} \ ${@bb.utils.contains_any('FORTRAN', [',fortran',',f77'], 'libquadmath', '', d)} \ " + # ? # libiberty # libmudflap@@ -49,6 +54,7 @@ do_install () { oe_runmake 'DESTDIR=${D}' MULTIBUILDTOP=${B}/$target/$d/ install done rm -rf ${D}${infodir}/libgomp.info ${D}${infodir}/dir + rm -rf ${D}${infodir}/libitm.info ${D}${infodir}/dir rm -rf ${D}${infodir}/libquadmath.info ${D}${infodir}/dir if [ -d ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/finclude ]; then rmdir --ignore-fail-on-non-empty -p ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/finclude@@ -94,6 +100,9 @@ PACKAGES = "\ libatomic \ libatomic-dev \ libatomic-staticdev \ + libitm \ + libitm-dev \ + libitm-staticdev \ " # Most libraries are licensed with the exception, but@@ -121,6 +130,9 @@ LICENSE_libquadmath-staticdev = "GPL-3.0-with-GCC-exception" LICENSE_libatomic = "GPL-3.0-with-GCC-exception" LICENSE_libatomic-dev = "GPL-3.0-with-GCC-exception" LICENSE_libatomic-staticdev = "GPL-3.0-with-GCC-exception" +LICENSE_libitm = "GPL-3.0-with-GCC-exception" +LICENSE_libitm-dev = "GPL-3.0-with-GCC-exception" +LICENSE_libitm-staticdev = "GPL-3.0-with-GCC-exception" LICENSE_libgomp = "GPLv3" LICENSE_libgomp-dev = "GPLv3"@@ -196,6 +208,14 @@ FILES_libatomic-dev = "\ " FILES_libatomic-staticdev = "${libdir}/libatomic.a" +FILES_libitm = "${libdir}/libitm.so.*" +FILES_libitm-dev = "\ + ${libdir}/libitm.so \ + ${libdir}/libitm.la \ + ${libdir}/libitm.spec \ +" +FILES_libitm-staticdev = "${libdir}/libitm.a" + do_package_write_ipk[depends] += "virtual/${MLPREFIX}libc:do_packagedata" do_package_write_deb[depends] += "virtual/${MLPREFIX}libc:do_packagedata" do_package_write_rpm[depends] += "virtual/${MLPREFIX}libc:do_packagedata" --2.5.0
--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core