From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sam Ravnborg Subject: Re: [RFC -next] linux/linkage.h: fix symbol prefix handling Date: Wed, 13 Mar 2013 19:15:38 +0100 Message-ID: <20130313181538.GA20097@merkur.ravnborg.org> References: <1362656642-2693-1-git-send-email-james.hogan@imgtec.com> <87sj46wyf2.fsf@rustcorp.com.au> <5139AC39.90805@imgtec.com> <874ngiwije.fsf@rustcorp.com.au> <20130311230731.0c610d86569d09f6e23b8e61@canb.auug.org.au> <87ppz5usts.fsf@rustcorp.com.au> <20130312233300.9d86d47bb5369923ad520a21@canb.auug.org.au> <87ehfkuq27.fsf@rustcorp.com.au> <20130313063157.GB19681@merkur.ravnborg.org> <514044FD.2040502@imgtec.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: <514044FD.2040502@imgtec.com> Sender: linux-kbuild-owner@vger.kernel.org To: James Hogan Cc: Rusty Russell , Stephen Rothwell , Al Viro , Michal Marek , Andrew Morton , Guenter Roeck , Jean Delvare , linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org, Mike Frysinger , uclinux-dist-devel@blackfin.uclinux.org, linux-next@vger.kernel.org List-Id: linux-next.vger.kernel.org On Wed, Mar 13, 2013 at 09:21:01AM +0000, James Hogan wrote: > Hi Sam, > > On 13/03/13 06:31, Sam Ravnborg wrote: > >> /* Some toolchains use a `_' prefix for all user symbols. */ > >> -#ifdef CONFIG_SYMBOL_PREFIX > >> -#define MODULE_SYMBOL_PREFIX CONFIG_SYMBOL_PREFIX > >> +#ifdef CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX > >> +#define __VMLINUX_SYMBOL(x) _##x > >> +#define __VMLINUX_SYMBOL_STR(x) "_" #x > >> +#define VMLINUX_SYMBOL_PREFIX_STR "_" > >> #else > >> -#define MODULE_SYMBOL_PREFIX "" > >> +#define __VMLINUX_SYMBOL(x) x > >> +#define __VMLINUX_SYMBOL_STR(x) #x > >> +#define VMLINUX_SYMBOL_PREFIX_STR "" > >> #endif > > > > We know the prefix is an underscore. No benefits from defining > > VMLINUX_SYMBOL_PREFIX_STR. > > scripts/modpost.c uses the actual prefix string though: > > > if (memcmp(symname, MODULE_SYMBOL_PREFIX, > > strlen(MODULE_SYMBOL_PREFIX)) == 0) { > > mod->unres = > > alloc_symbol(symname + > > strlen(MODULE_SYMBOL_PREFIX), > > ELF_ST_BIND(sym->st_info) == STB_WEAK, > > mod->unres); > Allowing ourself to know this is "_" then we could make the above code look something like: if (have_symbol_prefix_underscore) { if (symname[0] == '_') { mod->unres = ... But I do not feel strong about this part. It is much more important to clean up so we use the same definition all over the kernel. Sam