|
@@ -125,8 +125,7 @@ extern struct trace_event_functions enter_syscall_print_funcs;
|
|
extern struct trace_event_functions exit_syscall_print_funcs;
|
|
extern struct trace_event_functions exit_syscall_print_funcs;
|
|
|
|
|
|
#define SYSCALL_TRACE_ENTER_EVENT(sname) \
|
|
#define SYSCALL_TRACE_ENTER_EVENT(sname) \
|
|
- static struct syscall_metadata \
|
|
|
|
- __attribute__((__aligned__(4))) __syscall_meta_##sname; \
|
|
|
|
|
|
+ static struct syscall_metadata __syscall_meta_##sname; \
|
|
static struct ftrace_event_call __used \
|
|
static struct ftrace_event_call __used \
|
|
event_enter_##sname = { \
|
|
event_enter_##sname = { \
|
|
.name = "sys_enter"#sname, \
|
|
.name = "sys_enter"#sname, \
|
|
@@ -140,8 +139,7 @@ extern struct trace_event_functions exit_syscall_print_funcs;
|
|
__TRACE_EVENT_FLAGS(enter_##sname, TRACE_EVENT_FL_CAP_ANY)
|
|
__TRACE_EVENT_FLAGS(enter_##sname, TRACE_EVENT_FL_CAP_ANY)
|
|
|
|
|
|
#define SYSCALL_TRACE_EXIT_EVENT(sname) \
|
|
#define SYSCALL_TRACE_EXIT_EVENT(sname) \
|
|
- static struct syscall_metadata \
|
|
|
|
- __attribute__((__aligned__(4))) __syscall_meta_##sname; \
|
|
|
|
|
|
+ static struct syscall_metadata __syscall_meta_##sname; \
|
|
static struct ftrace_event_call __used \
|
|
static struct ftrace_event_call __used \
|
|
event_exit_##sname = { \
|
|
event_exit_##sname = { \
|
|
.name = "sys_exit"#sname, \
|
|
.name = "sys_exit"#sname, \
|
|
@@ -158,8 +156,6 @@ extern struct trace_event_functions exit_syscall_print_funcs;
|
|
SYSCALL_TRACE_ENTER_EVENT(sname); \
|
|
SYSCALL_TRACE_ENTER_EVENT(sname); \
|
|
SYSCALL_TRACE_EXIT_EVENT(sname); \
|
|
SYSCALL_TRACE_EXIT_EVENT(sname); \
|
|
static struct syscall_metadata __used \
|
|
static struct syscall_metadata __used \
|
|
- __attribute__((__aligned__(4))) \
|
|
|
|
- __attribute__((section("__syscalls_metadata"))) \
|
|
|
|
__syscall_meta_##sname = { \
|
|
__syscall_meta_##sname = { \
|
|
.name = "sys"#sname, \
|
|
.name = "sys"#sname, \
|
|
.nb_args = nb, \
|
|
.nb_args = nb, \
|
|
@@ -168,14 +164,15 @@ extern struct trace_event_functions exit_syscall_print_funcs;
|
|
.enter_event = &event_enter_##sname, \
|
|
.enter_event = &event_enter_##sname, \
|
|
.exit_event = &event_exit_##sname, \
|
|
.exit_event = &event_exit_##sname, \
|
|
.enter_fields = LIST_HEAD_INIT(__syscall_meta_##sname.enter_fields), \
|
|
.enter_fields = LIST_HEAD_INIT(__syscall_meta_##sname.enter_fields), \
|
|
- };
|
|
|
|
|
|
+ }; \
|
|
|
|
+ static struct syscall_metadata __used \
|
|
|
|
+ __attribute__((section("__syscalls_metadata"))) \
|
|
|
|
+ *__p_syscall_meta_##sname = &__syscall_meta_##sname;
|
|
|
|
|
|
#define SYSCALL_DEFINE0(sname) \
|
|
#define SYSCALL_DEFINE0(sname) \
|
|
SYSCALL_TRACE_ENTER_EVENT(_##sname); \
|
|
SYSCALL_TRACE_ENTER_EVENT(_##sname); \
|
|
SYSCALL_TRACE_EXIT_EVENT(_##sname); \
|
|
SYSCALL_TRACE_EXIT_EVENT(_##sname); \
|
|
static struct syscall_metadata __used \
|
|
static struct syscall_metadata __used \
|
|
- __attribute__((__aligned__(4))) \
|
|
|
|
- __attribute__((section("__syscalls_metadata"))) \
|
|
|
|
__syscall_meta__##sname = { \
|
|
__syscall_meta__##sname = { \
|
|
.name = "sys_"#sname, \
|
|
.name = "sys_"#sname, \
|
|
.nb_args = 0, \
|
|
.nb_args = 0, \
|
|
@@ -183,6 +180,9 @@ extern struct trace_event_functions exit_syscall_print_funcs;
|
|
.exit_event = &event_exit__##sname, \
|
|
.exit_event = &event_exit__##sname, \
|
|
.enter_fields = LIST_HEAD_INIT(__syscall_meta__##sname.enter_fields), \
|
|
.enter_fields = LIST_HEAD_INIT(__syscall_meta__##sname.enter_fields), \
|
|
}; \
|
|
}; \
|
|
|
|
+ static struct syscall_metadata __used \
|
|
|
|
+ __attribute__((section("__syscalls_metadata"))) \
|
|
|
|
+ *__p_syscall_meta_##sname = &__syscall_meta__##sname; \
|
|
asmlinkage long sys_##sname(void)
|
|
asmlinkage long sys_##sname(void)
|
|
#else
|
|
#else
|
|
#define SYSCALL_DEFINE0(name) asmlinkage long sys_##name(void)
|
|
#define SYSCALL_DEFINE0(name) asmlinkage long sys_##name(void)
|