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

Last change on this file since 3363 was 3291, checked in by bird, 18 years ago

0.6.2 release notes.

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