Apart from the well known tools (binutils, gcc, newlib, ..) that we publish as being the important parts of the CeGCC project, there is also quite an important piece of WinCE specific code. Most of that is in the directory src/newlib/newlib/libc/sys/wince even though it is not a part of the standard newlib distributions.
The unix-like layer is only provided in the arm-wince-cegcc tools, the arm-wince-mingw32ce deliberately lack this as they attempt to provide a development environment that is as close to Windows CE as possible.
Part of the code in this directory is required to be able to create executables that start a program in a consistent way (e.g. crt0.o, the startup code in an executable), but another part of this code provides a unix like layer with functionalities absent in Windows CE.
The purpose of this document is to describe all that, it is based on the only other documentation we could find : the source.
However, some of the XCE functions in our newlib library do support such functionality. The startup code (see src/newlib/newlib/libc/sys/wince/startup.c) sets up an environment variable PWD which it presets to either the current directory from the parent process, or the path extracted from the executable file we're running. Similarly a PATH variable is also put in the environment.