| 1 |  | 
|---|
| 2 |  | 
|---|
| 3 | R e l e a s e    N o t e s    G C C   f o r   O S / 2 | 
|---|
| 4 | +---------------------------------------------------+ | 
|---|
| 5 |  | 
|---|
| 6 |  | 
|---|
| 7 | (C)'2004-2006 Knut St. Osmundsen (bird-gccspam@anduin.net) | 
|---|
| 8 | (C)'2003-2005 InnoTek Systemberatung GmbH (http://www.innotek.de) | 
|---|
| 9 |  | 
|---|
| 10 |  | 
|---|
| 11 | GCC v3.3.5 CSD 1 / LIBC v0.6.1: | 
|---|
| 12 | ------------------------------- | 
|---|
| 13 |  | 
|---|
| 14 | First, thanks to Yuri, nickk, Paul, Andy and Michal for patches, | 
|---|
| 15 | bugs and other kind of feedback. | 
|---|
| 16 |  | 
|---|
| 17 |  | 
|---|
| 18 | Fix list: | 
|---|
| 19 |  | 
|---|
| 20 | #19     gcc: gcc limits.h overrides limits.h from libc | 
|---|
| 21 | #20     libc: random panic SIGSEGV when doing parallel builds | 
|---|
| 22 | #48     libc: freopen(NULL, "rb", stdio) panics (doesn't work | 
|---|
| 23 | as expected) | 
|---|
| 24 | #60     libc: filehandle inheritance doesn't work right! | 
|---|
| 25 | #22     libc: path resolver fails on open file | 
|---|
| 26 | #23     libc: symlink is broken | 
|---|
| 27 | #50     libc: umask isn't inherited | 
|---|
| 28 | #51     libc: unlink fails on readonly file | 
|---|
| 29 | #53     libc: freopen("missing",,) causes panic | 
|---|
| 30 | #54     libc: fchdir(open('.', O_RDONLY)) may corrupt path | 
|---|
| 31 | resolving | 
|---|
| 32 | #58     libc: closed standard handles cause uninitialized | 
|---|
| 33 | stdout/stdin/stderr streams | 
|---|
| 34 | #21     libc: limit Unix EAs to specific file systems | 
|---|
| 35 | #24     libc: fts crashes because it's still using chdir() | 
|---|
| 36 | #32     libc: readdir_r returns -1 instead of errno | 
|---|
| 37 | #33     libc: panic when using timers | 
|---|
| 38 | #38     libc: when debugged default to breakpoint on panic | 
|---|
| 39 | #40     libc: open("/", RDONLY) fails. | 
|---|
| 40 | #41     libc: incorrect __libc_back_fsUnixAttribsGet() usage | 
|---|
| 41 | caused st_dev and st_ino to be 0 in some stat()s | 
|---|
| 42 | and chmod & fchmod to set MODE EA without type | 
|---|
| 43 | #46     ilink map file name is wrong when multiple dots are in | 
|---|
| 44 | target name | 
|---|
| 45 | #49     libc: st_ctime is incorrect and st_birthtime isn't | 
|---|
| 46 | converted to UTC | 
|---|
| 47 | #52     libc: path resolver fails resolving a directory | 
|---|
| 48 | symlink for lstat | 
|---|
| 49 | #61     libc: symlink(,existing) returns the wrong errno | 
|---|
| 50 | #62     libc: getdelim / getline returns failure when the last | 
|---|
| 51 | line doesn't end with the delimiter / newline | 
|---|
| 52 | #65     libc: sys/stat.h doesn't work in non BSD source mode | 
|---|
| 53 | #67     libc: Remove ncurses headers | 
|---|
| 54 | #68     libc: getopt prototype clashes (getopt.h/unistd.h) | 
|---|
| 55 | #69     libc: basename & dirname return incorrect results | 
|---|
| 56 | for paths with drive | 
|---|
| 57 | #71     libc: Incorrect fmutex padding in FILE | 
|---|
| 58 | #27     ld bug when map files are requested | 
|---|
| 59 | #34     weakld: generate duplicate weak aliases bird | 
|---|
| 60 | #30     setlocale / ctype is broken | 
|---|
| 61 | #70     emxomf: Demangle function names for omf debug info | 
|---|
| 62 | #55     emxomfld doesn't delete temporary files | 
|---|
| 63 | #56     emxomfld doesn't properly allocate space for map file name | 
|---|
| 64 | #28     emxbind doesn't read library name from .def file | 
|---|
| 65 | #36     emxbind: export truncation bug and allow export & imports | 
|---|
| 66 | up to 255 chars | 
|---|
| 67 |  | 
|---|
| 68 | Full details can be found at: | 
|---|
| 69 |  | 
|---|
| 70 | http://svn.netlabs.org/libc/query?status=closed&milestone=libc-0.6.1 | 
|---|
| 71 |  | 
|---|
| 72 |  | 
|---|
| 73 |  | 
|---|
| 74 | GCC v3.3.5 / LIBC v0.6: | 
|---|
| 75 | ----------------------- | 
|---|
| 76 |  | 
|---|
| 77 | There was a build problem with the first attempt at releasing. | 
|---|
| 78 | This is the 2nd attempt, hope I got it right this time... | 
|---|
| 79 |  | 
|---|
| 80 | WARNINGS | 
|---|
| 81 |  | 
|---|
| 82 | There are several incompatible interface changes. So, you'll have | 
|---|
| 83 | to rebuild static libraries and it's a good idea to do the same | 
|---|
| 84 | thing for dynamic libs and programs too. | 
|---|
| 85 |  | 
|---|
| 86 | The build is not tested as much as I would've liked. I'm very | 
|---|
| 87 | pressed on time as usual, but I really wanted to get the 0.6 stuff | 
|---|
| 88 | out now. I can only hope everything still builds and works. | 
|---|
| 89 |  | 
|---|
| 90 |  | 
|---|
| 91 | The Project is Moving | 
|---|
| 92 |  | 
|---|
| 93 | The source code has been migrated to subversion and now resides | 
|---|
| 94 | on the svn.netlabs.org server. The server also provides an issue | 
|---|
| 95 | tracker and project management service called trac. Check it | 
|---|
| 96 | out at http://svn.netlabs.org/libc/. | 
|---|
| 97 |  | 
|---|
| 98 | The source code for this release (and any bugfix releases on | 
|---|
| 99 | the 0.6 code base) can be checked out using this url: | 
|---|
| 100 | http://svn.netlabs.org/repos/libc/branches/libc-0.6 | 
|---|
| 101 |  | 
|---|
| 102 | Developers who wish to contribute to the 0.7 code will have to | 
|---|
| 103 | diff against the trunk. There are several pending restructuring | 
|---|
| 104 | tasks on 0.7, so don't expect everything to build fine or work | 
|---|
| 105 | properly while those are still open. Anyway, the url: | 
|---|
| 106 | http://svn.netlabs.org/repos/libc/trunk | 
|---|
| 107 |  | 
|---|
| 108 | Users are encouraged to join the gcc-user@netlabs.org mailing list | 
|---|
| 109 | and use that list for questions rather than the InnoTek form. If | 
|---|
| 110 | you think you've found a bug, you should first ask on the mailing | 
|---|
| 111 | list, and if I decide it's a *real*, *new*, bug I'll open a | 
|---|
| 112 | ticket for it and address it. | 
|---|
| 113 |  | 
|---|
| 114 | Developers which have patches for real bugs or enhancements can | 
|---|
| 115 | create trac tickets and drop me or the gcc-user list a mail (we | 
|---|
| 116 | haven't figure out how to get email notifications from trac yet). | 
|---|
| 117 |  | 
|---|
| 118 |  | 
|---|
| 119 | New features: | 
|---|
| 120 |  | 
|---|
| 121 | o Added __libc_Back_gfProcessHandlePCBatchScripts and | 
|---|
| 122 | __libc_Back_gfProcessHandleHashBangScripts (globale | 
|---|
| 123 | variables) to turn on/off script handling in exec/spawn. | 
|---|
| 124 | Very useful for shells. | 
|---|
| 125 |  | 
|---|
| 126 | o Changed the default stack of emxomfld and emxbind to 1MB, | 
|---|
| 127 | it used to be 8KB and 8MB. | 
|---|
| 128 |  | 
|---|
| 129 | o open() can now open directories like on unix, and fchdir() | 
|---|
| 130 | can chdir to the opened directories. | 
|---|
| 131 |  | 
|---|
| 132 | o Implemented much of the unix-attributes-in EA stuff. | 
|---|
| 133 |  | 
|---|
| 134 | o Implemented getdirents(), will be used to replace | 
|---|
| 135 | opendir/readdir/seekdir/telldir/closedir in 0.7. | 
|---|
| 136 |  | 
|---|
| 137 | o Implemented the fcntl interface for setting and clearing | 
|---|
| 138 | the O_NONBLOCK flag on sockets. | 
|---|
| 139 |  | 
|---|
| 140 |  | 
|---|
| 141 | Bug fixes: | 
|---|
| 142 |  | 
|---|
| 143 | o Fixed bug preventing libc from working on legacy systems. | 
|---|
| 144 | Kudos to Andrew Below for spotting it. | 
|---|
| 145 |  | 
|---|
| 146 | o Fixed ld bustage in rc1. | 
|---|
| 147 |  | 
|---|
| 148 | o Fixed fork bug in shm. | 
|---|
| 149 |  | 
|---|
| 150 | o Fixed spawn/exec bug where .exe was appended too early | 
|---|
| 151 | preventing configure and other scripts without suffix | 
|---|
| 152 | from being executed. | 
|---|
| 153 |  | 
|---|
| 154 | o Fixed several signal bugs (deadlocks, sigsuspend, pause). | 
|---|
| 155 |  | 
|---|
| 156 | o Fixed symbol truncation problem in emxomf. | 
|---|
| 157 |  | 
|---|
| 158 | o Fixed a generic error handling bug in ioctl, write, read, | 
|---|
| 159 | dup and dup2 which was causing incorrect errno values. | 
|---|
| 160 |  | 
|---|
| 161 |  | 
|---|
| 162 | Known Issues, see open ticket in trac: | 
|---|
| 163 | http://svn.netlabs.org/libc/report/1 | 
|---|
| 164 |  | 
|---|
| 165 |  | 
|---|
| 166 | GCC v3.3.5 / LIBC v0.6 - Release Candidate 1: | 
|---|
| 167 | --------------------------------------------- | 
|---|
| 168 |  | 
|---|
| 169 | New features: | 
|---|
| 170 |  | 
|---|
| 171 | o Replaced the BSD regex with the GLIBC one. | 
|---|
| 172 |  | 
|---|
| 173 | o Replaced the BSD getopt with the GLIBC one adding optreset | 
|---|
| 174 | for BSD compatability. | 
|---|
| 175 |  | 
|---|
| 176 | o Added libcrypt from GLIBC. | 
|---|
| 177 |  | 
|---|
| 178 | o Added argp from GLIBC. | 
|---|
| 179 |  | 
|---|
| 180 | o Added obstack from GLIBC. | 
|---|
| 181 |  | 
|---|
| 182 | o Finally added a crude [v]asprintf() implementation. | 
|---|
| 183 |  | 
|---|
| 184 | o Added missing math bits from GLIBC. | 
|---|
| 185 |  | 
|---|
| 186 | o New functions: | 
|---|
| 187 | rawmemchr(), strchrnul(), fgets_unlocked(), gets_unlocked(), | 
|---|
| 188 | fwide(), asprintf(), vasprintf(), get_current_dir_name(), | 
|---|
| 189 | getdelim(), getline(), getlogin_r(), _getopt_internal(), | 
|---|
| 190 | _getopt_internal_r(), _getopt_long_only_r(), | 
|---|
| 191 | _getopt_long_r(), argp_error(), argp_failure(), | 
|---|
| 192 | argp_fmtstream_ensure(), argp_fmtstream_free(), | 
|---|
| 193 | argp_fmtstream_point(), argp_fmtstream_printf(), | 
|---|
| 194 | argp_fmtstream_putc(), argp_fmtstream_puts(), | 
|---|
| 195 | argp_fmtstream_set_lmargin(), argp_fmtstream_set_rmargin(), | 
|---|
| 196 | argp_fmtstream_set_wmargin(), argp_fmtstream_update(), | 
|---|
| 197 | argp_fmtstream_write(), argp_help(), argp_input(), | 
|---|
| 198 | argp_make_fmtstream(), argp_parse(), | 
|---|
| 199 | argp_program_bug_address(), argp_program_version(), | 
|---|
| 200 | argp_program_version_hook(), argp_state_help(), argp_usage(), | 
|---|
| 201 | cacos(), cacosf(), cacosh(), cacoshf(), cacoshl(), cacosl(), | 
|---|
| 202 | cargf(), casin(), casinf(), casinh(), casinhf(), casinhl(), | 
|---|
| 203 | casinl(), catan(), catanf(), catanh(), catanhf(), catanhl(), | 
|---|
| 204 | catanl(), ccos(), ccosf(), ccosh(), ccoshf(), ccoshl(), | 
|---|
| 205 | ccosl(), cexp(), cexpf(), cexpl(), clog(), clog10(), | 
|---|
| 206 | clog10f(), clog10l(), clogf(), clogl(), cpow(), cpowf(), | 
|---|
| 207 | cpowl(), cproj(), cprojf(), cprojl(), csin(), csinf(), | 
|---|
| 208 | csinh(), csinhf(), csinhl(), csinl(), csqrt(), csqrtf(), | 
|---|
| 209 | csqrtl(), ctan(), ctanf(), ctanh(), ctanhf(), ctanhl(), | 
|---|
| 210 | ctanl(), exp10(), log2(), log2f(), log2l(), sincos(), | 
|---|
| 211 | sincosf(), sincosl(), asinhl(), atanhl(), llrintl(), | 
|---|
| 212 | lrintl(), erfcl(), erfl(), exp2l(), expm1l(), log1pl(), | 
|---|
| 213 | logbl(), nearbyintl(), remainderl(), remquol(), cabsl(), | 
|---|
| 214 | carg(), cargl(), gammal_r(), exp10f(), tgammaf(), tgammal(), | 
|---|
| 215 | __fpu_control(), acoshl(), exp10l(), j0l(), j1l(), jnl(), | 
|---|
| 216 | lgammal_r(), nexttowardl(), scalbl(), significandl(), y0l(), | 
|---|
| 217 | y1l(), ynl(), gammal(), lgammal(), _obstack_allocated_p(), | 
|---|
| 218 | obstack_alloc_failed_handler(), _obstack_begin(), | 
|---|
| 219 | _obstack_begin_1(), obstack_exit_failure(), obstack_free(), | 
|---|
| 220 | _obstack_memory_used(), _obstack_newchunk(), nftw(), | 
|---|
| 221 | stpncpy(), crypt_r(), encrypt_r(), init_des(), init_des_r(), | 
|---|
| 222 | md5_buffer(), md5_crypt(), md5_crypt_r(), md5_finish_ctx(), | 
|---|
| 223 | md5_init_ctx(), md5_process_block(), md5_process_bytes(), | 
|---|
| 224 | md5_read_ctx(), md5_stream(), setkey_r(), crypt(), encrypt(), | 
|---|
| 225 | setkey(), _ufc_dofinalperm_r(), _ufc_doit_r(), _ufc_foobar(), | 
|---|
| 226 | _ufc_mk_keytab_r(), _ufc_output_conversion_r(), | 
|---|
| 227 | _ufc_setup_salt_r(), getmode(), optreset(), bsd_setmode(), | 
|---|
| 228 | getpgid(), getsid(), setlinebuf(), re_comp(), | 
|---|
| 229 | re_compile_fastmap(), re_compile_pattern(), re_exec(), | 
|---|
| 230 | re_match(), re_match_2(), re_search(), re_search_2(), | 
|---|
| 231 | re_set_registers() and re_set_syntax(). | 
|---|
| 232 |  | 
|---|
| 233 |  | 
|---|
| 234 | Bug fixes: | 
|---|
| 235 |  | 
|---|
| 236 | o Fixed various bugs related to __declspec. | 
|---|
| 237 |  | 
|---|
| 238 | o Fixed a bug in alloca which was causing all -O levels | 
|---|
| 239 | to break. | 
|---|
| 240 |  | 
|---|
| 241 | o Added UniStrFromUcs and UniStrToUcs to uconv.h and libos2. | 
|---|
| 242 |  | 
|---|
| 243 | o Fixed quite a few libc issues, see the ChangeLog.LIBC | 
|---|
| 244 | for full details. | 
|---|
| 245 |  | 
|---|
| 246 |  | 
|---|
| 247 | Known problems: | 
|---|
| 248 |  | 
|---|
| 249 | o Static linking not possible - will be fixed. | 
|---|
| 250 |  | 
|---|
| 251 | o Job control will only be applied to thread 1 in a process. | 
|---|
| 252 | This won't change. | 
|---|
| 253 |  | 
|---|
| 254 | o Missing some process group interfaces required for | 
|---|
| 255 | job control. They'll show up soon. | 
|---|
| 256 |  | 
|---|
| 257 | o The HLL debug info isn't working 100% correctly. | 
|---|
| 258 |  | 
|---|
| 259 |  | 
|---|
| 260 |  | 
|---|
| 261 | GCC v3.3.5 / LIBC v0.6 - Beta 5: | 
|---|
| 262 | -------------------------------- | 
|---|
| 263 |  | 
|---|
| 264 | Thanks to Lorne, Froloff, nickk and Andy for sending me patches, | 
|---|
| 265 | debugging problems and/or testing fixes. | 
|---|
| 266 |  | 
|---|
| 267 | New features: | 
|---|
| 268 |  | 
|---|
| 269 | o Added support for __declspec(dllexport), _Export | 
|---|
| 270 | and __declspec(dllimport), the latter being a stub. | 
|---|
| 271 | This also included adding N_EXP to the a.out format. | 
|---|
| 272 |  | 
|---|
| 273 | o Lot's of math stuff, mostly untested. | 
|---|
| 274 |  | 
|---|
| 275 | o Optimized zeroing of new file space in ftruncate and | 
|---|
| 276 | chsize with knowlegde about the filesystem. HPFS, JFS | 
|---|
| 277 | and FAT will do the zeroing for us. | 
|---|
| 278 |  | 
|---|
| 279 | o Support for unlocked stdio, with both BSD and GNU | 
|---|
| 280 | extensions implemented. | 
|---|
| 281 |  | 
|---|
| 282 | o Execute .cmd, .bat, .btm and hash-bang scripts. | 
|---|
| 283 |  | 
|---|
| 284 | o Respect single quotes in argument handling (sed craze). | 
|---|
| 285 |  | 
|---|
| 286 | o Ported fts.h and the BSD implementation. | 
|---|
| 287 |  | 
|---|
| 288 | o Ported BSD sysctl. (Does not include the tcpip v4.1 | 
|---|
| 289 | sysctl() bits yet.) | 
|---|
| 290 |  | 
|---|
| 291 | o Ported the FreeBSD implementation of SysV semaphores | 
|---|
| 292 | and shared memory. | 
|---|
| 293 |  | 
|---|
| 294 | o Env.var. LIBC_THREAD_MIN_STACK_SIZE can be used to | 
|---|
| 295 | specify the minimum stack size for new threads. The | 
|---|
| 296 | default minimum is 4096 bytes. | 
|---|
| 297 |  | 
|---|
| 298 | o Ported (lib)intl from glibc. | 
|---|
| 299 |  | 
|---|
| 300 | o New gcc arguments -Zargs-wild and -Zargs-resp. | 
|---|
| 301 |  | 
|---|
| 302 | o New functions (might not be 100% correct): | 
|---|
| 303 | __bindtextdomain(), __dcgettext(), __dcigettext(), | 
|---|
| 304 | __dcngettext(), __dgettext(), __dngettext(), __gettext(), | 
|---|
| 305 | __gettext_extract_plural(), __gettext_free_exp(), | 
|---|
| 306 | __gettextparse(), _nl_make_l10nflist(), __ngettext(), | 
|---|
| 307 | __textdomain(), _nl_locale_name(), on_exit(), nanosleep(), | 
|---|
| 308 | wmemcpy(), wmemchr(), wmemcmp(), wmemmove(), wmemset(), | 
|---|
| 309 | gethrtime(), _nl_expand_alias(), _nl_explode_name(), | 
|---|
| 310 | _nl_normalize_codeset(), __fbufsize(), __fpending(), | 
|---|
| 311 | getpriority(), setpriority(), nice(), sysctl(), | 
|---|
| 312 | sysctlbyname(), sysctlnametomib(), fchmod(), _chdir_os2(), | 
|---|
| 313 | fts_children(), fts_close(), fts_get_clientptr(), | 
|---|
| 314 | fts_get_stream(), fts_open(), fts_read(), fts_set(), | 
|---|
| 315 | fts_set_clientptr(), mkfifo(), futimes(), _getenv_int(), | 
|---|
| 316 | _getenv_long(), _getenv_longlong(), ftok(), semctl(), | 
|---|
| 317 | semget(), semop(), shmat(), shmctl(), shmdt(), shmget(), | 
|---|
| 318 | acosf(), acosh(), acoshf(), asinf(), asinh(), asinhf(), | 
|---|
| 319 | atan2f(), atanf(), atanh(), atanhf(), cabs(), cabsf(), | 
|---|
| 320 | cbrtf(), ceilf(), cimag(), cimagf(), cimagl(), conj(), | 
|---|
| 321 | conjf(), conjl(), cosf(), coshf(), creal(), crealf(), | 
|---|
| 322 | creall(), erf(), erfc(), erfcf(), erff(), exp2(), exp2f(), | 
|---|
| 323 | expf(), expm1(), expm1f(), truncf(), fabsf(), fdim(), | 
|---|
| 324 | fdimf(), fdiml(), fegetenv(), feholdexcept(), | 
|---|
| 325 | feraiseexcept(), fesetexceptflag(), feupdateenv(), floorf(), | 
|---|
| 326 | fma(), fmaf(), fmal(), fmax(), fmaxf(), fmaxl(), fmin(), | 
|---|
| 327 | fminf(), fminl(), fmodf(), frexpf(), hypotf(), ilogb(), | 
|---|
| 328 | ilogbf(), ilogbl(), ldexpf(), lgamma(), lgammaf(), llrint(), | 
|---|
| 329 | llrintf(), llround(), llroundf(), llroundl(), log10f(), | 
|---|
| 330 | log1p(), log1pf(), logb(), logbf(), logf(), lrint(), | 
|---|
| 331 | lrintf(), lround(), lroundf(), lroundl(), modff(), | 
|---|
| 332 | nearbyint(), nearbyintf(), nexttoward(), nexttowardf(), | 
|---|
| 333 | powf(), remainder(), remainderf(), remquo(), remquof(), | 
|---|
| 334 | rintf(), round(), roundf(), roundl(), scalbf(), scalbln(), | 
|---|
| 335 | scalblnf(), scalblnl(), scalbn(), scalbnf(), scalbnl(), | 
|---|
| 336 | signgam(), sinf(), sinhf(), sqrtf(), tanf(), tanhf(), | 
|---|
| 337 | tgamma(), drem(), dremf(), finite(), finitef(), gamma(), | 
|---|
| 338 | gammaf(), gammaf_r(), gamma_r(), j0(), j0f(), j1(), j1f(), | 
|---|
| 339 | jn(), jnf(), lgammaf_r(), lgamma_r(), scalb(), | 
|---|
| 340 | significand(), significandf(), powl(), y0(), y0f(), y1(), | 
|---|
| 341 | y1f(), yn(), ynf(), arc4random(), arc4random_addrandom(), | 
|---|
| 342 | arc4random_stir(), _mktemp(), mkdtemp(), mkstemps(), | 
|---|
| 343 | clearerr_unlocked(), feof_unlocked(), ferror_unlocked(), | 
|---|
| 344 | fgetc_unlocked(), fileno_unlocked(), flockfile(), | 
|---|
| 345 | ftrylockfile(), funlockfile(), getchar_unlocked(), | 
|---|
| 346 | getc_unlocked(), putchar_unlocked(), fputc_unlocked(), | 
|---|
| 347 | putc_unlocked(), fputs_unlocked(), puts_unlocked() and | 
|---|
| 348 | fread_unlocked(). | 
|---|
| 349 |  | 
|---|
| 350 | Removed features: | 
|---|
| 351 |  | 
|---|
| 352 | o smallcnv is gone. | 
|---|
| 353 |  | 
|---|
| 354 | o old weak symbol handling in emxomf is gone. | 
|---|
| 355 |  | 
|---|
| 356 |  | 
|---|
| 357 | Bug fixes: | 
|---|
| 358 |  | 
|---|
| 359 | o Numerous bugfixes in libc, see ChangeLog.LIBC for | 
|---|
| 360 | details. | 
|---|
| 361 |  | 
|---|
| 362 | o Fixed problems with receiving signals during fork(). | 
|---|
| 363 |  | 
|---|
| 364 | o Fixed bug in timer backend if the system had no | 
|---|
| 365 | exiting timers. Kudos to Froloff for noticing this. | 
|---|
| 366 |  | 
|---|
| 367 |  | 
|---|
| 368 | Known problems: | 
|---|
| 369 |  | 
|---|
| 370 | o Static linking not possible - will be fixed. | 
|---|
| 371 |  | 
|---|
| 372 | o Job control will only be applied to thread 1 in a process. | 
|---|
| 373 | This won't change. | 
|---|
| 374 |  | 
|---|
| 375 | o Missing some process group interfaces required for | 
|---|
| 376 | job control. They'll show up soon. | 
|---|
| 377 |  | 
|---|
| 378 | o The HLL debug info isn't working 100% correctly. | 
|---|
| 379 |  | 
|---|
| 380 |  | 
|---|
| 381 | Todos before LIBC06.DLL: | 
|---|
| 382 |  | 
|---|
| 383 | 0. Make my way through the glibc testsuite. | 
|---|
| 384 |  | 
|---|
| 385 | 1. New select() from Brian (aka nuke). | 
|---|
| 386 |  | 
|---|
| 387 | 2. Missing job pgid functions. | 
|---|
| 388 |  | 
|---|
| 389 |  | 
|---|
| 390 |  | 
|---|
| 391 | GCC v3.3.5 / LIBC v0.6 - Beta 4: | 
|---|
| 392 | -------------------------------- | 
|---|
| 393 |  | 
|---|
| 394 | Thanks to Lorne, Froloff and nickk for sending me patches, | 
|---|
| 395 | debugging problems and testing fixes. | 
|---|
| 396 |  | 
|---|
| 397 | New features: | 
|---|
| 398 |  | 
|---|
| 399 | o Added st_dev and st_ino calculation for fstat and stat. | 
|---|
| 400 |  | 
|---|
| 401 | o Added most of the wide string functions. | 
|---|
| 402 | N.B. the stream functions are still missing. | 
|---|
| 403 |  | 
|---|
| 404 | o New functions: | 
|---|
| 405 | SafeDosStartSession(), wcscat(), wcschr(), wcscmp(), | 
|---|
| 406 | wcscoll(), wcscpy(), wcscspn(), wcslcat(), wcslcpy(), | 
|---|
| 407 | wcslen(), wcsncat(), wcsncmp(), wcsncpy(), wcspbrk(), | 
|---|
| 408 | wcsrchr(), wcsspn(), wcsstr(), wcstok() and wcswidth() | 
|---|
| 409 |  | 
|---|
| 410 |  | 
|---|
| 411 | Bug fixes: | 
|---|
| 412 |  | 
|---|
| 413 | o settimeofday() year problem. | 
|---|
| 414 |  | 
|---|
| 415 | o Some underflow/overflow problems tested for by many | 
|---|
| 416 | Configure scripts was fixed by using a 64-bit time | 
|---|
| 417 | type internally. | 
|---|
| 418 |  | 
|---|
| 419 | o fxsave/fxrstore problem in fork(). (This isn't tested | 
|---|
| 420 | because lack of (reliable) obsolete hardware.) | 
|---|
| 421 |  | 
|---|
| 422 | o Fixed fork() and DosLoadModule problem in child. | 
|---|
| 423 |  | 
|---|
| 424 | o nl_langinfo(CODESET) now returns something useful, | 
|---|
| 425 | adding a few ascii codeset aliases at the same time. | 
|---|
| 426 |  | 
|---|
| 427 | o Bug in socket inheritance over exec/spawn. | 
|---|
| 428 |  | 
|---|
| 429 | o Missing semphore and signal blocking when processing | 
|---|
| 430 | external signals. | 
|---|
| 431 |  | 
|---|
| 432 | o Two rmdir errno problems, and made it fail on symlink. | 
|---|
| 433 |  | 
|---|
| 434 | o Fixed incorrect monetary locale for the "C" locale | 
|---|
| 435 | after setlocale call. | 
|---|
| 436 |  | 
|---|
| 437 | o Fixed signal queue node leak. | 
|---|
| 438 |  | 
|---|
| 439 | o Fixed missing release of signal semaphore and signal | 
|---|
| 440 | unblocking in a failure code path. | 
|---|
| 441 |  | 
|---|
| 442 | o Fixed a few filehandle conversion bugs in os2_select. | 
|---|
| 443 |  | 
|---|
| 444 | o Fixed libsocket to set errno to ENOSOCK when given a | 
|---|
| 445 | filehandle instead of a socket. Previous was ENOSYS. | 
|---|
| 446 |  | 
|---|
| 447 | o Corrected NP_NBLK define in os2emx.h. | 
|---|
| 448 |  | 
|---|
| 449 | o Export __mcount stub. LIBCxx.prf export non-stub. | 
|---|
| 450 |  | 
|---|
| 451 | o Added missing libdl stub libraries (dlfcn is in libc | 
|---|
| 452 | as of last release). | 
|---|
| 453 |  | 
|---|
| 454 | o Fixed missing WNOHANG handling in the wait functions. | 
|---|
| 455 |  | 
|---|
| 456 | o Adjusted the ECHILD and EINVAL errnos usage in | 
|---|
| 457 | the wait functions to match the waitpid() spec. | 
|---|
| 458 |  | 
|---|
| 459 | o ??? | 
|---|
| 460 |  | 
|---|
| 461 | Todos before LIBC06.DLL: | 
|---|
| 462 |  | 
|---|
| 463 | 0. Fix all bugs. :-) | 
|---|
| 464 |  | 
|---|
| 465 | 1. Reimplement opendir in BSD style (+fchdir). | 
|---|
| 466 |  | 
|---|
| 467 | 2. Shared IPC structures for XSI msq, sem and shm. | 
|---|
| 468 |  | 
|---|
| 469 | 3. Missing job pgid functions. | 
|---|
| 470 |  | 
|---|
| 471 | 4. Port GLIBC intl/*. gettext is a pita! because it's | 
|---|
| 472 | passing FILE pointers around between different LIBCs. | 
|---|
| 473 | objdump is constantly broken between LIBC versions. | 
|---|
| 474 |  | 
|---|
| 475 | 5. Figure out the EA exclusive read access trouble. | 
|---|
| 476 |  | 
|---|
| 477 | 6. Calc ino_t on file creation and store it in EAs. | 
|---|
| 478 |  | 
|---|
| 479 | 7. Some sysctl() required for coreutils + a bit | 
|---|
| 480 | of tcpip additions. | 
|---|
| 481 |  | 
|---|
| 482 | 8. adjtime() implementation. | 
|---|
| 483 |  | 
|---|
| 484 |  | 
|---|
| 485 |  | 
|---|
| 486 | GCC v3.3.5 / LIBC v0.6 - Beta 2: | 
|---|
| 487 | -------------------------------- | 
|---|
| 488 |  | 
|---|
| 489 | New features: | 
|---|
| 490 |  | 
|---|
| 491 | o wchar.h and wctype.h and much of the non-stream functions | 
|---|
| 492 | declared therein are implemented. Though, the FreeBSD | 
|---|
| 493 | string/w*.c functions are still in the porting queue. | 
|---|
| 494 |  | 
|---|
| 495 | o Added __mcount stub to all LIBC DLLs but the .prf one which | 
|---|
| 496 | is forwarding __mcount from kProfile.dll. | 
|---|
| 497 |  | 
|---|
| 498 | o DosLoadModuleEx and DosFreeModuleEx was created to support | 
|---|
| 499 | loaded modules over a fork(). dlopen/dlclose backend was | 
|---|
| 500 | changed to use these. | 
|---|
| 501 |  | 
|---|
| 502 | o Fixed rand() range problem. Using the BSD code for this | 
|---|
| 503 | too, which means a new algorithm. | 
|---|
| 504 |  | 
|---|
| 505 | o Update all BSD source-files (not headers) to FreeBSD 5.3 | 
|---|
| 506 | level. | 
|---|
| 507 |  | 
|---|
| 508 | o New functions: | 
|---|
| 509 | DosLoadModuleEx(), DosFreeModuleEx(), sranddev(), | 
|---|
| 510 | getsubopt(), rand_r(), llabs(), lldiv(), dlfunc(), | 
|---|
| 511 | issetugid(), pread(), pwrite(), _UTF8_mbrtowc(), | 
|---|
| 512 | _UTF8_mbsinit(), _UTF8_mbsnrtowcs(), _UTF8_wcrtomb(), | 
|---|
| 513 | _UTF8_wcsnrtombs(), digittoint(), isideogram(), | 
|---|
| 514 | isrune(), iswalnum(), iswalpha(), iswascii(), | 
|---|
| 515 |  | 
|---|
| 516 | iswblank(), iswcntrl(), iswctype(), iswdigit(), | 
|---|
| 517 | iswgraph(), iswhexnumber(), iswideogram(), iswlower(), | 
|---|
| 518 | iswnumber(), iswprint(), iswpunct(), iswrune(), | 
|---|
| 519 | iswspace(), iswupper(), iswxdigit(), btowc(), mbrlen(), | 
|---|
| 520 | mbrtowc(), mbsinit(), mbsnrtowcs(), mbsrtowcs(), | 
|---|
| 521 | nl_langinfo(), towctrans(), wcrtomb(), wcsftime(), | 
|---|
| 522 | wcsnrtombs(), wcsrtombs(), wcstod(), wcstof(), | 
|---|
| 523 | wcstoimax(), wcstol(), wcstold(), wcstoll(), wcstoul(), | 
|---|
| 524 | wcstoull(), wcstoumax(), wctob(), wctrans(), wctype(), | 
|---|
| 525 | towlower(), towupper(). | 
|---|
| 526 |  | 
|---|
| 527 |  | 
|---|
| 528 | Bug fixes: | 
|---|
| 529 |  | 
|---|
| 530 | o Fixed missing WNOHANG handling in waitpid(), wait4() | 
|---|
| 531 | and waitid(). | 
|---|
| 532 |  | 
|---|
| 533 | o Corrected several severe bugs in the path resolver. | 
|---|
| 534 |  | 
|---|
| 535 | o Fixed handling of paths ending with slash. | 
|---|
| 536 |  | 
|---|
| 537 | o Fixed weird fork() problem which showed up as a heap | 
|---|
| 538 | deadlock. | 
|---|
| 539 |  | 
|---|
| 540 | o Fixed broken _getdrive(). | 
|---|
| 541 |  | 
|---|
| 542 | o Made _chdrive() return -1 on error. It used to always | 
|---|
| 543 | return success earlier. (don't ask me why) | 
|---|
| 544 |  | 
|---|
| 545 | o Fixed incorrect handling of -shared in GCC. It should | 
|---|
| 546 | be treated as -Zdll. | 
|---|
| 547 |  | 
|---|
| 548 | o Various incorrect assertions in the strict/log build. | 
|---|
| 549 |  | 
|---|
| 550 | o ... | 
|---|
| 551 |  | 
|---|
| 552 | Known Limitiations/Problems: | 
|---|
| 553 |  | 
|---|
| 554 | o Static linking not possible - might be fixed later. | 
|---|
| 555 |  | 
|---|
| 556 | o Job control will only be applied to thread 1 in a process. | 
|---|
| 557 | This won't change. | 
|---|
| 558 |  | 
|---|
| 559 | o Missing some process group interfaces required for | 
|---|
| 560 | job control. They'll show up soon I hope. | 
|---|
| 561 |  | 
|---|
| 562 | o Not tested too well. Especially the regex update. | 
|---|
| 563 |  | 
|---|
| 564 | Todos before LIBC06.DLL: | 
|---|
| 565 |  | 
|---|
| 566 | 0. Fix all bugs. :-) | 
|---|
| 567 |  | 
|---|
| 568 | 1. Implement new ino_t scheme and reimplement opendir | 
|---|
| 569 | in BSD style while doing so (+fchdir). | 
|---|
| 570 |  | 
|---|
| 571 | 2. Shared IPC structures for XSI msq, sem and shm. | 
|---|
| 572 |  | 
|---|
| 573 | 3. Port string/w* functions. | 
|---|
| 574 |  | 
|---|
| 575 | 4. Missing job pgid functions. | 
|---|
| 576 |  | 
|---|
| 577 | 5. Port GLIBC intl/*. gettext is a pita! because it's | 
|---|
| 578 | passing FILE pointers around between different LIBCs. | 
|---|
| 579 | objdump is constantly broken between LIBC versions. | 
|---|
| 580 |  | 
|---|
| 581 |  | 
|---|
| 582 |  | 
|---|
| 583 | GCC v3.3.5 / LIBC v0.6 - Beta 1: | 
|---|
| 584 | -------------------------------- | 
|---|
| 585 |  | 
|---|
| 586 | New features: | 
|---|
| 587 |  | 
|---|
| 588 | o setitimer/alarm implementation. Needs some review later | 
|---|
| 589 | the accuracy isn't extacly great. | 
|---|
| 590 |  | 
|---|
| 591 | o Added a couple of missing os2emx.h features. | 
|---|
| 592 |  | 
|---|
| 593 | o Some more 16-bit thunkers. | 
|---|
| 594 |  | 
|---|
| 595 | Bug fixes: | 
|---|
| 596 |  | 
|---|
| 597 | o Select worker called wrong tcpip function. | 
|---|
| 598 |  | 
|---|
| 599 | o Incorrect assertion during thread destruction. | 
|---|
| 600 |  | 
|---|
| 601 | o Fixed broken chdir and getdrive. | 
|---|
| 602 |  | 
|---|
| 603 | o Improved deadlock detection (fmutex have changed, | 
|---|
| 604 | thus stdio FILE is also changed). | 
|---|
| 605 |  | 
|---|
| 606 | o ... | 
|---|
| 607 |  | 
|---|
| 608 |  | 
|---|
| 609 | Known Limitiations/Problems: | 
|---|
| 610 |  | 
|---|
| 611 | o Static linking not possible - will be fixed. | 
|---|
| 612 |  | 
|---|
| 613 | o Job control will only be applied to thread 1 in a process. | 
|---|
| 614 | This won't change. | 
|---|
| 615 |  | 
|---|
| 616 | o Missing some process group interfaces required for | 
|---|
| 617 | job control. They'll show up soon. | 
|---|
| 618 |  | 
|---|
| 619 | o Doesn't evaluate trailing slash in paths as directory | 
|---|
| 620 | specifier, it's currently ignored. | 
|---|
| 621 |  | 
|---|
| 622 |  | 
|---|
| 623 |  | 
|---|
| 624 | GCC v3.3.5 / LIBC v0.6 - Alpha 3: | 
|---|
| 625 | --------------------------------- | 
|---|
| 626 |  | 
|---|
| 627 | This release have been timebombed and will stop working at the | 
|---|
| 628 | end of December 2004. The reason for this is that data structures | 
|---|
| 629 | shared between LIBC 0.6 and all future LIBC versions are not yet | 
|---|
| 630 | quite finalized. (For your comfort the timebomb will go away when | 
|---|
| 631 | the betas start, and this is the last planned LIBC v0.6 alpha.) | 
|---|
| 632 |  | 
|---|
| 633 |  | 
|---|
| 634 | New Features: | 
|---|
| 635 |  | 
|---|
| 636 | o Updated GCC to version 3.3.5. | 
|---|
| 637 |  | 
|---|
| 638 | o Replaced the signal implementation. The new implementation | 
|---|
| 639 | is much closer to the POSIX specs and implements a lot of | 
|---|
| 640 | new interfaces. | 
|---|
| 641 |  | 
|---|
| 642 | o Experimental delayed loading import libraries. emximp have | 
|---|
| 643 | a new -l option for generating such libraries. At present | 
|---|
| 644 | emximp can only generate a.out libraries of this kind - so | 
|---|
| 645 | use emxomf to convert to OMF. | 
|---|
| 646 |  | 
|---|
| 647 | o The dlfcn.h functions are in LIBC now. | 
|---|
| 648 |  | 
|---|
| 649 | o New functions: | 
|---|
| 650 | getgrouplist(), initgroups(), memalign(), valloc(), | 
|---|
| 651 | mprotect(), _signal_os2(), _signal_sysv(), | 
|---|
| 652 | __sigpause_bsd(), bsd_signal(), killpg(), psignal(), | 
|---|
| 653 | sigaltstack(), sigblock(), sighold(), sigignore(), | 
|---|
| 654 | siginterrupt(), sigpause(), sigrelse(), sigsetmask(), | 
|---|
| 655 | sigtimedwait(), sigvec(), sigwait(), sigwaitinfo(), | 
|---|
| 656 | sigqueue(), sigset(), getgrgid(), getpwnam(), | 
|---|
| 657 | getpwuid(), setegid(), seteuid(), setregid(), | 
|---|
| 658 | setresgid(), setresuid(), setreuid(), | 
|---|
| 659 | setrgid(), setruid(), waitid(), wait3(), | 
|---|
| 660 | wait4() and getopt_long_only(). | 
|---|
| 661 |  | 
|---|
| 662 |  | 
|---|
| 663 | Bug fixes; | 
|---|
| 664 |  | 
|---|
| 665 | o Sockets were broken on some systems. Hopefully, this | 
|---|
| 666 | should be corrected now. | 
|---|
| 667 |  | 
|---|
| 668 | o stat() failed on a file open for writing. | 
|---|
| 669 |  | 
|---|
| 670 | o fork() didn't work for processes which allocated lot's | 
|---|
| 671 | of memory. Fixed incorrect syncing of memory objects. | 
|---|
| 672 |  | 
|---|
| 673 | o ... | 
|---|
| 674 |  | 
|---|
| 675 |  | 
|---|
| 676 | Known Limitiations/Problems: | 
|---|
| 677 |  | 
|---|
| 678 | o Static linking not possible - will be fixed. | 
|---|
| 679 |  | 
|---|
| 680 | o alarm() is still missing. Code is 80% done but didn't | 
|---|
| 681 | make it for the release. | 
|---|
| 682 |  | 
|---|
| 683 | o Job control will only be applied to thread 1 in a process. | 
|---|
| 684 | This won't change. | 
|---|
| 685 |  | 
|---|
| 686 | o Missing some process group interfaces required for | 
|---|
| 687 | job control. They'll show up soon. | 
|---|
| 688 |  | 
|---|
| 689 |  | 
|---|
| 690 |  | 
|---|
| 691 | GCC v3.3.4 / LIBC v0.6 - Alpha 2: | 
|---|
| 692 | --------------------------------- | 
|---|
| 693 |  | 
|---|
| 694 | This release have been timebombed and will stop work at the | 
|---|
| 695 | end of October 2004. The reason for this is that data structures | 
|---|
| 696 | shared between LIBC 0.6 and all future LIBC versions are not yet | 
|---|
| 697 | finalized. | 
|---|
| 698 |  | 
|---|
| 699 |  | 
|---|
| 700 | New Features: | 
|---|
| 701 |  | 
|---|
| 702 | o Updated GCC to version 3.3.4. | 
|---|
| 703 |  | 
|---|
| 704 | o 2nd fork() implementation. | 
|---|
| 705 | All binaries are by default forkable, use the link option | 
|---|
| 706 | -Zno-fork to disable this. | 
|---|
| 707 | The fork implementation rendered _rmutex useless and it | 
|---|
| 708 | has been removed. | 
|---|
| 709 |  | 
|---|
| 710 | o Symlinks using EAs. This is work in progress. One of the | 
|---|
| 711 | limitiations is that readir will not report DT_LNK yet. | 
|---|
| 712 |  | 
|---|
| 713 | o Unix compartment using chroot(). This offers a | 
|---|
| 714 | redirection of '/' to the chroot'ed root. The entrance | 
|---|
| 715 | to the compartment is the '/'. The exits are drive letters. | 
|---|
| 716 | The unix compartment is inherited by LIBC child processes. | 
|---|
| 717 |  | 
|---|
| 718 | o getcwd() will now return the driveletter too (as VAC does) | 
|---|
| 719 | when not inside the unix compartement. | 
|---|
| 720 | _getcwdux() has been provided for porters which requires | 
|---|
| 721 | behaviour like the old getcwd() implementation. | 
|---|
| 722 |  | 
|---|
| 723 | o Paths to unix files #defined in headers are now prefixed | 
|---|
| 724 | with "/@unixroot" which will be redirected to where the | 
|---|
| 725 | environment variable UNIXROOT points. After calling | 
|---|
| 726 | chroot() the target of "/@unixroot" will be changed too. | 
|---|
| 727 |  | 
|---|
| 728 | o LIBC specific path rewriting (redirection). Built in is | 
|---|
| 729 | "/dev/null", "/dev/tty" and "/@unixroot". | 
|---|
| 730 | The environment variable LIBC_PATHREWRITERS is examined | 
|---|
| 731 | during init and DLLs specified in it are loaded and called. | 
|---|
| 732 | See src/emx/src/sys/pathrewrite.c for more details. | 
|---|
| 733 |  | 
|---|
| 734 | o Non-unix like mode - link option -Zno-unix. | 
|---|
| 735 | This affects slashes and various other Unix-like features | 
|---|
| 736 | like for instance fork and symlinks. | 
|---|
| 737 |  | 
|---|
| 738 | o Printf et al. have been extended to support some new format | 
|---|
| 739 | specifiers. (It's still lacking a bit to be SuS comforming.) | 
|---|
| 740 |  | 
|---|
| 741 | o Sockets handles are now inherited by LIBC child processes. | 
|---|
| 742 |  | 
|---|
| 743 | o LIBC specific filehandle flags are now inherited by LIBC | 
|---|
| 744 | child processes. | 
|---|
| 745 |  | 
|---|
| 746 | o The GCCxyz.DLL is no longer needed when LIBC is used. | 
|---|
| 747 | However it is still shipped for special cases where LIBC | 
|---|
| 748 | isn't needed. | 
|---|
| 749 |  | 
|---|
| 750 | o A good bunch of 'new' functions both from the SuS and from | 
|---|
| 751 | various Unix flavors, even one or two PC functions have been | 
|---|
| 752 | added. Accompanying these are new headers and header updates. | 
|---|
| 753 | Here are most of the new function names: | 
|---|
| 754 | __strverscmp(), _atfork_callback(), _getcwdux(), | 
|---|
| 755 | _getdcwd(), _nsdbtaddsrc(), _nsdbtput(), _nsdispatch(), | 
|---|
| 756 | _realrealpath(), canonicalize_file_name(), catclose(), | 
|---|
| 757 | catgets(), catopen(), chown(), chroot(), eaccess(), | 
|---|
| 758 | endgrent(), endnetgrent(), endusershell(), fchown(), | 
|---|
| 759 | fstatfs(), fstatvfs(), getdtablesize(), getfsstat(), | 
|---|
| 760 | getgrent(), getgrent_r(), getgrgid_r(), getgrnam_r(), | 
|---|
| 761 | getloadavg(), getmntinfo(), getnetgrent(), | 
|---|
| 762 | getpwent_r(), getpwnam_r(), getpwuid_r(), getrlimit(), | 
|---|
| 763 | getusershell(), innetgr(), lchown(), link(), mknod(), | 
|---|
| 764 | readlink(), setgrent(), setgroupent(), setgroups(), | 
|---|
| 765 | setnetgrent(), setpassent(), setrlimit(), | 
|---|
| 766 | setusershell(), sl_add(), sl_find(), sl_free(), | 
|---|
| 767 | sl_init(), statfs(), statvfs(), strmode(), strtok_r(), | 
|---|
| 768 | symlink() and sync(). | 
|---|
| 769 |  | 
|---|
| 770 |  | 
|---|
| 771 | Bug fixes: | 
|---|
| 772 |  | 
|---|
| 773 | o setlocale() have been rewritten. The code page is now | 
|---|
| 774 | taken from the locale rather than OS/2. Old behaviour | 
|---|
| 775 | is used if environment variable LIBC_SETLOCALE_OLDSTYLE | 
|---|
| 776 | is defined. | 
|---|
| 777 |  | 
|---|
| 778 | o Buggy strspn() replaced by BSD implementation. | 
|---|
| 779 |  | 
|---|
| 780 | o Thread backend have been reworked fixing certain | 
|---|
| 781 | problems when LIBC was loaded and initialized in threads | 
|---|
| 782 | other than the primary one. A LIBC specific TLS api | 
|---|
| 783 | was created during this effort. | 
|---|
| 784 |  | 
|---|
| 785 | o Fixed a missing export from GCCxyz.dll which was causing | 
|---|
| 786 | incorrect behaviour of C++ exceptions in all previous | 
|---|
| 787 | releases. | 
|---|
| 788 |  | 
|---|
| 789 | o Fixed a buffer overrun in iconv_open() which caused a | 
|---|
| 790 | corruption of the FS selector register, thus crashing | 
|---|
| 791 | the processing. | 
|---|
| 792 |  | 
|---|
| 793 | o ... | 
|---|
| 794 |  | 
|---|
| 795 |  | 
|---|
| 796 | Known limitations and bugs: | 
|---|
| 797 |  | 
|---|
| 798 | o mktime() works incorrectly for exterme values causing | 
|---|
| 799 | configure test to fail. | 
|---|
| 800 |  | 
|---|
| 801 | o NSS probably doesn't work. | 
|---|
| 802 |  | 
|---|
| 803 | o Trailing slashes of a path specification are not | 
|---|
| 804 | handled correctly after the rewrite of the path | 
|---|
| 805 | handling. | 
|---|
| 806 |  | 
|---|
| 807 | o New path handling is not DBCS ready. | 
|---|
| 808 |  | 
|---|
| 809 | o Socket handle duplication have not been implemented yet. | 
|---|
| 810 |  | 
|---|
| 811 | o The __<syscall> function are in the process of being | 
|---|
| 812 | removed. | 
|---|
| 813 |  | 
|---|
| 814 | o Not tested with mozilla. | 
|---|
| 815 |  | 
|---|
| 816 |  | 
|---|
| 817 |  | 
|---|
| 818 | v3.2.2 Beta 4 CSD 1: | 
|---|
| 819 | -------------------- | 
|---|
| 820 |  | 
|---|
| 821 | Bug fixes: | 
|---|
| 822 |  | 
|---|
| 823 | o Fixed crash in file stream allocation code. | 
|---|
| 824 |  | 
|---|
| 825 | o Fixed incorrect time on machines which had DATETIME::timezone | 
|---|
| 826 | set. This fix changes the time granularity from hundredths of | 
|---|
| 827 | a second to milliseconds. | 
|---|
| 828 |  | 
|---|
| 829 | o Added the SPBCDATA struct, the defines FCF_CLOSEBUTTON and | 
|---|
| 830 | BS_NOTEBOOKBUTTON and infosegment structs to os2emx.h | 
|---|
| 831 |  | 
|---|
| 832 | o Fixed bug in sys/locale.h where it hid the lconv struct. | 
|---|
| 833 |  | 
|---|
| 834 | o Fixed missing error number translations in getsockopt() and | 
|---|
| 835 | setsockopt(). | 
|---|
| 836 |  | 
|---|
| 837 | o Fixed potential conflict caused by sys/types.h not defining | 
|---|
| 838 | _KEY_T with the key_t typedef. | 
|---|
| 839 |  | 
|---|
| 840 | o Fixed missing 64bit I/O support in ftell(), fstat() and stat(). | 
|---|
| 841 |  | 
|---|
| 842 | o Fixed UCS-2 codepage mappings. | 
|---|
| 843 |  | 
|---|
| 844 | o Fixed problem with emxbind not recognizing option -e and | 
|---|
| 845 | a problem with case sensitivity in the export checking. | 
|---|
| 846 |  | 
|---|
| 847 |  | 
|---|
| 848 | v3.2.2 Beta 4: | 
|---|
| 849 | -------------- | 
|---|
| 850 |  | 
|---|
| 851 | (The changelog is removed, thus the release notes are more detailed.) | 
|---|
| 852 |  | 
|---|
| 853 | New features and fixes: | 
|---|
| 854 |  | 
|---|
| 855 | o Filehandle rewrite. Files, pipes and sockets now share the same | 
|---|
| 856 | handle space. | 
|---|
| 857 |  | 
|---|
| 858 | o Updated binutils from v2.11.2 to v2.14 adding as-elf.exe and | 
|---|
| 859 | ld-elf.exe as goodies for the adventurous. | 
|---|
| 860 |  | 
|---|
| 861 | o GCC defines __INNOTEK_LIBC__=0x005. | 
|---|
| 862 | The value reflects the LIBC version, form: 0xGMM | 
|---|
| 863 | Where G=major version and MM=middle version numbers. | 
|---|
| 864 |  | 
|---|
| 865 | o Changed library search algorithms for the linkers (emxomfld | 
|---|
| 866 | and ld). Three variations, static, shared and shared+dll. | 
|---|
| 867 | (The options indicated corresponds to what binutils 2.12.x | 
|---|
| 868 | documents.) | 
|---|
| 869 | static: (-Bstatic, -non_shared, -dn, -static) | 
|---|
| 870 | 1. libfoo_s.a | 
|---|
| 871 | 2. foo_s.a | 
|---|
| 872 | 3. libfoo.a | 
|---|
| 873 | 4. foo.a | 
|---|
| 874 | shared: (default, -Bshared, -call_shared, -dy) | 
|---|
| 875 | 1. libfoo_dll.a | 
|---|
| 876 | 2. foo_dll.a | 
|---|
| 877 | 3. libfoo.a | 
|---|
| 878 | 4. foo.a | 
|---|
| 879 | 5. libfoo_s.a | 
|---|
| 880 | 6. foo_s.a | 
|---|
| 881 | shared+dll: (-Zdll-search with -Bshared, -call_shared, -dy) | 
|---|
| 882 | 1. libfoo_dll.a | 
|---|
| 883 | 2. foo_dll.a | 
|---|
| 884 | 3. libfoo.a | 
|---|
| 885 | 4. foo.a | 
|---|
| 886 | 5. foo.dll | 
|---|
| 887 | 6. libfoo_s.a | 
|---|
| 888 | 7. foo_s.a | 
|---|
| 889 |  | 
|---|
| 890 | o Added some deadlock checking/termination checks to semphores. | 
|---|
| 891 |  | 
|---|
| 892 | o Added macros to os2emx.h for preserving FPU control word and | 
|---|
| 893 | applied these to certain read and write operations in LIBC. | 
|---|
| 894 |  | 
|---|
| 895 | o Added feature to emxomfld to automatically convert a.out | 
|---|
| 896 | libraries and objects to OMF (using temporary files). Enabled | 
|---|
| 897 | by default but can be disabled by the option -Zno-autoconv. | 
|---|
| 898 |  | 
|---|
| 899 | o Added support to emximp for dlls. | 
|---|
| 900 |  | 
|---|
| 901 | o Added support for automatic conversion of dlls to temporary | 
|---|
| 902 | import libraries emxomfld and ld. | 
|---|
| 903 |  | 
|---|
| 904 | o Added getopt_long() and changed getopt() to FreeBSD | 
|---|
| 905 | implementations. | 
|---|
| 906 |  | 
|---|
| 907 | o Added a few more code page aliases. | 
|---|
| 908 |  | 
|---|
| 909 | o Added optional breakpoint in abort. The presense of the env.var. | 
|---|
| 910 | LIBC_BREAKPOINT_ABORT triggers the breakpoint instruction. | 
|---|
| 911 |  | 
|---|
| 912 | o Added syslog interfaces (contrib from Yuri Dario). | 
|---|
| 913 |  | 
|---|
| 914 | o Added to libc and updated BSD db code to FreeBSD 5.1 level. | 
|---|
| 915 |  | 
|---|
| 916 | o Added to libc and updated regex code to FreeBSD 5.1 level. | 
|---|
| 917 |  | 
|---|
| 918 | o Ported the posix spawn api from GLIBC v2.3.2. | 
|---|
| 919 |  | 
|---|
| 920 | o Updated with os2emx.h flags for DosQueryMemState(). | 
|---|
| 921 |  | 
|---|
| 922 | o Changed size_t to unsigned int (from unsigned long int) and | 
|---|
| 923 | ptrdiff_t to signed int (from signed long int) to comply with | 
|---|
| 924 | most of the other i386 environments. | 
|---|
| 925 |  | 
|---|
| 926 | o Changed abort and default signal termination messages to say | 
|---|
| 927 | which process it's printed from. | 
|---|
| 928 |  | 
|---|
| 929 | o Changed the glob() and globfree() implemenation with a port of | 
|---|
| 930 | the FreeBSD 5.1 implemenation. | 
|---|
| 931 |  | 
|---|
| 932 | o Changed so_ioctl() to os2_ioctl() to better match the toolkit. | 
|---|
| 933 |  | 
|---|
| 934 | o Changed time_t to be signed as in BSD & linux. | 
|---|
| 935 | (Negative values means date/time before epoc.) | 
|---|
| 936 |  | 
|---|
| 937 | o Changed to FreeBSD implementation of difftime(). | 
|---|
| 938 |  | 
|---|
| 939 | o Increased default stream buffer size to 2 pages. | 
|---|
| 940 |  | 
|---|
| 941 | o Workaround for DosSetFileLocksL() on non JFS volumes. | 
|---|
| 942 |  | 
|---|
| 943 | o Workaround for bad FIL_STANDARDL buffer handling in os2krnl. | 
|---|
| 944 |  | 
|---|
| 945 | o Fixed waitpid() to respect the WNOHANG flag. | 
|---|
| 946 |  | 
|---|
| 947 | o Fixed strerror() to set errno if an invalid error number is | 
|---|
| 948 | specified. | 
|---|
| 949 |  | 
|---|
| 950 | o Fixed problem with emxexp emitting ordinal without being told. | 
|---|
| 951 |  | 
|---|
| 952 | o Fixed broken setenv(). | 
|---|
| 953 |  | 
|---|
| 954 | o Fixed errno value for read() and write() when the handle isn't | 
|---|
| 955 | opened for that operation. | 
|---|
| 956 |  | 
|---|
| 957 | o Fixed a bad record length problem in emxomf. | 
|---|
| 958 |  | 
|---|
| 959 | o Fixed type_tag too long issue in emxomf. | 
|---|
| 960 |  | 
|---|
| 961 | o Fixed repetition of main source file in HLL debuginfo (emxomf). | 
|---|
| 962 |  | 
|---|
| 963 | o Fixed weakld problem with selfrefering aliases. | 
|---|
| 964 |  | 
|---|
| 965 | o Fixed weakld problem with PUBLIC and COMM clash. | 
|---|
| 966 |  | 
|---|
| 967 | o Fixed problem with streams not being flushed on termination. | 
|---|
| 968 |  | 
|---|
| 969 | o Fixed define clash in float.h when in C99 mode. | 
|---|
| 970 |  | 
|---|
| 971 | o Fixed abend in GCC if TMPDIR or TMP was ending with a slash. | 
|---|
| 972 |  | 
|---|
| 973 | o Fixed crash in ld when having fixups to weak symbols. | 
|---|
| 974 |  | 
|---|
| 975 | o Fixed bad conversion of dll0*.o to OMF, the OMF version got an | 
|---|
| 976 | unwanted stack object. | 
|---|
| 977 |  | 
|---|
| 978 | o New functions: | 
|---|
| 979 | isblank(), ishexnumber(), isnumber(), mempcpy(), realpath(), | 
|---|
| 980 | strnlen(), asctime_r(), ctime_r(), gmtime_r(), localtime_r(), | 
|---|
| 981 | strerror_r(), usleep(). | 
|---|
| 982 |  | 
|---|
| 983 | o New functions & globals (from FreeBSD 5.1): | 
|---|
| 984 | imaxabs(), imaxdiv(), strtoimax(), strtoumax(), hcreate(), | 
|---|
| 985 | hdestroy(), hsearch(), insque(), lfind(), lsearch(), | 
|---|
| 986 | remque(), tdelete(), tfind(), tsearch(), twalk(), reallocf(), | 
|---|
| 987 | strsignal(), sys_signame, sys_siglist, sys_nsig, regcomp(), | 
|---|
| 988 | regerror(), regexec(), regfree(), + bsd db functions. | 
|---|
| 989 |  | 
|---|
| 990 | o New functions (from GLIBC 2.3.2): | 
|---|
| 991 | error(), error_at_line(), strndup(), argz_add(), | 
|---|
| 992 | argz_add_sep(), argz_append(), argz_count(), argz_create(), | 
|---|
| 993 | argz_create_sep(), argz_delete(), argz_extract(), | 
|---|
| 994 | argz_insert(), argz_next(), argz_replace(), argz_stringify(), | 
|---|
| 995 | posix_spawnp() posix_spawn(), posix_spawnattr_destroy(), | 
|---|
| 996 | posix_spawnattr_getflags(), posix_spawnattr_getpgroup(), | 
|---|
| 997 | posix_spawnattr_getschedparam(), | 
|---|
| 998 | posix_spawnattr_getschedpolicy(), | 
|---|
| 999 | posix_spawnattr_getsigdefault(), | 
|---|
| 1000 | posix_spawnattr_getsigmask(), posix_spawnattr_init(), | 
|---|
| 1001 | posix_spawnattr_setflags(), posix_spawnattr_setpgroup(), | 
|---|
| 1002 | posix_spawnattr_setschedparam(), | 
|---|
| 1003 | posix_spawnattr_setschedpolicy(), | 
|---|
| 1004 | posix_spawnattr_setsigdefault(), | 
|---|
| 1005 | posix_spawnattr_setsigmask(), | 
|---|
| 1006 | posix_spawn_file_actions_addclose(), | 
|---|
| 1007 | posix_spawn_file_actions_adddup2(), | 
|---|
| 1008 | posix_spawn_file_actions_addopen(), | 
|---|
| 1009 | posix_spawn_file_actions_destroy(), | 
|---|
| 1010 | posix_spawn_file_actions_init() | 
|---|
| 1011 |  | 
|---|
| 1012 | o New headers: | 
|---|
| 1013 | nerrno.h (toolkit compatability). | 
|---|
| 1014 |  | 
|---|
| 1015 | o New headers (from FreeBSD 5.1): | 
|---|
| 1016 | search.h, sys/queue.h, net/if_types.h. | 
|---|
| 1017 |  | 
|---|
| 1018 | o New headers (from GLIBC 2.3.2): | 
|---|
| 1019 | features.h (somewhat crippled), | 
|---|
| 1020 | sys/gnu/cdefs.h (included from BSD styled sys/cdefs.h). | 
|---|
| 1021 |  | 
|---|
| 1022 | o Updated headers: | 
|---|
| 1023 | stddef.h (FreeBSD, sys/stddef.h (FreeBSD), | 
|---|
| 1024 | ulsitem.h (missing defines), os2emx.h, ... | 
|---|
| 1025 |  | 
|---|
| 1026 | o What I forgot... | 
|---|
| 1027 |  | 
|---|
| 1028 |  | 
|---|
| 1029 | v3.2.2 Beta 3 Fix 1 (private build): | 
|---|
| 1030 | ------------------------------------ | 
|---|
| 1031 |  | 
|---|
| 1032 | Fixes to LIBC: | 
|---|
| 1033 |  | 
|---|
| 1034 | o Crash if calloc was called before main(). | 
|---|
| 1035 |  | 
|---|
| 1036 | o TZ parsing of timezones such as PST8EDT. | 
|---|
| 1037 |  | 
|---|
| 1038 | o sigsetjmp() and siglongjmp() visibility. | 
|---|
| 1039 |  | 
|---|
| 1040 |  | 
|---|
| 1041 | v3.2.2 Beta 3: | 
|---|
| 1042 | -------------- | 
|---|
| 1043 |  | 
|---|
| 1044 | A few new features and fixes. | 
|---|
| 1045 |  | 
|---|
| 1046 | o Fixed a bunch of debug info problems. | 
|---|
| 1047 |  | 
|---|
| 1048 | o Added large file support. | 
|---|
| 1049 |  | 
|---|
| 1050 | o Enabled high memory support for LIBC. Two new options to GCC: | 
|---|
| 1051 | -Zhigh-mem and -Zhigh-low. If the program is to be enabled for | 
|---|
| 1052 | high memory use, specify -Zhigh-mem when linking. | 
|---|
| 1053 |  | 
|---|
| 1054 | Note that socket is not high memory enabled yet. | 
|---|
| 1055 |  | 
|---|
| 1056 | o Made LIBC preserve the FS selector. | 
|---|
| 1057 |  | 
|---|
| 1058 | o Added random() and *rand48() from BSD. | 
|---|
| 1059 |  | 
|---|
| 1060 | o Fixed crash with link386 and unresolved symbols. | 
|---|
| 1061 |  | 
|---|
| 1062 |  | 
|---|
| 1063 | v3.2.2 Beta 2: | 
|---|
| 1064 | -------------- | 
|---|
| 1065 |  | 
|---|
| 1066 | A few bugfixes and a some new features (as usual). | 
|---|
| 1067 |  | 
|---|
| 1068 | o Added file locking support to LIBC. | 
|---|
| 1069 |  | 
|---|
| 1070 | o Fixed _System and _Optlink bugs and made _Optlink support | 
|---|
| 1071 | floating point argument passing in registers. | 
|---|
| 1072 |  | 
|---|
| 1073 | o Header updates related to limits and file locking primarily. | 
|---|
| 1074 |  | 
|---|
| 1075 | o Timezone fixes. | 
|---|
| 1076 |  | 
|---|
| 1077 | o Fixed some CRT init trouble in regards to getenv and putenv. | 
|---|
| 1078 |  | 
|---|
| 1079 | o And some other minor stuff.. | 
|---|
| 1080 |  | 
|---|
| 1081 |  | 
|---|
| 1082 | v3.2.2 Beta 1: | 
|---|
| 1083 | -------------- | 
|---|
| 1084 |  | 
|---|
| 1085 | A few bugfixes and a some new features. | 
|---|
| 1086 |  | 
|---|
| 1087 | o Locale support in libc. | 
|---|
| 1088 |  | 
|---|
| 1089 | o Implemented a different approach to OMF and weak symbols. This | 
|---|
| 1090 | new hack performs pre-linking before invoking the OMF linker | 
|---|
| 1091 | generating new .def files if needed and an extra object file with | 
|---|
| 1092 | aliases to resolve the weak symbols correctly. | 
|---|
| 1093 | The old approach will be used used when GCC_WEAKSYMS is present in | 
|---|
| 1094 | the environment. | 
|---|
| 1095 |  | 
|---|
| 1096 | Please note that due to a bug in BFD, weak symbols don't work | 
|---|
| 1097 | 100% correctly. This will be addressed as soon as we have | 
|---|
| 1098 | performed the switch to a more recent version of binutils. | 
|---|
| 1099 |  | 
|---|
| 1100 | o A couple of new functions in libc, and a few corrections to | 
|---|
| 1101 | existing in respect to namespaces. | 
|---|
| 1102 |  | 
|---|
| 1103 | o Addressed issues with calling conventions. We now detect | 
|---|
| 1104 | incompatible calling conventions, emitting warnings and errors | 
|---|
| 1105 | where appropriate. | 
|---|
| 1106 |  | 
|---|
| 1107 | o _Optlink is much better, but there are still some issues | 
|---|
| 1108 | left. Passing prototyped floating point parameters to | 
|---|
| 1109 | _Optlink doesn't work. Mixing of parameters which go into | 
|---|
| 1110 | registers (eax, edx, ecx) and parameters which | 
|---|
| 1111 | don't - void foo(int eax, struct sss s, int edx) - doesn't | 
|---|
| 1112 | work. All these issues are being addressed and are expected | 
|---|
| 1113 | to be fixed in the next build. | 
|---|
| 1114 |  | 
|---|
| 1115 | o Changed GCC to link with shared libc by default. This means | 
|---|
| 1116 | that in order to link with the static libc one has to specify | 
|---|
| 1117 | -static. It also means that -Zmtd or -Zcrtdll are no longer | 
|---|
| 1118 | required for linking with shared libc and can be removed from | 
|---|
| 1119 | all makescripts. | 
|---|
| 1120 |  | 
|---|
| 1121 | o Changed EMXOMFLD defaults to ilink from Visual Age for C++ | 
|---|
| 1122 | v3.6.5 or later (preferably later). The emxomfld usage output | 
|---|
| 1123 | will instruct you on how to use older linkers. For VAC308 and | 
|---|
| 1124 | VAC365 linkers /dbgpack is specified if debuginfo is to be | 
|---|
| 1125 | generated. Emxomf checks for EMXOMFLD_TYPE=link386 when choosing | 
|---|
| 1126 | debug info level. | 
|---|
| 1127 |  | 
|---|
| 1128 | o Shipping three extra libc dlls: | 
|---|
| 1129 | libc02.dbg:     Unstripped version of libc02.dll. This is | 
|---|
| 1130 | identical except from the presense of debug | 
|---|
| 1131 | info. | 
|---|
| 1132 | libc02.prf:     Linked together from profiled enabled | 
|---|
| 1133 | libraries using kProfiler. | 
|---|
| 1134 | libc02.elh:     Standard libc but linked with an external | 
|---|
| 1135 | electrical fence heap from kLibDbg. | 
|---|
| 1136 | These libc02.* dlls can be used instead of libc02.dll. kLibDbg | 
|---|
| 1137 | and kProfiler is available in separate zip files at same | 
|---|
| 1138 | location as the rest of the InnoTek GCC suite. However these | 
|---|
| 1139 | external tools are provided as is. (I might actually not find | 
|---|
| 1140 | time to put them out yet.) | 
|---|
| 1141 |  | 
|---|
| 1142 | o Distribution is splitted into several zips: | 
|---|
| 1143 | -core.zip:  All you really need. | 
|---|
| 1144 | -dbg.zip:   Map files, unstripped tools and libs, and | 
|---|
| 1145 | libc02.elh. | 
|---|
| 1146 | -prf.zip:   Profiling libraries and libc02.prf. | 
|---|
| 1147 | libc.zip:   The runtime libraries. (included in core.) | 
|---|
| 1148 | The big zip is everything. | 
|---|
| 1149 |  | 
|---|
| 1150 | v3.2.2 Alpha 3: | 
|---|
| 1151 | --------------- | 
|---|
| 1152 |  | 
|---|
| 1153 | Primarily bugfixes. | 
|---|
| 1154 |  | 
|---|
| 1155 | o Changed code generator for floating point truncations (double | 
|---|
| 1156 | to int casts and such) so PM can freely mess up the fpu status. | 
|---|
| 1157 |  | 
|---|
| 1158 | o We were using the wrong float.h in two sense. We're now using | 
|---|
| 1159 | the correct one which includes all the PC defines and | 
|---|
| 1160 | prototypes. | 
|---|
| 1161 |  | 
|---|
| 1162 | o Fixed a few issues with error defines and tcpip. | 
|---|
| 1163 | Note that some of the error defines have changed value in the | 
|---|
| 1164 | process so we could become compatible with the tcpip stack | 
|---|
| 1165 | and FreeBSD. | 
|---|
| 1166 |  | 
|---|
| 1167 | o Corrected bugs in a number of headers. | 
|---|
| 1168 |  | 
|---|
| 1169 | o Added more OS/2 prototypes and imports. There is still work | 
|---|
| 1170 | left on the header part, | 
|---|
| 1171 |  | 
|---|
| 1172 | o Optimized emxomf debug info conversion. | 
|---|
| 1173 |  | 
|---|
| 1174 | o Wrapped bsdselect for BSD 4.4 header mode to implement | 
|---|
| 1175 | bsdselect(). | 
|---|
| 1176 |  | 
|---|
| 1177 | o .... what did we forget... | 
|---|
| 1178 |  | 
|---|
| 1179 |  | 
|---|
| 1180 | v3.2.2 Alpha 2: | 
|---|
| 1181 | --------------- | 
|---|
| 1182 |  | 
|---|
| 1183 | A few bugfixes and a couple of new features. | 
|---|
| 1184 |  | 
|---|
| 1185 | o The TCP/IP headers and libraries scheme have been changed. | 
|---|
| 1186 | The default is the current OS/2 tcpip toolkit (BSD 4.4 based). | 
|---|
| 1187 | To target the older OS/2 tcpip stack (BSD 4.3 based) you must | 
|---|
| 1188 | define TCPV40HDRS before including any TCP/IP headers and make | 
|---|
| 1189 | sure usr/lib/tcpipv4 is searched before usr/lib (this is to | 
|---|
| 1190 | get the right libsocket). It is recommended to use the -D | 
|---|
| 1191 | compiler option for the define and either the LIBRARY_PATH or | 
|---|
| 1192 | the -L compiler/linker option for the library. | 
|---|
| 1193 |  | 
|---|
| 1194 | o There are a couple of new and updated based on FreeBSD 5.1. | 
|---|
| 1195 | sys\stdint.h and inttypes.h (and a few internal once) are new. | 
|---|
| 1196 | sys\types.h and unistd.h are the ones most heavily updated. | 
|---|
| 1197 | We're working on getting the headers and libc in a better | 
|---|
| 1198 | shape standardwise to easy compatability and portability. | 
|---|
| 1199 |  | 
|---|
| 1200 | o A infinite loop in emxomf has been fixed. | 
|---|
| 1201 |  | 
|---|
| 1202 | o Linker error on sopen() has been corrected. | 
|---|
| 1203 |  | 
|---|
| 1204 | o .... what did we forget... | 
|---|
| 1205 |  | 
|---|
| 1206 |  | 
|---|
| 1207 | v3.2.2 Alpha 1: | 
|---|
| 1208 | --------------- | 
|---|
| 1209 |  | 
|---|
| 1210 | This is the first release from InnoTek, and it contains the InnoTek LIBC. | 
|---|
| 1211 | In addition to the new LIBC there is a number of other major changes: | 
|---|
| 1212 |  | 
|---|
| 1213 | o Name mangling in OMF mode have changed. | 
|---|
| 1214 | Until this release emxomf used to pretty much strip one leading '_' | 
|---|
| 1215 | from symbols when converting them to omf. This is now longer done | 
|---|
| 1216 | chiefly in order to correctly support mangling calling conventions | 
|---|
| 1217 | like __stdcall and __cdecl. This change have the following side | 
|---|
| 1218 | effects: | 
|---|
| 1219 | - _System and __cdecl no longer produces the same names and hence | 
|---|
| 1220 | all OS/2 API which are _System must be declared as _System in | 
|---|
| 1221 | order to link. | 
|---|
| 1222 | - Assembly code might need an extra underscore to work, or | 
|---|
| 1223 | perhaps change the prototypes to _System. | 
|---|
| 1224 | - Global variables are prepended and underscore, so mixing VAC and | 
|---|
| 1225 | GCC, or accessing globals from asm, take care. | 
|---|
| 1226 | (MSC v6.0 does this too, so it's not any uncommon practise.) | 
|---|
| 1227 |  | 
|---|
| 1228 | The OS/2 headers which are included are all updated to use _System. | 
|---|
| 1229 |  | 
|---|
| 1230 | o TCPIP headers are updated a quite a bit to match the toolkit ones | 
|---|
| 1231 | and to reflect the fact that the new libc does not a having common | 
|---|
| 1232 | handle space for files and sockets. These changes aren't 100% | 
|---|
| 1233 | completed yet, and usage probably will uncover some issues left in | 
|---|
| 1234 | there. Also for the programmer there is the following changes in | 
|---|
| 1235 | the apis provided: | 
|---|
| 1236 | - TCPV40HDRS are supported and should work like with the toolkit | 
|---|
| 1237 | headers. It will alias all functions to tcpip40_ editions | 
|---|
| 1238 | (using #defines) so we get the right imports thru -llibsocket. | 
|---|
| 1239 | - There is no support for sockets in select(). To do select on | 
|---|
| 1240 | sockets you will have to use bsdselect() or os2_select(). | 
|---|
| 1241 | bsdselect() is only available for TCPV40HDRS. For | 
|---|
| 1242 | !defined(TCPV40HDRS) fd_set is in the emx/bsd format and not the | 
|---|
| 1243 | OS/2 tcpip v5.0 format. | 
|---|
| 1244 | - Socket IOCTLs are not supported by the ioctl() libc function | 
|---|
| 1245 | because of the separate handle space for sockets. For sockets | 
|---|
| 1246 | so_ioctl() and os2_ioctl() are used. os2_ioctl() is not available | 
|---|
| 1247 | when TCPV40HDRS is defined. According to the tcpref in v5.0 | 
|---|
| 1248 | so_ioctl() only supports BSD ioctls. | 
|---|
| 1249 | - writev() and readv() also clashes with libc. For socket handles | 
|---|
| 1250 | use so_writev() and so_readv(). | 
|---|
| 1251 |  | 
|---|
| 1252 | o The prefered OMF linker is now ilink. link386 will fail with an odd | 
|---|
| 1253 | error message if you tell gcc/g++ to make debug info. Set the | 
|---|
| 1254 | EMXOMFLD_LINKER environment variable to value ilink in order to use | 
|---|
| 1255 | ilink as OMF linker. | 
|---|
| 1256 | It likely that we will change the default OMF linker to ilink in an | 
|---|
| 1257 | later version of the GCC suite. | 
|---|
| 1258 |  | 
|---|
| 1259 | o .... what did we forget... | 
|---|