From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1852 invoked by alias); 12 Sep 2018 07:07:47 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Received: (qmail 1842 invoked by uid 89); 12 Sep 2018 07:07:46 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-25.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_LAZY_DOMAIN_SECURITY,KAM_SHORT,UNPARSEABLE_RELAY autolearn=ham version=3.3.2 spammy=Codes X-HELO: smtp2200-217.mail.aliyun.com X-Alimail-AntiSpam:AC=CONTINUE;BC=0.02437672|-1;CH=green;FP=0|0|0|0|0|-1|-1|-1;HT=e02c03305;MF=han_mao@c-sky.com;NM=1;PH=DS;RN=4;RT=4;SR=0;TI=SMTPD_---.CpnQyek_1536736059; Date: Wed, 12 Sep 2018 07:07:00 -0000 From: Mao Han To: "H.J. Lu" Cc: c-sky_gcc_upstream@c-sky.com, gnu-csky@mentor.com, libc-alpha@sourceware.org Subject: Re: [PATCH v4 01/13] C-SKY: ABI related code Message-ID: <20180912070735.GA3771@vmh-VirtualBox> References: <369062ae95df6648125b91354f707911cf8738de.1536720821.git.han_mao@c-sky.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.24 (2015-08-30) X-SW-Source: 2018-09/txt/msg00140.txt.bz2 On Tue, Sep 11, 2018 at 09:15:19PM -0700, H.J. Lu wrote: > On Tue, Sep 11, 2018 at 7:56 PM, Mao Han wrote: > > Codes in this patch contains lots of C-SKY ABI related code. They are > > written accroding to the registers assgnments, relocations, assemblly > > described in C-SKY CPU ABI Standards and C-SKY architercure user guide. > > > > diff --git a/sysdeps/csky/abiv2/crti.S b/sysdeps/csky/abiv2/crti.S > > new file mode 100644 > > index 0000000..4526a9e > > --- /dev/null > > +++ b/sysdeps/csky/abiv2/crti.S > > @@ -0,0 +1,99 @@ > > +/* Special .init and .fini section support for C-SKY ABIV2. > > + Copyright (C) 2018 Free Software Foundation, Inc. > > + This file is part of the GNU C Library. > > + > > + The GNU C Library is free software; you can redistribute it and/or > > + modify it under the terms of the GNU Lesser General Public > > + License as published by the Free Software Foundation; either > > + version 2.1 of the License, or (at your option) any later version. > > + > > + In addition to the permissions in the GNU Lesser General Public > > + License, the Free Software Foundation gives you unlimited > > + permission to link the compiled version of this file with other > > + programs, and to distribute those programs without any restriction > > + coming from the use of this file. (The GNU Lesser General Public > > + License restrictions do apply in other respects; for example, they > > + cover modification of the file, and distribution when not linked > > + into another program.) > > + > > + Note that people who make modified versions of this file are not > > + obligated to grant this special exception for their modified > > + versions; it is their choice whether to do so. The GNU Lesser > > + General Public License gives permission to release a modified > > + version without this exception; this exception also makes it > > + possible to release a modified version which carries forward this > > + exception. > > + > > + The GNU C Library is distributed in the hope that it will be useful, > > + but WITHOUT ANY WARRANTY; without even the implied warranty of > > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > > + Lesser General Public License for more details. > > + > > + You should have received a copy of the GNU Lesser General Public > > + License along with the GNU C Library. If not, see > > + . */ > > + > > +/* crti.S puts a function prologue at the beginning of the .init and > > + .fini sections and defines global symbols for those addresses, so > > + they can be called as functions. The symbols _init and _fini are > > + magic and cause the linker to emit DT_INIT and DT_FINI. */ > > + > > +#include > > +#include > > + > > +#ifndef PREINIT_FUNCTION > > +# define PREINIT_FUNCTION __gmon_start__ > > +#endif > > + > > +#ifndef PREINIT_FUNCTION_WEAK > > +# define PREINIT_FUNCTION_WEAK 1 > > +#endif > > + > > +#if PREINIT_FUNCTION_WEAK > > + weak_extern (PREINIT_FUNCTION) > > +#else > > + .hidden PREINIT_FUNCTION > > +#endif > > + > > + .section .init,"ax",@progbits > > + .align 4 > > + .globl _init > > + .hidden _init > > Does C-SKY really need _init and _fini? > > > -- > H.J. It seems used to call some pre-init function for libc, register transactional memory clone tables and invoke global constructors on C-SKY. Althrough I haven't found any constructors call by _init, I just tend to have _init and _fini as most other arch have these. Han Mao