Picolibc now lets you configure the default memory layout used in the
default linker script. Add values to the sample arm-picolibc-eabi
configuration that sets values appropriate for typical cortex m
processors run under qemu.
Signed-off-by: Keith Packard <keithp@keithp.com>
These values are used when constructing the default linker scripts
used with picolibc. Setting reasonable defaults allows simple test
applications to be compiled without additional configuration.
Signed-off-by: Keith Packard <keithp@keithp.com>
GCC's libsanitizer module does provide a subset of support for x86
targets (e.g. libasan). GCC's `libsanitizer/configure.tgt` file only
outlines flags for optional sanitizers.
Signed-off-by: James Knight <james.d.knight@live.com>
As mentioned in #1908, we should have patches that are experimental
under the CT_EXPERIMENTAL option. This an experimental patch to gcc:
https://gcc.gnu.org/pipermail/gcc-patches/2022-August/600452.html
And since it may affect production toolchains, we should move this patch
to the experimental bundled patches introduced in the previous commit.
Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
This adds 3 new options to patch order:
* bundled + bundled_exp
* bundled + bundled_exp + local
* local + bundled + bundled_exp
The path for bundled experimental patches is: ${CT_LIB_DIR}/packages/${pkg_dir}/experimental
and patches that are still being reviewed, but not yet applied upstream
may be toggled with ENABLE_EXPERIMENTAL_BUNDLED_PATCHES.
Also fix modelines for editors on bootstrap and scripts/functions, and
fix mix whitespace in scripts/functions.
Closes: #1916
Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
This adds backports of a couple of patches necessary to support macOS
arm64 hosts for gcc. It was ported from
https://github.com/richfelker/musl-cross-make/pull/129 with some small
fixups to make the patches apply cleanly.
Signed-off-by: Steven Fackler <sfackler@gmail.com>
We don't have a x86_64-pc-linux-gnu sample but we do have a
x86_64-unknown-linux-gnu. Rename the picolibc canadian config
accordingly.
Fixes: #1909
Signed-off-by: Chris Packham <judge.packham@gmail.com>
The arm-picolibc-eabi build runs out of space on the macos makers
because of all the multilib permutations. For now disable the
macos,arm-picolibc-eabi combination until we can think of something
better.
Signed-off-by: Chris Packham <judge.packham@gmail.com>
This moves the picolibc configuration values under C-library -> picolibc
so that they will be more easily discovered.
Signed-off-by: Joakim Nohlgård <joakim@nohlgard.se>
Picolibc needs two additional gcc build options so that libstdc++
works correctly. When building picolibc as a companion library, those
are added in do_cc_libstdcxx_picolibc, but when built with picolibc as
the main C libary, those need to be added in the main GCC build.
Signed-off-by: Keith Packard <keithp@keithp.com>
This patch, submitted upstream but not (yet?) accepted, adds a third
parameter to the specs file 'getenv' function that provides a value
for when the environment variable is not set, instead of having gcc
fail.
This seemed like the safest way to provide a mechanism for getting the
installed location of the toolchain from inside a specs file as, when
not installed in the built-in location, gcc already sets the
GCC_EXEC_PREFIX environment variable to a well defined location within
that directory hierarchy, but when installed in the location specified
at compile time, gcc does not. Providing a default value that matches
the compile-time location then allows the specs file to compute paths
relative to the current GCC installation location, whereever it is
installed.
Signed-off-by: Keith Packard <keithp@keithp.com>
There was a typo in the original commit which used "zlib" instead of
"zstd". The checksums remain the same.
Fixes: 4cba2994 ("Add zstd to the companion libs")
Signed-off-by: Chris Packham <judge.packham@gmail.com>
Update some hard coded names to use ${{ matrix.sample }} instead. This
will allow us to upload other artifacts in the future.
Signed-off-by: Chris Packham <judge.packham@gmail.com>
We've been carrying around this patch for ages. It was first added in
commit 42e908c4 ("libc/glibc: workaround for autoconf'ed define of
caddr_t") and ported to glibc-2.13 in commit de6b6733 ("libc/glibc: add
patch to avoid caddr_t redefinition"). It has been ported to every new
version of glibc ever since.
It's not immediately obvious that the original problem still affects
modern glibc versions. If there is a problem it hasn't been reported to
the glibc maintainers in the 12 years since it was first seen. It could
be that ct-ng is unique in the way we support canadian builds or that
there was another fix for the same problem applied upstream sometime in
the last 12 years.
Drop the patch now to stop in being propagated blindly to new glibc
versions. Doing it as a separate commit (as opposed to dropping it in
the previous commit which bumped the version) allows the decision to be
documented and if this turns out to be wrong it can be easily reverted.
Signed-off-by: Chris Packham <judge.packham@gmail.com>
Add zstd to the companion libs witch allows to use lto zstd compression
in a canadian or cross-native enviroment
Signed-off-by: QBos07 <62326551+QBos07@users.noreply.github.com>
Signed-off-by: Quentin Boswank <62326551+QBos07@users.noreply.github.com>
This commit adds support for the following Oracle products, targeting
Oracle Linux 8.7:
Binutils 2.30-117.0.1
GCC 8.5.0-15.0.2
glibc 2.28-211.1.0.1
UEK5/u4 4.14.35-2025.400.8
Sample configuration files are provided for the following triplets:
aarch64-ol8u7-linux-gnu
x86_64-ol8u7-linux-gnu
i686-ol8u7-linux-gnu
Signed-off-by: Cupertino Miranda <cupertino.miranda@oracle.com>
libgccjit is still under development and, despite its name, may also be used for
ahead-of-time compilation.
Documentation can be found on the gcc website:
https://gcc.gnu.org/onlinedocs/jit/internals/index.htmlhttps://gcc.gnu.org/wiki/JIT
With this change it's possible to enable the building of the libgccjit. It's
enabled as a language (with --enable-languages=jit) even if not a language
frontend at all.
The main changes are related to the requirement of having everything host side
built as Position Independent Code (PIC) with --enable-host-shared. GCC has the
needed logic for building its dependencies (mpc, gmp, mpfr, ...) correctly when
built "in-tree", which is not the case with crosstool-ng (see
https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=05048fc29f0)
Signed-off-by: Marc Poulhiès <dkm@kataplop.net>
--enable-e500_double was valid but strange (the correct form is
--enable-e500-double). -Wa,-me500x2 was also misleading, it is
equivalent to Wa,-me500. --enable-e500x2 --with-e500x2 did nothing as
they aren't used by the binutils configure script. Finally passing
-mfloat-gprs=double in CFLAGS is unnecessary because this is the default
when using -mcpu=8548. Correct these in the sample config.
Fixes#1867
Signed-off-by: Chris Packham <judge.packham@gmail.com>
BPF is a virtual machine and associated ISA that resides in the Linux
kernel. Initially intended for user-level packet capture and filtering,
BPF is nowadays generalized to serve as a general-purpose infrastructure
also for non-networking purposes.
Signed-off-by: Cupertino Miranda <cupertino.miranda@oracle.com>