Porting Tool chain and Kernel Hardening to uClibc based systems
All modern operating systems are comprised of a kernel and
userland layer. While the kernel deals directly with hardware
resources at the highest privilege level, userland deals with
the end user and operates at the lowest level. The two layers
communicate with one another via system calls (or "syscalls" for
short), which userland issues to the kernel. While any userland
application can issue syscalls directly (eg. in x86 ISA, via an
INT 0x80), almost all userland syscalls on a typical UNIX system
are channeled via one central library referred to as "the C
standard library." Along with the compiler and other utilities
to manipulate executable binaries (eg. binutils), it forms an
integral part of the toolchain, and remains a runtime dependency
of nearly every dynamically linking object in the system. By
far, the most popular is "The GNU C library", or glibc for
short; but, for embedded systems uClibc is the standard library
of choice, although the