diff options
author | Yao Qi <qiyaoltc@gmail.com> | 2017-08-09 15:37:57 +0100 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2017-08-09 17:43:09 +0200 |
commit | 32ca315312628dfce2f0e1c74eab1db33a5f0061 (patch) | |
tree | 4935e091523dfef697c419ebd6f686285ee95450 | |
parent | 61ddc7a436dee9ef40782400ba618be8dee9a0e8 (diff) | |
download | newlib-32ca315312628dfce2f0e1c74eab1db33a5f0061.zip newlib-32ca315312628dfce2f0e1c74eab1db33a5f0061.tar.gz newlib-32ca315312628dfce2f0e1c74eab1db33a5f0061.tar.bz2 |
Don't fetch command line options without semi-hosting
Nowadays, the code fetching command line options via semi-hosting are
unconditionally pulled in, so that the semi-hosting code is still
there even I compile with option --specs=nosys.specs.
gdb ./aarch64-none-elf/libgloss/aarch64/crt0.o
(gdb) disassemble _start
0x0000000000000050 <+80>: ldr x1, 0x128 <_cpu_init_hook+48>
0x0000000000000054 <+84>: mov w0, #0x15
0x0000000000000058 <+88>: hlt #0xf000
This patch fixes this problem by wrapping the code by ARM_RDI_MONITOR.
When semi-hosting is not used, set command line options to NULL.
-rw-r--r-- | libgloss/aarch64/crt0.S | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/libgloss/aarch64/crt0.S b/libgloss/aarch64/crt0.S index cbff11a..3bf0278 100644 --- a/libgloss/aarch64/crt0.S +++ b/libgloss/aarch64/crt0.S @@ -157,6 +157,7 @@ bl FUNCTION (_init) +#ifdef ARM_RDI_MONITOR /* Fetch and parse the command line. */ ldr x1, .Lcmdline /* Command line descriptor. */ mov w0, #AngelSVC_Reason_GetCmdLine @@ -219,6 +220,11 @@ and x4, x1, ~15 mov sp, x4 +#else + mov x0, #0 /* argc = 0 */ + mov x1, #0 /* argv = NULL */ +#endif + bl FUNCTION (main) b FUNCTION (exit) /* Cannot return. */ |