在GLIBC里查找系统调用
来源:互联网 发布:cf自动领枪软件 编辑:程序博客网 时间:2024/04/28 22:41
有些系统调用在GLIBC里是找不到相应的函数的. 这一类函数会按照 sysdeps/unix/syscall-template.S 里的参数要求在 sysdeps/unix/syscall.S里定义每一个系统调用. 编译的时候,sysdev/unix/make-syscalls.sh 会根据上面的文件生成每个函数的汇编代码到 glibc库里面.
比如, 如果查看 mmap 的反汇编)(MIPS),你会看到:
(gdb) disass mmapDump of assembler code for function mmap: 0x77f3107c <+0>:luigp,0xa 0x77f31080 <+4>:addiugp,gp,-29292 0x77f31084 <+8>:addugp,gp,t9 0x77f31088 <+12>:liv0,4090 0x77f3108c <+16>:syscall 0x77f31090 <+20>:bneza3,0x77f31070 0x77f31094 <+24>:nop 0x77f31098 <+28>:jrra 0x77f3109c <+32>:nop 0x77f310a0 <+36>:nop查看 mmap的源码:
(gdb) list mmap76#else7778/* This is a "normal" system call stub: if there is an error,79 it returns -1 and sets errno. */8081T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS)82ret83T_PSEUDO_END (SYSCALL_SYMBOL)8485#endif
../sysdeps/unix/syscall-template.S:82
其中, T_PSEUDO定义为:
# define PSEUDO(name, syscall_name, args) \ .align 2; \ 99: la t9,__syscall_error; \ jr t9; \ ENTRY (name) \ .set noreorder; \ .cpload t9; \ .set reorder; \ SINGLE_THREAD_P(t0); \ bne zero, t0, L(pseudo_cancel); \ .set noreorder; \ li v0, SYS_ify(syscall_name); \ syscall; \ .set reorder; \ bne a3, zero, SYSCALL_ERROR_LABEL; \ ret; \
基本上和前面的反汇编代码是一致的.
0 0
- 在GLIBC里查找系统调用
- glibc定义的系统调用
- glibc定义的系统调用
- 在glibc中寻找封装系统调用的例程。以open为例
- glibc和系统调用的关系
- libc库、glibc库和系统调用
- 在android里如何代码调用系统短信发送界面
- 如何在Linux内核里增加一个系统调用
- 如何在Linux内核里增加一个系统调用
- 系统调用-进程创建函数glibc部分2
- glibc源码分析之系统调用(一)
- glibc源码分析之系统调用(二)
- 关于gcc、glibc和binutils模块之间的关系,连同在现有系统上升级glibc
- 在一个系统内安装两个 glibc 环境
- 几个系统调用分析 glibc中的malloc调用和共享内存原理
- 几个系统调用分析 glibc中的malloc调用和共享内存原理
- 在vc6里调用WebService
- Linux查找glibc死机方法
- osg debug 和Release的速度差别
- 黑马程序员 【】java学习之路——银行业务系统
- Servlet的生命周期
- 在Java中输入一个乘法表
- 深入理解JS的delete
- 在GLIBC里查找系统调用
- 在Java中输入月份判断该月有多少天
- DataGridView控件用法(一)绑定数据-修改列值-序号列-交换列顺序
- 创建时间维度表(有许多时间函数,记下来以后说不定会用到)
- 你可能不知道的5种 CSS 和 JS 的交互方式
- 在Java web中使用数字日期格式化标签
- Redis数据备份与恢复
- 矩阵(稀疏矩阵)的压缩存储
- 在Java web中输出中美两国的数字、百分比、货比格式