Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755384AbcKKKfF (ORCPT ); Fri, 11 Nov 2016 05:35:05 -0500 Received: from b.ns.miles-group.at ([95.130.255.144]:44723 "EHLO radon.swed.at" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754518AbcKKKfD (ORCPT ); Fri, 11 Nov 2016 05:35:03 -0500 Subject: Re: [PATCH] um: Fix compile failure due to current_text_address() definition To: Keno Fischer , linux-kernel@vger.kernel.org References: <20161110015326.GA51351@juliacomputing.com> Cc: jdike@addtoit.com, user-mode-linux-devel@lists.sourceforge.net, Sebastian Andrzej Siewior From: Richard Weinberger Message-ID: <81f0fb21-e336-ed4c-4346-5f54836f5d8c@nod.at> Date: Fri, 11 Nov 2016 11:34:59 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2 MIME-Version: 1.0 In-Reply-To: <20161110015326.GA51351@juliacomputing.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1946 Lines: 51 Keno, On 10.11.2016 02:53, Keno Fischer wrote: > Fixes the following link error: > ``` > /usr/bin/ld: net/built-in.o: relocation R_X86_64_32S against `.text' > can not be used when making a shared object; recompile with -fPIC > ``` How and where do you trigger this? I had a chat with Sebastian and we are not 100% sure what is going on. On my freshly installed Debian sid with gcc version 6.2.0 20161109 (Debian 6.2.0-13) UML builds fine except when I set CONFIG_STATIC_LINK=y But then I'm facing a slightly different error: CC init/version.o LD init/built-in.o /usr/bin/ld: init/built-in.o: relocation R_X86_64_PLTOFF64 against STT_GNU_IFUNC symbol `memmove' isn't supported /usr/bin/ld: final link failed: Bad value collect2: error: ld returned 1 exit status Your patch also does not cure this. I'll investigate later into that. > This is the same definition used on some other architectures. > > Signed-off-by: Keno Fischer > --- > I am not sure this is the correct patch in the context of uml. I believe this > should give the runtime ip, which may be different between runs. It may be > better to use the offset in .text (e.g. by using `pc-__text_start`), which > should be consistent. > > arch/x86/um/asm/processor_64.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/x86/um/asm/processor_64.h b/arch/x86/um/asm/processor_64.h > index c3be852..6ca3304 100644 > --- a/arch/x86/um/asm/processor_64.h > +++ b/arch/x86/um/asm/processor_64.h > @@ -32,7 +32,7 @@ static inline void arch_copy_thread(struct arch_thread *from, > } > > #define current_text_addr() \ > - ({ void *pc; __asm__("movq $1f,%0\n1:":"=g" (pc)); pc; }) > + ({ __label__ _l; _l: &&_l; }) > > #define current_sp() ({ void *sp; __asm__("movq %%rsp, %0" : "=r" (sp) : ); sp; }) > #define current_bp() ({ unsigned long bp; __asm__("movq %%rbp, %0" : "=r" (bp) : ); bp; }) Thanks, //richard