This can happen in C++ when there is a global object which creates a
static object in its constructor. Creation of global object is run in
CTORS set and static object destructor is registered with atexit.
This all happens before __progonly_program_startup had a chance to run
and create CrtProgCtx
Note: currently there are no third party linker libraries available that
could stop linking due to name changes, thus this and previous changes
are considered backwards compatible. In case some problems surface,
an .alias can be added with the old name.
Shareable support allows for an executable to share it's crt.library base
with another library. This library must allow using a shareable crt base.
Right now the support is considered experimental and used only in
regina.library and RexxMast. Functions are market .private on purpose. The
interface is subject to change.
crt.library also starts generating rellinklib as inside library, crt base
needs to be relative to a libraries per-opener base for shareable support
to make sense.
This makes sure time values returned by clock_gettime, gettimeofday
and stat are synchronized.
Example: GNU make is comparing stat values with clock_gettime values.
These fields are used when kernel is SMPREADY, but SMP is not enabled.
Changing the types means that comparisons like TDNESTCOUNT_GET < 0 give
wrong answers (UBYTE 255 = BYTE -1, -1 < 0 but 0 < 255)
This makes ino_t consistent with other file system types. ino_t will now be
64-bit on 64-bit system and on 32-bit systems when _FILE_OFFSET_BITS=64.
In other case it will be 32-bit wide. This sizing behavior was also
validated with GNU Linux.
Change of ino_t impacts sizes of struct dirent and struct stat. This
impacts a number of functions. They are are moved to new LVOs where they
will support 64-bit ino_t on 64-bit system. Existing LVOs are kept reserved
in case application was already compiled using 32-bit ino_t, so that
a backwards compatible function can be introduced if needed.
This makes fpos_t consistent with off_t and other file system types. fpos_t
will now be 64-bit on 64-bit system and on 32-bit systems when
_FILE_OFFSET_BITS=64. In other case it will be 32-bit wide. This sizing
behavior was also validated with GNU Linux.
fsetpos and fgetpos functions are moved to new LVOs where they will
support 64-bit fpos_t on 64-bit system. Existing LVOs are kept reserved
in case application was already compiled using 32-bit fpos_t