ack/lang/cem/libcc.ansi/core
2018-06-23 17:52:15 +02:00
..
ctype Realise that the libc core can safely call other libc core functions, even if 2018-06-21 23:24:23 +02:00
errno Move the errno functions into core. 2018-06-23 17:52:15 +02:00
locale Realise that the libc core can safely call other libc core functions, even if 2018-06-21 23:24:23 +02:00
math libc floating point and stdio floating point can now be turned on and off using 2018-06-23 00:04:14 +02:00
misc Move assert into core. 2018-06-23 11:16:06 +02:00
setjmp Realise that the libc core can safely call other libc core functions, even if 2018-06-21 23:24:23 +02:00
stdio Move some more libc functions into core. 2018-06-22 22:20:02 +02:00
stdlib Move the string-to-float functions into core, after marking them as 2018-06-23 11:14:24 +02:00
string Realise that the libc core can safely call other libc core functions, even if 2018-06-21 23:24:23 +02:00
README.md Realise that the libc core can safely call other libc core functions, even if 2018-06-21 23:24:23 +02:00

This directory contains the libc core: functions here may depend on other libc functions only (so, no unistd.h stuff). Plats don't get to configure this, so nothing here should add any overhead if the function isn't linked.

Examples of what goes here:

  • strcmp() --- because it's pure code.
  • setjmp() --- in EM, it's portable.
  • assert() --- because it only calls other core functions (fputs() and abort()).

Examples of what doesn't go here:

  • malloc() --- because it calls the unistd.h function sbrk() (and so a plat might want to swap it out).
  • stdio --- because it calls the unistd.h functions read(), write() etc.
  • signal() --- because it can't be implemented portably and needs to go in the plat.