From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out30-131.freemail.mail.aliyun.com (out30-131.freemail.mail.aliyun.com [115.124.30.131]) by sourceware.org (Postfix) with ESMTPS id A93373858D37 for ; Fri, 22 Apr 2022 06:44:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org A93373858D37 X-Alimail-AntiSpam: AC=PASS; BC=-1|-1; BR=01201311R601e4; CH=green; DM=||false|; DS=||; FP=0|-1|-1|-1|0|-1|-1|-1; HT=e01e04357; MF=rjiejie@linux.alibaba.com; NM=1; PH=DS; RN=1; SR=0; TI=SMTPD_---0VAlZ02p_1650609889; Received: from 30.225.212.47(mailfrom:rjiejie@linux.alibaba.com fp:SMTPD_---0VAlZ02p_1650609889) by smtp.aliyun-inc.com(127.0.0.1); Fri, 22 Apr 2022 14:44:50 +0800 Date: Fri, 22 Apr 2022 14:44:43 +0800 From: Jojo R To: GCC Development Message-ID: References: <7fea0954-2d74-4014-9684-b39598b8ec60@Spark> Subject: Why does GCC(libgcc) pack libgcc_eh.a into libgcc.a in baremetal ? X-Readdle-Message-ID: efc84e36-20a5-41b4-b68d-cb797809cf62@Spark MIME-Version: 1.0 X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00, ENV_AND_HDR_SPF_MATCH, HTML_MESSAGE, KAM_DMARC_STATUS, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, UNPARSEABLE_RELAY, USER_IN_DEF_SPF_WL autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gcc@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Apr 2022 06:44:55 -0000 Hi, Are there some history or reason for this design =3F I think it=E2=80=99s clear & simple to keep coherent logic, namely that=C2=A0there should be libgcc=5Feh.a for exceptions :) Add Makefile.in segment of libgcc as following: =23 Build LIB2ADDEH, LIB2ADDEHSTATIC, and LIB2ADDEHSHARED.=C2=A0=C2=A0If = we don't have =23 libgcc=5Feh.a, only LIB2ADDEH matters.=C2=A0=C2=A0If we do, only LIB2= ADDEHSTATIC and =23 LIB2ADDEHSHARED matter.=C2=A0=C2=A0(Usually all three are identical.)= c=5Fflags=C2=A0:=3D -fexceptions ifeq=C2=A0(=24(enable=5Fshared),yes) libgcc-eh-objects +=3D=C2=A0=24(addsuffix=C2=A0=24(objext),=24(basename=C2= =A0=24(notdir=C2=A0=24(LIB2ADDEHSTATIC)))) libgcc-s-objects +=3D=C2=A0=24(addsuffix=C2=A0=5Fs=24(objext),=24(basenam= e=C2=A0=24(notdir=C2=A0=24(LIB2ADDEHSHARED)))) iter-items :=3D=C2=A0=24(sort=C2=A0=24(LIB2ADDEHSTATIC)=C2=A0=24(LIB2ADDE= HSHARED)) include=C2=A0=24(iterator) else =23 Not shared.=C2=A0=C2=A0LIB2ADDEH are added to libgcc.a. libgcc-objects +=3D=C2=A0=24(addsuffix=C2=A0=24(objext),=24(basename=C2=A0= =24(notdir=C2=A0=24(LIB2ADDEH)))) iter-items :=3D=C2=A0=24(LIB2ADDEH) include=C2=A0=24(iterator) endif =E2=80=94 Jojo