Thanks to John Stultz, now I know that this may relate to the new
improvements about IPA-SRA in GCC 10. Refer to [1], which states:
"Inter-procedural optimization improvements: The inter-procedural scalar
replacement of aggregates (IPA-SRA) pass was re-implemented to work at
link-time and can now also remove computing and returning unused return
values."

However, such a change of symbol names negatively impacts the tracing tools
commonly used in kernel debugging. Such as bcc/eBPF, who __hardcoded__
function names (without the .isra.0 suffix) into their scripts.

[1] https://gcc.gnu.org/gcc-10/changes.html

On Fri, Mar 5, 2021 at 11:21 AM Guodong Xu <guodong...@linaro.org> wrote:

> Hi, all
>
> Does anybody know what does '.....isra.0' mean in GCC 10.2 compiled
> objects?
>
> I just noticed this issue when using bcc/eBPF tools. I submitted the
> detail into
> * https://github.com/iovisor/bcc/issues/3293
>
> Simply put, when building a linux kernel with GCC 10.2, the symbol
> 'finish_task_switch' becomes 'finish_task_switch.isra.0' in the object (as
> reported by 'nm')
>
> Because a lot of kernel tracers (such as bcc) use 'finish_task_switch' as
> the probe point, this change in the compilation result can make all result
> such tools fail.
>
> Thanks.
> Best regards,
> Guodong Xu
>
>
_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to