Hi,
S32DS uses gcc compiler and linker and these are under GNU GPL license. So the documentation is public, please look at the following URLs.
https://sourceware.org/binutils/docs/ld/
https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&sqi=2&ved=0ahUKEwjWrK...
About "-Xlinker --undefined=__pformatterFP -Xlinker --defsym=__pformatter=__pformatterFP", it is little bit complicated, but I will try to explain.
When you call printf with some formatter, for example printf("%d",0xAA), function int_t _EWL_CDECL printf from printf.c file is called. In this function, __pformatter function is called. But this __pformatter calls function from stdio_api.h, which is not correct. Correct function, which has to be called is function __pformatterFP placed in __printformat.c file.
So the linker flag says that there is undefined symbol __pformatterFP (part -Xlinker --undefined=__pformatterFP) and define symbol __pformatter as a __pformatterFP (part -Xlinker --defsym=__pformatter=__pformatterFP ). So from my point of view, symbol __pformatter is replaced by __pformatterFP. Now correct function is called and the program could be compiled.
About the end symbols, please look at the following URL:
libgloss/libnosys/sbrk.c - native_client/nacl-newlib - Git at Google
You can see that line 10 declares extern char end; /* Set by linker. */. This is the symbol which has to be add to the linker file.
I hope it helps you a little bit, but if you have any other questions, please feel free to write me back.
Regards,
Martin