perf trace: Remove union from syscalltbl, all the fields are needed
authorArnaldo Carvalho de Melo <acme@redhat.com>
Thu, 28 May 2020 20:12:16 +0000 (17:12 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 29 May 2020 19:50:26 +0000 (16:50 -0300)
When we moved to a syscalltbl generated from the kernel syscall tables
(arch/..../syscall*.tbl) the idea was to either use it, when having the
generator (e.g. tools/perf/arch/x86/entry/syscalls/syscalltbl.sh), or
falling back to the previous audit-libs based way of mapping syscall ids
to strings and the other way around.

At first we just needed the audit_detect_machine() return to then use it
to the str->id/id->str, or the other fields for the now used by default
in the most well developed arches method of using the syscall table
generator.

The problem is that then the libaudit code fell into disrepair, and
architectures where it is the method used are not working.

Now, with NO_SYSCALL_TABLE=1 being possible to pass on the make command
line we can automate the testing of that method even on x86-64, arm64,
etc.

And doing it I noted that we actually use fields in both entries in the
union, oops, so ditch the union, as we need all those fields at the same
time.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/syscalltbl.h

index 9172613028d00f4ccca3a836f8585dfe7b8fcf9b..a41d2ca9e4aebad55f85ed1c33bd27fad57e245d 100644 (file)
@@ -3,14 +3,12 @@
 #define __PERF_SYSCALLTBL_H
 
 struct syscalltbl {
-       union {
-               int audit_machine;
-               struct {
-                       int max_id;
-                       int nr_entries;
-                       void *entries;
-               } syscalls;
-       };
+       int audit_machine;
+       struct {
+               int max_id;
+               int nr_entries;
+               void *entries;
+       } syscalls;
 };
 
 struct syscalltbl *syscalltbl__new(void);