From 472cce5c98bd7200833a093275fd6e576fa0c4c1 Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Fri, 10 Oct 2014 17:14:37 -0700 Subject: Fix some formatting so GitHub displays it nicely. Change-Id: Id6ce9a61bebd98544c85e5780147715c73d0e78b --- README.md | 71 +++++++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 42 insertions(+), 29 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 143c762..300b98f 100644 --- a/README.md +++ b/README.md @@ -4,40 +4,52 @@ Working on bionic What are the big pieces of bionic? ---------------------------------- -libc/ --- libc.so, libc.a - The C library. Stuff like fopen(3) and kill(2). -libm/ --- libm.so, libm.a - The math library. Traditionally Unix systems kept stuff like sin(3) and - cos(3) in a separate library to save space in the days before shared - libraries. -libdl/ --- libdl.so - The dynamic linker interface library. This is actually just a bunch of - stubs that the dynamic linker replaces with pointers to its own - implementation at runtime. This is where stuff like dlopen(3) lives. -libstdc++/ --- libstdc++.so - The C++ ABI support functions. The C++ compiler doesn't know how to - implement thread-safe static initialization and the like, so it just calls - functions that are supplied by the system. Stuff like __cxa_guard_acquire - and __cxa_pure_virtual live here. - -linker/ --- /system/bin/linker and /system/bin/linker64 - The dynamic linker. When you run a dynamically-linked executable, its ELF - file has a DT_INTERP entry that says "use the following program to start me". - On Android, that's either linker or linker64 (depending on whether it's a - 32-bit or 64-bit executable). It's responsible for loading the ELF executable - into memory and resolving references to symbols (so that when your code tries - to jump to fopen(3), say, it lands in the right place). - -tests/ --- unit tests - The tests/ directory contains unit tests. Roughly arranged as one file per - publicly-exported header file. -benchmarks/ --- benchmarks - The benchmarks/ directory contains benchmarks. +#### libc/ --- libc.so, libc.a + +The C library. Stuff like `fopen(3)` and `kill(2)`. + +#### libm/ --- libm.so, libm.a + +The math library. Traditionally Unix systems kept stuff like `sin(3)` and +`cos(3)` in a separate library to save space in the days before shared +libraries. + +#### libdl/ --- libdl.so + +The dynamic linker interface library. This is actually just a bunch of stubs +that the dynamic linker replaces with pointers to its own implementation at +runtime. This is where stuff like `dlopen(3)` lives. + +#### libstdc++/ --- libstdc++.so + +The C++ ABI support functions. The C++ compiler doesn't know how to implement +thread-safe static initialization and the like, so it just calls functions that +are supplied by the system. Stuff like `__cxa_guard_acquire` and +`__cxa_pure_virtual` live here. + +#### linker/ --- /system/bin/linker and /system/bin/linker64 + +The dynamic linker. When you run a dynamically-linked executable, its ELF file +has a `DT_INTERP` entry that says "use the following program to start me". On +Android, that's either `linker` or `linker64` (depending on whether it's a +32-bit or 64-bit executable). It's responsible for loading the ELF executable +into memory and resolving references to symbols (so that when your code tries to +jump to `fopen(3)`, say, it lands in the right place). + +#### tests/ --- unit tests + +The `tests/` directory contains unit tests. Roughly arranged as one file per +publicly-exported header file. + +#### benchmarks/ --- benchmarks + +The `benchmarks/` directory contains benchmarks. What's in libc/? ---------------- +
 libc/
   arch-arm/
   arch-arm64/
@@ -121,6 +133,7 @@ libc/
   zoneinfo/
     # Android-format time zone data.
     # See 'Updating tzdata' later.
+
Adding system calls -- cgit v1.1