Product SiteDocumentation Site

11.2. Tools

The linker includes support for the new ELF symbol hash table format. Use the --hash-style option of the linker to select the format(s).

11.2.1. Kernel header files

This release of Fedora has been built using Linux kernel headers exported directly from the kernel, using the new headers_install feature of the 2.6.18 kernel. Thus, the glibc-kernheaders package has been removed and replaced with kernel-headers, a subpackage of kernel.
Developers may notice some changes between these new kernel headers and what was present before, including but not limited to the following:
  • The <linux/compiler.h> header file has been removed, since it contains nothing of use to userspace.
  • The _syscallX() macros are removed. Userspace should use syscall() from the C library instead.
  • The PAGE_SIZE macro is removed from some architectures, since the page size is variable. Userspace should be using sysconf(_SC_PAGE_SIZE) or getpagesize() instead.
  • The <asm/atomic.h> and <asm/bitops.h> header files have been removed. These were not designed for use in userspace, and would fail to compile on some architectures while silently giving non-atomic behaviour on others. The C compiler provides its own atomic builtin functions that are suitable for use in userspace programs instead.
  • Content that was previously protected with #ifdef __KERNEL__ is now elided completely with the unifdef tool. Defining __KERNEL___ in order to see parts that should not be visible to userspace is no longer effective.
In addition, some other header files that xare not suitable for use in userspace have been removed, and still more headers have been edited to remove unsuitable content.

Kernel header changes are not Fedora-specific

These changes are inherited from the upstream kernel and are not specific to Fedora. Any distribution using the current officially-exported kernel headers would be the same.