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

Last change on this file since 2613 was 2534, checked in by bird, 20 years ago

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