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

Last change on this file since 3689 was 3388, checked in by bird, 18 years ago

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