• Alexander Fedotov's avatar
    Align libgloss/arm and libc/sys/arm sources: Fix GetCmdLine semihosting directives · 37e80fbb
    Alexander Fedotov authored
    Applied changes from the commit 9b116721:
    
    	When simulating arm code, the target program startup code (crt0) uses
    	semihosting invocations to get the command line from the simulator. The
    	simulator returns the command line and its size into the area passed in
    	parameter. (ARM 32-bit specifications :
    	http://infocenter.arm.com/help/topic/com.arm.doc.dui0058d/DUI0058.pdf
    	chapter "5.4.19 SYS_GET_CMDLINE").
    
    	The memory area pointed by the semihosting register argument is located
    	in .text section (usually not writtable (RX)).
    
    	If we run this code on a simulator that respects this rights properties
    	(qemu user-mode for instance), the command line will not be written to
    	the .text program memory, in particular the length of the string. The
    	program runs with an empty command line. This problem hasn't been seen
    	earlier probably because qemu user-mode is not so much used, but this can
    	happen with another simulator that refuse to write in a read-only segment.
    
    	With this modification, the command line can be correctly passed to the
    	target program.
    
    	Changes:
    	- newlib/libc/sys/arm/crt0.S : Arguments passed to the
    	AngelSWI_Reason_GetCmdLine semihosting invocation are placed into .data
    	section instead of .text
    37e80fbb
crt0.S 15.9 KB