* [Buildroot] [PATCH 1/2] package/ltp-testsuite: remove ldd commande test with static only build
@ 2017-05-08 19:08 Romain Naour
2017-05-08 19:08 ` [Buildroot] [PATCH 2/2] package/ltp-testsuite: disable for sparc Romain Naour
0 siblings, 1 reply; 6+ messages in thread
From: Romain Naour @ 2017-05-08 19:08 UTC (permalink / raw)
To: buildroot
ldd command build system try to build a shared library unconditionally:
arc-linux-gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -matomic -Os -static \
-I[...]/sysroot/usr/include/tirpc -g -O2 -fno-strict-aliasing -pipe \
-Wall -W -Wold-style-definition -shared -o lddfile1.obj.so lddfile1.o
Fixes:
http://autobuild.buildroot.net/results/2ec/2eccf9f517ab15d8d459b06195423fdfe3fba9fa
Signed-off-by: Romain Naour <romain.naour@gmail.com>
---
package/ltp-testsuite/ltp-testsuite.mk | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/package/ltp-testsuite/ltp-testsuite.mk b/package/ltp-testsuite/ltp-testsuite.mk
index 7f26bd2..2a7f620 100644
--- a/package/ltp-testsuite/ltp-testsuite.mk
+++ b/package/ltp-testsuite/ltp-testsuite.mk
@@ -68,4 +68,12 @@ endef
LTP_TESTSUITE_POST_PATCH_HOOKS += LTP_TESTSUITE_REMOVE_UNSUPPORTED
endif
+# ldd command build system try to build a shared library unconditionally.
+ifeq ($(BR2_STATIC_LIBS),y)
+define LTP_TESTSUITE_REMOVE_LDD
+ rm -rf $(@D)/testcases/commands/ldd
+endef
+LTP_TESTSUITE_POST_PATCH_HOOKS += LTP_TESTSUITE_REMOVE_LDD
+endif
+
$(eval $(autotools-package))
--
2.9.3
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH 2/2] package/ltp-testsuite: disable for sparc
2017-05-08 19:08 [Buildroot] [PATCH 1/2] package/ltp-testsuite: remove ldd commande test with static only build Romain Naour
@ 2017-05-08 19:08 ` Romain Naour
2017-05-08 19:25 ` Thomas Petazzoni
0 siblings, 1 reply; 6+ messages in thread
From: Romain Naour @ 2017-05-08 19:08 UTC (permalink / raw)
To: buildroot
As stated in commit [1], sparc toolchains doesn't have
any of __sync_*() family of functions implementation.
When __sync_add_and_fetch() is missing, ltp fallback to a local
implementation of tst_atomic_add_return() specific for each
supported architecture.
But there is none for sparc.
Fixes:
http://autobuild.buildroot.net/results/d7c/d7c3b145a64ed3916b89ddb4090050f3b9205e37
[1] 6856e417da4f3aa77e2a814db2a89429af072f7d
Signed-off-by: Romain Naour <romain.naour@gmail.com>
---
package/ltp-testsuite/Config.in | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/package/ltp-testsuite/Config.in b/package/ltp-testsuite/Config.in
index a7d3e58..070374a 100644
--- a/package/ltp-testsuite/Config.in
+++ b/package/ltp-testsuite/Config.in
@@ -3,6 +3,8 @@ config BR2_PACKAGE_LTP_TESTSUITE
depends on BR2_USE_MMU # fork()
depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
depends on !BR2_TOOLCHAIN_USES_MUSL
+ # missing __sync_*() family of functions
+ depends on !BR2_sparc
# does not build, cachectl.h issue
depends on !BR2_nios2
select BR2_PACKAGE_LIBTIRPC if !BR2_TOOLCHAIN_HAS_NATIVE_RPC
@@ -12,6 +14,6 @@ config BR2_PACKAGE_LTP_TESTSUITE
http://linux-test-project.github.io
comment "ltp-testsuite needs a glibc or uClibc toolchain w/ NPTL"
- depends on !BR2_nios2
+ depends on !BR2_nios2 && !BR2_sparc
depends on BR2_USE_MMU
depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_TOOLCHAIN_USES_MUSL
--
2.9.3
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH 2/2] package/ltp-testsuite: disable for sparc
2017-05-08 19:08 ` [Buildroot] [PATCH 2/2] package/ltp-testsuite: disable for sparc Romain Naour
@ 2017-05-08 19:25 ` Thomas Petazzoni
2017-05-08 20:31 ` Romain Naour
0 siblings, 1 reply; 6+ messages in thread
From: Thomas Petazzoni @ 2017-05-08 19:25 UTC (permalink / raw)
To: buildroot
Hello,
On Mon, 8 May 2017 21:08:19 +0200, Romain Naour wrote:
> + # missing __sync_*() family of functions
> + depends on !BR2_sparc
This is wrong: we have BR2_TOOLCHAIN_HAS_SYNC_xyz symbols for this.
Sparc is not the only architecture affected.
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH 2/2] package/ltp-testsuite: disable for sparc
2017-05-08 19:25 ` Thomas Petazzoni
@ 2017-05-08 20:31 ` Romain Naour
2017-05-08 20:54 ` Thomas Petazzoni
0 siblings, 1 reply; 6+ messages in thread
From: Romain Naour @ 2017-05-08 20:31 UTC (permalink / raw)
To: buildroot
Hi Thomas,
Le 08/05/2017 ? 21:25, Thomas Petazzoni a ?crit :
> Hello,
>
> On Mon, 8 May 2017 21:08:19 +0200, Romain Naour wrote:
>
>> + # missing __sync_*() family of functions
>> + depends on !BR2_sparc
>
> This is wrong: we have BR2_TOOLCHAIN_HAS_SYNC_xyz symbols for this.
> Sparc is not the only architecture affected.
I was able to build ltp-testsuite with the following config where none of
BR2_TOOLCHAIN_HAS_SYNC_* are set:
BR2_arcle=y
# BR2_ARC_ATOMIC_EXT is not set
BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
BR2_PACKAGE_LTP_TESTSUITE=y
Other architecture are not available due to toolchain dependencies
So It's seems related to sparc.
I tested with test-pkg to discover these two build issues.
Best regards,
Romain
>
> Thomas
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Buildroot] [PATCH 2/2] package/ltp-testsuite: disable for sparc
2017-05-08 20:31 ` Romain Naour
@ 2017-05-08 20:54 ` Thomas Petazzoni
2017-05-08 21:19 ` Romain Naour
0 siblings, 1 reply; 6+ messages in thread
From: Thomas Petazzoni @ 2017-05-08 20:54 UTC (permalink / raw)
To: buildroot
Hello,
On Mon, 8 May 2017 22:31:00 +0200, Romain Naour wrote:
> > This is wrong: we have BR2_TOOLCHAIN_HAS_SYNC_xyz symbols for this.
> > Sparc is not the only architecture affected.
>
> I was able to build ltp-testsuite with the following config where none of
> BR2_TOOLCHAIN_HAS_SYNC_* are set:
>
> BR2_arcle=y
> # BR2_ARC_ATOMIC_EXT is not set
> BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
> BR2_PACKAGE_LTP_TESTSUITE=y
>
> Other architecture are not available due to toolchain dependencies
>
> So It's seems related to sparc.
>
> I tested with test-pkg to discover these two build issues.
Investigation of include/tst_atomic.h explains what's happening. Here
is the code in tst_atomic.h:
#if HAVE_SYNC_ADD_AND_FETCH == 1
static inline int tst_atomic_add_return(int i, int *v)
{
return __sync_add_and_fetch(v, i);
}
#elif defined(__i386__) || defined(__x86_64__)
... x86 specific implementation of tst_atomic_add_return()
#elif defined(__powerpc__) || defined(__powerpc64__)
... powerpc specific implementation of tst_atomic_add_return()
#elif defined(__s390__) || defined(__s390x__)
... S390 specific implementation of tst_atomic_add_return()
#elif defined(__arc__)
... ARC specific implementation of tst_atomic_add_return()
#else /* HAVE_SYNC_ADD_AND_FETCH == 1 */
# error Your compiler does not provide __sync_add_and_fetch and LTP\
implementation is missing for your architecture.
#endif
So, the right dependency is:
# Needs __sync*() built-ins for 4-byte data, except on a few
# architectures for which a specific implementation is provided
# in ltp-testsuite
depends on BR2_TOOLCHAIN_HAS_SYNC_4 || BR2_arc || BR2_i386 || BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le || BR2_x86_64
Best regards,
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 6+ messages in thread* [Buildroot] [PATCH 2/2] package/ltp-testsuite: disable for sparc
2017-05-08 20:54 ` Thomas Petazzoni
@ 2017-05-08 21:19 ` Romain Naour
0 siblings, 0 replies; 6+ messages in thread
From: Romain Naour @ 2017-05-08 21:19 UTC (permalink / raw)
To: buildroot
Hi Thomas,
Le 08/05/2017 ? 22:54, Thomas Petazzoni a ?crit :
> Hello,
>
> On Mon, 8 May 2017 22:31:00 +0200, Romain Naour wrote:
>
>>> This is wrong: we have BR2_TOOLCHAIN_HAS_SYNC_xyz symbols for this.
>>> Sparc is not the only architecture affected.
>>
>> I was able to build ltp-testsuite with the following config where none of
>> BR2_TOOLCHAIN_HAS_SYNC_* are set:
>>
>> BR2_arcle=y
>> # BR2_ARC_ATOMIC_EXT is not set
>> BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
>> BR2_PACKAGE_LTP_TESTSUITE=y
>>
>> Other architecture are not available due to toolchain dependencies
>>
>> So It's seems related to sparc.
>>
>> I tested with test-pkg to discover these two build issues.
>
> Investigation of include/tst_atomic.h explains what's happening. Here
> is the code in tst_atomic.h:
>
> #if HAVE_SYNC_ADD_AND_FETCH == 1
> static inline int tst_atomic_add_return(int i, int *v)
> {
> return __sync_add_and_fetch(v, i);
> }
>
> #elif defined(__i386__) || defined(__x86_64__)
> ... x86 specific implementation of tst_atomic_add_return()
> #elif defined(__powerpc__) || defined(__powerpc64__)
> ... powerpc specific implementation of tst_atomic_add_return()
> #elif defined(__s390__) || defined(__s390x__)
> ... S390 specific implementation of tst_atomic_add_return()
> #elif defined(__arc__)
> ... ARC specific implementation of tst_atomic_add_return()
> #else /* HAVE_SYNC_ADD_AND_FETCH == 1 */
> # error Your compiler does not provide __sync_add_and_fetch and LTP\
> implementation is missing for your architecture.
> #endif
>
> So, the right dependency is:
>
> # Needs __sync*() built-ins for 4-byte data, except on a few
> # architectures for which a specific implementation is provided
> # in ltp-testsuite
> depends on BR2_TOOLCHAIN_HAS_SYNC_4 || BR2_arc || BR2_i386 || BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le || BR2_x86_64
Fixed in v2, thanks for the help.
Best regards,
Romain
>
> Best regards,
>
> Thomas
>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2017-05-08 21:19 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-05-08 19:08 [Buildroot] [PATCH 1/2] package/ltp-testsuite: remove ldd commande test with static only build Romain Naour
2017-05-08 19:08 ` [Buildroot] [PATCH 2/2] package/ltp-testsuite: disable for sparc Romain Naour
2017-05-08 19:25 ` Thomas Petazzoni
2017-05-08 20:31 ` Romain Naour
2017-05-08 20:54 ` Thomas Petazzoni
2017-05-08 21:19 ` Romain Naour
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox