[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Y4C94LluYLGcf1Wt@hirez.programming.kicks-ass.net>
Date: Fri, 25 Nov 2022 14:06:40 +0100
From: Peter Zijlstra <peterz@...radead.org>
To: Yun Levi <ppbuk5246@...il.com>
Cc: jpoimboe@...nel.org,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: [Question] About UNWIND_HINT_ENTRY on entry_SYSCALL_64.
On Fri, Nov 25, 2022 at 07:41:46PM +0900, Yun Levi wrote:
> Hello.
>
> While I try to see the information related to ORC in vmlinux,
> I'm trying to find out ORC information related to entry_SYSCALL_64's address.
>
> For this, I've tried to take the following step:
> 1. booting the kernel with the "nokaslr" option.
> 2. Getting ORC information by "objdump orc dump vmlinux"
> 3. cat /proc/kallsyms and check the address of "entry_SYSCALL_64"
> - In my kernel, It's address .text + a00000
> 4. Find out related ORC entry gotten in step 2.
>
> But, I couldn't find the reason why entry_SYSCALL_64's orc info isn't
> encoded with end =1.
> Instead, It was encoded as INVALID ORC entry like:
>
> .text+a00000: sp:(und) bp:(und) type:call end:0
>
> IIUC, Some of the code is started with UNWIND_HINT_ENTRY or UNWIND_HINT_EMPTY,
> it should be encoded with end = 1. But it doesn't.
>
> Am I wrong?
$ readelf -Ws defconfig-build/vmlinux.o | grep entry_SYSCALL_64
178466: 0000000000000029 0 NOTYPE GLOBAL DEFAULT 18 entry_SYSCALL_64_safe_stack
188596: 0000000000000000 422 NOTYPE GLOBAL DEFAULT 18 entry_SYSCALL_64
210374: 0000000000000038 0 NOTYPE GLOBAL DEFAULT 18 entry_SYSCALL_64_after_hwframe
$ readelf -WS defconfig-build/vmlinux.o | grep "\[18\]"
[18] .entry.text PROGBITS 0000000000000000 e59f00 001838 00 AX 0 0 64
$ tools/objtool/objtool --dump=orc defconfig-build/vmlinux.o | grep ".entry.text+0"
.entry.text+0: sp:(und) bp:(und) type:call end:1
Powered by blists - more mailing lists