gen-syscall-events is failing to build on arm64 because of the following
error:
```
gen-syscall-events.c: In function ‘main’:
gen-syscall-events.c:35:15: error: ‘SYS_open’ undeclared (first use in
this function)
fd = syscall(SYS_open, "/proc/cpuinfo", O_RDONLY);
```
SYS_open is not available using the syscall(2) arm64 glibc function.
SYS_openat should be used instead.
Change test app and test cases to use SYS_openat.
Other projects have encountered the same issue:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=758521
https://bugs.launchpad.net/linaro-aarch64/+bug/
1100782
Signed-off-by: Francis Deslauriers <francis.deslauriers@efficios.com>
create_lttng_session_ok $SESSION_NAME $TRACE_PATH
create_lttng_session_ok $SESSION_NAME $TRACE_PATH
- lttng_enable_kernel_syscall_ok $SESSION_NAME "open"
+ lttng_enable_kernel_syscall_ok $SESSION_NAME "openat"
trace_testapp
# ensure all events are in the trace.
trace_testapp
# ensure all events are in the trace.
- validate_trace_exp "-e syscall_entry_open: -e compat_syscall_entry_open:" $TRACE_PATH
- validate_trace_exp "-e syscall_exit_open: -e compat_syscall_exit_open:" $TRACE_PATH
+ validate_trace_exp "-e syscall_entry_openat: -e compat_syscall_entry_openat:" $TRACE_PATH
+ validate_trace_exp "-e syscall_exit_openat: -e compat_syscall_exit_openat:" $TRACE_PATH
# ensure trace only contains those.
# ensure trace only contains those.
- validate_trace_only_exp "-e syscall_entry_open: -e compat_syscall_entry_open: -e syscall_exit_open: -e compat_syscall_exit_open:" $TRACE_PATH
+ validate_trace_only_exp "-e syscall_entry_openat: -e compat_syscall_entry_openat: -e syscall_exit_openat: -e compat_syscall_exit_openat:" $TRACE_PATH
destroy_lttng_session_ok $SESSION_NAME
destroy_lttng_session_ok $SESSION_NAME
create_lttng_session_ok $SESSION_NAME $TRACE_PATH
create_lttng_session_ok $SESSION_NAME $TRACE_PATH
- lttng_enable_kernel_syscall_ok $SESSION_NAME "open"
+ lttng_enable_kernel_syscall_ok $SESSION_NAME "openat"
lttng_enable_kernel_syscall_ok $SESSION_NAME "close"
trace_testapp
# ensure all events are in the trace.
lttng_enable_kernel_syscall_ok $SESSION_NAME "close"
trace_testapp
# ensure all events are in the trace.
- validate_trace_exp "-e syscall_entry_open: -e compat_syscall_entry_open:" $TRACE_PATH
- validate_trace_exp "-e syscall_exit_open: -e compat_syscall_exit_open:" $TRACE_PATH
+ validate_trace_exp "-e syscall_entry_openat: -e compat_syscall_entry_openat:" $TRACE_PATH
+ validate_trace_exp "-e syscall_exit_openat: -e compat_syscall_exit_openat:" $TRACE_PATH
validate_trace_exp "-e syscall_entry_close: -e compat_syscall_entry_close:" $TRACE_PATH
validate_trace_exp "-e syscall_exit_close: -e compat_syscall_exit_close:" $TRACE_PATH
# ensure trace only contains those.
validate_trace_exp "-e syscall_entry_close: -e compat_syscall_entry_close:" $TRACE_PATH
validate_trace_exp "-e syscall_exit_close: -e compat_syscall_exit_close:" $TRACE_PATH
# ensure trace only contains those.
- validate_trace_only_exp "-e syscall_entry_open: -e compat_syscall_entry_open: -e syscall_exit_open: -e compat_syscall_exit_open: -e syscall_entry_close: -e compat_syscall_entry_close: -e syscall_exit_close: -e compat_syscall_exit_close:" $TRACE_PATH
+ validate_trace_only_exp "-e syscall_entry_openat: -e compat_syscall_entry_openat: -e syscall_exit_openat: -e compat_syscall_exit_openat: -e syscall_entry_close: -e compat_syscall_entry_close: -e syscall_exit_close: -e compat_syscall_exit_close:" $TRACE_PATH
destroy_lttng_session_ok $SESSION_NAME
destroy_lttng_session_ok $SESSION_NAME
trace_testapp
# ensure at least open and close are there.
trace_testapp
# ensure at least open and close are there.
- validate_trace_exp "-e syscall_entry_open: -e compat_syscall_entry_open:" $TRACE_PATH
- validate_trace_exp "-e syscall_exit_open: -e compat_syscall_exit_open:" $TRACE_PATH
+ validate_trace_exp "-e syscall_entry_openat: -e compat_syscall_entry_openat:" $TRACE_PATH
+ validate_trace_exp "-e syscall_exit_openat: -e compat_syscall_exit_openat:" $TRACE_PATH
validate_trace_exp "-e syscall_entry_close: -e compat_syscall_entry_close:" $TRACE_PATH
validate_trace_exp "-e syscall_exit_close: -e compat_syscall_exit_close:" $TRACE_PATH
# trace may contain other syscalls.
validate_trace_exp "-e syscall_entry_close: -e compat_syscall_entry_close:" $TRACE_PATH
validate_trace_exp "-e syscall_exit_close: -e compat_syscall_exit_close:" $TRACE_PATH
# trace may contain other syscalls.
lttng_enable_kernel_syscall_ok $SESSION_NAME
# try to disable open system call: fails because enabler semantic of
# "all syscalls" is not "the open" system call.
lttng_enable_kernel_syscall_ok $SESSION_NAME
# try to disable open system call: fails because enabler semantic of
# "all syscalls" is not "the open" system call.
- lttng_disable_kernel_syscall_fail $SESSION_NAME "open"
+ lttng_disable_kernel_syscall_fail $SESSION_NAME "openat"
- # ensure "open" syscall is there.
- validate_trace_exp "-e syscall_entry_open: -e compat_syscall_entry_open: -e syscall_exit_open: -e compat_syscall_exit_open:" $TRACE_PATH
+ # ensure "openat" syscall is there.
+ validate_trace_exp "-e syscall_entry_openat: -e compat_syscall_entry_openat: -e syscall_exit_openat: -e compat_syscall_exit_openat:" $TRACE_PATH
# ensure "close" syscall is there.
validate_trace_exp "-e syscall_entry_close: -e compat_syscall_entry_close:" $TRACE_PATH
# ensure "close" syscall is there.
validate_trace_exp "-e syscall_entry_close: -e compat_syscall_entry_close:" $TRACE_PATH
lttng_enable_kernel_syscall_ok $SESSION_NAME
# try to disable open and close system calls: fails because enabler
# semantic of "all syscalls" is not "the open" system call.
lttng_enable_kernel_syscall_ok $SESSION_NAME
# try to disable open and close system calls: fails because enabler
# semantic of "all syscalls" is not "the open" system call.
- lttng_disable_kernel_syscall_fail $SESSION_NAME "open"
+ lttng_disable_kernel_syscall_fail $SESSION_NAME "openat"
lttng_disable_kernel_syscall_fail $SESSION_NAME "close"
trace_testapp
lttng_disable_kernel_syscall_fail $SESSION_NAME "close"
trace_testapp
- # ensure "open" syscall is there.
- validate_trace_exp "-e syscall_entry_open: -e compat_syscall_entry_open: -e syscall_exit_open: -e compat_syscall_exit_open:" $TRACE_PATH
+ # ensure "openat" syscall is there.
+ validate_trace_exp "-e syscall_entry_openat: -e compat_syscall_entry_openat: -e syscall_exit_openat: -e compat_syscall_exit_openat:" $TRACE_PATH
# ensure "close" syscall is there.
validate_trace_exp "-e syscall_entry_close: -e compat_syscall_entry_close:" $TRACE_PATH
# ensure "close" syscall is there.
validate_trace_exp "-e syscall_entry_close: -e compat_syscall_entry_close:" $TRACE_PATH
trace_testapp
# ensure at least open and close are there.
trace_testapp
# ensure at least open and close are there.
- validate_trace_exp "-e syscall_entry_open: -e compat_syscall_entry_open:" $TRACE_PATH
- validate_trace_exp "-e syscall_exit_open: -e compat_syscall_exit_open:" $TRACE_PATH
+ validate_trace_exp "-e syscall_entry_openat: -e compat_syscall_entry_openat:" $TRACE_PATH
+ validate_trace_exp "-e syscall_exit_openat: -e compat_syscall_exit_openat:" $TRACE_PATH
validate_trace_exp "-e syscall_entry_close: -e compat_syscall_entry_close:" $TRACE_PATH
validate_trace_exp "-e syscall_exit_close: -e compat_syscall_exit_close:" $TRACE_PATH
# trace may contain other syscalls.
validate_trace_exp "-e syscall_entry_close: -e compat_syscall_entry_close:" $TRACE_PATH
validate_trace_exp "-e syscall_exit_close: -e compat_syscall_exit_close:" $TRACE_PATH
# trace may contain other syscalls.
create_lttng_session_ok $SESSION_NAME $TRACE_PATH
# enable open system call
create_lttng_session_ok $SESSION_NAME $TRACE_PATH
# enable open system call
- lttng_enable_kernel_syscall_ok $SESSION_NAME "open"
+ lttng_enable_kernel_syscall_ok $SESSION_NAME "openat"
# disable open system call
# disable open system call
- lttng_disable_kernel_syscall_ok $SESSION_NAME "open"
+ lttng_disable_kernel_syscall_ok $SESSION_NAME "openat"
create_lttng_session_ok $SESSION_NAME $TRACE_PATH
# enable open and close system calls
create_lttng_session_ok $SESSION_NAME $TRACE_PATH
# enable open and close system calls
- lttng_enable_kernel_syscall_ok $SESSION_NAME "open"
+ lttng_enable_kernel_syscall_ok $SESSION_NAME "openat"
lttng_enable_kernel_syscall_ok $SESSION_NAME "close"
# disable open and close system calls
lttng_enable_kernel_syscall_ok $SESSION_NAME "close"
# disable open and close system calls
- lttng_disable_kernel_syscall_ok $SESSION_NAME "open"
+ lttng_disable_kernel_syscall_ok $SESSION_NAME "openat"
lttng_disable_kernel_syscall_ok $SESSION_NAME "close"
trace_testapp
lttng_disable_kernel_syscall_ok $SESSION_NAME "close"
trace_testapp
create_lttng_session_ok $SESSION_NAME $TRACE_PATH
# enable open and close system calls
create_lttng_session_ok $SESSION_NAME $TRACE_PATH
# enable open and close system calls
- lttng_enable_kernel_syscall_ok $SESSION_NAME "open"
+ lttng_enable_kernel_syscall_ok $SESSION_NAME "openat"
lttng_enable_kernel_syscall_ok $SESSION_NAME "close"
# disable close system call
lttng_disable_kernel_syscall_ok $SESSION_NAME "close"
lttng_enable_kernel_syscall_ok $SESSION_NAME "close"
# disable close system call
lttng_disable_kernel_syscall_ok $SESSION_NAME "close"
trace_testapp
# ensure open is there.
trace_testapp
# ensure open is there.
- validate_trace_exp "-e syscall_entry_open: -e compat_syscall_entry_open:" $TRACE_PATH
- validate_trace_exp "-e syscall_exit_open: -e compat_syscall_exit_open:" $TRACE_PATH
+ validate_trace_exp "-e syscall_entry_openat: -e compat_syscall_entry_openat:" $TRACE_PATH
+ validate_trace_exp "-e syscall_exit_openat: -e compat_syscall_exit_openat:" $TRACE_PATH
# ensure trace only contains those.
# ensure trace only contains those.
- validate_trace_only_exp "-e syscall_entry_open: -e compat_syscall_entry_open: -e syscall_exit_open: -e compat_syscall_exit_open:" $TRACE_PATH
+ validate_trace_only_exp "-e syscall_entry_openat: -e compat_syscall_entry_openat: -e syscall_exit_openat: -e compat_syscall_exit_openat:" $TRACE_PATH
destroy_lttng_session_ok $SESSION_NAME
destroy_lttng_session_ok $SESSION_NAME
create_lttng_session_ok $SESSION_NAME $TRACE_PATH
create_lttng_session_ok $SESSION_NAME $TRACE_PATH
- lttng_enable_kernel_syscall_ok $SESSION_NAME "open"
+ lttng_enable_kernel_syscall_ok $SESSION_NAME "openat"
# First disable will succeed
# First disable will succeed
- lttng_disable_kernel_syscall_ok $SESSION_NAME "open"
+ lttng_disable_kernel_syscall_ok $SESSION_NAME "openat"
# Second disable succeeds too, due to enabler semantic.
# Second disable succeeds too, due to enabler semantic.
- lttng_disable_kernel_syscall_ok $SESSION_NAME "open"
+ lttng_disable_kernel_syscall_ok $SESSION_NAME "openat"
destroy_lttng_session_ok $SESSION_NAME
destroy_lttng_session_ok $SESSION_NAME
lttng_enable_kernel_syscall_ok $SESSION_NAME
# Enabling an event already enabled succeeds, due to enabler semantic.
lttng_enable_kernel_syscall_ok $SESSION_NAME
# Enabling an event already enabled succeeds, due to enabler semantic.
- lttng_enable_kernel_syscall_ok $SESSION_NAME "open"
+ lttng_enable_kernel_syscall_ok $SESSION_NAME "openat"
destroy_lttng_session_ok $SESSION_NAME
destroy_lttng_session_ok $SESSION_NAME
lttng_enable_kernel_syscall_ok $SESSION_NAME
lttng_disable_kernel_syscall_ok $SESSION_NAME
# Disabling an event already disabled fails.
lttng_enable_kernel_syscall_ok $SESSION_NAME
lttng_disable_kernel_syscall_ok $SESSION_NAME
# Disabling an event already disabled fails.
- lttng_disable_kernel_syscall_fail $SESSION_NAME "open"
+ lttng_disable_kernel_syscall_fail $SESSION_NAME "openat"
destroy_lttng_session_ok $SESSION_NAME
destroy_lttng_session_ok $SESSION_NAME
create_lttng_session_ok $SESSION_NAME $TRACE_PATH
lttng_enable_kernel_channel_ok $SESSION_NAME $CHANNEL_NAME
create_lttng_session_ok $SESSION_NAME $TRACE_PATH
lttng_enable_kernel_channel_ok $SESSION_NAME $CHANNEL_NAME
- lttng_disable_kernel_syscall_fail $SESSION_NAME "open" $CHANNEL_NAME
+ lttng_disable_kernel_syscall_fail $SESSION_NAME "openat" $CHANNEL_NAME
destroy_lttng_session_ok $SESSION_NAME
destroy_lttng_session_ok $SESSION_NAME
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <fcntl.h>
#include <stdio.h>
#include <sys/syscall.h>
#include <fcntl.h>
#include <stdio.h>
#include <sys/syscall.h>
* Start generating syscalls. We use syscall(2) to prevent libc to change
* the underlying syscall. e.g. calling openat(2) instead of open(2).
*/
* Start generating syscalls. We use syscall(2) to prevent libc to change
* the underlying syscall. e.g. calling openat(2) instead of open(2).
*/
- fd = syscall(SYS_open, "/proc/cpuinfo", O_RDONLY);
+ fd = syscall(SYS_openat, AT_FDCWD, "/proc/cpuinfo", O_RDONLY);
if (fd < 0) {
perror("open");
ret = -1;
if (fd < 0) {
perror("open");
ret = -1;