Commit Graph

556 Commits

Author SHA1 Message Date
Jim Huang
73c04b3269 bionic: Add ARM optimized strcpy()
Reference results of the experiments on Qualcomm MSM7x25 (524MHz):

[original C code]
             prc thr   usecs/call      samples   errors cnt/samp
size
strcpy_1k      1   1     14.56159           99        0     1000
1024

[ARM optimized code]
             prc thr   usecs/call      samples   errors cnt/samp
size
strcpy_1k      1   1      3.46653           99        0     1000
1024

The work was derived from ARM Ltd.

Change-Id: I906ac53bb7a7285e14693c77d3ce8d4ed6f98bfd
2010-11-22 13:01:32 -08:00
Jean-Baptiste Queru
ea0fe8563d Merge "Bionic: Aliasing problems with frexpf" 2010-11-17 18:15:58 -08:00
Rodrigo Obregon
fddaafceda Bionic: Aliasing problems with frexpf
This patch fixes a known bug in bionic libm
due to aliasing issues in gcc 4.2 and 4.4; more
specifically in frexpf.

The function frexpf is used to extract the
mantissa and exponent from a double precision number.

The bug has already been reported here:
https://code.google.com/p/android/issues/detail?id=6697

Change-Id: I2e1f2e0a45906642d2225b9d150ed391d2bf331c
Signed-off-by: Rodrigo Obregon <robregon@ti.com>
2010-11-05 12:15:26 -05:00
Jean-Baptiste Queru
96c03c7dcc Merge "Remove duplicated _rand48 implementation. Use stdlib version instead" 2010-10-25 16:28:03 -07:00
Jim Huang
70478100d5 Remove duplicated _rand48 implementation. Use stdlib version instead
Originally, there are _rand48 (in libc/bionic/_rand48.c) and __rand48
(in libc/stdlib/_rand48.c) implemented in bionic.  Besides the naming,
the functionality is identical.  This patch removes the duplicated
_rand48.  Also, drand48 and erand48 are modified accordingly.

Change-Id: Ie5761a0a97f45df8538222a77edacb7c3e0125d7
2010-10-25 16:27:47 -07:00
Jean-Baptiste Queru
b2061a30da Merge "resolv: make internal symbols static/hidden" 2010-10-20 18:55:52 -07:00
Jean-Baptiste Queru
4afe0f4724 Merge "time64: make helper functions static" 2010-10-20 18:54:17 -07:00
Jean-Baptiste Queru
ade2a92991 Merge "bionic: stubs: Make internal symbol static" 2010-10-20 18:52:10 -07:00
Jean-Baptiste Queru
2215c11325 Merge "pthread-timers: Hide internal symbol __timer_table_start_stop" 2010-10-20 18:49:51 -07:00
Jean-Baptiste Queru
8ad63d745d Merge "stdlib: strtod: Hide internal symbol __dtoa" 2010-10-19 15:02:44 -07:00
Jean-Baptiste Queru
1e0a4e1892 Merge "stdio: make internal symbols static/hidden" 2010-10-19 14:58:11 -07:00
Jean-Baptiste Queru
847223de9c Merge "__set_errno: Hide internal symbol __set_syscall_errno" 2010-10-19 14:53:28 -07:00
Jean-Baptiste Queru
5109146f95 Merge "Reconcile assembly-only macros in <machine/cpu-features.h>" 2010-10-19 14:49:28 -07:00
Jean-Baptiste Queru
347db52a1d Merge "Update ATOM string routines to latest" 2010-10-15 09:38:46 -07:00
Jim Huang
cd9c98dfda __set_errno: Hide internal symbol __set_syscall_errno
Change-Id: I21e7ef6bf0bca288069275add43bd53294c0760d
2010-10-15 03:07:22 +08:00
Jim Huang
c9a41a6997 pthread-timers: Hide internal symbol __timer_table_start_stop
Change-Id: If99c5816fe6fa9107aa6bef4697048fabf92283f
2010-10-15 02:28:22 +08:00
Jim Huang
c940945155 bionic: stubs: Make internal symbol static
Thread-specific state for the stubs functions should not be exposed to
applications.

Change-Id: I4d35dab6009dab8db7781671ac5cc9b5f6904e84
2010-10-15 02:23:00 +08:00
Jim Huang
8b2707a6a0 time64: make helper functions static
Change-Id: I98d9a5f736482e52904228c171a1bdefd2f5b213
2010-10-15 02:16:16 +08:00
Jim Huang
7cc5666d94 resolv: make internal symbols static/hidden
Change-Id: I988b83613e6252c0cc961555e81c10f856a38b37
2010-10-15 02:10:29 +08:00
Jim Huang
cec75a765f stdlib: strtod: Hide internal symbol __dtoa
Change-Id: Iaaec7ea4d04c859fe98ad3331fd71e7d000c826b
2010-10-15 01:39:27 +08:00
Jim Huang
b4867734b0 stdio: make internal symbols static/hidden
Although header libc/stdio/local.h declares the macros and private
variables of stdio, there are several internal symbols exposed
unexpectedly.

Change-Id: Ie7a07f85b70322fb9cd05b3c8e1bcc416061eb4b
2010-10-15 01:10:31 +08:00
Bruce Beare
124a542aa4 Update ATOM string routines to latest
Change-Id: I22a600e7f172681cfd38ff73a64e3fd07b284959
Signed-off-by: Lu, Hongjiu <hongjiu.lu@intel.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
2010-10-11 12:33:58 -07:00
Jean-Baptiste Queru
f67e5211e0 Merge "Hide the symbol of helper function __libc_android_abort" 2010-10-11 07:13:10 -07:00
Jean-Baptiste Queru
66ad34293b Merge "gethnamaddr: make helper functions static" 2010-10-10 18:00:51 -07:00
Jim Huang
94e5c5ef37 Reconcile assembly-only macros in <machine/cpu-features.h>
The change explicitly isolates the assembly-only macros in header
<machine/cpu-features.h> in order to prevent mis-inclusion in C/C++
source files.

Change-Id: I0258e87c5ac3fd24944fb227290ac3b9cac4bfba
2010-10-01 17:00:46 +08:00
Jim Huang
e5c35e075f gethnamaddr: make helper functions static
In order not to conflict with the symbols defined in file
libc/netbsd/getaddrinfo.c, this patch makes the internal/helper
functions static.

Change-Id: I0f85599e0b4ce0a637d005ff1680e1805dec4380
2010-09-27 23:40:55 +08:00
Jim Huang
9d16a79b18 Hide the symbol of helper function __libc_android_abort
Ideally __libc_android_abort would be static, but it could not be
because gcc would not allow calling a static function from an asm
statement.  Instead, using GCC visibility is work around.

Change-Id: Ifff6b9957ca3f0fc03c75c3e42582a48d43cefa2
2010-09-27 22:20:59 +08:00
Elliott Hughes
3cf53d1a78 Fixes for the ARM-specific bswap_16, bswap_32, and bswap_64.
1. Make the feature test work by excluding known-deficient processors, so
we don't have to maintain a complete list of all the processors that support
REV and REV16.

2. Don't abuse 'register' to get an effect similar to GCC's +l constraint,
but which was unnecessarily restrictive.

3. Fix __swap64md so _x isn't clobbered, breaking 64-bit swaps.

4. Make <byteswap.h> (which declars bswap_16 and friends) use <endian.h>
rather than <sys/endian.h>, so we get the machine-dependent implementations.

Change-Id: I6a38fad7a9fbe394aff141489617eb3883e1e944
2010-09-26 11:26:53 -07:00
Jean-Baptiste Queru
312be567a0 Merge "Use ARMv6 instruction for handling byte order" 2010-09-10 16:02:59 -07:00
Jean-Baptiste Queru
3558834c56 Merge "Move the atom optimization flags into TARGET_linux-x86.mk." 2010-09-09 14:09:41 -07:00
Keith Deacon
3a1bbee36b Add eventfd system call support 2010-08-31 16:16:01 -05:00
Jim Huang
aa35095517 Use ARMv6 instruction for handling byte order
ARMv6 ISA has several instructions to handle data in different byte order.
For endian conversion (byte swapping) of single data words, it might be a
good idea to use the REV/REV16 instruction simply.

Change-Id: Ic4a5ed6254e082763e54aa70d428f59a0088636e
2010-08-31 14:51:44 +08:00
Jim Huang
a172709259 bionic: Rename _ARM_HAVE_LDREX_STREX to __ARM_HAVE_LDREX_STREX for consistency
The patch follows the naming manner in existing macros with prefix
__ARM_HAVE.

Change-Id: I6763ce2bf3ee85fd1da112c719543061d8d19bf4
2010-08-09 05:35:11 +08:00
Chih-Wei Huang
26c15a8eb9 Move the atom optimization flags into TARGET_linux-x86.mk.
Setting libc_crt_target_cflags to be non-recursive is necessary.

Change-Id: I5310d86e705f23da126c21ecb33a97a074da584a
2010-07-26 11:29:08 +08:00
Matt Fischer
4f086aeb4a Implemented pthread_atfork()
Change-Id: Ie6c0bf593315d3507b3c4a6c8903a74a1fa053db
2010-07-23 13:10:16 -07:00
Banavathu, Srinivas Naik
e73a571fd9 Add kernel header file ipv6_route.h in bionic.
The header file is needed to add route to an IPv6 host from user space

Change-Id: I25c8a8d8e48013f127542199bc027f976b9672c1
2010-07-16 16:42:48 -07:00
Jean-Baptiste Queru
7f2162689c Merge "Fix undefined reference to dl_iterate_phdr for x86" 2010-07-16 07:17:48 -07:00
Jean-Baptiste Queru
fc6d95b10e Merge "Change-Id: I68cc462aeb2460345a53bdb9941ce4bfc10456fb bionic: fix clearenv() compiler warning and related comment typos" 2010-07-08 15:38:13 -07:00
Bruce Beare
aa46fa2403 Fix undefined reference to dl_iterate_phdr for x86
Change-Id: I22410b27939e8f54da932d7a1104102550c4685f
Signed-off-by: Bruce Beare <brucex.j.beare@intel.com>
2010-07-08 14:47:50 -07:00
Bruce Beare
16984423bc Fix missing NL
Change-Id: Ic210fe9f740b9a8235a66d479ad4eddc869998bb
Signed-off-by: Bruce Beare <brucex.j.beare@intel.com>
2010-07-08 11:12:36 -07:00
Jean-Baptiste Queru
6fce15cea1 Merge "Regenerate linux/netfilter_ipv6/ip6_tables.h." 2010-07-02 10:34:04 -07:00
David 'Digit' Turner
3b43f87d29 Allow dlclose() to properly call static C++ destructors.
With this patch _and_ an upcoming build/ patch, the destruction
of static C++ objects contained in shared libraries will happen
properly when dlclose() is called.

Note that this change introduces crtbegin_so.S and crtend_so.S which
are currently ignored by the build system.

+ move definition of __dso_handle to the right place
(before that, all shared libraries used the __dso_handle
global variable from the C library).

Note that we keep a 'weak' __dso_handle in aeabi.c to avoid
breaking the build until the next patch to build/core/combo/
appears. We will be able to remove that later.

+ move bionic/aeabi.c to arch-arm/bionic/ (its proper location)

NOTE: The NDK will need to be modified to enable this feature in
         the shared libraries that are generated through it.

Change-Id: I99cd801375bbaef0581175893d1aa0943211b9bc
2010-07-01 23:09:28 -07:00
Vilmos Nebehaj
c1a534ba0b Regenerate linux/netfilter_ipv6/ip6_tables.h.
Add ip6t_get_target() to kernel_known_generic_statics in
libc/kernel/tools/defaults.py to be able to build ip6tables.

Change-Id: Iadb885db3faa85b2d0070dc2e0ac493af6e62bb6
2010-06-28 15:13:23 +02:00
Chris Peterson
2bf607d599 Change-Id: I68cc462aeb2460345a53bdb9941ce4bfc10456fb
bionic: fix clearenv() compiler warning and related comment typos
2010-06-27 20:53:04 -07:00
The Android Open Source Project
e8f79c1f5d merge from open-source master
Change-Id: I408b5705b18d9e93e66bfbfeec0e3baefd618dec
2010-06-18 11:33:00 -07:00
David Turner
c6b5cd8d76 Merge "Fix for incorrect reply from sysconf(_SC_NPROCESSORS_ONLN)" 2010-06-16 17:36:32 -07:00
Mikael Ohlson
b44fcd6e8f Fix for incorrect reply from sysconf(_SC_NPROCESSORS_ONLN)
When calling sysconf with _SC_NPROCESSORS_ONLN, the value one (1) was
returned on systems with two or more cores, since '/proc/stat' was
incorrectly parsed.

The function line_parser_getc (LineParser* p) read 128 characters of
input for each invocation.

The proper and probably aimed for behavior is to read 128 characters
at the first call, then for each subsequent call only return the next
buffered character until a new read is needed and only then read
another 128 characters.

Due to a flipped comparison between the two variables in_len and
in_pos that track the number of bytes of data read into the input
buffer and how much of it has been parsed, a new group of 128
characters were read at almost every call to line_parser_getc,
overwriting the still unhandled bytes from the previous call to
read. This caused the lines to be read to be sampled more than parsed.

Change-Id: I93eec3c8c9b9f19ef798748579d0977111b5c0bb

Signed-off-by: Christian Bejram <christian.bejram@stericsson.com>
2010-06-16 22:02:20 +00:00
The Android Open Source Project
04ed4a1c88 merge from open-source master
Change-Id: I63e2bfcf87d190fb063c5b2457ebe6b0d50ddd26
2010-06-14 10:49:00 -07:00
Szymon Jakubczak
4032c1e2df added missing ether_aton and ether_ntoa
Change-Id: I32ee448abde4d5693d393030ed77ddc6d2ad1dfc
2010-06-11 20:48:40 -04:00
The Android Open Source Project
15956f9288 merge from open-source master
Change-Id: I1cc2f1123a296b05c4faaa419374376395e05936
2010-06-07 11:01:49 -07:00