Openembedded Core Discussions
 help / color / mirror / Atom feed
* [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