Skip to contentSkip to conversation

RFC - Enable GCC 5.3 transactional support

PATCH In review Mark Hatle 2 participants 3 messages Mar 1, 2016

lore
Share & tools
lore

Mark Hatle

author
#0 lore raw

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
author
#1 lore raw

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
index 0667299..0bf9f55 100644
@@ -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
index 844149f..707db37 100644
@@ -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
#2 lore raw

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
---
 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
index 0667299..0bf9f55 100644
@@ -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
index 844149f..707db37 100644
@@ -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