mirror of
https://github.com/justinian/jsix.git
synced 2025-12-10 00:14:32 -08:00
[libj6] Allow driver_main instead of main for accepting extra arguments
Clang will complain if main() is not declared with 0, 2, or 3 arguments. In order to allow an extra 4th parameter, a new weak main() symbol which just jumps to driver_main is defined, and _start passes the extra init pointer to main. Additionally, libc's crt0.s _start is made weak, and a matching _libc_crt0_start symbol is defined for implementations that wish to override _start but still call libc's _start. (Will be used by init.)
This commit is contained in:
@@ -3,8 +3,11 @@ extern exit
|
||||
extern __init_libj6
|
||||
extern __init_libc
|
||||
|
||||
global _start:function (_start.end - _start)
|
||||
global _start:function weak (_libc_crt0_start.end - _libc_crt0_start)
|
||||
global _libc_crt0_start:function (_libc_crt0_start.end - _libc_crt0_start)
|
||||
|
||||
_start:
|
||||
_libc_crt0_start:
|
||||
push 0 ; Add null frame
|
||||
push 0
|
||||
mov rbp, rsp
|
||||
|
||||
Reference in New Issue
Block a user