linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Indu Bhagat <indu.bhagat@oracle.com>
To: Steven Rostedt <rostedt@goodmis.org>,
	"Jose E. Marchesi" <jemarch@gnu.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
	linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org,
	bpf@vger.kernel.org, x86@kernel.org,
	Masami Hiramatsu <mhiramat@kernel.org>,
	Josh Poimboeuf <jpoimboe@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@kernel.org>, Jiri Olsa <jolsa@kernel.org>,
	Namhyung Kim <namhyung@kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Andrii Nakryiko <andrii@kernel.org>,
	Beau Belgrave <beaub@linux.microsoft.com>,
	Jens Remus <jremus@linux.ibm.com>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Jens Axboe <axboe@kernel.dk>, Florian Weimer <fweimer@redhat.com>,
	Sam James <sam@gentoo.org>,
	Brian Robbins <brianrob@microsoft.com>,
	Elena Zannoni <elena.zannoni@oracle.com>
Subject: Re: [RFC] New codectl(2) system call for sframe registration
Date: Tue, 22 Jul 2025 14:04:37 -0700	[thread overview]
Message-ID: <ce687d36-8f71-4cca-8d4c-5deb0ec908ad@oracle.com> (raw)
In-Reply-To: <20250722151759.616bd551@batman.local.home>

On 7/22/25 12:17 PM, Steven Rostedt wrote:
> On Tue, 22 Jul 2025 20:56:47 +0200
> "Jose E. Marchesi" <jemarch@gnu.org> wrote:
> 
>> I think glibc could "register" loaded SFrame data by just pointing the
>> kernel to the VM address where it got loaded, "you got some SFrame
>> there".  Starting from that address it is then possible to find the
>> referred code locations just by applying the offsets, without needing
>> any additional information nor ELF foobar...
>>
>> Or thats how I understand it.  Indu will undoubtly correct me if I am
>> wrong 8-)
> 
> Maybe I'm wrong, but if you know where the text is loaded (the final
> location it is in memory), it is possible to figure out the relocations
> in the sframe section.
> 

(FWIW, What Jose wrote is correct.)

Some details which may help clear up some confusion here.  The SFrame 
sections are of type SHT_GNU_SFRAME and currently have 
SEC_ALLOC|SEC_LOAD flags set.  This means that they are allocated memory 
and loaded at application start up time.  These sections appear in a 
PT_LOAD segment in the linked binaries.

Then there is a PT_GNU_SFRAME, which is a new program header type for 
SFrame.  PT_GNU_SFRAME by itself does not trigger the loading of SFrame 
sections.  But the .sframe sections being present in the PT_LOAD segment 
does.

>>
>>> In the future, if we wants to compress the sframe section, it will not
>>> even be a loadable ELF section. But the system call can tell the
>>> kernel: "there's a sframe compressed section at this offset/size in
>>> this file" for this text address range and then the kernel will do the
>>> rest.
>>
>> I think supporting compressed SFrame will probably require to do some
>> sort of relocation of the offsets in the uncompressed data, depending on
>> where the uncompressed data will get eventually loaded.
> 
> Assuming that all the text is at a given offset, would that be enough
> to fill in the blanks?
> 

Yes and No.  The offset at which the text is loaded is _one_ part of the 
information to "fill in the blanks".  The other part is what to do with 
that information (text_vma) or how to relocate the SFrame section itself 
a.k.a. the relocation entries.  To know the relocations, one will need 
to get access to the respective relocation section, and hence access to 
the ELF section headers.

> As the text would have already been linked into memory before the
> system call is made. If this is not the case, then we definitely need
> the linker to load the sframe into memory before it does the system
> call, and just give the kernel that address.
> 

  reply	other threads:[~2025-07-22 21:05 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-07-21 15:20 [RFC] New codectl(2) system call for sframe registration Mathieu Desnoyers
2025-07-21 18:53 ` Steven Rostedt
2025-07-21 20:58   ` Mathieu Desnoyers
2025-07-21 21:15     ` Steven Rostedt
2025-07-22 13:51       ` Mathieu Desnoyers
2025-07-22 16:25         ` Steven Rostedt
2025-07-22 18:26           ` Mathieu Desnoyers
2025-07-22 19:11             ` Steven Rostedt
2025-07-22 18:56           ` Jose E. Marchesi
2025-07-22 19:17             ` Steven Rostedt
2025-07-22 21:04               ` Indu Bhagat [this message]
2025-07-22 21:13                 ` Steven Rostedt
2025-07-22 21:57                   ` Indu Bhagat
2025-07-23 15:09                   ` Mathieu Desnoyers
2025-07-23 16:29                     ` Indu Bhagat
2025-07-23 15:07                 ` Mathieu Desnoyers
2025-07-22 18:21 ` Indu Bhagat
2025-07-22 18:49   ` Mathieu Desnoyers
2025-07-23  8:16     ` Indu Bhagat
2025-07-23 14:32       ` Mathieu Desnoyers
2025-07-23  0:26 ` Masami Hiramatsu
2025-07-23 15:15   ` Mathieu Desnoyers

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ce687d36-8f71-4cca-8d4c-5deb0ec908ad@oracle.com \
    --to=indu.bhagat@oracle.com \
    --cc=akpm@linux-foundation.org \
    --cc=andrii@kernel.org \
    --cc=axboe@kernel.dk \
    --cc=beaub@linux.microsoft.com \
    --cc=bpf@vger.kernel.org \
    --cc=brianrob@microsoft.com \
    --cc=elena.zannoni@oracle.com \
    --cc=fweimer@redhat.com \
    --cc=jemarch@gnu.org \
    --cc=jolsa@kernel.org \
    --cc=jpoimboe@kernel.org \
    --cc=jremus@linux.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-trace-kernel@vger.kernel.org \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mhiramat@kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=sam@gentoo.org \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).