Hallo,
the MS Standard C++ Libraries implementation in MSVCIRT directly accesses low level MSVCRT structures, like _pioinfo(), the pointer to an array of ioinfo structures. A google/search search brings up some information, e.g. (*1).
Some program in the Xilinx suite silently crashes when this _pioinfo() is accessed inside MSVCIRT with builtin msvcrt. How should we handle this case? Implement this array, in the same way as Microsoft did? Or can we construct a builtin MSVCIRT perhaps by using wrappers around some other Standard C++ Libraries implementation?
At least a more visible way to crash when unimplemted structures are accessed would be fine.
Comments welcome.
Bye
(*1): from: http://www.geocrawler.com/archives/3/1783/2001/8/0/6525036/ (squid cvs)
+/* internal to CTRLIB */ +typedef struct { + long osfhnd; /* underlying OS file HANDLE */ + char osfile; /* attributes of file (e.g., open in text mode?) */ + char pipech; /* one char buffer for handles opened on pipes */ +#ifdef _MT + int lockinitflag; + CRITICAL_SECTION lock; +#endif /* _MT */ + } ioinfo; +extern _CRTIMP ioinfo * __pioinfo[]; +#define IOINFO_L2E 5 +#define IOINFO_ARRAY_ELTS (1 < IOINFO_L2E) +#define _pioinfo(i) ( __pioinfo[(i) > IOINFO_L2E] + ((i) &(IOINFO_ARRAY_ELTS - \ + 1)) ) +#define _osfile(i) ( _pioinfo(i)->osfile ) +