public inbox for gcc-cvs@sourceware.org help / color / mirror / Atom feed
From: Sergei Trofimovich <slyfox@gcc.gnu.org> To: gcc-cvs@gcc.gnu.org Subject: [gcc r14-4878] libgcc: make heap-based trampolines conditional on libc presence Date: Tue, 24 Oct 2023 07:36:04 +0000 (GMT) [thread overview] Message-ID: <20231024073604.CC25C3858C66@sourceware.org> (raw) https://gcc.gnu.org/g:eaf75155f38a51b2d9d49c6c1b1e1639e3d0591a commit r14-4878-geaf75155f38a51b2d9d49c6c1b1e1639e3d0591a Author: Sergei Trofimovich <siarheit@google.com> Date: Mon Oct 23 13:32:55 2023 +0100 libgcc: make heap-based trampolines conditional on libc presence To build `libc` for a target one needs to build `gcc` without `libc` support first. Commit r14-4823-g8abddb187b3348 "libgcc: support heap-based trampolines" added unconditional `libc` dependency and broke libc-less `gcc` builds. An example failure on `x86_64-unknown-linux-gnu`: $ mkdir -p /tmp/empty $ ../gcc/configure \ --disable-multilib \ --without-headers \ --with-newlib \ --enable-languages=c \ --disable-bootstrap \ --disable-gcov \ --disable-threads \ --disable-shared \ --disable-libssp \ --disable-libquadmath \ --disable-libgomp \ --disable-libatomic \ --with-build-sysroot=/tmp/empty $ make ... /tmp/gb/./gcc/xgcc -B/tmp/gb/./gcc/ -B/usr/local/x86_64-pc-linux-gnu/bin/ -B/usr/local/x86_64-pc-linux-gnu/lib/ -isystem /usr/local/x86_64-pc-linux-gnu/include -isystem /usr/local/x86_64-pc-linux-gnu/sys-include --sysroot=/tmp/empty -g -O2 -O2 -g -O2 -DIN_GCC -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fpic -mlong-double-80 -DUSE_ELF_SYMVER -fcf-protection -mshstk -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector -Dinhibit_libc -fpic -mlong-double-80 -DUSE_ELF_SYMVER -fcf-protection -mshstk -I. -I. -I../.././gcc -I/home/slyfox/dev/git/gcc/libgcc -I/home/slyfox/dev/git/gcc/libgcc/. -I/home/slyfox/dev/git/gcc/libgcc/../gcc -I/home/slyfox/dev/git/gcc/libgcc/../include -DHAVE_CC_TLS -DUSE_TLS -o heap-trampoline.o -MT heap-trampoline.o -MD -MP -MF heap-trampoline.dep -c .../gcc/libgcc/config/i386/heap-trampoline.c -fvisibility=hidden -DHIDE_EXPORTS ../gcc/libgcc/config/i386/heap-trampoline.c:3:10: fatal error: unistd.h: No such file or directory 3 | #include <unistd.h> | ^~~~~~~~~~ compilation terminated. make[2]: *** [.../gcc/libgcc/static-object.mk:17: heap-trampoline.o] Error 1 make[2]: Leaving directory '/tmp/gb/x86_64-pc-linux-gnu/libgcc' make[1]: *** [Makefile:13307: all-target-libgcc] Error 2 The change inhibits any heap-based trampoline code. libgcc/ * config/aarch64/heap-trampoline.c: Disable when libc is not present. * config/i386/heap-trampoline.c: Ditto. Diff: --- libgcc/config/aarch64/heap-trampoline.c | 5 +++++ libgcc/config/i386/heap-trampoline.c | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/libgcc/config/aarch64/heap-trampoline.c b/libgcc/config/aarch64/heap-trampoline.c index c8b83681ed7e..f22233987ca5 100644 --- a/libgcc/config/aarch64/heap-trampoline.c +++ b/libgcc/config/aarch64/heap-trampoline.c @@ -1,5 +1,8 @@ /* Copyright The GNU Toolchain Authors. */ +/* libc is required to allocate trampolines. */ +#ifndef inhibit_libc + #include <unistd.h> #include <sys/mman.h> #include <stdint.h> @@ -170,3 +173,5 @@ __builtin_nested_func_ptr_deleted (void) tramp_ctrl_curr = prev; } } + +#endif /* !inhibit_libc */ diff --git a/libgcc/config/i386/heap-trampoline.c b/libgcc/config/i386/heap-trampoline.c index 96e13bf828ea..4b9f43658689 100644 --- a/libgcc/config/i386/heap-trampoline.c +++ b/libgcc/config/i386/heap-trampoline.c @@ -1,5 +1,8 @@ /* Copyright The GNU Toolchain Authors. */ +/* libc is required to allocate trampolines. */ +#ifndef inhibit_libc + #include <unistd.h> #include <sys/mman.h> #include <stdint.h> @@ -170,3 +173,5 @@ __builtin_nested_func_ptr_deleted (void) tramp_ctrl_curr = prev; } } + +#endif /* !inhibit_libc */
reply other threads:[~2023-10-24 7:36 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=20231024073604.CC25C3858C66@sourceware.org \ --to=slyfox@gcc.gnu.org \ --cc=gcc-cvs@gcc.gnu.org \ /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: linkBe 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; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).