* [PATCH 0/1] RFC - Enable GCC 5.3 transactional support
@ 2016-03-01 4:18 Mark Hatle
2016-03-01 4:18 ` [PATCH 1/1] gcc: Add support for atomic opertions (libitm) where available Mark Hatle
0 siblings, 1 reply; 3+ messages in thread
From: Mark Hatle @ 2016-03-01 4:18 UTC (permalink / raw)
To: openembedded-core
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(-)
--
2.5.0
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 1/1] gcc: Add support for atomic opertions (libitm) where available
2016-03-01 4:18 [PATCH 0/1] RFC - Enable GCC 5.3 transactional support Mark Hatle
@ 2016-03-01 4:18 ` Mark Hatle
2016-03-01 6:04 ` Khem Raj
0 siblings, 1 reply; 3+ messages in thread
From: Mark Hatle @ 2016-03-01 4:18 UTC (permalink / raw)
To: openembedded-core
GCC 4.7 and newer have supported various automic operation directives,
however these have not been previously enabled.
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
---
meta/recipes-devtools/gcc/gcc-5.3.inc | 2 ++
meta/recipes-devtools/gcc/gcc-runtime.inc | 22 +++++++++++++++++++++-
2 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/meta/recipes-devtools/gcc/gcc-5.3.inc b/meta/recipes-devtools/gcc/gcc-5.3.inc
index 0667299..0bf9f55 100644
--- a/meta/recipes-devtools/gcc/gcc-5.3.inc
+++ b/meta/recipes-devtools/gcc/gcc-5.3.inc
@@ -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 \
diff --git a/meta/recipes-devtools/gcc/gcc-runtime.inc b/meta/recipes-devtools/gcc/gcc-runtime.inc
index 844149f..707db37 100644
--- a/meta/recipes-devtools/gcc/gcc-runtime.inc
+++ b/meta/recipes-devtools/gcc/gcc-runtime.inc
@@ -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
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 1/1] gcc: Add support for atomic opertions (libitm) where available
2016-03-01 4:18 ` [PATCH 1/1] gcc: Add support for atomic opertions (libitm) where available Mark Hatle
@ 2016-03-01 6:04 ` Khem Raj
0 siblings, 0 replies; 3+ messages in thread
From: Khem Raj @ 2016-03-01 6:04 UTC (permalink / raw)
To: Mark Hatle; +Cc: Patches and discussions about the oe-core layer
On Mon, Feb 29, 2016 at 8:18 PM, Mark Hatle <mark.hatle@windriver.com> wrote:
> GCC 4.7 and newer have supported various automic operation directives,
> however these have not been previously enabled.
>
this is ok
> Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
> ---
> meta/recipes-devtools/gcc/gcc-5.3.inc | 2 ++
> meta/recipes-devtools/gcc/gcc-runtime.inc | 22 +++++++++++++++++++++-
> 2 files changed, 23 insertions(+), 1 deletion(-)
>
> diff --git a/meta/recipes-devtools/gcc/gcc-5.3.inc b/meta/recipes-devtools/gcc/gcc-5.3.inc
> index 0667299..0bf9f55 100644
> --- a/meta/recipes-devtools/gcc/gcc-5.3.inc
> +++ b/meta/recipes-devtools/gcc/gcc-5.3.inc
> @@ -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 \
> diff --git a/meta/recipes-devtools/gcc/gcc-runtime.inc b/meta/recipes-devtools/gcc/gcc-runtime.inc
> index 844149f..707db37 100644
> --- a/meta/recipes-devtools/gcc/gcc-runtime.inc
> +++ b/meta/recipes-devtools/gcc/gcc-runtime.inc
> @@ -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
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-03-01 6:04 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-01 4:18 [PATCH 0/1] RFC - Enable GCC 5.3 transactional support Mark Hatle
2016-03-01 4:18 ` [PATCH 1/1] gcc: Add support for atomic opertions (libitm) where available Mark Hatle
2016-03-01 6:04 ` Khem Raj
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox