* [Buildroot] [PATCH] package/zlib-ng: Backport patch to fix linking on powerpc
@ 2022-04-04 9:12 Joel Stanley
2022-04-04 20:17 ` Arnout Vandecappelle
0 siblings, 1 reply; 5+ messages in thread
From: Joel Stanley @ 2022-04-04 9:12 UTC (permalink / raw)
To: buildroot; +Cc: fontaine.fabrice
Commit 192dfc68c0e4 ("package/zlib-ng: fix build on powerpc") turned the
Power8 optimisations off to fix a build issue. Instead apply a patch
from the develop branch upstream to fix the issue.
This patch is not yet in a released version of zlib-ng.
Signed-off-by: Joel Stanley <joel@jms.id.au>
---
...rd-for-vec_sumsu-to-prevent-undefine.patch | 27 +++++++++++++++++++
package/zlib-ng/zlib-ng.mk | 6 -----
2 files changed, 27 insertions(+), 6 deletions(-)
create mode 100644 package/zlib-ng/0001-Use-static-keyword-for-vec_sumsu-to-prevent-undefine.patch
diff --git a/package/zlib-ng/0001-Use-static-keyword-for-vec_sumsu-to-prevent-undefine.patch b/package/zlib-ng/0001-Use-static-keyword-for-vec_sumsu-to-prevent-undefine.patch
new file mode 100644
index 000000000000..cc103215de3c
--- /dev/null
+++ b/package/zlib-ng/0001-Use-static-keyword-for-vec_sumsu-to-prevent-undefine.patch
@@ -0,0 +1,27 @@
+From 677f56825f7080403e18e57ffe8177f3df290f20 Mon Sep 17 00:00:00 2001
+From: Nathan Moinvaziri <nathan@nathanm.com>
+Date: Sun, 23 Jan 2022 12:59:01 -0800
+Subject: [PATCH] Use static keyword for vec_sumsu to prevent undefined
+ reference error when g++ linking.
+
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ arch/power/adler32_power8.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/arch/power/adler32_power8.c b/arch/power/adler32_power8.c
+index 029aa3a84c57..fc4086322efc 100644
+--- a/arch/power/adler32_power8.c
++++ b/arch/power/adler32_power8.c
+@@ -44,7 +44,7 @@
+ #include "adler32_p.h"
+
+ /* Vector across sum unsigned int (saturate). */
+-inline vector unsigned int vec_sumsu(vector unsigned int __a, vector unsigned int __b) {
++static inline vector unsigned int vec_sumsu(vector unsigned int __a, vector unsigned int __b) {
+ __b = vec_sld(__a, __a, 8);
+ __b = vec_add(__b, __a);
+ __a = vec_sld(__b, __b, 4);
+--
+2.35.1
+
diff --git a/package/zlib-ng/zlib-ng.mk b/package/zlib-ng/zlib-ng.mk
index 938acd4181a6..fb497b8c11d0 100644
--- a/package/zlib-ng/zlib-ng.mk
+++ b/package/zlib-ng/zlib-ng.mk
@@ -23,10 +23,4 @@ ifeq ($(BR2_arm),y)
ZLIB_NG_CONF_OPTS += -DWITH_ACLE=1 -DWITH_NEON=1
endif
-ifeq ($(BR2_powerpc_power8),y)
-ZLIB_NG_CONF_OPTS += -DWITH_POWER8=ON
-else
-ZLIB_NG_CONF_OPTS += -DWITH_POWER8=OFF
-endif
-
$(eval $(cmake-package))
--
2.35.1
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [Buildroot] [PATCH] package/zlib-ng: Backport patch to fix linking on powerpc
2022-04-04 9:12 [Buildroot] [PATCH] package/zlib-ng: Backport patch to fix linking on powerpc Joel Stanley
@ 2022-04-04 20:17 ` Arnout Vandecappelle
2022-04-05 19:55 ` Yann E. MORIN
0 siblings, 1 reply; 5+ messages in thread
From: Arnout Vandecappelle @ 2022-04-04 20:17 UTC (permalink / raw)
To: Joel Stanley, buildroot; +Cc: fontaine.fabrice
On 04/04/2022 11:12, Joel Stanley wrote:
> Commit 192dfc68c0e4 ("package/zlib-ng: fix build on powerpc") turned the
Peter just backported this one to 2022.02.x...
> Power8 optimisations off to fix a build issue. Instead apply a patch
> from the develop branch upstream to fix the issue.
>
> This patch is not yet in a released version of zlib-ng.
>
> Signed-off-by: Joel Stanley <joel@jms.id.au>
Applied to master, thanks.
Regards,
Arnout
> ---
> ...rd-for-vec_sumsu-to-prevent-undefine.patch | 27 +++++++++++++++++++
> package/zlib-ng/zlib-ng.mk | 6 -----
> 2 files changed, 27 insertions(+), 6 deletions(-)
> create mode 100644 package/zlib-ng/0001-Use-static-keyword-for-vec_sumsu-to-prevent-undefine.patch
>
> diff --git a/package/zlib-ng/0001-Use-static-keyword-for-vec_sumsu-to-prevent-undefine.patch b/package/zlib-ng/0001-Use-static-keyword-for-vec_sumsu-to-prevent-undefine.patch
> new file mode 100644
> index 000000000000..cc103215de3c
> --- /dev/null
> +++ b/package/zlib-ng/0001-Use-static-keyword-for-vec_sumsu-to-prevent-undefine.patch
> @@ -0,0 +1,27 @@
> +From 677f56825f7080403e18e57ffe8177f3df290f20 Mon Sep 17 00:00:00 2001
> +From: Nathan Moinvaziri <nathan@nathanm.com>
> +Date: Sun, 23 Jan 2022 12:59:01 -0800
> +Subject: [PATCH] Use static keyword for vec_sumsu to prevent undefined
> + reference error when g++ linking.
> +
> +Signed-off-by: Joel Stanley <joel@jms.id.au>
> +---
> + arch/power/adler32_power8.c | 2 +-
> + 1 file changed, 1 insertion(+), 1 deletion(-)
> +
> +diff --git a/arch/power/adler32_power8.c b/arch/power/adler32_power8.c
> +index 029aa3a84c57..fc4086322efc 100644
> +--- a/arch/power/adler32_power8.c
> ++++ b/arch/power/adler32_power8.c
> +@@ -44,7 +44,7 @@
> + #include "adler32_p.h"
> +
> + /* Vector across sum unsigned int (saturate). */
> +-inline vector unsigned int vec_sumsu(vector unsigned int __a, vector unsigned int __b) {
> ++static inline vector unsigned int vec_sumsu(vector unsigned int __a, vector unsigned int __b) {
> + __b = vec_sld(__a, __a, 8);
> + __b = vec_add(__b, __a);
> + __a = vec_sld(__b, __b, 4);
> +--
> +2.35.1
> +
> diff --git a/package/zlib-ng/zlib-ng.mk b/package/zlib-ng/zlib-ng.mk
> index 938acd4181a6..fb497b8c11d0 100644
> --- a/package/zlib-ng/zlib-ng.mk
> +++ b/package/zlib-ng/zlib-ng.mk
> @@ -23,10 +23,4 @@ ifeq ($(BR2_arm),y)
> ZLIB_NG_CONF_OPTS += -DWITH_ACLE=1 -DWITH_NEON=1
> endif
>
> -ifeq ($(BR2_powerpc_power8),y)
> -ZLIB_NG_CONF_OPTS += -DWITH_POWER8=ON
> -else
> -ZLIB_NG_CONF_OPTS += -DWITH_POWER8=OFF
> -endif
> -
> $(eval $(cmake-package))
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [Buildroot] [PATCH] package/zlib-ng: Backport patch to fix linking on powerpc
2022-04-04 20:17 ` Arnout Vandecappelle
@ 2022-04-05 19:55 ` Yann E. MORIN
2022-04-06 2:05 ` Joel Stanley
0 siblings, 1 reply; 5+ messages in thread
From: Yann E. MORIN @ 2022-04-05 19:55 UTC (permalink / raw)
To: Arnout Vandecappelle; +Cc: fontaine.fabrice, Joel Stanley, buildroot
Arnout, All,
On 2022-04-04 22:17 +0200, Arnout Vandecappelle spake thusly:
> On 04/04/2022 11:12, Joel Stanley wrote:
> >Commit 192dfc68c0e4 ("package/zlib-ng: fix build on powerpc") turned the
> Peter just backported this one to 2022.02.x...
> >Power8 optimisations off to fix a build issue. Instead apply a patch
> >from the develop branch upstream to fix the issue.
> >
> >This patch is not yet in a released version of zlib-ng.
> >
> >Signed-off-by: Joel Stanley <joel@jms.id.au>
> Applied to master, thanks.
Err... Why would we enable the POWER8 optimisations when the target is
not a POWER8 ?
Backporting the patch seems correct, but the enabling/disabling the
optinisations should have stayed, I believe...
Regards,
Yann E. MORIN.
> >---
> > ...rd-for-vec_sumsu-to-prevent-undefine.patch | 27 +++++++++++++++++++
> > package/zlib-ng/zlib-ng.mk | 6 -----
> > 2 files changed, 27 insertions(+), 6 deletions(-)
> > create mode 100644 package/zlib-ng/0001-Use-static-keyword-for-vec_sumsu-to-prevent-undefine.patch
> >
> >diff --git a/package/zlib-ng/0001-Use-static-keyword-for-vec_sumsu-to-prevent-undefine.patch b/package/zlib-ng/0001-Use-static-keyword-for-vec_sumsu-to-prevent-undefine.patch
> >new file mode 100644
> >index 000000000000..cc103215de3c
> >--- /dev/null
> >+++ b/package/zlib-ng/0001-Use-static-keyword-for-vec_sumsu-to-prevent-undefine.patch
> >@@ -0,0 +1,27 @@
> >+From 677f56825f7080403e18e57ffe8177f3df290f20 Mon Sep 17 00:00:00 2001
> >+From: Nathan Moinvaziri <nathan@nathanm.com>
> >+Date: Sun, 23 Jan 2022 12:59:01 -0800
> >+Subject: [PATCH] Use static keyword for vec_sumsu to prevent undefined
> >+ reference error when g++ linking.
> >+
> >+Signed-off-by: Joel Stanley <joel@jms.id.au>
> >+---
> >+ arch/power/adler32_power8.c | 2 +-
> >+ 1 file changed, 1 insertion(+), 1 deletion(-)
> >+
> >+diff --git a/arch/power/adler32_power8.c b/arch/power/adler32_power8.c
> >+index 029aa3a84c57..fc4086322efc 100644
> >+--- a/arch/power/adler32_power8.c
> >++++ b/arch/power/adler32_power8.c
> >+@@ -44,7 +44,7 @@
> >+ #include "adler32_p.h"
> >+
> >+ /* Vector across sum unsigned int (saturate). */
> >+-inline vector unsigned int vec_sumsu(vector unsigned int __a, vector unsigned int __b) {
> >++static inline vector unsigned int vec_sumsu(vector unsigned int __a, vector unsigned int __b) {
> >+ __b = vec_sld(__a, __a, 8);
> >+ __b = vec_add(__b, __a);
> >+ __a = vec_sld(__b, __b, 4);
> >+--
> >+2.35.1
> >+
> >diff --git a/package/zlib-ng/zlib-ng.mk b/package/zlib-ng/zlib-ng.mk
> >index 938acd4181a6..fb497b8c11d0 100644
> >--- a/package/zlib-ng/zlib-ng.mk
> >+++ b/package/zlib-ng/zlib-ng.mk
> >@@ -23,10 +23,4 @@ ifeq ($(BR2_arm),y)
> > ZLIB_NG_CONF_OPTS += -DWITH_ACLE=1 -DWITH_NEON=1
> > endif
> >-ifeq ($(BR2_powerpc_power8),y)
> >-ZLIB_NG_CONF_OPTS += -DWITH_POWER8=ON
> >-else
> >-ZLIB_NG_CONF_OPTS += -DWITH_POWER8=OFF
> >-endif
> >-
> > $(eval $(cmake-package))
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [Buildroot] [PATCH] package/zlib-ng: Backport patch to fix linking on powerpc
2022-04-05 19:55 ` Yann E. MORIN
@ 2022-04-06 2:05 ` Joel Stanley
2022-04-07 0:31 ` Joel Stanley
0 siblings, 1 reply; 5+ messages in thread
From: Joel Stanley @ 2022-04-06 2:05 UTC (permalink / raw)
To: Yann E. MORIN; +Cc: fontaine.fabrice, buildroot
On Tue, 5 Apr 2022 at 19:55, Yann E. MORIN <yann.morin.1998@free.fr> wrote:
>
> Arnout, All,
>
> On 2022-04-04 22:17 +0200, Arnout Vandecappelle spake thusly:
> > On 04/04/2022 11:12, Joel Stanley wrote:
> > >Commit 192dfc68c0e4 ("package/zlib-ng: fix build on powerpc") turned the
> > Peter just backported this one to 2022.02.x...
> > >Power8 optimisations off to fix a build issue. Instead apply a patch
> > >from the develop branch upstream to fix the issue.
> > >
> > >This patch is not yet in a released version of zlib-ng.
> > >
> > >Signed-off-by: Joel Stanley <joel@jms.id.au>
> > Applied to master, thanks.
>
> Err... Why would we enable the POWER8 optimisations when the target is
> not a POWER8 ?
>
> Backporting the patch seems correct, but the enabling/disabling the
> optinisations should have stayed, I believe...
Taking a look at the cmake configuration, there's dozens of options
that provide optimisations. It looks like it does detection of
features:
elseif(BASEARCH_PPC_FOUND)
# Common arch detection code
if(WITH_ALTIVEC)
check_ppc_intrinsics()
endif()
if(WITH_POWER8)
check_power8_intrinsics()
endif()
if(HAVE_VMX OR HAVE_POWER8_INTRIN)
list(APPEND ZLIB_ARCH_HDRS ${ARCHDIR}/power_features.h)
list(APPEND ZLIB_ARCH_SRCS ${ARCHDIR}/power_features.c)
...
if(WITH_POWER8)
if(HAVE_POWER8_INTRIN)
add_definitions(-DPOWER8)
add_definitions(-DPOWER_FEATURES)
add_definitions(-DPOWER8_VSX_ADLER32)
add_definitions(-DPOWER8_VSX_CHUNKSET)
add_definitions(-DPOWER8_VSX_SLIDEHASH)
set(POWER8_SRCS ${ARCHDIR}/adler32_power8.c
${ARCHDIR}/chunkset_power8.c ${ARCHDIR}/slide_hash_power8.c)
if("${ARCH}" MATCHES "powerpc64(le)?")
add_definitions(-DPOWER8_VSX_CRC32)
list(APPEND POWER8_SRCS ${ARCHDIR}/crc32_power8.c)
endif()
list(APPEND ZLIB_ARCH_SRCS ${POWER8_SRCS})
set_property(SOURCE ${POWER8_SRCS} PROPERTY
COMPILE_FLAGS "${POWER8FLAG} ${NOLTOFLAG}")
else()
set(WITH_POWER8 OFF)
endif()
The check looks like this.
check_power8_intrinsics() {
# Check whether features needed by POWER optimisations are available
cat > $test.c << EOF
#include <sys/auxv.h>
int main() { return (getauxval(AT_HWCAP2) & PPC_FEATURE2_ARCH_2_07); }
EOF
if test $buildpower8 -eq 1 && try $CC -c $CFLAGS -mcpu=power8 $test.c; then
HAVE_POWER8_INTRIN=1
echo "Check whether POWER8 instructions are available ...
Yes." | tee -a configure.log
else
HAVE_POWER8_INTRIN=0
echo "Check whether POWER8 instructions are available ... No."
| tee -a configure.log
fi
}
So as long as your compiler defines the PPC_FEATURE2_ARCH_2_07 in
auxv.h, and supports -mcpu=power8, it will build the code. The
application then does runtime checking of auxv to decide if the
optimisations should be used.
Setting WITH_POWER8=OFF on the command line will skip the checks, and
not build in the optimisations.
WITH_POWER8=ON has no effect as it's the default and the cmake logic
will turn it off if it detects the platform isn't capable.
From what I can see, there's a small binary size reduction to be had
by forcing Power8 off if your toolchain is power8 capable but you know
your platform isn't. I think this is the case for GCC built for
ppc64(le) but targeting a different CPU.
I suggest we let the zlib-ng build system do its thing to ease the
maintenance burden of keeping the flags up to date.
I also welcome someone double checking my analysis, as I may have
misunderstood something.
Cheers,
Joel
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [Buildroot] [PATCH] package/zlib-ng: Backport patch to fix linking on powerpc
2022-04-06 2:05 ` Joel Stanley
@ 2022-04-07 0:31 ` Joel Stanley
0 siblings, 0 replies; 5+ messages in thread
From: Joel Stanley @ 2022-04-07 0:31 UTC (permalink / raw)
To: Yann E. MORIN; +Cc: Fabrice Fontaine, buildroot
On Wed, 6 Apr 2022 at 02:05, Joel Stanley <joel@jms.id.au> wrote:
>
> On Tue, 5 Apr 2022 at 19:55, Yann E. MORIN <yann.morin.1998@free.fr> wrote:
> >
> > Arnout, All,
> >
> > On 2022-04-04 22:17 +0200, Arnout Vandecappelle spake thusly:
> > > On 04/04/2022 11:12, Joel Stanley wrote:
> > > >Commit 192dfc68c0e4 ("package/zlib-ng: fix build on powerpc") turned the
> > > Peter just backported this one to 2022.02.x...
> > > >Power8 optimisations off to fix a build issue. Instead apply a patch
> > > >from the develop branch upstream to fix the issue.
> > > >
> > > >This patch is not yet in a released version of zlib-ng.
> > > >
> > > >Signed-off-by: Joel Stanley <joel@jms.id.au>
> > > Applied to master, thanks.
> >
> > Err... Why would we enable the POWER8 optimisations when the target is
> > not a POWER8 ?
> >
> > Backporting the patch seems correct, but the enabling/disabling the
> > optinisations should have stayed, I believe...
>
> Taking a look at the cmake configuration, there's dozens of options
> that provide optimisations. It looks like it does detection of
> features:
> I suggest we let the zlib-ng build system do its thing to ease the
> maintenance burden of keeping the flags up to date.
>
> I also welcome someone double checking my analysis, as I may have
> misunderstood something.
We can ignore my ramblings, because I was looking at the latest
'develop' branch. The cmake configuration in the 2.0.6 release is
quite different. I'll send a patch to reinstate the settings we had.
Cheers,
Joel
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2022-04-07 0:32 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-04-04 9:12 [Buildroot] [PATCH] package/zlib-ng: Backport patch to fix linking on powerpc Joel Stanley
2022-04-04 20:17 ` Arnout Vandecappelle
2022-04-05 19:55 ` Yann E. MORIN
2022-04-06 2:05 ` Joel Stanley
2022-04-07 0:31 ` Joel Stanley
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox