Bionic (software)

from Wikipedia, the free encyclopedia
Bionic
Basic data

developer Open Handset Alliance
Publishing year 2008
Current  version 1.0.14
( July 12, 2019 )
operating system Android
programming language C , C ++ , assembly language
category Standard library
License BSD license
android.googlesource.com/platform/bionic/

Bionic is a program library of Android - the operating system that the functionality of the C standard library , the library of mathematical functions libm , the library for dynamic linking provides libdl and other functions. Bionic is subject to the BSD license and is being further developed by the Open Handset Alliance .

The name Bionic is an allusion to the heterogeneous origin of the source code used .

Development goals

A simple, efficient, BSD-licensed C library for the Android system was to be created with Bionic. The development motto was keep it really simple . Android systems are often battery-powered, have little main and mass storage and use low-clocked processors.

The BSD licensing eliminates copyleft restrictions, which simplifies the development of proprietary components of the Android system.

Popular, frequently used extensions of the GNU-C library as well as the BSD-C libraries have been adopted in Bionic.

Only Linux is intended as the operating system core ; binary compatibility, for example with the GNU C library, is not intended.

Differences to POSIX

The aim of the development of Bionic was extensive compatibility with POSIX and the C11 standard of the C programming language . The current Android version from 2018 Oreo does not contain around 70 POSIX functions of the libc. The reason for this omission of functions is, among other things, that certain functions are not used in Android, for example Android does not use passwd and group databases, which means that access functions such as getpwentcannot be implemented and are not required.

Some functionalities were intentionally not designed to be POSIX-compliant, for example, support for the printf format was %ndispensed with for security reasons.

Supported Platforms

The platforms x86 , x86-64 , armv7-a and ARM64 are supported. ARMv5, MIPS and MIPS64 were supported up to the Android Native Development Kit (NDK) r17 . An experimental SH-4 support was never used commercially and has since been discontinued.

Components

Parts of the libc such as stdio come from OpenBSD , the DNS resolver from NetBSD , the source code of the libm for mathematical functions largely corresponds to the FreeBSD version, but was developed by several system-on-a-chip manufacturers through assembler implementations optimized.

The header files for accessing Linux system calls are automatically generated from the header files of the Linux source code; all content considered to be copyright-relevant is removed during generation.

The support for POSIX threads (libpthread) and the implementation for dynamic linking (libdl) have been completely redeveloped.

Functionalities that are provided on POSIX systems in the libpthread, libresolv and librt libraries are implemented directly in the libc at Bionic.

Web links

credentials

  1. Release 1.0.14 . July 12, 2019 (accessed July 12, 2019).
  2. a b c d e The Android Open Source Project: Bionic C Library Overview. March 3, 2009, accessed December 6, 2018 .
  3. Elliott Hughes: libc: #define to remove support for% n from printf (3)? May 2, 2014, accessed December 5, 2018 .
  4. ^ NDK Revision History. Retrieved December 6, 2018 .