Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Le Bihan <eric.le.bihan.dev@free.fr>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 2/2] package/gcc: add support for D language
Date: Sun, 6 Oct 2019 17:12:28 +0200	[thread overview]
Message-ID: <20191006151228.GA5258@ned> (raw)
In-Reply-To: <20191001085605.501edf8e@windsurf.home>

On 2019-10-01 08:56, Thomas Petazzoni wrote:
> Hello,
>
> On Tue, 1 Oct 2019 07:56:14 +0200
> Eric Le Bihan <eric.le.bihan.dev@free.fr> wrote:
>
> > The D programming language needs a runtime, named libgphobos. When
> > building a toolchain with uclibc-ng as libc, for qemu_aarch64_virt, the
> > following error occurs:
> >
> > ```
> > libtool: compile:  /home/eric/build/demo-dlang/qemu/aarch64/virt/uclibc/build/host-gcc-final-9.2.0/build/./gcc/gdc -B/home/eric/build/demo-dlang/qemu/aarch64/virt/uclibc/build/host-gcc-final-9.2.0/build/./gcc/ -B/home/eric/build/demo-dlang/qemu/aarch64/virt/uclibc/host/aarch64-buildroot-linux-uclibc/bin/ -B/home/eric/build/demo-dlang/qemu/aarch64/virt/uclibc/host/aarch64-buildroot-linux-uclibc/lib/ -isystem /home/eric/build/demo-dlang/qemu/aarch64/virt/uclibc/host/aarch64-buildroot-linux-uclibc/include -isystem /home/eric/build/demo-dlang/qemu/aarch64/virt/uclibc/host/aarch64-buildroot-linux-uclibc/sys-include -fPIC -O2 -g -nostdinc -I ../../../../libphobos/libdruntime -I . -c ../../../../libphobos/libdruntime/core/internal/abort.d -fversion=Shared -o core/internal/.libs/abort.o
> > /home/eric/build/demo-dlang/qemu/aarch64/virt/uclibc/build/host-gcc-final-9.2.0/libphobos/libdruntime/core/sys/posix/sys/types.d:1134:39: error: undefined identifier '__SIZEOF_PTHREAD_ATTR_T'
> >  1134 |         byte[__SIZEOF_PTHREAD_ATTR_T] __size;
>
> This is off because __SIZEOF_PTHREAD_ATTR_T is defined by uClibc-ng,
> for example for AArch64:
>
> libpthread/nptl/sysdeps/unix/sysv/linux/aarch64/bits/pthreadtypes.h:#define __SIZEOF_PTHREAD_ATTR_T        64
> libpthread/nptl/sysdeps/unix/sysv/linux/aarch64/bits/pthreadtypes.h:  char __size[__SIZEOF_PTHREAD_ATTR_T];
>
> Perhaps there's an include missing in gcc ?
>
> However, musl does not define __SIZEOF_PTHREAD_ATTR_T.
>
> > I haven't dug into uclibc-ng code to find out the cause of the error.
> > Hence the restriction to a glibc-based toolchain.
>
> Fair enough, but it should be explained with a short comment above the
> dependency.

Looking at libphobos/libdruntime/core/sys/posix/sys/types.d turned out
to be very informative. It contains a list of definitions per C-runtime
mapped to architecture/OS. Bionic, uclibc and musl are supported but
only for a limited set of architectures. For some of them,
__SIZEOF_PTHREAD_ATTR_T and friends are redefined.

ARM is supported for uclibc, but Aarch64 is not (hence the build
failure). Adding the missing definitions from
libpthread/nptl/sysdeps/unix/sysv/linux/aarch64/bits/pthreadtypes.h is
trivial, but then the build chokes on siginfo_t not being correct. So
deep work is required.

Even some combinations defined in types.d fail to build (e.g.
x86_64+musl or ARM/uclibc).

In the end, glibc turns out to be the only C-runtime covering most of
the architectures supported by Buildroot: x86_64, Aarch64, ARM,
MIPS{32,64}, PPC{,64}, RISCV32 and SPARC64.

In order to restrict the supported architectures, should
package/gcc/Config.in.host be updated to look like this?

```
config BR2_TOOLCHAIN_BUILDROOT_DLANG
	bool "Enable D language support"
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_9
	depends on BR2_TOOLCHAIN_USES_GLIBC
	depends on !BR2_arc
	depends on !BR2_csky
	depends on !BR2_m68k
	depends on !BR2_microblaze
	depends on !BR2_nds32
	depends on !BR2_nios2
	depends on !BR2_or1k
	depends on !BR2_sparc
	depends on !BR2_xtensa
```

Regards,

--
ELB

  reply	other threads:[~2019-10-06 15:12 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-29 16:55 [Buildroot] [PATCH 0/2] Add support for the D programming language Eric Le Bihan
2019-09-29 16:56 ` [Buildroot] [PATCH 1/2] toolchain: add support for D language Eric Le Bihan
2019-09-29 16:56 ` [Buildroot] [PATCH 2/2] package/gcc: " Eric Le Bihan
2019-09-30 21:04   ` Thomas Petazzoni
2019-10-01  5:56     ` Eric Le Bihan
2019-10-01  6:56       ` Thomas Petazzoni
2019-10-06 15:12         ` Eric Le Bihan [this message]
2019-10-07  7:10           ` Thomas Petazzoni
2019-10-07 21:09             ` Arnout Vandecappelle
2019-10-07 21:16               ` Thomas Petazzoni
2019-09-30 21:03 ` [Buildroot] [PATCH 0/2] Add support for the D programming language Thomas Petazzoni
2019-10-01  6:03   ` Eric Le Bihan
2019-10-01  6:56     ` Thomas Petazzoni

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191006151228.GA5258@ned \
    --to=eric.le.bihan.dev@free.fr \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox