This commit adds a new config that can be used to specify the target
CXXFLAGS specific to the libstdc++ newlib-nano variant.
By default, this config is set to specify the `-fno-exceptions` option,
which disables C++ exception handling support and greatly reduces the
compiled binary size.
Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
This commit adds two additional arguments (`cxxflags_for_target` and
`extra_cxxflags_for_target`) for the gcc backend build function that
can be used to specify custom target CXXFLAGS.
By default, the target CXXFLAGS is set to the target CFLAGS. When
`cxxflags_for_target` is specified however, it overrides that behaviour
and allows setting different target CXXFLAGS from the target CFLAGS.
The `extra_cxxflags_for_target` argument can be used to specify the
extra target CXXFLAGS to be appended to the target CXXFLAGS. This is
useful when it is necessary to append CXX-specific flags to the
existing CFLAGS to be used as the target CXXFLAGS.
A useful application of this is building full and nano versions of
libstdc++ with different target CXXFLAGS as necessitated by
`nano.specs`.
Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
The gcc target libraries (e.g. libstdc++) are currently built without
any optimisation flag when `CT_CC_GCC_ENABLE_TARGET_OPTSPACE` is not
enabled and default to `-O0` unless user explicitly specifies an
optimisation flag.
This commit updates the gcc build script to assume `-O2` for building
target libraries unless user provides a different optimisation flag.
Note also that this is the default behaviour for gcc when
C[XX]FLAGS_FOR_TARGET is not overridden.
Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
Update linux package and add new version:
Add 5.12.4
From 5.11.6 to 5.11.21
From 5.4.105 to 5.4.119
From 4.20.9 to 4.20.17
From 4.19.180 to 4.19.190
From 4.9.261 to 4.9.268
From 4.4.261 to 4.4.268
From 3.18.134 to 3.18.139
From 3.16.82 to 3.16.85
Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
strace.io currently has an expired certificate. The same files are
available via github so add that as a mirror.
Signed-off-by: Chris Packham <judge.packham@gmail.com>
Make --enable-obsolete-rpc conditional on !GLIBC_2_32_or_later as
it's been removed from that version on.
Fixes: #1505
Fixes: commit 1ee44ab5 ("glibc: --enable-obsolete-rpc has been removed as of 2.32")
Signed-off-by: Chris Packham <judge.packham@gmail.com>
Alpha is a 64-bit only arch. The menu options only allowed 32 bitness to
be selected. This was harmless but confusing, update the config to
specify 64-bit only.
Fixes: #1506
Signed-off-by: Chris Packham <judge.packham@gmail.com>
Annotated git tags are git objects with their own ID.
They contain the commit ID where they point to.
When downloading from annotated tags, we currently get the following warning:
"Revision being fetched changed to ${new_unique_id};"
The old unique_id is the ID of the annotated tag and the new unique_id
is the commit it points to.
Let's resolve this by first assuming to have an annotated tag and let
git ls-remote dereference it. If that fails (e.g. if it can't be
dereferenced because it is not an annotated tag), then let's proceed as
before and don't do any dereferencing.
Signed-off-by: Christoph Muellner <cmuellner@linux.com>
GCC11 now have -std=c++17 by default and c++17 does not allow dynamic
exception specifications.
Signed-off-by: Nik Konyuchenko <spaun2002mobile@gmail.com>
GCC11 somehow has different set of multilibs on SH arch than what GCC10 had.
In particular:
$ gcc10 -print-multi-lib | sed -r -e 's/@/ -/g;'
.;
mb; -mb
m2; -m2
m2e; -m2e
m4; -m4
m4-single; -m4-single
m4-single-only; -m4-single-only
mb/m2; -mb -m2
mb/m2e; -mb -m2e
mb/m4; -mb -m4
mb/m4-single; -mb -m4-single
mb/m4-single-only; -mb -m4-single-only
mb/m2a; -mb -m2a
mb/m2a-single; -mb -m2a-single
$ gcc11 -print-multi-lib | sed -r -e 's/@/ -/g;'
.;
mb; -mb
m2; -m2
m2e; -m2e
m4; -m4
m4-single; -m4-single
m4-single-only; -m4-single-only
mb/m1; -mb -m1
mb/m2; -mb -m2
mb/m2e; -mb -m2e
mb/m4; -mb -m4
mb/m4-single; -mb -m4-single
mb/m4-single-only; -mb -m4-single-only
mb/m2a; -mb -m2a
mb/m2a-single; -mb -m2a-single
mb/m1 fails to build libgcc as libgcc uses opcodes that were not
available in SH-1: libgcc/config/sh/lib1funcs.S uses 'bt/s' and 'dt'
instructions that, according to https://antime.kapsi.fi/sega/files/h12p0.pdf become available in the SH-2 only.
So I removed mb/m1 from the multilibs fog GCC11 and SH arch.
Another option would be to try not to build libgcc for this combination
of the gcc version and archichecture, but I thought this fix would be
more robust.
Signed-off-by: Nik Konyuchenko <spaun2002mobile@gmail.com>
This change replicates what GLIBC 2.23 has in the string/rawmemchr.c:
// #if __GNUC_PREREQ (11, 0)
// /* Likewise GCC 11, with a different warning option. */
// DIAG_IGNORE_NEEDS_COMMENT (11, "-Wstringop-overread");
// #endif
With -Werror multiple platforms failing on the string/rawmemchr.c:40 line.
Signed-off-by: Nik Konyuchenko <spaun2002mobile@gmail.com>
In currently generated top-level "nano.specs" we resolve
paths during toolchain building and then use those pre-defined
full paths once the toolchain got built.
That's OK until the toolchain is used right were it was built,
otherwise paths used in the top-level "nano.specs" become
irrelevant and linker fails to find "nano" libs reverting to
non-"nano" libs in the default location.
See https://github.com/crosstool-ng/crosstool-ng/issues/1491.
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
Add an option that will install a copy of newlib-nano lib*.a file in
the target dir but renamed with a nano.a suffix (eg: libc_nano.a) as
some default nano.spec files from newlib expect this setup.
Additionally the newlib-nano version of newlib.h will get copied to
include/newlib-nano/newlib.h.
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
Some really old GDB releases did have gdbserver's configure
script w/o execution permissions, so there was a need in the fix.
As per Yann most likely it could have been true for GDB versions in
between v5.3 & 6.6. Moreover it could have been fixed on re-release
of GDB tarballs done in 2011, see [1].
And given we no longer support such old GDB versions in CT-NG
(as of today we have 6.8 - 9.2, moreover it's not clear which of
6.8-7.x versions are still being actively used) we'll revert that old hack
for now in a hope that it won't hurt anybody.
Though if somebody sees that problem again
we'll be able to revert this again ;)
[1] https://sourceware.org/legacy-ml/gdb/2011-09/msg00002.html
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
Newer versions of GCC complain:
plt.c: In function 'arch_elf_add_plt_entry':
plt.c:359:3: error: '%s' directive argument is null [-Werror=format-overflow=]
359 | fprintf(stderr, "%s: failed %s(%#llx): %sn", __func__,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
360 | name, addr, strerror(errno));
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
add a patch to avoid this error.
Signed-off-by: Chris Packham <judge.packham@gmail.com>