From patchwork Sun Feb 5 07:10:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Keith Packard X-Patchwork-Id: 52872 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp1668503wrn; Sat, 4 Feb 2023 23:12:46 -0800 (PST) X-Google-Smtp-Source: AK7set8rtnN7p2MsJuXC2rxN9NlBldwy6nyq8l9wn3sXK+cr0aTI446jmpZQAXmqDkK0puMdiXNd X-Received: by 2002:a50:ab59:0:b0:4a2:71eb:b1e4 with SMTP id t25-20020a50ab59000000b004a271ebb1e4mr16621119edc.31.1675581165921; Sat, 04 Feb 2023 23:12:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675581165; cv=none; d=google.com; s=arc-20160816; b=gejM7FhTloPdpXxD4L25TYWkLJwO2V+y9XgoLK7WSTvL4p8wBOyWrUT2/eThma9IVc A2CT2HbuVRhj2yPlBxjnP2tWM6H1+uhSazhh33mdMYsHF+mp7an4DaZ494UiNdhwn80q vHhsD18qFGuv7asqyAy1akraIBhkpC2S6SXqzHh6r5S0l9l+RSA4+mOp3WD8i/yDoJ84 PGF58VSFwNsHIpSt+DE3tJ1WeFiCgbwDuMqP8oY1dWK4PInVyfi9lcm9MKNTKsBSogqN Do4wkUi/xgk8Lg6SgNwyhjzUJVfrpQ9/zOcgRBfrQq8DJdcSREp5RUN/Kh0DkC5QlQN4 5pZg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:from:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:dmarc-filter:delivered-to :dkim-signature:dkim-filter; bh=hTPY9KfOYVoCLYO69+9xdVXKzixQ5FgCYskEjKznk5Y=; b=STzL/Gpu6sfeACOjEs/s8WmegIylDLWJS3zCg+bHI9MPPRLzUv17hg/TwIQpwOm6p4 9VPKtI9YwtbOCV0ihZFBgpO7yWkKHfYoEyqRHC4Ebjf7+Li13RlllwaWnit16DlkhxJc hNkfToL1KRIpf4D3+8MJLdDSrcBF+3XmyKY58nFK8D7bg6cjw2b4YXvxeXKJnSSb6O+v IYg4kM54q5utl8dhkQYjm91uOUrE8aoRWNXXfhrCOgWyxgjzltsPYih/yME5WEY7ckoj ltxMEP1aMZYS9NryTBYyGHLKbIkNOEtZvHbT/cx5lYP9LlY+KlwdFTIyNIAgUGweBEXF vNKw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=iCG5aP4R; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id v18-20020aa7d812000000b004aa99250f07si5160415edq.398.2023.02.04.23.12.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 04 Feb 2023 23:12:45 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=iCG5aP4R; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id C6894385559A for ; Sun, 5 Feb 2023 07:12:28 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C6894385559A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1675581148; bh=hTPY9KfOYVoCLYO69+9xdVXKzixQ5FgCYskEjKznk5Y=; h=To:Cc:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=iCG5aP4RKrAnNzLE8AoWsqKHRF5juwMxRPXIZp5JaDpFUqhBcV1HHgmSfI7KTOsTw grAliGQRVLNV8Of6eTfE8sD2khtg37W9ybtA7k0xaVSKe89ZuPiqj/AOqO+S9IQw9H xDjfIa/0BDt7M7rAMFwo4XYCHypk3KqabHtr8B+8= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from elaine.keithp.com (home.keithp.com [63.227.221.253]) by sourceware.org (Postfix) with ESMTPS id CD1143858C54 for ; Sun, 5 Feb 2023 07:10:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org CD1143858C54 Received: from localhost (localhost [127.0.0.1]) by elaine.keithp.com (Postfix) with ESMTP id D57883F33F09; Sat, 4 Feb 2023 23:10:45 -0800 (PST) X-Virus-Scanned: Debian amavisd-new at keithp.com Received: from elaine.keithp.com ([127.0.0.1]) by localhost (elaine.keithp.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id iBBFBFeCp84i; Sat, 4 Feb 2023 23:10:43 -0800 (PST) Received: from keithp.com (koto.keithp.com [192.168.11.2]) by elaine.keithp.com (Postfix) with ESMTPSA id EE2CC3F33F08; Sat, 4 Feb 2023 23:10:42 -0800 (PST) Received: by keithp.com (Postfix, from userid 1000) id 9C2D31E600C8; Sat, 4 Feb 2023 23:10:42 -0800 (PST) To: gcc-patches@gcc.gnu.org Cc: Keith Packard , Andrew Pinski , Kito Cheng , Richard Sandiford , Sebastian Huber Subject: [PATCH 1/3] Allow default libc to be specified to configure Date: Sat, 4 Feb 2023 23:10:34 -0800 Message-Id: <0fc05b2872263eec6df97393edb4912dcf6d3cc6.1675579641.git.keithp@keithp.com> X-Mailer: git-send-email 2.39.0 In-Reply-To: References: <20220903060707.1622470-1-keithp@keithp.com> MIME-Version: 1.0 X-Spam-Status: No, score=-10.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Keith Packard via Gcc-patches From: Keith Packard Reply-To: Keith Packard Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1742927749288427462?= X-GMAIL-MSGID: =?utf-8?q?1756974196299671431?= The default C library is normally computed based on the target triplet. However, for embedded systems, it can be useful to leave the triplet alone while changing which C library is used by default. Other C libraries may still be available on the system so the compiler and can be used by specifying suitable include and library paths at build time. If an unknown --with-default-libc= value is provided, emit an error and stop. Signed-off-by: Keith Packard --- gcc/config.gcc | 48 ++++++++++++++++++++++++++++++++++++++++-------- gcc/configure.ac | 4 ++++ 2 files changed, 44 insertions(+), 8 deletions(-) diff --git a/gcc/config.gcc b/gcc/config.gcc index f0958e1c959..0679a76bebb 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -663,6 +663,8 @@ esac # Common C libraries. tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4" +default_libc="" + # 32-bit x86 processors supported by --with-arch=. Each processor # MUST be separated by exactly one space. x86_archs="athlon athlon-4 athlon-fx athlon-mp athlon-tbird \ @@ -869,16 +871,16 @@ case ${target} in esac case $target in *-*-*android*) - tm_defines="$tm_defines DEFAULT_LIBC=LIBC_BIONIC" + default_libc=LIBC_BIONIC ;; *-*-*uclibc* | *-*-uclinuxfdpiceabi) - tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC" + default_libc=LIBC_UCLIBC ;; *-*-*musl*) - tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL" + default_libc=LIBC_MUSL ;; *) - tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC" + default_libc=LIBC_GLIBC ;; esac # Assume that glibc or uClibc or Bionic are being used and so __cxa_atexit @@ -987,7 +989,8 @@ case ${target} in case ${enable_threads} in "" | yes | posix) thread_file='posix' ;; esac - tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC SINGLE_LIBC" + tm_defines="$tm_defines SINGLE_LIBC" + default_libc=LIBC_UCLIBC ;; *-*-rdos*) use_gcc_stdint=wrap @@ -1651,13 +1654,13 @@ csky-*-*) case ${target} in csky-*-linux-gnu*) - tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC" + default_libc=LIBC_GLIBC # Force .init_array support. The configure script cannot always # automatically detect that GAS supports it, yet we require it. gcc_cv_initfini_array=yes ;; csky-*-linux-uclibc*) - tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC" + default_libc=LIBC_UCLIBC default_use_cxa_atexit=no ;; *) @@ -3037,7 +3040,7 @@ powerpc*-wrs-vxworks7r*) tmake_file="${tmake_file} t-linux rs6000/t-linux64 rs6000/t-fprules rs6000/t-ppccomm" tmake_file="${tmake_file} rs6000/t-vxworks" - tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC" + default_libc=LIBC_GLIBC extra_objs="$extra_objs linux.o rs6000-linux.o" ;; powerpc-wrs-vxworks*) @@ -5862,3 +5865,32 @@ i[34567]86-*-* | x86_64-*-*) fi ;; esac + +case "${with_default_libc}" in +glibc) + default_libc=LIBC_GLIBC + ;; +uclibc) + default_libc=LIBC_UCLIBC + ;; +bionic) + default_libc=LIBC_BIONIC + ;; +musl) + default_libc=LIBC_MUSL + ;; +"") + ;; +*) + echo "Unknown libc in --with-default-libc=$with_default_libc" 1>&2 + exit 1 + ;; +esac + +case "$default_libc" in +"") + ;; +*) + tm_defines="$tm_defines DEFAULT_LIBC=$default_libc" + ;; +esac diff --git a/gcc/configure.ac b/gcc/configure.ac index 62bc908b991..c30e3c7ae72 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -2481,6 +2481,10 @@ if { { test x$host != x$target && test "x$with_sysroot" = x ; } || fi AC_SUBST(inhibit_libc) +AC_ARG_WITH(default-libc, + [AS_HELP_STRING([--with-default-libc], + [Use specified default C library])]) + # When building gcc with a cross-compiler, we need to adjust things so # that the generator programs are still built with the native compiler. # Also, we cannot run fixincludes.