source: branches/libc-0.6/doc/ReleaseNotes.os2@ 2656

Last change on this file since 2656 was 2656, checked in by bird, 19 years ago

final release notes.

  • 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 (bird-gccspam@anduin.net)
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 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
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
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
624GCC 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
691GCC 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
818v3.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
848v3.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
1029v3.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
1041v3.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
1063v3.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
1082v3.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
1150v3.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
1180v3.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
1207v3.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...
Note: See TracBrowser for help on using the repository browser.