crtso.S: save *argv[] and argc globally, to be used by getprogname().
This commit is contained in:
parent
ba9990cc00
commit
c046958745
@ -23,7 +23,7 @@ begdata:
|
|||||||
.bss
|
.bss
|
||||||
begbss:
|
begbss:
|
||||||
|
|
||||||
.globl crtso, __penviron, __penvp
|
.globl crtso, __penviron, __penvp, ___prognamep, ___argc
|
||||||
.globl __minix_datastart, __minix_mainjump, __minix_unmapzero
|
.globl __minix_datastart, __minix_mainjump, __minix_unmapzero
|
||||||
.extern _main, _exit
|
.extern _main, _exit
|
||||||
|
|
||||||
@ -57,6 +57,13 @@ crtso:
|
|||||||
movl __penviron, %ebx
|
movl __penviron, %ebx
|
||||||
movl %ecx, (%ebx) /* *_penviron = envp; */
|
movl %ecx, (%ebx) /* *_penviron = envp; */
|
||||||
|
|
||||||
|
/* Save argv[] and argc. This is so that we can return
|
||||||
|
* argv[0] in the future, without having to check whether
|
||||||
|
* argv can be dereferenced safely now.
|
||||||
|
*/
|
||||||
|
mov %edx, (___prognamep)
|
||||||
|
mov %eax, (___argc)
|
||||||
|
|
||||||
push %ecx /* push envp */
|
push %ecx /* push envp */
|
||||||
push %edx /* push argv */
|
push %edx /* push argv */
|
||||||
push %eax /* push argc */
|
push %eax /* push argc */
|
||||||
@ -108,8 +115,11 @@ __minix_datastart:
|
|||||||
.data
|
.data
|
||||||
__penviron:
|
__penviron:
|
||||||
.long __penvp /* Pointer to environ, or hidden pointer */
|
.long __penvp /* Pointer to environ, or hidden pointer */
|
||||||
|
|
||||||
.bss
|
.bss
|
||||||
|
___prognamep:
|
||||||
|
.space 4
|
||||||
|
___argc:
|
||||||
|
.space 4
|
||||||
.lcomm __penvp, 4 /* Hidden environment vector */
|
.lcomm __penvp, 4 /* Hidden environment vector */
|
||||||
|
|
||||||
.extern endtext /* Force loading of end labels. */
|
.extern endtext /* Force loading of end labels. */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user