在没有 GLIBC 的情况下编译时,我试图从 main() 返回一个值,但它不起作用。让我在互联网上找到这个例子:
[niko@localhost tests]$ cat stubstart.S
.globl _start
_start:
call main
movl $1, %eax
xorl %ebx, %ebx
int $0x80
[niko@localhost tests]$ cat m.c
int main(int argc,char **argv) {
return(90);
}
[niko@localhost tests]$ gcc -nostdlib stubstart.S -o m m.c
[niko@localhost tests]$ ./m
[niko@localhost tests]$ echo $?
0
[niko@localhost tests]$
现在,如果我使用 GLIBC 编译,我会得到很好的返回值:
[niko@localhost tests]$ gcc -o mglibc m.c
[niko@localhost tests]$ ./mglibc
[niko@localhost tests]$ echo $?
90
[niko@localhost tests]$
所以,显然返回在 stubstart.S 中没有正确完成,我该如何让它正确?(仅限 Linux)