linux - 如何在armv6中找到execve的系统调用号?
问题描述
我正在尝试在 Arch Linux armv6l 架构上编写汇编代码,我需要调用 execve。对于 x86 和 x86-64,系统调用号为 59(64 位)和 11(32 位),可以使用以下方法找到
$ grep execve /usr/include/x86_64-linux-gnu/asm/unistd_64.h
#define __NR_execve 59
#define __NR_execveat 322
$ grep execve /usr/include/x86_64-linux-gnu/asm/unistd_32.h
#define __NR_execve 11
#define __NR_execveat 358
同样有什么方法可以在手臂上做同样的事情吗?如何确定哪一个会产生正确的系统调用号?以下是 Arm 系统的结果
$ find /usr/include -name "unistd.h"
/usr/include/bits/unistd.h
/usr/include/sys/unistd.h
/usr/include/linux/unistd.h
/usr/include/asm/unistd.h
/usr/include/unistd.h
/usr/include/asm-generic/unistd.h
$ grep execve /usr/include/asm/unistd-common.h
#define __NR_execve (__NR_SYSCALL_BASE + 11)
#define __NR_execveat (__NR_SYSCALL_BASE + 387)
$ grep execve /usr/include/asm-generic/unistd.h
#define __NR_execve 221
__SC_COMP(__NR_execve, sys_execve, compat_sys_execve)
#define __NR_execveat 281
__SC_COMP(__NR_execveat, sys_execveat, compat_sys_execveat)
请帮助我为 execve 找到正确的系统调用号。谢谢你。
Linux alarmpi 4.4.34+ #3 Thu Dec 1 14:44:23 IST 2016 armv6l GNU/Linux
解决方案
推荐阅读
- r - 我的分叉仓库上的 master 分支是否会自动更新 github 中原始仓库上的 master 分支
- html - 为什么 e.target.value 反映的是最新值?
- javascript - 为什么 Jest 仍然需要一个模拟模块?
- ruby-on-rails - Rails 5 API 中的必需参数验证
- r - 基于部分字符串匹配的子集数据帧
- python-3.x - Pyspark:仅使用转换删除没有不同值的列
- python - 对于给定的点,如何在点列表中找到最近的点?
- java - 即使代码没有错误,REST API 调用也会返回 400
- javascript - Firestore:查询集合是否还包括其子集合?
- python - 或针对协议缓冲区版本 3.5.1 编译的工具,与安装的版本不兼容