On Mon, Nov 04, 2024 at 02:03:28PM -0800, Ian Rogers wrote: > On Mon, Nov 4, 2024 at 1:32 PM Charlie Jenkins <charlie@xxxxxxxxxxxx> wrote: > > > > On Mon, Nov 04, 2024 at 10:13:18PM +0100, Arnd Bergmann wrote: > > > On Mon, Nov 4, 2024, at 22:06, Charlie Jenkins wrote: > > > > Standardize the generation of syscall headers around syscall tables. > > > > Previously each architecture independently selected how syscall headers > > > > would be generated, or would not define a way and fallback onto > > > > libaudit. Convert all architectures to use a standard syscall header > > > > generation script and allow each architecture to override the syscall > > > > table to use if they do not use the generic table. > > > > > > > > As a result of these changes, no architecture will require libaudit, and > > > > so the fallback case of using libaudit is removed by this series. > > > > > > > > Testing: > > > > > > > > I have tested that the syscall mappings of id to name generation works > > > > as expected for every architecture, but I have only validated that perf > > > > trace compiles and runs as expected on riscv, arm64, and x86_64. > > > > > > > > Signed-off-by: Charlie Jenkins <charlie@xxxxxxxxxxxx> > > > > > > Thanks for doing this, I had plans to do this myself, but hadn't > > > completed that bit so far. I'm travelling at the moment, so I'm > > > not sure I have time to look at it in enough detail this week. > > > > > > One problem I ran into doing this previously was the incompatible > > > format of the tables for x86 and s390, which have conflicting > > > interpretations of what the '-' character means. It's possible > > > that this is only really relevant for the in-kernel table, > > > not the version in tools. > > > > > > > I don't think that is an issue for this usecase because the only > > information that is taken from the syscall table is the number and the > > name of the syscall. '-' doesn't appear in either of these columns! > > This is cool stuff. An area that may not be immediately apparent for > improvement is that the x86-64 build only has access to the 64-bit > syscall table. Perhaps all the syscall tables should always be built > and then at runtime the architecture of the perf.data file, etc. used > to choose the appropriate one. The cleanup to add an ELF host #define > could help with this: > https://lore.kernel.org/linux-perf-users/20241017002520.59124-1-irogers@xxxxxxxxxx/ Oh that's a great idea! I think these changes will make it more seamless to make that a reality. > > Ultimately I'd like to see less arch code as it inherently makes cross > platform worker harder. That doesn't impact this work which I'm happy > to review. Yeah I agree. Reducing arch code was the motivation for this change. There was the issue a couple weeks ago that caused all architectures that used libaudit to break from commit 7a2fb5619cc1fb53 ("perf trace: Fix iteration of syscall ids in syscalltbl->entries"), so this change will eliminate that source of difference between architectures. - Charlie > > Thanks, > Ian