As part of initialization Linux allocates memory store concatenated commandline arguments. Which were originally in 3 parts.
This involves counting the length of the strings with stripped surrounding whitespace (using some string utils), summing allocating the desired amount of memory in 2 chunks, copying the strings into place, possibly splices in the 3rd part or appending it after a " -- ", & remembers the length of the result.
Now I'll discuss memory allocation & panicking...
1/5?
As mentioned that routine invokes a memory allocator. With extensive wrappers adding compiletime-debugging info, validation, tidier APIs, debugging & cleanliness, retries upon failing to achieve memory locality, & virtual memory translation.
The core logic here has a helper convert conditions into 1 of 3 flags, validates globals to see if its initialized & if not deferring to another allocator, if no alignment outputs (via a helper) an error message combining general & CPU-specific info, ...
2/