glibc: Avoid multilibbing on wordsize.h

Message ID 1532543734-17529-1-git-send-email-daniel.diaz@linaro.org
State Accepted
Commit a74c77d6168101e88c3a3bce7130f4f52cfab95d
Headers show
Series
  • glibc: Avoid multilibbing on wordsize.h
Related show

Commit Message

Daniel Díaz July 25, 2018, 6:35 p.m.
Once another header #includes <bits/wordsize.h>, there is a
potential recursion going on because the
multilib_header_wrapper.h #includes <bits/wordsize.h> again!

This should not happen because an __arm__ (32-bits) or an
__aarch64__ (64-bits) environment guarantees that we will
be getting the correct definition, but when building against
a different target (like BPF), recursion is what happens.

This can be seen, for instance, when building eBPF programs
from the kernel with `clang -target bpf', such as the ones
located in linux/tools/testing/selftests/bpf/.

Signed-off-by: Daniel Díaz <daniel.diaz@linaro.org>
Signed-off-by: Aníbal Limón <anibal.limon@linaro.org>
---
 meta/recipes-core/glibc/glibc-package.inc | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

Comments

ChenQi July 31, 2018, 2:01 a.m. | #1
This patch causes a regression in multilib SDK for qemuarm64.

Error: Transaction check error:
   file /usr/include/bits/wordsize.h conflicts between attempted installs of lib32-libc6-dev-2.27-r0.armv7vet2hf_vfp and libc6-dev-2.27-r0.aarch64

Please consider sending a follow-up patch to fix this regression.

Best Regards,
Chen Qi

On 07/26/2018 02:35 AM, Daniel Díaz wrote:
> Once another header #includes <bits/wordsize.h>, there is a
> potential recursion going on because the
> multilib_header_wrapper.h #includes <bits/wordsize.h> again!
>
> This should not happen because an __arm__ (32-bits) or an
> __aarch64__ (64-bits) environment guarantees that we will
> be getting the correct definition, but when building against
> a different target (like BPF), recursion is what happens.
>
> This can be seen, for instance, when building eBPF programs
> from the kernel with `clang -target bpf', such as the ones
> located in linux/tools/testing/selftests/bpf/.
>
> Signed-off-by: Daniel Díaz <daniel.diaz@linaro.org>
> Signed-off-by: Aníbal Limón <anibal.limon@linaro.org>
> ---
>   meta/recipes-core/glibc/glibc-package.inc | 3 +--
>   1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/meta/recipes-core/glibc/glibc-package.inc b/meta/recipes-core/glibc/glibc-package.inc
> index ae3f2f6..a4f61f8 100644
> --- a/meta/recipes-core/glibc/glibc-package.inc
> +++ b/meta/recipes-core/glibc/glibc-package.inc
> @@ -136,8 +136,7 @@ do_install_append_armeb () {
>   }
>   
>   do_install_armmultilib () {
> -
> -	oe_multilib_header bits/endian.h bits/fcntl.h bits/fenv.h bits/fp-fast.h bits/hwcap.h bits/ipc.h bits/link.h bits/wordsize.h
> +	oe_multilib_header bits/endian.h bits/fcntl.h bits/fenv.h bits/fp-fast.h bits/hwcap.h bits/ipc.h bits/link.h
>   	oe_multilib_header bits/local_lim.h bits/mman.h bits/msq.h bits/pthreadtypes.h bits/pthreadtypes-arch.h  bits/sem.h  bits/semaphore.h bits/setjmp.h
>   	oe_multilib_header bits/shm.h bits/sigstack.h bits/stat.h bits/statfs.h bits/typesizes.h
>
Daniel Díaz Aug. 9, 2018, 5:03 p.m. | #2
Hello!


On 30 July 2018 at 21:01, ChenQi <Qi.Chen@windriver.com> wrote:
> This patch causes a regression in multilib SDK for qemuarm64.
>
> Error: Transaction check error:
>   file /usr/include/bits/wordsize.h conflicts between attempted installs of
> lib32-libc6-dev-2.27-r0.armv7vet2hf_vfp and libc6-dev-2.27-r0.aarch64
>
> Please consider sending a follow-up patch to fix this regression.

Thanks for the heads up. Follow-up patches coming along.

Greetings!

Daniel Díaz
daniel.diaz@linaro.org

Patch

diff --git a/meta/recipes-core/glibc/glibc-package.inc b/meta/recipes-core/glibc/glibc-package.inc
index ae3f2f6..a4f61f8 100644
--- a/meta/recipes-core/glibc/glibc-package.inc
+++ b/meta/recipes-core/glibc/glibc-package.inc
@@ -136,8 +136,7 @@  do_install_append_armeb () {
 }
 
 do_install_armmultilib () {
-
-	oe_multilib_header bits/endian.h bits/fcntl.h bits/fenv.h bits/fp-fast.h bits/hwcap.h bits/ipc.h bits/link.h bits/wordsize.h
+	oe_multilib_header bits/endian.h bits/fcntl.h bits/fenv.h bits/fp-fast.h bits/hwcap.h bits/ipc.h bits/link.h
 	oe_multilib_header bits/local_lim.h bits/mman.h bits/msq.h bits/pthreadtypes.h bits/pthreadtypes-arch.h  bits/sem.h  bits/semaphore.h bits/setjmp.h
 	oe_multilib_header bits/shm.h bits/sigstack.h bits/stat.h bits/statfs.h bits/typesizes.h