From mboxrd@z Thu Jan 1 00:00:00 1970 From: Steven Rostedt Subject: Re: [RFC v3 20/27] x86/ftrace: Adapt function tracing for PIE support Date: Thu, 5 Oct 2017 12:11:32 -0400 Message-ID: <20171005121132.7c1f4855@gandalf.local.home> References: <20171004212003.28296-1-thgarnie@google.com> <20171004212003.28296-21-thgarnie@google.com> <20171005090633.5a6ce840@gandalf.local.home> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: virtualization-bounces@lists.linux-foundation.org Errors-To: virtualization-bounces@lists.linux-foundation.org To: Thomas Garnier Cc: Nicolas Pitre , Michal Hocko , Radim =?UTF-8?B?S3LEjW3DocWZ?= , linux-doc@vger.kernel.org, Daniel Micay , Len Brown , Peter Zijlstra , Christopher Li , "Jan H . =?UTF-8?B?U2Now7ZuaGVycg==?=" , Alexei Starovoitov , Matthew Wilcox , virtualization@lists.linux-foundation.org, David Howells , Paul Gortmaker , Pavel Machek , "H . Peter Anvin" , Kernel Hardening , Andrey Ryabinin , Christoph Lameter , Thomas Gleixner , Chris Metcalf , the arch/x86 maintainers List-Id: linux-sparse@vger.kernel.org On Thu, 5 Oct 2017 09:01:14 -0700 Thomas Garnier wrote: > On Thu, Oct 5, 2017 at 6:06 AM, Steven Rostedt wrote: > > On Wed, 4 Oct 2017 14:19:56 -0700 > > Thomas Garnier wrote: > > > >> When using -fPIE/PIC with function tracing, the compiler generates a > >> call through the GOT (call *__fentry__@GOTPCREL). This instruction > >> takes 6 bytes instead of 5 on the usual relative call. > >> > >> With this change, function tracing supports 6 bytes on traceable > >> function and can still replace relative calls on the ftrace assembly > >> functions. > >> > >> Position Independent Executable (PIE) support will allow to extended the > >> KASLR randomization range below the -2G memory limit. > > > > Question: This 6 bytes is only the initial call that gcc creates. When > > function tracing is enabled, the calls are back to the normal call to > > the ftrace trampoline? > > That is correct. > Then I think a better idea is to simply nop them out at compile time, and have the code that updates them to nops to know about it. See scripts/recordmcount.c Could we simply add a 5 byte nop followed by a 1 byte nop, and treat it the same as if it didn't exist? This code can be a little complex, and can cause really nasty side effects if things go wrong. I would like to keep from adding more variables to the changes here. -- Steve