lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Y38+NGjF1tZNHkwr@leoy-yangtze.lan>
Date:   Thu, 24 Nov 2022 17:50:23 +0800
From:   Leo Yan <leo.yan@...aro.org>
To:     Ajay Kaher <akaher@...are.com>
Cc:     peterz@...radead.org, mingo@...hat.com, acme@...nel.org,
        mark.rutland@....com, alexander.shishkin@...ux.intel.com,
        jolsa@...nel.org, namhyung@...nel.org, rostedt@...dmis.org,
        linux-perf-users@...r.kernel.org, linux-kernel@...r.kernel.org,
        srivatsab@...are.com, srivatsa@...il.mit.edu, amakhalov@...are.com,
        vsirnapalli@...are.com
Subject: Re: [PATCH] perf symbol: correction while adjusting symbol

Hi Ajay,

On Wed, Nov 23, 2022 at 03:48:16PM +0530, Ajay Kaher wrote:
> perf doesn't provide proper symbol information for specially crafted
> .debug files.
> 
> Sometimes .debug file may not have similar program header as runtime
> ELF file. For example if we generate .debug file using objcopy
> --only-keep-debug resulting file will not contain .text, .data and
> other runtime sections. That means corresponding program headers will
> have zero FileSiz and modified Offset.
> 
> Example: program header of text section of libxxx.so:
> 
> Type           Offset             VirtAddr           PhysAddr
>                FileSiz            MemSiz              Flags  Align
> LOAD        0x00000000003d3000 0x00000000003d3000 0x00000000003d3000
>             0x000000000055ae80 0x000000000055ae80  R E    0x1000
> 
> Same program header after executing:
> objcopy --only-keep-debug libxxx.so libxxx.so.debug
> 
> LOAD        0x0000000000001000 0x00000000003d3000 0x00000000003d3000
>             0x0000000000000000 0x000000000055ae80  R E    0x1000
> 
> Offset and FileSiz have been changed. 
> 
> Following formula will not provide correct value, if program header
> taken from .debug file (syms_ss):
> 
>     sym.st_value -= phdr.p_vaddr - phdr.p_offset;
> 
> Correct program header information is located inside runtime ELF
> file (runtime_ss).
> 
> Fixes: 2d86612aacb7 ("perf symbol: Correct address for bss symbols")
> Signed-off-by: Ajay Kaher <akaher@...are.com>


Just curious how you can produce this issue?  IIUC, the runtime symbol
files are copied into .debug folder and they can be found by perf tool
by matching build ID.  Seems to me, you manully use
"objcopy --only-keep-debug" command to strip runtime info from elf files
under .debug folder.  Do I understand correctly?

Though I have above question, this patch itself looks good to me,
thanks for the fixing!

Reviewed-by: Leo Yan <leo.yan@...aro.org>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ