source: trunk/doc/ReleaseNotes.os2@ 3174

Last change on this file since 3174 was 2669, checked in by bird, 20 years ago

synced with current libc-0.6 changes.

  • Property cvs2svn:cvs-rev set to 1.32
  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 46.4 KB
Line 
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 ([email protected])
8(C)'2003-2005 InnoTek Systemberatung GmbH (http://www.innotek.de)
9
10
11GCC 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
74GCC 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 [email protected] 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
166GCC 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
261GCC 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
391GCC 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
486GCC 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
583GCC v3.3.5 / LIBC v0.6 - Beta 1:
584--------------------------------
585
586 New features:
587
588 o setitimer/alarm implementation. Needs some review later