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