On Mon, Feb 10, 2025 at 02:26:47PM -0500, Steven Rostedt wrote:
For the s390 folks. I cross compiled a s390 and looked at the mcount_loc
section, and I have no idea how to implement this for that. I wrote a elf
parser to dump sections based symbols:
https://rostedt.org/code/dump_elf_sym.c
And ran it on the s390 vmlinux:
$ ./dump_elf_sym vmlinux __start_mcount_loc __stop_mcount_loc
1801620: .. .. .. .. .. .. .. .. 00 00 00 00 00 11 70 20 ......... .....p
1801630: 00 00 00 00 00 11 70 90 00 00 00 00 00 11 70 a0 ......p.. .....p.
1801640: 00 00 00 00 00 11 71 10 00 00 00 00 00 11 71 20 ......q.. .....q
1801650: 00 00 00 00 00 11 71 90 00 00 00 00 01 7c 70 00 ......q.. ....|p.
1801660: 00 00 00 00 01 7c 70 20 00 00 00 00 01 7c 70 40 .....|p . ....|p@
1801670: 00 00 00 00 01 7c 70 60 00 00 00 00 01 7c 70 70 .....|p`. ....|pp
1801680: 00 00 00 00 01 7c 70 98 00 00 00 00 01 7c 70 c0 .....|p.. ....|p.
1801690: 00 00 00 00 01 7c 70 d0 00 00 00 00 01 7c 71 68 .....|p.. ....|qh
[..]
It looks like addresses in that section...
Those are the addresses of the mcount locations. After looking at
sorttable.c it really looks like that for s390 we can simply select
HAVE_BUILDTIME_MCOUNT_SORT without any further changes.
I just tested it with different compiler options (fentry vs hotpatch),
including selecting FTRACE_SORT_STARTUP_TEST, and as expected everything
works.
I'm going to give it some more testing in our CI - but if nothing breaks a
patch which selects HAVE_BUILDTIME_MCOUNT_SORT for s390 will go upstream
with the next merge window.