1
0
mirror of https://github.com/adtools/clib2.git synced 2025-12-08 14:59:05 +00:00

120 Commits

Author SHA1 Message Date
Jens Maus
c02665938f Merge pull request #13 from sodero/topic/additional_error_codes
Add ENOTSUP error code
2021-05-14 00:38:42 +02:00
Jens Maus
1e2863c5b8 fixed README.md 2021-05-14 00:32:09 +02:00
Jens Maus
e1da3dadfb moved from travis-ci to github actions and retired codeclimate. 2021-05-14 00:31:17 +02:00
ola.soder@axis.com
b51c79577e Add ENOTSUP error code. 2021-01-20 15:34:37 +01:00
obarthel
975f949aa1 Rewritten to handle date ranges better which lie outside the expected time of day, day of month and month.
The 'struct tm' is now properly updated to reflect the time and date information which comes out of the number of seconds calculated.

A bug reported by Andreas Falkenhahn is resolved which had the effect of distorting the number of seconds calculated.
2020-07-06 12:09:51 +02:00
Olaf Barthel
5f14118d73 Fix for translation bug, which would make "a/../b" into "a./b". Contributed by Thomas Frieden - thank you very much! 2018-12-05 13:31:43 +01:00
Sebastian Bauer
b874ff71de Add wcscoll() dummy. 2018-04-22 11:21:24 +02:00
Sebastian Bauer
397013922c Use IsMinListEmpty() for MinList rather than IsListEmpty().
This removes the warnings about breaking the strict-aliasing rules.
2018-04-10 23:20:20 +02:00
Sebastian Bauer
85c36839d5 Create the proper directoy for MAKELIB. 2018-04-10 23:19:13 +02:00
Sebastian Bauer
196d37b28a Compile with -nostdlib, rather than -mcrt=clib2.
We are actually building the clib2 here.
2018-04-10 23:18:30 +02:00
Sebastian Bauer
e8086be768 Disable -Wunused-label.
There are a lot of unused lables, depending on the actual
compiling mode.
2018-04-10 23:17:08 +02:00
Sebastian Bauer
82dd474e3b Disable -Wbad-function-cast. It produces a lot of useless warnings. 2018-04-09 23:24:56 +02:00
Sebastian Bauer
58f36203b1 Fix cast to function pointer. 2018-04-09 23:24:07 +02:00
Sebastian Bauer
425f899302 Merge pull request #7 from sba1/wchar-fixes
Wchar fixes
2018-03-31 09:37:50 +02:00
Sebastian Bauer
febe89c61b Update changelog. 2018-03-30 22:17:41 +02:00
Sebastian Bauer
3e50be491b Include stdint.h for WCHAR_MAX to avoid redundant definitions. 2018-03-30 21:42:12 +02:00
Sebastian Bauer
dfc7f310d6 Don't define wchar_t in C++ as it is a bultin-type there. 2018-03-30 21:35:06 +02:00
Sebastian Bauer
a6a9352a00 Compile wchar_wscoll.c. 2018-03-30 21:21:31 +02:00
Sebastian Bauer
eb1d784c0d Provide stub for mbrtowc(). 2018-03-30 21:21:11 +02:00
Sebastian Bauer
d1092099d0 Provide some more wide char functions. 2018-03-29 20:59:02 +02:00
Sebastian Bauer
bc621bed9c Disable the LOG_COMMAND.
Piping will have the consequence that the exit status of the first command
will not be considered. As this is the compiling command in our case, make
will not exit with an error code even if the compiling failed.

While there are shell-specific solutions, disabling LOG_COMMAND seems to
be the most general solution.
2018-03-29 20:57:32 +02:00
Sebastian Bauer
60eebbe732 Implement wcscat(). 2018-03-28 21:23:13 +02:00
Sebastian Bauer
345995000a Implement some more of the iswXXX() functions. 2018-03-28 21:16:14 +02:00
Sebastian Bauer
ef18bf5f3e Fix vswprintf() prototype. 2018-03-28 18:47:24 +02:00
Sebastian Bauer
6f3b3b6d28 Implement few wide char functions. 2018-03-28 17:09:18 +02:00
Sebastian Bauer
846eebc66c Fix mbtowc() to and compile it. 2018-03-28 17:08:42 +02:00
Sebastian Bauer
75d47ccdad Build all existing wchar and wctype functions. 2018-03-27 20:03:45 +02:00
Sebastian Bauer
456123fe7f Add dummy wctob(). 2018-03-27 20:02:54 +02:00
Sebastian Bauer
5733c99ba1 Fix wcspbrk() definition to match the prototype. 2018-03-27 20:00:28 +02:00
Sebastian Bauer
391e7e39ad Add wcscoll() prototype. 2018-03-27 19:59:54 +02:00
Sebastian Bauer
f5f0e17e78 Define ISO 99 multibyte functions also in C++ context. 2018-03-27 19:59:23 +02:00
Sebastian Bauer
f6f0082a0e Include sys/clib2_stdc.h for restrict. 2018-03-27 19:56:45 +02:00
obarthel
c84b1fc1ff Tiny fixes 2018-02-18 13:58:25 +01:00
obarthel
e35307a7e3 Ignore linker map files, too. 2018-02-17 13:45:21 +01:00
Henning Nielsen Lund
911114c286 add an unimplemented tzset().
ctime_r() and localtime_r() are already using the localtime, so no need to do anything.
http://pubs.opengroup.org/onlinepubs/9699919799/functions/tzset.html

Signed-off-by: Henning Nielsen Lund <hnl_dk@amigaos.dk>
2017-08-27 13:30:12 +02:00
Henning Nielsen Lund
9e998ca108 should have been sys/clib2_stdc.h 2017-08-15 21:53:49 +02:00
Henning Nielsen Lund
99695dec0b we use restrict
Signed-off-by: Henning Nielsen Lund <hnl_dk@amigaos.dk>
2017-08-15 21:45:33 +02:00
Henning Nielsen Lund
0ec7094877 Code depending on statfs or fstatfs do both depend on sys/mount.h and sys/param.h where we only had sys/mount.h
Signed-off-by: Henning Nielsen Lund <hnl_dk@amigaos.dk>
2017-08-15 21:26:45 +02:00
Henning Nielsen Lund
a471e73adf add timespec declaration 2017-08-05 17:28:39 +02:00
Henning Nielsen Lund
c76bf8e20b add strnlen() 2017-08-01 21:28:07 +02:00
Henning Nielsen Lund
309bbd8c8c Add a few extra wide-character prototypes and the missing typedef locale_t 2017-08-01 21:26:59 +02:00
Henning Nielsen Lund
d6e5769bc5 using restrict, so restrict to c99 2017-08-01 14:52:45 +02:00
Henning Nielsen Lund
976b6ae7e1 Change the mbrlen declaration to equal ISO C.
http://pubs.opengroup.org/onlinepubs/9699919799/functions/mbrlen.html

Signed-off-by: Henning Nielsen Lund <hnl_dk@amigaos.dk>
2017-08-01 13:55:11 +02:00
obarthel
8af96cb6cb Merge branch 'master' of https://github.com/adtools/clib2 2017-07-08 18:10:45 +02:00
obarthel
febe690623 This got lost last year
The missing calloc() overflow test never made it to the CVS or git repositories :-(
2017-07-08 18:10:28 +02:00
Jens Maus
e36ebff16e Merge pull request #3 from adtools/gcc5-fixes
Fixes for compiling with GCC 5.4.0 on AmigaOS 4.1
2017-06-28 08:55:21 +02:00
Steven Solie
6a1fd36b3a Revision bump. 2017-06-28 06:35:31 +02:00
Steven Solie
feebeb6751 GCC 5 changes 2017-06-28 06:34:57 +02:00
obarthel
1b2c798467 Fixed calloc() and getopt_long()
Added integer overflow test to calloc().

Tiny change in getopt_long() so that the value pointed to by the "longindex" parameter is always initialized to an invalid index position (that being -1), instead of 0. The value of 0 can break some shell commands, most notably GNU wget.
2017-05-01 18:06:23 +02:00
Jens Maus
053a61fc4b Create LICENSE 2016-12-05 14:41:06 +01:00
obarthel
4c54ee3f2d Version bump 2016-12-04 11:14:17 +01:00
obarthel
f491e38b38 Added code to temporarily disable profiling 2016-12-04 11:14:00 +01:00
obarthel
734ce4c1a9 Added code to temporarily disable profiling 2016-12-04 11:13:37 +01:00
obarthel
ce345df9da Hide warnings for deprecated functions 2016-12-04 11:13:00 +01:00
obarthel
5e0fa78d61 Only builds with GCC now 2016-12-04 11:12:42 +01:00
obarthel
bc3e19abe5 Only uses MEMF_PRIVATE on OS4 now 2016-12-04 11:12:32 +01:00
obarthel
29e02775fb Cleaned up the build rules, added missing files 2016-12-04 11:11:53 +01:00
obarthel
5cb27db203 Slab allocator is exercised much more 2016-12-04 11:11:28 +01:00
obarthel
4fc1b13945 Added a rogue malloc/free pair 2016-12-04 11:11:05 +01:00
obarthel
8beaabac4f Removed unused local variable 2016-12-04 11:10:46 +01:00
obarthel
271572ed56 Fixed so that it builds correctly with SAS/C again 2016-12-04 11:10:33 +01:00
obarthel
e0feef8932 Moved __CXV54 into sas_cxv.asm
sas_cxv54.asm is no longer needed.
2016-12-04 11:10:13 +01:00
obarthel
07259ed7eb This is needed when building with math=ieee option 2016-12-04 11:09:24 +01:00
obarthel
3203fcf96a Removed unused result variable 2016-12-04 11:08:54 +01:00
obarthel
bfba44bf83 Rewritten to use setjmp()/longjmp()
Also contains new code which prints the number of times a slab was reused.
2016-12-04 11:08:41 +01:00
obarthel
35434bdedc Updated to build correctly with SAS/C again 2016-12-04 11:07:40 +01:00
obarthel
17ba18c731 Added code which temporarily disables profiling 2016-12-04 11:06:50 +01:00
obarthel
78a8c7655e Added __decay_unused_slabs() 2016-12-04 11:05:50 +01:00
obarthel
184a127860 Added stdlib_decay_unused_slabs() 2016-12-04 11:05:30 +01:00
obarthel
5617c0eacf Slab allocator update
Unused slabs which get recycled are no longer reinitialized from scratch if their chunk size matches what the allocator needed. If the chunk size matches, the list of available chunks is left unchanged, and just the various counters are reset.

Added __get_slab_stats() function.

Added support for global __slab_purge_threshold tuning variable.

Added a short test program for the slab allocator.

The malloc-test program was linked against the wrong object file in GNUmakefile.68k. Fixed.
2016-11-27 15:53:40 +01:00
Olaf Barthel
ac710b333e Accidentally omitted from version 1.211 2016-11-24 09:45:35 +01:00
Olaf Barthel
d2acae7cd7 Slab allocator update
Added more consistency checking to the slab allocator, which is built if DEBUG is defined in "stdlib_slab.c".

Memory allocations are no longer guaranteed to be aligned to 64 bit word boundaries. In fact, this has not even worked reliably in the past 10 years.

Memory allocation request sizes are now rounded to multiples of 32 bit words (the size of an address pointer) instead to the size of a 64 bit word.

Reduced the memory footprint of the memory allocation management data structures by reusing the most significant bit of the memory allocation size. This allows many more allocations to fit into the 32 byte chunk slabs, but limits the maximum memory allocation size to a little less than 2 GBytes.

Added integer overflow checks to the memory management code.

Reduced the memory management overhead further. This cuts an additional 8 bytes per allocation, unless neither the slab allocator nor memory pools are available. With this reduction the slab allocator is able to use 16 byte chunks, which cover memory allocation requests of 1..8 bytes.

Fixed a bug caused by returning an allocation back to a slab which passed the wrong pointer.
2016-11-23 16:37:46 +01:00
Olaf Barthel
f8cf752e6a Merge branch 'master' of https://github.com/adtools/clib2 2016-11-22 11:07:46 +01:00
Olaf Barthel
0c5b88d2d3 Slab allocator changes
If the first slab in the list of slabs which share the same chunk size has no more room, it means that all other slabs following it have no room either. This speeds up the test to find a slab with free space, which can now abort and directly proceed to allocate memory for a new slab.

If an empty slab's decay count hits zero, it is moved to the front of the empty slab list to be reclaimed more quickly.

Allocations made from the slab now carry a pointer back to the slab which they are a part of. This speeds up deallocation but has the downside of making the smallest usable slab chunk size 64 bytes, which is double what used to be the minimum before.
2016-11-22 11:07:38 +01:00
Olaf Barthel
1ea8953bd3 Added __get_slab_allocations() function
__get_slab_allocations() which will report information about each memory allocation made by the slab allocator which does not come from a slab.
2016-11-22 11:06:29 +01:00
Olaf Barthel
ff908f8a02 Added a malloc test program 2016-11-22 10:54:58 +01:00
Jens Maus
525e193113 added missing .codeclimate.yml and .travis.yml 2016-11-22 10:52:01 +01:00
Jens Maus
2df2393b81 minor tweak 2016-11-22 10:50:03 +01:00
Jens Maus
ecd40943e2 added Travis-CI and CodeClimate code check support. 2016-11-22 10:46:01 +01:00
Olaf Barthel
7e201fea06 Maximum slab size limited, debug mode errors fixed
The maximum slab size is now 2^17 bytes (= 131072). If you request a slab size larger than this, you will get slab sizes of 131072 bytes instead.

Enabling the memory management debugging code no longer produces compiler errors.
2016-11-21 12:27:40 +01:00
obarthel
799ee705e8 New monitoring function for slab allocator
Added __get_slab_usage() function which can be used to query the slab allocator memory usage at runtime.
2016-11-19 15:49:21 +01:00
obarthel
3425e33cf9 New functions and data structures for slab allocator 2016-11-19 15:48:51 +01:00
obarthel
ef66e530b7 This was missing from the previous commit :-( 2016-11-19 13:08:27 +01:00
obarthel
fbc8694c49 Added a slab allocator
Added a slab allocator which replaces the use of memory pools or the plain AllocMem() operations, respectively. In order to activate the slab allocator, choose a slab size (e.g. 2048 bytes or 4096 bytes) and declare a global variable like this:

   ULONG __slab_max_size = 2048;

Memory allocations smaller than the slab size will be made from "slabs", i.e. large chunks of memory of the given size. Larger allocations will be managed separately.
2016-11-18 17:22:21 +01:00
obarthel
eb223f269d simple_sprintf build again
simple_sprintf needs libgcc.a to build correctly.
2016-11-18 17:20:58 +01:00
Olaf Barthel
025b183b5a Unused slabs are getting purged after adding a new slab
If a new slab is allocated, or an empty slab is reused, the list of empty slabs is now purged, if possible. Empty slabs which cannot be immediately purged "decay" and will be collected the next time a new slab is allocated or an empty slab is reused.

If a chunk is allocated and the slab which the chunk came from is fully utilized, the slab is moved to the end of its list. This should avoid searching this slab for free space before all other slabs of the same chunk size have been tested first. Slabs with free space are always placed closer to the head of the list.
2016-11-17 13:14:13 +01:00
Olaf Barthel
8051da3c9a Added a slab allocator
A slab-allocator can now be used as the back-end for all memory allocations by setting __slab_max_size to a value > 0. This controls the slab size used for allocations and should be a power of 2, such as 2048 or 4096 bytes.

This change still needs testing.
2016-11-17 11:45:59 +01:00
obarthel
ac6d131dc3 Made the call to GetProgramName() work again
Added '#include <dos/obsolete.h>' in order to make the call to GetProgramName() work again. No functional changes.
2016-09-11 10:33:37 +02:00
obarthel
bb82ad015d Ignore object and library files 2016-09-11 09:22:34 +02:00
Olaf Barthel
e403edd04a Added missing #include <dos/obsolete.h>
Changes in the naming of certain dos.library functions in the
V53 header files are now accounted for. This also affects
unistd/stat/utime code which uses the same header file.
2015-09-30 11:23:04 +02:00
Olaf Barthel
c149db9037 - The contents of the math_fmodf.c and math_modff.c did not match the names of the respective files. In fact, the contents of these files were swapped. 2015-07-24 14:08:57 +02:00
Olaf Barthel
34487c68b4 Added the missing '#include <dos/obsolete.h>', required for the OS4 build. 2015-07-18 10:02:03 +02:00
Olaf Barthel
a1b46cb3d4 Added the missing library revision information pertaining to clib2 1.206. 2015-07-18 10:01:10 +02:00
Olaf Barthel
75f1d5a57e Updated/amended missing copyright information 2015-06-11 13:19:07 +02:00
Olaf Barthel
2bc44bb0f2 Still more typo corrections and repairs 2015-06-11 13:01:23 +02:00
Olaf Barthel
ac03cbb272 Typo corrections and repairs 2015-06-11 12:44:28 +02:00
Olaf Barthel
fd33c09c41 - Added a markdown version of the documentation/README.html file.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15307 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2015-06-10 17:39:55 +00:00
Olaf Barthel
2310605f10 - Removed the "executable" properties from those files which are not executable scripts
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15306 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2015-06-10 13:22:53 +00:00
Olaf Barthel
7f0f7929ba - Updated copyright text and contact information
- Replaced ISO Latin 1 code #160 with a plain blank space (ASCII code #32) where necessary


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15305 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2015-06-10 13:13:40 +00:00
Olaf Barthel
3a63fb9ff8 git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15217 87f5fb63-7c3d-0410-a384-fd976d0f7a62 2015-06-04 09:34:11 +00:00
Olaf Barthel
718574aae5 m.lib 1.206 (24.4.2015)
- The fscanf() family failed to parse and convert %f parameters correctly
  if the respective number did not begin with a digit, but a decimal
  point. Hence ".7" would not be processed, but "0.7" would.

c.lib 1.206 (24.4.2015)

- Reworked the __putc() and putc() macros to reference the 'c' input
  parameter only once, and to be free of side-effects when tinkering
  with the buffer position.

- isatty() had the __fd_lock() call in the wrong place, which could have
  led to cleanup problems later.

- The close action in the stdio, socket and termios hook code now
  also zaps the fd pointer itself after cleaning up the file descriptor
  table entry.

- Removed the remains of all the stack extension and stack overflow/underflow
  checking code. It never actually worked. The bit that does work is the stack
  usage measurement code, plus the bit that sets up the the custom stack
  according to local setting or by calling a query function.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15215 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2015-04-24 14:00:23 +00:00
Olaf Barthel
bdfdd84e38 - Bumped math library versions, due to vfscanf() changes.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15214 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2015-04-24 13:56:39 +00:00
Olaf Barthel
eeb4e5d7aa - Floating point numbers which do not begin with a digit, but with a decimal point, are now processed correctly.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15213 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2015-04-24 13:00:12 +00:00
Olaf Barthel
a665fffff1 - Removed the remains of all the stack extension and stack overflow/underflow
checking code. It never actually worked. The bit that does work is the stack
  usage measurement code, plus the bit that sets up the the custom stack
  according to local setting or by calling a query function.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15212 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2010-10-20 13:50:17 +00:00
Olaf Barthel
a436ebdad1 - Reworked the __putc() and putc() macros to reference the 'c' input
parameter only once, and to be free of side-effects when tinkering
  with the buffer position.

- isatty() had the __fd_lock() call in the wrong place, which could have
  led to cleanup problems later.

- The close action in the stdio, socket and termios hook code now
  also zaps the fd pointer itself after cleaning up the file descriptor
  table entry.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15211 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2010-10-20 13:12:59 +00:00
Olaf Barthel
81e66075e2 - The fputc() and __putc() macros were not entirely free of side-effects. Ouch.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15210 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2010-10-19 09:35:16 +00:00
Olaf Barthel
6bc8108a39 - Version bump to 1.205
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15208 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2010-08-21 11:39:10 +00:00
Olaf Barthel
f600c5e37a - Added dlclose(), dlerror(), dlopen() and dlsym() functions, which are
available only under OS4. There is a variant of dlopen() in libunix.a
  which will perform a path name conversion. Note that these functions
  will not work in the thread-safe variant of the library because it
  would be unwise to tinker with the currently running program's binary.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15207 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2010-08-21 11:37:03 +00:00
Olaf Barthel
1bdfc0d143 - Added dlclose(), dlerror(), dlopen() and dlsym() functions, which are
available only under OS4. There is a variant of dlopen() in libunix.a
  which will perform a path name conversion.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15206 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2010-08-21 10:59:34 +00:00
Olaf Barthel
37a1fdee4f - The shared object initialization has to be performed before any local
constructors are invoked, and after all local destructors have been
  invoked.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15205 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2010-08-21 09:57:50 +00:00
Olaf Barthel
d10027ece7 - Preparations for clib2 1.205
- Added support for ELF shared objects and libraries. This is implemented through
  constructor/destructor functions, which means that you can use this
  functionality even in Amiga Exec style shared libraries, with the proper
  library initialization code to invoke the constructor/destructor functions
  for you.

- Updated uname() to recognize AmigaOS 4.1.

- The translation from Unix to Amiga path names did not properly process
  multiple occurences of "/./" in the path name. Thanks go to Steven Solie
  for finding the issue.

- The detection of "/./" and "/../" patterns in Unix path names to be
  translated into Amiga path names did not test if it was overrunning
  the end of the string.

- If strcmp(), strncmp() and memcmp() detect a pair of different
  characters, then the function result must be calculated as if the
  characters were of type "unsigned char". This is a requirement
  according to the ISO 'C' (1994) standard. Thanks go to Georg Steger
  for finding the issue.

- The definitions for INT_MIN, INT_MAX and UINT_MAX in <limits.h> no
  longer use long integer types, as prompted by Steven Solie.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15204 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2010-08-20 15:33:36 +00:00
Olaf Barthel
60fbee698e - Preparations for c.lib 1.204 release.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15203 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-11-11 12:58:39 +00:00
Olaf Barthel
933483d365 - Updated the build rules for use with GCC 4.2.x
- Added a workaround for the baserel build flavour, which requires a specific
  GCC version, e.g. 4.0.4 or earlier.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15202 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-11-06 14:44:07 +00:00
Olaf Barthel
4291a0564f - The memory allocated by malloc() and friends is now of type MEMF_PRIVATE
under OS4 and beyond. The AmigaOS 2.x/3.x compatible code will still
  use MEMF_ANY in the same situation, though. Other uses of MEMF_ANY have
  been replaced as well where MEMF_PRIVATE would have made better sense.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15201 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-09-30 14:09:00 +00:00
Olaf Barthel
8a1347e61d - I/O buffers allocated are now aligned according to the CPU cache line size,
if the operating system can supply that detailed information.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15200 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-09-04 12:07:58 +00:00
Olaf Barthel
b9ad1fda3f - Elaborated on the unidirectional/bidirectional PIPE: issues.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15199 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-05-07 09:33:55 +00:00
Olaf Barthel
f28dcf8ed1 - stdlib_unsetenv.c needs stdio_headers.h to compile properly.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15198 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-04-30 16:32:49 +00:00
Olaf Barthel
8eac1027a5 - It's iswpunct() and not iswpunc().
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15197 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-04-30 14:41:28 +00:00
Olaf Barthel
0b19424148 - unsetenv() now returns a status value.
- Corrected the function prototype for wcspbrk().

- Added function prototypes for mbrtowc_l(), wcscoll_l(), wcscspn() and wcsrchr().


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15196 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-04-30 14:34:03 +00:00
Olaf Barthel
f100199861 - Switched to BSD style options for the "cp" command, as used in the build
makefiles and the archive build script (that is: 'cp -a' becomes 'cp -p'
  and 'cp -pR', depending upon the specific context).


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@15195 87f5fb63-7c3d-0410-a384-fd976d0f7a62
2008-04-28 16:12:22 +00:00
996 changed files with 7683 additions and 3598 deletions

54
.github/workflows/ci.yml vendored Normal file
View File

@@ -0,0 +1,54 @@
name: CI
on:
push:
pull_request:
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-20.04
timeout-minutes: 480
strategy:
fail-fast: false
matrix:
platform: [os4, os3]
steps:
- uses: actions/checkout@v2
- name: setup dependencies
run: |
sudo dpkg --add-architecture i386
sudo apt-get update -y -qq || true
sudo apt-get -qq install libc6:i386
sudo ln -s /usr/lib/x86_64-linux-gnu/libmpfr.so.6 /usr/lib/x86_64-linux-gnu/libmpfr.so.4
- name: setup env
run : |
echo "GITHUB_SHA7=$(echo ${GITHUB_SHA::7})" >>$GITHUB_ENV
- name: install adtools build env
run: |
DOWNLOAD_PATH=https://github.com/adtools/adtools/releases/download/20170213
curl -L ${DOWNLOAD_PATH}/adtools-utils.tar.bz2 | sudo tar xj -C /
if [[ ${{ matrix.platform }} =~ os3 ]]; then curl -L ${DOWNLOAD_PATH}/adtools-m68k-amigaos.tar.bz2 | sudo tar xj -C / ; fi
if [[ ${{ matrix.platform }} =~ os4 ]]; then curl -L ${DOWNLOAD_PATH}/adtools-ppc-amigaos.tar.bz2 | sudo tar xj -C / ; fi
if [[ ${{ matrix.platform }} =~ mos ]]; then curl -L ${DOWNLOAD_PATH}/adtools-ppc-morphos.tar.bz2 | sudo tar xj -C / ; fi
if [[ ${{ matrix.platform }} =~ aros-ppc ]]; then curl -L ${DOWNLOAD_PATH}/adtools-ppc-aros.tar.bz2 | sudo tar xj -C / ; fi
if [[ ${{ matrix.platform }} =~ aros-i386 ]]; then curl -L ${DOWNLOAD_PATH}/adtools-i386-aros.tar.bz2 | sudo tar xj -C / ; fi
if [[ ${{ matrix.platform }} =~ aros-x86_64 ]]; then curl -L ${DOWNLOAD_PATH}/adtools-x86_64-aros.tar.bz2 | sudo tar xj -C / ; fi
- name: cleanup old action artifacts
run: .github/workflows/purge_artifacts.sh ${{ secrets.GITHUB_TOKEN }}
#- name: remote debug tmate session
# uses: mxschmitt/action-tmate@v1
# if: matrix.platform == 'os4'
- name: build [${{ matrix.platform }}]
timeout-minutes: 480
run: |
export PATH=/usr/local/amiga/bin:/opt/m68k-amigaos/bin:/opt/ppc-amigaos/bin:/opt/ppc-morphos/bin:${PATH}
if [[ ${{ matrix.platform }} =~ os4 ]]; then make -C library -j1 -f GNUmakefile.os4 OS=os4 ; fi
if [[ ${{ matrix.platform }} =~ os3 ]]; then make -C library -j1 -f GNUmakefile.68k OS=os3 ; fi

55
.github/workflows/purge_artifacts.sh vendored Executable file
View File

@@ -0,0 +1,55 @@
#!/usr/bin/env bash
# Customize those three lines with your repository and credentials:
REPO=https://api.github.com/repos/${GITHUB_REPOSITORY}
GITHUB_USER=${GITHUB_REPOSITORY%%/*}
GITHUB_TOKEN=${1}
# Number of most recent versions to keep for each artifact:
KEEP=4
# A shortcut to call GitHub API.
ghapi() { curl --silent --location --user $GITHUB_USER:$GITHUB_TOKEN "$@"; }
# A temporary file which receives HTTP response headers.
TMPFILE=/tmp/tmp.$$
# An associative array, key: artifact name, value: number of artifacts of that name.
declare -A ARTCOUNT
# Process all artifacts on this repository, loop on returned "pages".
URL=$REPO/actions/artifacts
while [[ -n "$URL" ]]; do
# Get current page, get response headers in a temporary file.
JSON=$(ghapi --dump-header $TMPFILE "$URL")
# Get URL of next page. Will be empty if we are at the last page.
URL=$(grep '^Link:' "$TMPFILE" | tr ',' '\n' | grep 'rel="next"' | head -1 | sed -e 's/.*<//' -e 's/>.*//')
rm -f ${TMPFILE}
# Number of artifacts on this page:
COUNT=$(( $(jq <<<$JSON -r '.artifacts | length') ))
# Loop on all artifacts on this page.
for ((i=0; $i < $COUNT; i++)); do
# Get name of artifact and count instances of this name.
STR=$(jq <<<$JSON -r ".artifacts[$i].name?")
name=${STR%%-*}-${STR##*-}
ARTCOUNT[$name]=$(( $(( ${ARTCOUNT[$name]} )) + 1))
printf "Found '%s' #%d, " $STR ${ARTCOUNT[$name]}
# Check if we must delete this one.
if [[ ${ARTCOUNT[$name]} -gt $KEEP ]]; then
id=$(jq <<<$JSON -r ".artifacts[$i].id?")
size=$(( $(jq <<<$JSON -r ".artifacts[$i].size_in_bytes?") ))
printf "deleting %d bytes\n" $size
ghapi -X DELETE $REPO/actions/artifacts/$id
else
printf "OK\n"
fi
done
done
exit 0

5
.gitignore vendored Normal file
View File

@@ -0,0 +1,5 @@
*.o
*.a
/library/compiler.log
/library/netinclude
*.map

View File

@@ -1,13 +0,0 @@
# The "checkoutlist" file is used to support additional version controlled
# administrative files in $CVSROOT/CVSROOT, such as template files.
#
# The first entry on a line is a filename which will be checked out from
# the corresponding RCS file in the $CVSROOT/CVSROOT directory.
# The remainder of the line is an error message to use if the file cannot
# be checked out.
#
# File format:
#
# [<whitespace>]<filename>[<whitespace><error message>]<end-of-line>
#
# comment lines begin with '#'

View File

@@ -1,15 +0,0 @@
# The "commitinfo" file is used to control pre-commit checks.
# The filter on the right is invoked with the repository and a list
# of files to check. A non-zero exit of the filter program will
# cause the commit to be aborted.
#
# The first entry on a line is a regular expression which is tested
# against the directory that the change is being committed to, relative
# to the $CVSROOT. For the first match that is found, then the remainder
# of the line is the name of the filter to run.
#
# If the repository name does not match any of the regular expressions in this
# file, the "DEFAULT" line is used, if it is specified.
#
# If the name "ALL" appears as a regular expression it is always used
# in addition to the first matching regex or "DEFAULT".

View File

@@ -1,21 +0,0 @@
# Set this to "no" if pserver shouldn't check system users/passwords
#SystemAuth=no
# Put CVS lock files in this directory rather than directly in the repository.
#LockDir=/var/lock/cvs
# Set `TopLevelAdmin' to `yes' to create a CVS directory at the top
# level of the new working directory when using the `cvs checkout'
# command.
#TopLevelAdmin=no
# Set `LogHistory' to `all' or `TOEFWUPCGMAR' to log all transactions to the
# history file, or a subset as needed (ie `TMAR' logs all write operations)
#LogHistory=TOEFWUPCGMAR
# Set `RereadLogAfterVerify' to `always' (the default) to allow the verifymsg
# script to change the log message. Set it to `stat' to force CVS to verify# that the file has changed before reading it (this can take up to an extra
# second per directory being committed, so it is not recommended for large
# repositories. Set it to `never' (the previous CVS behavior) to prevent
# verifymsg scripts from changing the log message.
#RereadLogAfterVerify=always

View File

@@ -1,19 +0,0 @@
# This file affects handling of files based on their names.
#
# The -m option specifies whether CVS attempts to merge files.
#
# The -k option specifies keyword expansion (e.g. -kb for binary).
#
# Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers)
#
# wildcard [option value][option value]...
#
# where option is one of
# -f from cvs filter value: path to filter
# -t to cvs filter value: path to filter
# -m update methodology value: MERGE or COPY
# -k expansion mode value: b, o, kkv, &c
#
# and value is a single-quote delimited value.
# For example:
#*.gif -k 'b'

View File

@@ -1,21 +0,0 @@
# The "editinfo" file is used to allow verification of logging
# information. It works best when a template (as specified in the
# rcsinfo file) is provided for the logging procedure. Given a
# template with locations for, a bug-id number, a list of people who
# reviewed the code before it can be checked in, and an external
# process to catalog the differences that were code reviewed, the
# following test can be applied to the code:
#
# Making sure that the entered bug-id number is correct.
# Validating that the code that was reviewed is indeed the code being
# checked in (using the bug-id number or a seperate review
# number to identify this particular code set.).
#
# If any of the above test failed, then the commit would be aborted.
#
# Actions such as mailing a copy of the report to each reviewer are
# better handled by an entry in the loginfo file.
#
# One thing that should be noted is the the ALL keyword is not
# supported. There can be only one entry that matches a given
# repository.

View File

@@ -1,27 +0,0 @@
# The "loginfo" file controls where "cvs commit" log information
# is sent. The first entry on a line is a regular expression which must match
# the directory that the change is being made to, relative to the
# $CVSROOT. If a match is found, then the remainder of the line is a filter
# program that should expect log information on its standard input.
#
# If the repository name does not match any of the regular expressions in this
# file, the "DEFAULT" line is used, if it is specified.
#
# If the name ALL appears as a regular expression it is always used
# in addition to the first matching regex or DEFAULT.
#
# You may specify a format string as part of the
# filter. The string is composed of a `%' followed
# by a single format character, or followed by a set of format
# characters surrounded by `{' and `}' as separators. The format
# characters are:
#
# s = file name
# V = old version number (pre-checkin)
# v = new version number (post-checkin)
# t = tag or branch name
#
# For example:
#DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog
# or
#DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog

View File

@@ -1,26 +0,0 @@
# Three different line formats are valid:
# key -a aliases...
# key [options] directory
# key [options] directory files...
#
# Where "options" are composed of:
# -i prog Run "prog" on "cvs commit" from top-level of module.
# -o prog Run "prog" on "cvs checkout" of module.
# -e prog Run "prog" on "cvs export" of module.
# -t prog Run "prog" on "cvs rtag" of module.
# -u prog Run "prog" on "cvs update" of module.
# -d dir Place module in directory "dir" instead of module name.
# -l Top-level directory only -- do not recurse.
#
# NOTE: If you change any of the "Run" options above, you'll have to
# release and re-checkout any working directories of these modules.
#
# And "directory" is a path to a directory relative to $CVSROOT.
#
# The "-a" option specifies an alias. An alias is interpreted as if
# everything on the right of the "-a" had been typed on the command line.
#
# You can encode a module within a module by using the special '&'
# character to interpose another module into the current module. This
# can be useful for creating a module that consists of many directories
# spread out over the entire source repository.

View File

@@ -1,12 +0,0 @@
# The "notify" file controls where notifications from watches set by
# "cvs watch add" or "cvs edit" are sent. The first entry on a line is
# a regular expression which is tested against the directory that the
# change is being made to, relative to the $CVSROOT. If it matches,
# then the remainder of the line is a filter program that should contain
# one occurrence of %s for the user to notify, and information on its
# standard input.
#
# "ALL" or "DEFAULT" can be used in place of the regular expression.
#
# For example:
#ALL mail -s "CVS notification" %s

View File

@@ -1,13 +0,0 @@
# The "rcsinfo" file is used to control templates with which the editor
# is invoked on commit and import.
#
# The first entry on a line is a regular expression which is tested
# against the directory that the change is being made to, relative to the
# $CVSROOT. For the first match that is found, then the remainder of the
# line is the name of the file that contains the template.
#
# If the repository name does not match any of the regular expressions in this
# file, the "DEFAULT" line is used, if it is specified.
#
# If the name "ALL" appears as a regular expression it is always used
# in addition to the first matching regex or "DEFAULT".

View File

@@ -1,20 +0,0 @@
# The "taginfo" file is used to control pre-tag checks.
# The filter on the right is invoked with the following arguments:
#
# $1 -- tagname
# $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d
# $3 -- repository
# $4-> file revision [file revision ...]
#
# A non-zero exit of the filter program will cause the tag to be aborted.
#
# The first entry on a line is a regular expression which is tested
# against the directory that the change is being committed to, relative
# to the $CVSROOT. For the first match that is found, then the remainder
# of the line is the name of the filter to run.
#
# If the repository name does not match any of the regular expressions in this
# file, the "DEFAULT" line is used, if it is specified.
#
# If the name "ALL" appears as a regular expression it is always used
# in addition to the first matching regex or "DEFAULT".

View File

@@ -1,21 +0,0 @@
# The "verifymsg" file is used to allow verification of logging
# information. It works best when a template (as specified in the
# rcsinfo file) is provided for the logging procedure. Given a
# template with locations for, a bug-id number, a list of people who
# reviewed the code before it can be checked in, and an external
# process to catalog the differences that were code reviewed, the
# following test can be applied to the code:
#
# Making sure that the entered bug-id number is correct.
# Validating that the code that was reviewed is indeed the code being
# checked in (using the bug-id number or a seperate review
# number to identify this particular code set.).
#
# If any of the above test failed, then the commit would be aborted.
#
# Actions such as mailing a copy of the report to each reviewer are
# better handled by an entry in the loginfo file.
#
# One thing that should be noted is the the ALL keyword is not
# supported. There can be only one entry that matches a given
# repository.

29
LICENSE Normal file
View File

@@ -0,0 +1,29 @@
BSD 3-Clause License
Copyright (c) 2016, Olaf Barthel
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

295
README.md Normal file
View File

@@ -0,0 +1,295 @@
# clib2 An ISO 'C' (1994) compliant runtime library for AmigaOS
[![Build](https://github.com/adtools/clib2/workflows/CI/badge.svg)](https://github.com/adtools/clib2/actions)
[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)
## What is this?
This is my attempt to get Samba 2.2.x ported to the Amiga. My first Amiga port required *SAS/C* and a number of strange tricks had to be pulled to get it to support the kind of environment Samba needed. But with the introduction of Samba 2.2.x many of those tricks did not work any more, which is why I decided to attack the problem at the root, namely the runtime library.
Because it was no longer possible to build Samba with *SAS/C* on the new Amiga platform, the idea came up to move development to the GNU 'C' compiler. This turned out to be a challenge due to its somewhat underdeveloped runtime library and header files. Eventually, I decided to rewrite that library from scratch.
## What does it do?
Using *'C' - A reference manual* (4th edition) as a reference I wrote a set of header files, then proceeded to implement each single function referenced in them. With few exceptions in the area of wide character support, the result should be a feature complete implementation of the ISO 'C' (1994) runtime library. The library was subsequently updated to offer functionality defined in *ISO/IEC 9899:1999*, also known as *C99*.
Because Samba needs a few POSIX-like routines to be supported, the library functionality is complemented by a set of routines described in *Advanced programming in the Unix environment*.
This is not a portable implementation of the library in the sense that you could move it from one 'C' compiler on one operating system to another. This is an Amiga specific implementation.
The library supports floating point math, which, for the 68k platform, is limited to IEEE single and double precision or M68881 inline math. There is no support for the fast floating point (FFP) format or exclusive IEEE single precision. You either get double precision (IEEE math) or extended precision (M68881 inline math). What it is that you get is determined at compile time. Use the `IEEE_FLOATING_POINT_SUPPORT` preprocessor symbol to activate IEEE math code and the `M68881_FLOATING_POINT_SUPPORT` symbol for M68881 inline math.
For the PowerPC platform, the library uses code borrowed from <a href="http://www.netlib.org/fdlibm/">fdlibm 5.3</a>, which is a portable library of arithmetic functions developed by Sun Microsystems which, for example, is also used within the Java platform.
## What does it not do?
This library is a departure from the typical 'C' runtime environments of the past which had to run on all AmigaOS releases, down to *Kickstart 1.1*. This very library was designed to take advantage of the routines available since *Kickstart 2.04* was introduced and virtually nobody ever put to use. This helps to cut the code size, and it also helps to keep bugs out of the library by falling back onto well-tested implementations. However, the catch is that the code won't run under *Kickstart 1.3* and below. But then these operating system releases have been obsolete for more than a decade, and you can always go back to a compiler environment which supports them.
There is very little support for `amiga.lib` functionality. There is `NewList()`, `HookEntry()`, `CallHook()`, `CallHookA()`, the `DoMethod()` family, the *RexxVars* family, but that's all. If you need more, you would have to implement it yourself. Put another way, if you absolutely need functionality that is only found in `amiga.lib`, you really shouldn't need it in the first place.
## Where does the source code come from?
I originally thought that it might be helpful to piece this library together from various sources, such as the BSD libc. It turned out that this code was so 'portable' that it became much more complex than it ought to be. Also, some side-effects were present which considerably changed the behaviour of the library. For example, the BSD libc uses `bcopy()` as an alias for `memcpy()`, and unlike `memcpy()` is documented to, `bcopy()` supports overlapping copies.
Eventually, I wrote virtually all the code myself, borrowing algorithmic ideas from the BSD libc and the *Manx Aztec 'C'* runtime library. Because I don't know much about the environment *GCC* expects, I borrowed code snippets from *libnix*, which was written by Matthias Fleischer and Gunther Nikl. This in particular concerns the integer and floating point math support, the `setjmp`/`longjmp` routines and the startup code. The M68881 inline math code comes from the `<math-68881.h>` file written by Matthew Self `(self [at] bayes.arc.nasa.gov)`.
## Limitations and caveats
There is hardly any documentation on the code I wrote. In part this is due to the fact that the code itself is very simple in design. It should speak for itself. However, to make a usable runtime library you have to have a user documentation as in *man pages* or *AutoDocs*. We will eventually have to have *AutoDocs* for this library.
The exception handling in the math code is not particularly effective. For one part this is due to the fact that there is no exception handler installed by the runtime library when it starts up which could catch and process the error conditions the CPU or FPU generates. The idea was to provide for a portable runtime library with little to no assembly language involved. To make the exception handling complete, such code would be necessary.
The library currently builds under *SAS/C*, but because the 'normal' program startup code is not utilized, the base relative (A4) addressing does not work. If you are going to test it, use the `data=faronly` option to compile the library and the programs.
Different build *Makefiles* are supplied for use with *GCC*. There is a `GNUmakefile.68k` for the 68k platform and a `GNUmakefile.os4` for the AmigaOS4 PowerPC version.
### Floating point math and functions (`scanf()`, `printf()`, etc.)
The plain `libc.a`, which your software would be linked against by default, does not contain any floating point support code. This means, for example, that `printf("%f",...)` will not produce the desired output and that `scanf("%f",...)` may not read any data at all. If your program needs functions such as these or `atod()` then you must link against `libm.a` or the equivalent.
To link the floating point support code with your software, use the `-lm` compiler option.
**Careful!** The order in which you specify the libraries to link against is important here. Thus, `gcc -o test test.c -lm -lc` would correctly link the program `test` against the proper floating point math library, but `gcc -o test test.c -lc -lm` would not.
### The thread-safe library
Thread-safety does not imply that you can have multiple callers access and close the same file. There is no resource tracking to that degree yet. All that the thread-safety tries to afford you is not to get into big trouble if simultaneous and overlapping accesses to files, memory allocation and other resources are taking place.
The library code is supposed to be thread-safe if built with the `__THREAD_SAFE` preprocessor symbol defined. Note that 'thread-safe' does **not** mean 'reentrant'. Multiple callers for certain library functions are permitted, but not for all of them. For example, `mkdtemp()` is not thread-safe, and neither is `rand()` or `localtime()`. But as per *POSIX 1003.1c-1995* there are thread-safe variants of `rand()` and `localtime()` called `rand_r()`, `localtime_r()`, and others.
The use of the socket I/O functions is problematic because the underlying `bsdsocket.library` API is not supposed to be used by any process other than the one which opened it. While one TCP/IP stack (my own "Roadshow") allows you to share the library base among different processes, if so configured, it is the exception. No other TCP/IP stack available for the Amiga robustly supports a similar feature. If the TCP/IP stack supports this feature, then the global variable `__can_share_socket_library_base` will be set to a non-zero value.
Errors reported by the socket I/O functions which modify the global variables `errno` and `h_errno` may be directed to call the `__set_errno()` and `__set_h_errno()` functions instead, if the TCP/IP stack supports this feature. The global variable `__thread_safe_errno_h_errno` will be set to a non-zero value if it does.
A much more serious problem resides with the `exit()`, `abort()`, `assert()` and `raise()` functions, and how the `SIGINT` signal is processed. In the thread-safe library only the `main()` function may directly or indirectly call the `exit()` function. No child process may do so, since this would wreck its stack context, crashing it instantly; the main program would be very likely to crash, too, because `exit()` will clean up after all memory allocations and files currently in use. Functions such as `abort()` and `raise()` may call the `exit()` function indirectly. And the `raise()` function may be invoked as part of the `Control+C` checking. You should make sure that the signal handling does not affect any child processes. This can be done by replacing the `__check_abort()` function or by disabling `SIGINT` processing altogether, such as through a `signal(SIGINT,SIG_IGN)` call.
Also take care with file I/O involving the `stdin`/`stdout`/`stderr` streams; read/write operations on these streams will be mapped to the `Input()`/`Output()`/`ErrorOutput()` file handles of the process performing these operations. Since only this small set of operations is mapped, functions such as `fcntl()` or `select()` will not work on the `stdin`/`stdout`/`stderr` streams and the corresponding file descriptors `STDIN_FILENO`/`STDOUT_FILENO`/`STDERR_FILENO`. It is therefore strongly recommended to use the thread-safe library only for applications which can cope with the limitations described above.
### Using gmon (PowerPC only)
To use profiling, two steps are required. First of all, your program must be compiled with the *GCC* command line option `-pg`. This instructs the compiler to generate special profiling code in the prologue and epilogue of each function. Additionally, the program must be linked against `libprofile.a`. To do this, either manually add `-lprofile` to the linker command line, or modify the specs file as follows. Find the lines that look like this (it may actually differ slightly from your specs file, but the important thing is that the line before the line to be modified reads `lib:`):
```
lib:
--start-group -lc --end-group
```
You will have to modify this to look like this:
```
lib:
%{pg: -lprofile} --start-group -lc --end-group
```
Normally, the `specs` file is located at the compiler's installation directory. For cross-compilers, this is `/usr/local/amiga/lib/gcc/ppc-amigaos/*compiler-version*/specs`. For a native compiler, it's in `gcc:lib/gcc/ppc-amigaos/*compiler-version*/specs`. Most likely, your compiler will already have this added to it's `specs` file.
Profiling makes use of a special PowerPC facility called the *Performance Monitor*. It allows to "mark" tasks and count only during while a marked task is running. This allows performance analysis to be made independent of the actual system load. The *Performance Monitor* is available on all PowerPC models supported by AmigaOS 4 except for the *603e*, and embedded versions of the PowerPC like the *405* and *440* series. Consult the manual of the appropriate chip for more information.
### Implementation defined behaviour
#### 'C' language
##### Environment
The `main(int argc,char **argv);` function may be called with an `argc` value of 0, in which case the `argv` variable will contain a pointer to the Amiga Workbench startup message, which is of type `struct WBStartup *`, and is defined in the Amiga system header file `<workbench/startup.h>`.
##### Characters
The current locale is derived from the current Amiga operating system locale settings. The `setlocale("")` function call will choose the current Amiga operating system locale settings. Any other name passed to the `setlocale()` function, with the exception of `"C"`, which selects the 'C' locale, must be a locale name, as used by the Amiga operating system function `OpenLocale()` in `locale.library`.
##### Floating-point
The 68k version of *clib2* supports single and double precision floating point numbers, according to the *IEEE 754* standard. The software floating point number support is built upon the Amiga operating system libraries `mathieeesingbas.library`, `mathieeedoubbas.library` and `mathieeedoubtrans.library`. The hardware floating point number support uses the M68881/M68882/M68040/M68060 floating point unit instead.
The PowerPC version of *clib2* supports only double precision floating point numbers, according to the *IEEE 754* standard, because that is exactly what the PowerPC CPU supports. Single precision numbers may be implicitly converted to double precision numbers. This also means that the *C99* data type `long double` is identical to the `double` data type. Because there is no difference between these two, the library omits support for *C99* functions specifically designed to operate on `long double` data types, such as `rintl()`.
Both the 68k and the PowerPC versions of *clib2* may call software floating point support routines in order to perform double and single precision operations that go beyond simple addition and multiplication, such as `sqrt()`. These functions come from Sun Microsystems <a href="http://www.netlib.org/fdlibm/">fdlibm 5.3</a> library.
Unless your software is linked against `libm.a` no floating point functions will be available to it, possibly causing a linker error. When using the GNU 'C' compiler, you will want to add the option `-lm -lc` to the linker command line.
The exception handling is currently entirely out of control of the developer and solely subject to the rules imposed by the operating system itself.
The `fmod()` function returns the value of the `x` parameter and sets `errno` to `EDOM` if the `y` parameter value is 0.
#### Library functions
##### `NULL`
The `NULL` pointer constant is defined in the `<stddef.h>` header and will expand to `((void *)0L)` if the 'C' compiler is used. For a C++ compiler the constant will expand to `0L` instead.
##### `assert()` diagnostic messages
The diagnostic messages printed by the `assert()` function take the following form:
> `[*program name*] *file*:*line*: failed assertion "*condition*".`
where:
Label | Meaning
----- | -------
program name | Optional program name; if the program name is not yet known, then the entire text enclosed in square brackets will be omitted.
file | The value of the `__FILE__` symbol at the location of the `assert()` call.
line | The value of the `__LINE__` symbol at the location of the `assert()` call.
condition | The condition passed to the `assert()` function.
If available, the diagnostic messages will be sent to `stderr`.
If the program was launched from Workbench or if the global variable `__no_standard_io` is set to a non-zero value, then the assertion failure message will not be displayed in the shell window, but in a requester window. The diagnostic message shown in this window will take the following form:
> `Assertion of condition "*condition*" failed in file "*file*", line *line*.`
The name of the program, if it is know at that time, will be displayed in the requester window title.
##### Signal handling
Only the minimum of required signals are supported by this library. These are `SIGABRT`, `SIGFPE`, `SIGILL`, `SIGINT`, `SIGSEGV` and `SIGTERM`.
As of this writing `SIGFPE` is never called by the floating point library functions.
The `Ctrl+C` event is translated into `SIGINT`. Signal delivery may be delayed until a library function which polls for the signal examines it. This means, for example, that a runaway program caught in an infinite loop cannot be aborted by sending it a `Ctrl+C` event unless special code is added which tests for the presence of the signal and calls the `__check_abort()` function on its own accord.
Processing of the `Ctrl+C` event involves the internal `__check_abort()` function which polls for the presence of the event and which will call `raise(SIGINT);`. The `__check_abort()` function may be replaced by user code.
##### Files
No new line characters are written unless specifically requested.
Space characters in a text stream before a new line character are read in and are not discarded.
When data is read from a file, the last character does not have to be a new line character.
No `NUL` byte will be appended to data written to a binary stream.
There is no difference between text and binary streams.
Writing to a text or binary stream does not truncate the associated file. A stream may be truncated by the initial `fopen()` call if the `mode` parameter starts with the letter `w`.
The file position indicator is initially set to the end of an append mode stream.
##### `printf()` family
The `%p` conversion is the hexadecimal representation of the pointer, and it is preceded by the string `0x`.
The `%a`, `%e`, `%f`, `%g`, `%A`, `%E`, `%F` and `%G` specifiers will produce the string `inf` for infinity.
##### `scanf()` family
The input for the `%p` conversion must be a hexadecimal number, preceded by either the string `0x` or `0X`.
In the `%[` conversion a `-` (dash) character that is neither the first nor the last character in the scanset indicates that a subrange of characters should be used. Thus `%[a-d]` is equivalent to `%[abcd]`.
The period (.) is the decimal-point character. The locale specific decimal-point character is accepted as an alternative to the period (.).
##### `malloc()`, `realloc()` and `calloc()`
In the standard `libc.a` implementation any request to allocate 0 (zero) bytes will fail. A result value of `NULL` will be returned and the global `errno` variable will be set to `EINVAL`.
In the `libunix.a` implementation a request to allocate 0 (zero) bytes will result in an allocation of at least 4 bytes, which will be set to zero. Each zero length allocation will return a different memory address.
##### `rename()`
In the standard `libc.a` implementation the `rename()` function will fail if there already is a file or directory by the new name to be used.
In the `libunix.a` implementation the `rename()` function will delete any existing file or directory by the new name.
##### `remove()`
In the standard `libc.a` implementation the `remove()` function will fail if the file is protected by deletion or currently in use.
In the `libunix.a` implementation the `remove()` function will remove the file when the program exits or the file is closed.
##### `abort()`
The `abort()` function will flush all buffered files, close all the files currently open and delete temporary files.
##### `exit()` and `_Exit()`
The value passed to the `exit()` function will be passed to the Amiga operating system. The value of `EXIT_FAILURE` is equivalent to `RETURN_FAIL` as defined in the Amiga system header file `<dos/dos.h>`; this value maps to the number 20. The value of `EXIT_SUCCESS` is equivalent to `RETURN_OK` as defined in the Amiga system header file `<dos/dos.h>`; this value maps to the number 0.
The `_Exit()` function will flush all buffered files, close all the files currently open and delete temporary files.
##### `getenv()`
Environment data is retrieved from the global Amiga operating system environment storage area through the `dos.library/GetEnv()` function. Global variables are stored in files in the `ENV:` directory.
##### `system()`
If the `command` parameter is not NULL and the `system()` function returns, then the result will be equivalent to the exit code of the program invoked, or -1 if the program could not be started. This follows the behaviour of the Amiga operating system function `dos.library/System()`. A return value of 0 typically indicates successful execution and a value > 0 typically indicates failure.
##### Time
The default time zone is derived from the Amiga operating system locale settings and takes the form `GMT+*hh*` or `GMT-*hh*`, respectively, in which *hh* stands for the difference between the local time zone and Greenwich Mean Time (actually, this is not GMT but UTC).
The `clock_t` and `time_t` types are unsigned 32 bit integers. The `time_t` epoch starts with midnight January 1st, 1970.
Daylight savings time is not supported.
The reference point used by the `clock()` function is the time when the program was started.
#### Locale specific behaviour
The direction of printing is from left to right.
The period (.) is the decimal-point character.
The `strftime()` behaviour follows the Amiga operating system locale settings. If the 'C' locale is in effect, then the output generated by the `%Z` takes the form `GMT+*hh*` or `GMT-*hh*`, respectively, in which *hh* stands for the difference between the local time zone and Greenwich Mean Time (this is really UTC).
## Conventions and design issues
You will have noticed the 330+ files in this directory. This is not the best way to organize a runtime library, but at least all the bits and pieces are in plain sight. Each file stands for the one or two routines it contains. The name indicates what routine(s) that might be. Each file name is prefixed by the name of the header file in which the corresponding routine is defined. So, for example, you will find that `unistd_lchown.c` contains the definition of the `lchown()` routine, which has its prototype defined in the `<unistd.h>` header file.
Internal function and variables which need to be visible across several modules have names prefixed with two underscores, as in `__stdio_init()`.
By default all library routines follow the ISO 'C' conventions in that where implementation defined behaviour is permitted, the AmigaOS rules are followed. For example, `unlink()` will by default operate like `DeleteFile()` and `rename()` will return with an error code set if the name of the file/directory to be renamed would collide with an existing directory entry.
## The startup code
There are three program startup files provided. The most simplistic is in `startup.c` which I use for *SAS/C*. It just invokes the setup routine which eventually calls `main()` and drops straight into `exit()`.
The `ncrt0.S` file was adapted from the *libnix* startup code which sets up the base relative data area, if necessary (the `SMALL_DATA` preprocessor symbol must be defined).
The `nrcrt0.S` file was adapted from *libnix* startup code, too, and sets up the base relative data area for programs to be made resident. Note that the `geta4()` stub is missing here; it wouldn't work in a resident program anyway.
The `ncrt0.S` and `nrcrt0.S` files are considerably smaller and less complex than the *libnix* code they are based on. This is because in this library design all the more complex tasks are performed in the `stdlib_main.c` file rather than in assembly language.
## Documentation
Well, you're reading it. There isn't anything much yet. You can consult the book *'C' - A reference manual* and you could look at the
<a href="http://www.opengroup.org/onlinepubs/007904975">Open Group's Single Unix
Specification</a>.
It is recommended to browse the contents of the `include` directory. The header files contain information on library behaviour and not just data type and function prototype definitions. Specifically, the `<dos.h>` header file contains documentation about special libraries and global variables which may be used or replaced by user code.
## Legal status
Because this library is in part based upon free software it would be uncourteous not to make it free software itself. The BSD license would probably be appropriate here.
The PowerPC math library is based in part on work by Sun Microsystems:
<pre>
====================================================
Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
Developed at SunPro, a Sun Microsystems, Inc. business.
Permission to use, copy, modify, and distribute this
software is freely granted, provided that this notice
is preserved.
====================================================
</pre>
## Contacting the author
The basic work was done by Olaf Barthel during two weeks in July 2002. You can reach me at:
Olaf Barthel
Gneisenaustr. 43
D-31275 Lehrte
Or via e-mail:
obarthel [at] gmx.net

View File

@@ -512,6 +512,6 @@ can reach me at:</p>
<p>Or via e-mail:</p>
<p>olsen [at] sourcery&#46;han&#46;de</p>
<p>obarthel [at] gmx&#46;net</p>
</body>
</html>

View File

@@ -1,5 +1,5 @@
#
# $Id: GNUmakefile.68k,v 1.106 2008-04-16 07:38:10 obarthel Exp $
# $Id: GNUmakefile.68k,v 1.107 2010-10-20 13:50:16 obarthel Exp $
#
# :ts=8
#
@@ -326,11 +326,16 @@ C_LIB = \
stdlib_dosbase.o \
stdlib_exit.o \
stdlib_free.o \
stdlib_free_unused_slabs.o \
stdlib_decay_unused_slabs.o \
stdlib_getdefstacksize.o \
stdlib_getenv.o \
stdlib_getmemstats.o \
stdlib_getsp.o \
stdlib_get_errno.o \
stdlib_get_slab_usage.o \
stdlib_get_slab_allocations.o \
stdlib_get_slab_stats.o \
stdlib_isresident.o \
stdlib_labs.o \
stdlib_llabs.o \
@@ -368,11 +373,10 @@ C_LIB = \
stdlib_set_process_window.o \
stdlib_shell_escape.o \
stdlib_showerror.o \
stdlib_slab.o \
stdlib_slab_max_size.o \
stdlib_slab_purge_threshold.o \
stdlib_srand.o \
stdlib_stackargbytes.o \
stdlib_stackcheck.o \
stdlib_stackoverflow.o \
stdlib_stacksafezone.o \
stdlib_stacksize.o \
stdlib_stack_usage.o \
stdlib_arg.o \
@@ -445,6 +449,7 @@ C_LIB = \
time_numbertostring.o \
time_strftime.o \
time_time.o \
time_tzset.o \
time_weekday.o \
uio_readv.o \
uio_writev.o \
@@ -1123,17 +1128,31 @@ $(LIBC_OBJS)/stdlib_getdefstacksize.o : stdlib_getdefstacksize.c stdlib_gcc_help
$(LIBC_OBJS)/stdlib_shell_escape.o : stdlib_shell_escape.c stdlib_gcc_help.h
$(LIBC_OBJS)/stdlib_alloca.o : stdlib_alloca.c stdlib_memory.h
$(LIBC_OBJS)/stdlib_alloca.o : stdlib_alloca.c stdlib_memory.h include/stdlib.h
$(LIBC_OBJS)/stdlib_calloc.o : stdlib_calloc.c stdlib_memory.h
$(LIBC_OBJS)/stdlib_calloc.o : stdlib_calloc.c stdlib_memory.h include/stdlib.h
$(LIBC_OBJS)/stdlib_free.o : stdlib_free.c stdlib_memory.h
$(LIBC_OBJS)/stdlib_free.o : stdlib_free.c stdlib_memory.h include/stdlib.h
$(LIBC_OBJS)/stdlib_malloc.o : stdlib_malloc.c stdlib_memory.h
$(LIBC_OBJS)/stdlib_malloc.o : stdlib_malloc.c stdlib_memory.h include/stdlib.h
$(LIBC_OBJS)/stdlib_realloc.o : stdlib_realloc.c stdlib_memory.h
$(LIBC_OBJS)/stdlib_slab.o : stdlib_slab.c stdlib_memory.h include/stdlib.h
$(LIBC_OBJS)/stdlib_red_black.o : stdlib_red_black.c stdlib_memory.h
$(LIBC_OBJS)/stdlib_slab_purge_threshold.o : stdlib_slab_purge_threshold.c stdlib_memory.h include/stdlib.h
$(LIBC_OBJS)/stdlib_get_slab_stats.o : stdlib_get_slab_stats.c stdlib_memory.h include/stdlib.h
$(LIBC_OBJS)/stdlib_free_unused_slabs.o : stdlib_free_unused_slabs.c stdlib_memory.h include/stdlib.h
$(LIBC_OBJS)/stdlib_decay_unused_slabs.o : stdlib_decay_unused_slabs.c stdlib_memory.h include/stdlib.h
$(LIBC_OBJS)/stdlib_get_slab_usage.o : stdlib_get_slab_usage.c stdlib_memory.h include/stdlib.h
$(LIBC_OBJS)/stdlib_get_slab_allocations.o : stdlib_get_slab_allocations.c stdlib_memory.h include/stdlib.h
$(LIBC_OBJS)/stdlib_realloc.o : stdlib_realloc.c stdlib_memory.h include/stdlib.h
$(LIBC_OBJS)/stdlib_red_black.o : stdlib_red_black.c stdlib_memory.h include/stdlib.h
##############################################################################
@@ -1314,8 +1333,6 @@ CONSTRUCTOR_FILES = \
stdlib_malloc.c \
stdlib_program_name.c \
stdlib_setenv.c \
stdlib_stackcheck.c \
stdlib_stackextension.c \
time_clock.c \
unistd_chdir_exit.c \
unistd_init_exit.c \

View File

@@ -1,5 +1,5 @@
#
# $Id: GNUmakefile.os4,v 1.114 2008-04-28 15:49:25 obarthel Exp $
# $Id: GNUmakefile.os4,v 1.116 2008-11-06 14:44:07 obarthel Exp $
#
# :ts=8
#
@@ -26,10 +26,19 @@ NET_INCLUDE := netinclude
CC := ppc-amigaos-gcc
AR := ppc-amigaos-ar -q
RANLIB := ppc-amigaos-ranlib
COPY := cp -a
COPY := cp -p
DELETE := rm -rf
MAKEDIR := mkdir -p
LOG_COMMAND := 2>&1 | tee -a compiler.log
# Enabling the LOG_COMMAND has the consequence that a rule will not
# fail on an error because only the exit status from the tee command
# will be considered
#LOG_COMMAND := 2>&1 | tee -a compiler.log
LOG_COMMAND :=
# You may need to request a specific compiler version in order to
# build the baserel versions of the library. At this time of
# writing (2008-11-06) GCC 4.0.4 and below support the -mbaserel
# feature, but more recent versions, including GCC 4.2.4, do not.
#COMPILER_VERSION := -V4.0.2
# The following are for the native OS4 compiler; note that the
# LOG_COMMAND should not be enabled unless you have a shell
@@ -42,25 +51,27 @@ LOG_COMMAND := 2>&1 | tee -a compiler.log
#COPY := copy
#DELETE := delete all quiet force
#MAKEDIR := makedir all force
#COMPILER_VERSION := -V4.0.2
#LOG_COMMAND := *>< | tee >>compiler.log
##############################################################################
WARNINGS := \
-Wall -W -Wpointer-arith -Wsign-compare -Wmissing-prototypes \
-Wundef -Wbad-function-cast -Wmissing-declarations -Wunused -Wwrite-strings
-Wundef -Wmissing-declarations -Wunused -Wwrite-strings \
-Wno-deprecated-declarations -Wno-unused-label \
# -Wconversion -Wshadow
# -Wconversion -Wshadow -Wbad-function-cast
INCLUDES := -Iinclude -I. -I$(SDK_INCLUDE)
OPTIONS := -DUSE_64_BIT_INTS -D__USE_INLINE__ -Wa,-mregnames -fno-common -std=gnu99
OPTIONS := -DUSE_64_BIT_INTS -D__USE_INLINE__ -Wa,-mregnames -fno-builtin -fno-common -std=c99 -nostdlib
OPTIMIZE := -DNDEBUG -O3
#DEBUG := -ggdb
#MEMDEBUG := -D__USE_MEM_TREES -D__MEM_DEBUG
CFLAGS := $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(MEMDEBUG) $(OPTIONS) $(INCLUDES)
AFLAGS := -Wa,-mregnames
CFLAGS := $(COMPILER_VERSION) $(WARNINGS) $(OPTIMIZE) $(DEBUG) $(MEMDEBUG) $(OPTIONS) $(INCLUDES)
AFLAGS := $(COMPILER_VERSION) -Wa,-mregnames
LARGEDATA := -msdata=data
SOFTFLOAT := -msdata=data -msoft-float
@@ -153,6 +164,10 @@ cvs-tag:
# General build rules for all object files and the individual libraries
lib/crtbegin.o : CFLAGS += -fno-aggressive-loop-optimizations
lib/crtbegin.o : crtbegin.c
@$(COMPILE)
lib/%.o : AFLAGS += $(LARGEDATA)
lib/%.o : %.S
@$(ASSEMBLE)
@@ -164,6 +179,11 @@ lib/small-data/%.o : AFLAGS += $(SMALLDATA)
lib/small-data/%.o : %.S
@$(ASSEMBLE)
lib/small-data/crtbegin.o : CFLAGS += $(SMALLDATA) -fno-aggressive-loop-optimizations
lib/small-data/crtbegin.o : crtbegin.c
@$(COMPILE)
lib/small-data/%.o : CFLAGS += $(SMALLDATA)
lib/small-data/%.o : %.c
@$(COMPILE)
@@ -171,6 +191,11 @@ lib/soft-float/%.o : AFLAGS += $(SOFTFLOAT)
lib/soft-float/%.o : %.S
@$(ASSEMBLE)
lib/soft-float/crtbegin.o : CFLAGS += $(SOFTFLOAT) -fno-aggressive-loop-optimizations
lib/soft-float/crtbegin.o : crtbegin.c
@$(COMPILE)
lib/soft-float/%.o : CFLAGS += $(SOFTFLOAT)
lib/soft-float/%.o : %.c
@$(COMPILE)
@@ -178,6 +203,11 @@ lib/baserel/%.o : AFLAGS += $(BASEREL)
lib/baserel/%.o : %.S
@$(ASSEMBLE)
lib/baserel/crtbegin.o : CFLAGS += $(BASEREL) -fno-aggressive-loop-optimizations
lib/baserel/crtbegin.o : crtbegin.c
@$(COMPILE)
lib/baserel/%.o : CFLAGS += $(BASEREL)
lib/baserel/%.o : %.c
@$(COMPILE)
@@ -185,6 +215,11 @@ lib.threadsafe/%.o : AFLAGS += $(LARGEDATA) $(THREADSAFE)
lib.threadsafe/%.o : %.S
@$(ASSEMBLE)
lib.threadsafe/crtbegin.o : CFLAGS += $(THREADSAFE) $(LARGEDATA) -fno-aggressive-loop-optimizations
lib.threadsafe/crtbegin.o : crtbegin.c
@$(COMPILE)
lib.threadsafe/%.o : CFLAGS += $(THREADSAFE) $(LARGEDATA)
lib.threadsafe/%.o : %.c
@$(COMPILE)
@@ -192,6 +227,11 @@ lib.threadsafe/small-data/%.o : AFLAGS += $(SMALLDATA) $(THREADSAFE)
lib.threadsafe/small-data/%.o : %.S
@$(ASSEMBLE)
lib.threadsafe/small-data/crtbegin.o : CFLAGS += $(THREADSAFE) $(SMALLDATA) -fno-aggressive-loop-optimizations
lib.threadsafe/small-data/crtbegin.o : crtbegin.c
@$(COMPILE)
lib.threadsafe/small-data/%.o : CFLAGS += $(THREADSAFE) $(SMALLDATA)
lib.threadsafe/small-data/%.o : %.c
@$(COMPILE)
@@ -199,6 +239,11 @@ lib.threadsafe/soft-float/%.o : AFLAGS += $(SOFTFLOAT) $(THREADSAFE)
lib.threadsafe/soft-float/%.o : %.S
@$(ASSEMBLE)
lib.threadsafe/soft-float/crtbegin.o : CFLAGS += $(THREADSAFE) $(SOFTFLOAT) -fno-aggressive-loop-optimizations
lib.threadsafe/soft-float/crtbegin.o : crtbegin.c
@$(COMPILE)
lib.threadsafe/soft-float/%.o : CFLAGS += $(THREADSAFE) $(SOFTFLOAT)
lib.threadsafe/soft-float/%.o : %.c
@$(COMPILE)
@@ -206,6 +251,11 @@ lib.threadsafe/baserel/%.o : AFLAGS += $(BASEREL) $(THREADSAFE)
lib.threadsafe/baserel/%.o : %.S
@$(ASSEMBLE)
lib.threadsafe/baserel/crtbegin.o : CFLAGS += $(THREADSAFE) $(BASEREL) -fno-aggressive-loop-optimizations
lib.threadsafe/baserel/crtbegin.o : crtbegin.c
@$(COMPILE)
lib.threadsafe/baserel/%.o : CFLAGS += $(THREADSAFE) $(BASEREL)
lib.threadsafe/baserel/%.o : %.c
@$(COMPILE)
@@ -214,17 +264,17 @@ lib.threadsafe/baserel/%.o : %.c
define COMPILE
-$(MAKEDIR) $(@D)
echo "Compiling $< [$(@D)]"
$(CC) -o $@ -c $(CFLAGS) $< $(LOG_COMMAND)
$(CC) $(CFLAGS) -o $@ -c $< $(LOG_COMMAND)
endef
define ASSEMBLE
-$(MAKEDIR) $(@D)
echo "Assembling $< [$(@D)]"
$(CC) -o $@ -c $(AFLAGS) $< $(LOG_COMMAND)
$(CC) $(AFLAGS) -o $@ -c $< $(LOG_COMMAND)
endef
define MAKELIB
-$(MAKEDIR) $@
-$(MAKEDIR) $(@D)
$(DELETE) $@
echo "Making $@"
$(AR) $@ $^ $(LOG_COMMAND)

0
library/TODO Executable file → Normal file
View File

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 203
#define DATE "28.4.2008"
#define VERS "amiga.lib 1.203"
#define VSTRING "amiga.lib 1.203 (28.4.2008)\r\n"
#define VERSTAG "\0$VER: amiga.lib 1.203 (28.4.2008)"
#define REVISION 215
#define DATE "26.6.2017"
#define VERS "amiga.lib 1.215"
#define VSTRING "amiga.lib 1.215 (26.6.2017)\r\n"
#define VERSTAG "\0$VER: amiga.lib 1.215 (26.6.2017)"

View File

@@ -1 +1 @@
203
215

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -1,10 +1,10 @@
/*
* $Id: amiga_argarrayinit.c,v 1.6 2006-09-22 09:02:51 obarthel Exp $
* $Id: amiga_argarrayinit.c,v 1.7 2008-09-30 14:09:00 obarthel Exp $
*
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -52,6 +52,14 @@
/****************************************************************************/
#ifdef __amigaos4__
#define MEMORY_TYPE MEMF_PRIVATE
#else
#define MEMORY_TYPE MEMF_ANY
#endif /* __amigaos4__ */
/****************************************************************************/
const unsigned char ** CXLIB_argarray;
struct DiskObject * CXLIB_disko;
@@ -70,7 +78,7 @@ ArgArrayInit(LONG argc, CONST_STRPTR * argv)
if(argc == 1)
goto out; /* skip command name */
CXLIB_argarray = (const unsigned char **)AllocVec(sizeof(char *) * argc,MEMF_ANY|MEMF_CLEAR);
CXLIB_argarray = (const unsigned char **)AllocVec(sizeof(char *) * argc,MEMORY_TYPE|MEMF_CLEAR);
if(CXLIB_argarray == NULL)
goto out;

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=8
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -79,6 +79,8 @@ DoTimer(struct timeval *tv,LONG unit,LONG command)
struct MsgPort * mp;
LONG error;
PROFILE_OFF();
assert( tv != NULL );
#if defined(__amigaos4__)
@@ -129,14 +131,10 @@ DoTimer(struct timeval *tv,LONG unit,LONG command)
tr->tr_time.tv_secs = tv->tv_secs;
tr->tr_time.tv_micro = tv->tv_micro;
PROFILE_OFF();
SetSignal(0,(1UL << mp->mp_SigBit));
error = DoIO((struct IORequest *)tr);
PROFILE_ON();
tv->tv_secs = tr->tr_time.tv_secs;
tv->tv_micro = tr->tr_time.tv_micro;
@@ -161,5 +159,7 @@ DoTimer(struct timeval *tv,LONG unit,LONG command)
}
#endif /* __amigaos4__ */
PROFILE_ON();
return(error);
}

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=8
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -262,9 +262,8 @@ STATIC VOID
_SetValue(struct Environment * env,struct NexxStr * value,struct Node * symbol_table_node)
{
STATIC CONST UWORD code[] = { 0x4EAE,0xFFAC,0x4E75 }; /* jsr -84(a6) ; rts */
struct Node * result;
result = (struct Node *)EmulateTags(code,
EmulateTags(code,
ET_RegisterA0,env,
ET_RegisterA1,value,
ET_RegisterD0,symbol_table_node,

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -13,9 +13,9 @@ rm -rf $dir_name
# Create the directory, copy all the libraries, header files
# and release note files inside.
mkdir $dir_name
cp -a lib $dir_name
cp -a lib.threadsafe $dir_name
cp -a include $dir_name
cp -pR lib $dir_name
cp -pR lib.threadsafe $dir_name
cp -pR include $dir_name
cp changes $dir_name
# Delete the CVS data from the include directory

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 203
#define DATE "28.4.2008"
#define VERS "c.lib 1.203"
#define VSTRING "c.lib 1.203 (28.4.2008)\r\n"
#define VERSTAG "\0$VER: c.lib 1.203 (28.4.2008)"
#define REVISION 215
#define DATE "26.6.2017"
#define VERS "c.lib 1.215"
#define VSTRING "c.lib 1.215 (26.6.2017)\r\n"
#define VERSTAG "\0$VER: c.lib 1.215 (26.6.2017)"

View File

@@ -1 +1 @@
203
215

View File

@@ -1,3 +1,237 @@
c.lib 1.216 (xxx)
- Add some wchar and multbyte-string related functions to allow gcc
building a libstdc++ library with wide char support. For now, the
functions are mostly stub ones only. They can be implemented on
demand.
c.lib 1.215 (26.6.2017)
- Added -fno-aggressive-loop-optimizations option when building crtbegin.c
to work around constructor/destructor hack with GCC 5.4.0 on AmigaOS 4.
- Added -fno-builtin option to fix conflicts with builtin memset()
with GCC 5.4.0 on AmigaOS 4.
c.lib 1.214 (27.4.2017)
- Added integer overflow test to calloc().
- Tiny change in getopt_long() so that the value pointed to by longindex
is always initialized to an invalid index position (that being -1),
instead of 0. The value of 0 can break some shell commands, most notably
GNU wget.
c.lib 1.213 (4.12.2016)
- Added the __decay_unused_slabs() function which brings all currently
empty slabs which are still protected from reuse closer to getting
reused or released.
- The slab-test program now exercises the memory allocation functions
to a greater degree. Memory is allocated in random chunk sizes,
the allocations are resized (to other random chunk sizes),
33% of all allocations are randomly freed, empty slabs readied for
reuse then discarded. The output in JSON format now shows a bit
more information as to what is being done.
- Rewrote __get_slab_stats() to use setjmp() and longjmp() in the
print() callback invocation.
- __get_slab_stats() now reports how many times a slab was reused
after having stuck around in the "empty slab" list.
- Changing the slab size through an environment variable is now
a feature of the debug build.
- Small changes to allow the library to be built with SAS/C again.
This includes adding code to disable/re-enable profiling,
fixing "stdlib_profile.h" and updating the smakefiles.
- Still not sure what it does, but _CXV45 now sits along with _CX25
and _CX35 in "sas_cxv.asm". "sas_cxv54.asm" is not needed any
more.
- Found the last use of MEMF_PRIVATE which should have been compiled
only for the OS4 version.
c.lib 1.212 (27.11.2016)
- Unused slabs which get recycled are no longer reinitialized from
scratch if their chunk size matches what the allocator needed.
If the chunk size matches, the list of available chunks is
left unchanged, and just the various counters are reset.
- Added __get_slab_stats() function.
- Added support for global __slab_purge_threshold tuning variable.
c.lib 1.211 (23.11.2016)
- Added more consistency checking to the slab allocator, which is
built if DEBUG is defined in "stdlib_slab.c".
- Memory allocations are no longer guaranteed to be aligned to
64 bit word boundaries. In fact, this has not even worked
reliably in the past 10 years.
- Memory allocation request sizes are now rounded to multiples of
32 bit words (the size of an address pointer) instead to the
size of a 64 bit word.
- Reduced the memory footprint of the memory allocation management
data structures by reusing the most significant bit of the
memory allocation size. This allows many more allocations to fit
into the 32 byte chunk slabs, but limits the maximum memory
allocation size to a little less than 2 GBytes.
- Added integer overflow checks to the memory management code.
- Reduced the memory management overhead further. This cuts an
additional 8 bytes per allocation, unless neither the slab
allocator nor memory pools are available. With this reduction
the slab allocator is able to use 16 byte chunks, which cover
memory allocation requests of 1..8 bytes.
- Fixed a bug caused by returning an allocation back to a slab
which passed the wrong pointer.
c.lib 1.210 (22.11.2016)
- Added __get_slab_allocations() function which will report information
about each memory allocation made by the slab allocator which does
not come from a slab.
- If the first slab in the list of slabs which share the same chunk
size has no more room, it means that all other slabs following
it have no room either. This speeds up the test to find a slab with
free space, which can now abort and directly proceed to allocate
memory for a new slab.
- If an empty slab's decay count hits zero, it is moved to the front
of the empty slab list to be reclaimed more quickly.
- Allocations made from the slab now carry a pointer back to the
slab which they are a part of. This speeds up deallocation but
has the downside of making the smallest usable slab chunk size
64 bytes, which is double what used to be the minimum before.
c.lib 1.209 (21.11.2016)
- The maximum slab size is now 2^17 bytes (= 131072). If you request
a slab size larger than this, you will get slab sizes of 131072
bytes instead.
- Enabling the memory management debugging code no longer produces
compiler errors.
c.lib 1.208 (19.11.2016)
- Updated <stdlib.h> with new functions and data structures for
use with the slab allocator.
- Added __get_slab_usage() function which can be used to query
the slab allocator memory usage at runtime.
c.lib 1.207 (18.11.2016)
- Added a slab allocator which replaces the use of memory pools or the
plain AllocMem() operations, respectively. In order to activate the
slab allocator, choose a slab size (e.g. 2048 bytes or 4096 bytes)
and declare a global variable like this:
ULONG __slab_max_size = 2048;
Memory allocations smaller than the slab size will be made from
"slabs", i.e. large chunks of memory of the given size. Larger
allocations will be managed separately.
m.lib 1.206 (24.4.2015)
- The fscanf() family failed to parse and convert %f parameters correctly
if the respective number did not begin with a digit, but a decimal
point. Hence ".7" would not be processed, but "0.7" would.
c.lib 1.206 (24.4.2015)
- Reworked the __putc() and putc() macros to reference the 'c' input
parameter only once, and to be free of side-effects when tinkering
with the buffer position.
- isatty() had the __fd_lock() call in the wrong place, which could have
led to cleanup problems later.
- The close action in the stdio, socket and termios hook code now
also zaps the fd pointer itself after cleaning up the file descriptor
table entry.
- Removed the remains of all the stack extension and stack overflow/underflow
checking code. It never actually worked. The bit that does work is the stack
usage measurement code, plus the bit that sets up the the custom stack
according to local setting or by calling a query function.
c.lib 1.205 (21.8.2010)
- Added dlclose(), dlerror(), dlopen() and dlsym() functions, which are
available only under OS4. There is a variant of dlopen() in libunix.a
which will perform a path name conversion. Note that these functions
will not work in the thread-safe variant of the library because it
would be unwise to tinker with the currently running program's binary.
- Added support for ELF shared objects and libraries. This is implemented through
constructor/destructor functions, which means that you can use this
functionality even in Amiga Exec style shared libraries, with the proper
library initialization code to invoke the constructor/destructor functions
for you.
- Updated uname() to recognize AmigaOS 4.1.
- The translation from Unix to Amiga path names did not properly process
multiple occurences of "/./" in the path name. Thanks go to Steven Solie
for finding the issue.
- The detection of "/./" and "/../" patterns in Unix path names to be
translated into Amiga path names did not test if it was overrunning
the end of the string.
- If strcmp(), strncmp() and memcmp() detect a pair of different
characters, then the function result must be calculated as if the
characters were of type "unsigned char". This is a requirement
according to the ISO 'C' (1994) standard. Thanks go to Georg Steger
for finding the issue.
- The definitions for INT_MIN, INT_MAX and UINT_MAX in <limits.h> no
longer use long integer types, as prompted by Steven Solie.
c.lib 1.204 (11.11.2008)
- The memory allocated by malloc() and friends is now of type MEMF_PRIVATE
under OS4 and beyond. The AmigaOS 2.x/3.x compatible code will still
use MEMF_ANY in the same situation, though. Other uses of MEMF_ANY have
been replaced as well where MEMF_PRIVATE would have made better sense.
- I/O buffers allocated are now aligned according to the CPU cache line size,
if the operating system can supply such detailed information.
- unsetenv() now returns a status value.
- Corrected the function prototype for wcspbrk().
- Added function prototypes for mbrtowc_l(), wcscoll_l(), wcscspn() and wcsrchr().
c.lib 1.203 (28.4.2008)
- Added 68k stubs to amiga_rexxvars.c for the OS4 build to use. The new code now

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

2
library/complex_headers.h Executable file → Normal file
View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -1,7 +1,34 @@
//
// $Id: crt0.S,v 1.6 2005-10-11 09:28:29 obarthel Exp $
// $Id: crt0.S,v 1.6 2005-10-11 09:28:29 obarthel Exp $
//
// :ts=4
// :ts=4
//
// Portable ISO 'C' (1994) runtime library for the Amiga computer
// Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
//
// - Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//
// - Neither the name of Olaf Barthel nor the names of contributors
// may be used to endorse or promote products derived from this
// software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
//
.text

View File

@@ -1,9 +1,37 @@
/*
* $Id: crtbegin.c,v 1.11 2006-09-22 09:02:51 obarthel Exp $
/*
* crtbegin.c
*
* :ts=4
*
* Handles global constructors and destructors for the OS4 GCC build.
*
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Neither the name of Olaf Barthel nor the names of contributors
* may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#if defined(__amigaos4__)
@@ -20,7 +48,12 @@
* Dummy constructor and destructor array. The linker script will put these at the
* very beginning of section ".ctors" and ".dtors". crtend.o contains a similar entry
* with a NULL pointer entry and is put at the end of the sections. This way, the init
* code can find the global constructor/destructor pointers
* code can find the global constructor/destructor pointers.
*
* WARNING:
* This hack does not work correctly with GCC 5 and higher. The optimizer
* will see a one element array and act appropriately. The current workaround
* is to use -fno-aggressive-loop-optimizations when compiling this file.
*/
static void (*__CTOR_LIST__[1]) (void) __attribute__(( used, section(".ctors"), aligned(sizeof(void (*)(void))) ));
static void (*__DTOR_LIST__[1]) (void) __attribute__(( used, section(".dtors"), aligned(sizeof(void (*)(void))) ));
@@ -35,9 +68,14 @@ void _fini(void);
void
_init(void)
{
extern void shared_obj_init(void);
int num_ctors,i;
int j;
/* The shared objects need to be set up before any local
constructors are invoked. */
shared_obj_init();
for(i = 1, num_ctors = 0 ; __CTOR_LIST__[i] != NULL ; i++)
num_ctors++;
@@ -50,6 +88,7 @@ _init(void)
void
_fini(void)
{
extern void shared_obj_exit(void);
int num_dtors,i;
static int j;
@@ -58,6 +97,10 @@ _fini(void)
while(j++ < num_dtors)
__DTOR_LIST__[j]();
/* The shared objects need to be cleaned up after all local
destructors have been invoked. */
shared_obj_exit();
}
/****************************************************************************/

View File

@@ -1,9 +1,37 @@
/*
/*
* $Id: crtend.c,v 1.2 2005-03-09 21:07:25 obarthel Exp $
*
* :ts=4
*
* End markers for the CTOR and DTOR list.
*
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Neither the name of Olaf Barthel nor the names of contributors
* may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#if defined(__amigaos4__)

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=8
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=8
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -4,7 +4,7 @@
* :ts=4
*
* Portable ISO 'C' (1994) runtime library for the Amiga computer
* Copyright (c) 2002-2006 by Olaf Barthel <olsen (at) sourcery.han.de>
* Copyright (c) 2002-2015 by Olaf Barthel <obarthel (at) gmx.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@@ -1,6 +1,6 @@
#define VERSION 1
#define REVISION 203
#define DATE "28.4.2008"
#define VERS "debug.lib 1.203"
#define VSTRING "debug.lib 1.203 (28.4.2008)\r\n"
#define VERSTAG "\0$VER: debug.lib 1.203 (28.4.2008)"
#define REVISION 215
#define DATE "26.6.2017"
#define VERS "debug.lib 1.215"
#define VSTRING "debug.lib 1.215 (26.6.2017)\r\n"
#define VERSTAG "\0$VER: debug.lib 1.215 (26.6.2017)"

Some files were not shown because too many files have changed in this diff Show More