Commit Graph

324 Commits

Author SHA1 Message Date
Mathias Agopian
7c0c379372 implement pthread mutex deadlock detection
this works by building a directed graph of acquired
pthread mutexes and making sure there are no loops in
that graph.

this feature is enabled with:

    setprop debug.libc.pthread 1

when a potential deadlock is detected, a large warning is
output to the log with appropriate back traces.

currently disabled at compile-time. set PTHREAD_DEBUG_ENABLED=1
to enable.

Change-Id: I916eed2319599e8aaf8f229d3f18a8ddbec3aa8a
2011-12-09 14:38:57 -08:00
Bruce Beare
af96d4dadc x86: libc may use the gcc flags from TARGET_linux-x86.mk
Change-Id: Iaf4d864d4b6fe388bd3c2d7c4d7d6e42aebb0d35
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
2011-12-09 13:54:20 -08:00
David 'Digit' Turner
de44d0b2bd Merge "libc: provide atomic operations will full barriers for NDK apps." 2011-11-22 02:10:06 -08:00
Jeff Brown
10c8ce59a4 Add tgkill syscall.
Use tgkill instead of tkill to implement pthread_kill.
This is safer in the event that the thread has already terminated
and its id has been reused by a different process.

Change-Id: Ied715e11d7eadeceead79f33db5e2b5722954ac9
2011-11-18 16:40:48 -08:00
David 'Digit' Turner
0fec6b9d88 libc: provide atomic operations will full barriers for NDK apps.
__atomic_cmpxchg and other related atomic operations did not
provide memory barriers, which can be a problem for non-platform
code that links against them when it runs on multi-core devices.

This patch does two things to fix this:

- It modifies the existing implementation of the functions
  that are exported by the C library to always provide
  full memory barriers. We need to keep them exported by
  the C library to prevent breaking existing application
  machine code.

- It also modifies <sys/atomics.h> to only export
  always-inlined versions of the functions, to ensure that
  any application code compiled against the new header will
  not rely on the platform version of the functions.

  This ensure that said machine code will run properly on
  all multi-core devices.

This is based on the GCC built-in sync primitives.

The end result should be only slightly slower than the
previous implementation.

Note that the platform code does not use these functions
at all. A previous patch completely removed their usage in
the pthread and libstdc++ code.

+ rename arch-arm/bionic/atomics_arm.S to futex_arm.S
+ rename arch-x86/bionic/atomics_x86.S to futex_x86.S
+ remove arch-x86/include/sys/atomics.h which already
  provided inlined functions to the x86 platform.

Change-Id: I752a594475090cf37fa926bb38209c2175dda539
2011-11-16 17:37:15 +01:00
David 'Digit' Turner
30e30acf10 am 6b6ebeca: am 3a131026: resolved conflicts for merge of 50a83255 to gingerbread-plus-aosp
* commit '6b6ebeca985fb3843b56b507ac4ac1be44080a9c':
  enable support for large files (> 2G)
  Enable functional DSO object destruction
  x86: Enable -fstack-protector
  Update X86 Bionic CRT files for unwind/exceptions
  bionic, libthread_db x86 fixes
  Updated gcc 4.4.3 IA toolchain doesn't require the .ctors list
  Remove an extra register move.
  Replace __atomic_XXX with GCC __sync_XXX intrinsics.
  move some typedefs to procfs.h required by gdbserver build
  use consistent guards for off_t and size_t defines for IA
  Simplify variable typing for IA builds
  sigsetmask.c was not processing the "mask" argument.
  Add defines for CAIF support
  Remove extra/unneeded copy of fenv.h
  Use proper variable typing
  Update ATOM string routines to latest
  Fix undefined reference to dl_iterate_phdr for x86
  Fix missing NL
  ptrace.c Fix source file format to unix from dos
2011-07-13 14:53:56 -07:00
David 'Digit' Turner
6b6ebeca98 am 3a131026: resolved conflicts for merge of 50a83255 to gingerbread-plus-aosp
* commit '3a13102637c8be53edf28f96598ac11aaa3e14df':
  enable support for large files (> 2G)
  Enable functional DSO object destruction
  x86: Enable -fstack-protector
  Update X86 Bionic CRT files for unwind/exceptions
  bionic, libthread_db x86 fixes
  Updated gcc 4.4.3 IA toolchain doesn't require the .ctors list
  Remove an extra register move.
  Replace __atomic_XXX with GCC __sync_XXX intrinsics.
  move some typedefs to procfs.h required by gdbserver build
  use consistent guards for off_t and size_t defines for IA
  Simplify variable typing for IA builds
  sigsetmask.c was not processing the "mask" argument.
  Add defines for CAIF support
  Remove extra/unneeded copy of fenv.h
  Use proper variable typing
  Update ATOM string routines to latest
  Fix undefined reference to dl_iterate_phdr for x86
  Fix missing NL
  ptrace.c Fix source file format to unix from dos
2011-07-11 13:25:01 -07:00
David 'Digit' Turner
3a13102637 resolved conflicts for merge of 50a83255 to gingerbread-plus-aosp
Change-Id: Idf1971120bbdd52676f95aa3aa69f62342dc012e
2011-07-11 21:39:14 +02:00
Bruce Beare
afb0167ad9 Enable functional DSO object destruction
Unfortunately, legacy .so files for ARM don't have a correct crtbegin file.
Consequently, we have to grandfather the old __dso_handle behaviour.
Add some ifdefs for ARM to allow it to use the old code until we can work
out a transition.

Change-Id: I6a28f368267d792c94e1d985d8344023bc632f6f
Author: H.J. Lu <hongjiu.lu@intel.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
2011-07-07 22:51:43 +02:00
Bruce Beare
a0aec0bd30 x86: Enable -fstack-protector
Change-Id: Iff9e3a3ba0e2d0faa7c6d98154aa5be0cc8a6c50
Orig-Change-Id: Ib69514c3afcb4c1f5e5f3f8cd91acfd145a0866c
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
2011-07-07 22:51:37 +02:00
Bruce Beare
832a86eaba Update ATOM string routines to latest
Orig-Change-Id: I22a600e7f172681cfd38ff73a64e3fd07b284959
Signed-off-by: Lu, Hongjiu <hongjiu.lu@intel.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
2011-07-07 22:46:15 +02:00
Bruce Beare
88bb394c0d Fix undefined reference to dl_iterate_phdr for x86
Orig-Change-Id: I22410b27939e8f54da932d7a1104102550c4685f
Signed-off-by: Bruce Beare <brucex.j.beare@intel.com>
2011-07-07 22:46:15 +02:00
Jean-Baptiste Queru
681c4bd782 Merge b3773e9c
Change-Id: I5787d9ac5e745a08e1c891e9ce9efc4e7f97ace8
2011-07-06 13:00:05 -07:00
David 'Digit' Turner
b3773e9cc8 am 9c95cbf7: Merge "Really fix the build."
* commit '9c95cbf75094c15d251bb3d57a55ce47d7c6c2c8':
  Really fix the build.
2011-07-06 10:27:49 -07:00
David 'Digit' Turner
c51871d4b2 Really fix the build.
libcutils/mspace.c includes libc/bionic/dlmalloc.c, we need to
take care of the fact that any internal C library function cannot
be used from it.

Change-Id: I0bc81ae090b7ac2d464f26b97fc6b94a08cdad9c
2011-07-06 19:02:15 +02:00
David 'Digit' Turner
2d2dbd3024 x86: fix full_x86-eng build
The latest merge conflict resolution worked only for ARM, but not for x86
Both ARM and x86 builds have been tested with this fix.

Change-Id: I4ec1f1b0ea32fa86e7e2515b221133473d6550a3
NOTE: Care has been taken to not change the compiler flags for ARM builds.
      In particular, when building crtbegin_so.so, the -fPIC flag is only
      used for x86 (previous reports indicate that it breaks the ARM
      build at runtime for obscure reasons).
2011-06-25 17:26:38 +02:00
David 'Digit' Turner
67cbb25865 resolved conflicts for merge of b4896660 to master
Change-Id: I40451873c006e5bbcbd17d3bddc1a44773ba16a0
2011-06-24 18:00:04 +02:00
David Turner
b489666086 am 1c0a0381: Merge "Enable functional DSO object destruction"
* commit '1c0a0381dfb3648ffadef9537ec9383d63d62473':
  Enable functional DSO object destruction
2011-06-23 05:28:13 -07:00
Bruce Beare
3964084282 Enable functional DSO object destruction
Unfortunately, legacy .so files for ARM don't have a correct crtbegin file.
Consequently, we have to grandfather the old __dso_handle behaviour.
Add some ifdefs for ARM to allow it to use the old code until we can work
out a transition.

Change-Id: I6a28f368267d792c94e1d985d8344023bc632f6f
Author: H.J. Lu <hongjiu.lu@intel.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
2011-06-20 14:44:44 -07:00
Martijn Coenen
a903811819 Revert "x86: Enable -fstack-protector"
This reverts commit e0b4844a20,
causes netd to crash.
2011-06-07 17:19:12 +02:00
David Turner
65fb884d28 am 204d1f65: am b2c7e0c1: Merge "x86: Enable -fstack-protector"
* commit '204d1f65dbfc6d5a14a90627d9d1efcfce8261ee':
  x86: Enable -fstack-protector
2011-06-06 12:57:08 -07:00
David Turner
204d1f65db am b2c7e0c1: Merge "x86: Enable -fstack-protector"
* commit 'b2c7e0c18b7ab04cfe306277c79165de0612a2d1':
  x86: Enable -fstack-protector
2011-06-06 11:32:49 -07:00
Bruce Beare
e0b4844a20 x86: Enable -fstack-protector
Change-Id: Ib69514c3afcb4c1f5e5f3f8cd91acfd145a0866c
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
2011-05-24 13:32:14 -07:00
David Turner
b609bfd048 am a9e409a0: am a7a9dddb: Merge "bionic: Add ARM optimized strcmp()"
* commit 'a9e409a03530c79bc7ad8144d08e8921ebe0dd02':
  bionic: Add ARM optimized strcmp()
2011-05-17 04:51:45 -07:00
David Turner
a9e409a035 am a7a9dddb: Merge "bionic: Add ARM optimized strcmp()"
* commit 'a7a9dddb5dfe783d65fec4d3b0dee9f734345a29':
  bionic: Add ARM optimized strcmp()
2011-05-17 04:47:09 -07:00
Jim Huang
f50e9be593 bionic: Add ARM optimized strcmp()
Reference results of the experiments on TI OMAP3430 at 600 MHz

$ bench_strcmp -N "strcmp_1k" -s 1k -I 200

[original C code]
             prc thr   usecs/call      samples   errors cnt/samp     size
strcmp_1k      1   1     10.38000          102        0    15000     1024

[ARM optimized code]
             prc thr   usecs/call      samples   errors cnt/samp     size
strcmp_1k      1   1      3.08840           88        0    15000     1024

The work was derived from ARM Ltd, contributed to newlib, and reworked
for Android by Linaro.

Change-Id: Ib0d5755e1eb9adb07d80ef0252f57a5c4c57a425
Signed-off-by: Jim Huang <jserv@0xlab.org>
2011-04-20 15:39:43 +08:00
Iliyan Malchev
368070454b bionic: remove LOCAL_PRELINK_MODULE
Change-Id: Iad65ae18446b20d2aace7b8fe19b1a032b616e9c
Signed-off-by: Iliyan Malchev <malchev@google.com>
2011-03-14 14:25:58 -07:00
Andy McFadden
4ce737f5df Added _memmove_words
Added a memmove() variant for Dalvik's System.arraycopy()
implementation.  It guarantees 16-bit or 32-bit atomicity depending
on the alignment of the arguments.

Bug 3398352

Change-Id: Ie7bd246305ef0ff8290513663327c5b81680368d
2011-02-04 14:49:49 -08:00
Jean-Baptiste Queru
53c3e86fae am 3d302be4: Merge "android-x86: add sigsetjmp.S"
* commit '3d302be485bc2f62a889fac85e386c9b8775eb59':
  android-x86: add sigsetjmp.S
2010-12-29 11:29:33 -08:00
Chih-Wei Huang
18635d9c17 android-x86: add sigsetjmp.S
It adds two functions sigsetjmp and siglongjmp
that fix compiling errors in bluetooth and mksh.

Copy directly from sigsetjmp.S of OpenBSD.

Change-Id: I4696f82ee6f85d1c93cbdd3c9e40f4917d50f3a6
2010-12-26 09:22:13 -08:00
David 'Digit' Turner
95d751feac libc: Add ftruncate64 and improve 64-bit parameter syscall handling.
This patch improves the handling of 64-bit parameters in syscalls on ARM.
The ARM EABI mandates that 64-bit quantities be passed in even/odd register
pairs, which requires special treatment.

This allows us to simplify our implementations of pread() and pwrite()
and remove the C stubs for pread64() and pwrite64().

Also add ftruncate64() to <unistd.h>

Change-Id: I407e2fd223ba0093dd2d0b04c6152fadfc9ce3ef

Bug 3107933
2010-12-16 17:04:41 +01:00
David 'Digit' Turner
72e6fd4242 <sched.h>: Add sched_getcpu() and cpu_set_t
This adds the cpu_set_t type definition and related functions
and macros used to handle CPU thread affinity.

  sched_getcpu()
  sched_setaffinity()
  sched_getaffinity()

Change-Id: If382ecafde8926341a88478062b275553645065b
2010-12-06 13:42:54 +01:00
Kenny Root
72e64e0869 Add support for pread64/pwrite64
64-bit pread() and pwrite() is needed for ZipFileRO to be able to read
ludicrously large ZIP files just in case someone is crazy enough to do
it.

Also fix a license header that was apparently mangled.

Change-Id: I6819ef8b36e46b63b40749c95717b1ecf9307033
2010-11-24 13:14:50 -08:00
Jean-Baptiste Queru
9c8ea7fa3f am 24dc9363: resolved conflicts for merge of 1bc98ccb to gingerbread-plus-aosp
* commit '24dc936346b4a31005ac28c4bd464320cca9320a':
  bionic: Add ARM optimized strcpy()
2010-11-22 13:38:44 -08:00
Jean-Baptiste Queru
24dc936346 resolved conflicts for merge of 1bc98ccb to gingerbread-plus-aosp
Change-Id: Ief9ec3d0472660e26864e082e03c26e09a043b9d
2010-11-22 13:34:59 -08:00
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
fa8fef9506 am f2c05baa: am 96c03c7d: Merge "Remove duplicated _rand48 implementation. Use stdlib version instead"
Merge commit 'f2c05baac40bceb754ac69a38b83250c3a5aaddd'

* commit 'f2c05baac40bceb754ac69a38b83250c3a5aaddd':
  Remove duplicated _rand48 implementation. Use stdlib version instead
2010-10-25 18:00:00 -07:00
Jean-Baptiste Queru
f2c05baac4 am 96c03c7d: Merge "Remove duplicated _rand48 implementation. Use stdlib version instead"
Merge commit '96c03c7dcc8cad59f2b8f3e6fef6a77a43750756' into gingerbread-plus-aosp

* commit '96c03c7dcc8cad59f2b8f3e6fef6a77a43750756':
  Remove duplicated _rand48 implementation. Use stdlib version instead
2010-10-25 17:32:13 -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
2eeddec9cc am 82775ae0: resolved conflicts for merge of 347db52a to gingerbread-plus-aosp
Merge commit '82775ae0acf7cac647c057c80fbcc7f13d0554d3'

* commit '82775ae0acf7cac647c057c80fbcc7f13d0554d3':
  Update ATOM string routines to latest
2010-10-16 09:43:33 -07:00
Jean-Baptiste Queru
82775ae0ac resolved conflicts for merge of 347db52a to gingerbread-plus-aosp
Change-Id: I706a5158e781cbbc00344a72badca1543bcbca15
2010-10-15 12:52:21 -07: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
repo sync
319de1758c am 686af0b3: resolved conflicts for merge of defd1622 to gingerbread-plus-aosp
Merge commit '686af0b3a5978356be3b1a97187c765d63f11623'

* commit '686af0b3a5978356be3b1a97187c765d63f11623':
  libc: add <sys/eventfd.h> and corresponding implementations.
2010-09-28 12:48:34 -07:00
repo sync
686af0b3a5 resolved conflicts for merge of defd1622 to gingerbread-plus-aosp
Conflicts:
	libc/arch-arm/syscalls/eventfd.S
	libc/include/sys/eventfd.h
	libc/include/sys/linux-syscalls.h

Change-Id: I02f6e9536aa5478322240c199ff4c2f4367922d0
2010-09-28 12:23:55 +02:00
David 'Digit' Turner
defd162212 libc: add <sys/eventfd.h> and corresponding implementations.
Change-Id: Ide040884c456190226e580513099fdb8377e015b
2010-09-28 09:20:37 +02:00
Kenny Root
b6e3fb0f3f am cb99ab98: Add wmemcmp to Android.mk
Merge commit 'cb99ab98c99291a6c90043009ab8d64ec8058f9d' into gingerbread-plus-aosp

* commit 'cb99ab98c99291a6c90043009ab8d64ec8058f9d':
  Add wmemcmp to Android.mk
2010-09-14 12:31:03 -07:00
Jean-Baptiste Queru
042ebe0e32 am 6bf08d13: am 3558834c: Merge "Move the atom optimization flags into TARGET_linux-x86.mk."
Merge commit '6bf08d131f4109088b7fa1e53196513636c49e9b'

* commit '6bf08d131f4109088b7fa1e53196513636c49e9b':
  Move the atom optimization flags into TARGET_linux-x86.mk.
2010-09-10 14:52:37 -07:00
Jean-Baptiste Queru
6bf08d131f am 3558834c: Merge "Move the atom optimization flags into TARGET_linux-x86.mk."
Merge commit '3558834c565bbfe96dfcf233373c3814b4655347' into gingerbread-plus-aosp

* commit '3558834c565bbfe96dfcf233373c3814b4655347':
  Move the atom optimization flags into TARGET_linux-x86.mk.
2010-09-10 13:03:15 -07:00
Kenny Root
cb99ab98c9 Add wmemcmp to Android.mk
Change-Id: I9dc96d72b2becdd31981b4d176a13358aef6dcb9
2010-09-10 12:20:58 -07:00
David 'Digit' Turner
db0017e5e2 am 994b68f5: resolved conflicts for merge of 6a51defa to gingerbread-plus-aosp
Merge commit '994b68f5c7d637d2945c06260fe35b266c10379d'

* commit '994b68f5c7d637d2945c06260fe35b266c10379d':
  Fix __get_tls() in static C library to use kernel helpers.
2010-08-29 17:48:55 -07:00
David 'Digit' Turner
994b68f5c7 resolved conflicts for merge of 6a51defa to gingerbread-plus-aosp
Change-Id: I0367bcffe9179904ca820e3b824dddfa47594f63
2010-08-29 17:41:36 -07:00
David 'Digit' Turner
6a51defa03 Fix __get_tls() in static C library to use kernel helpers.
This is needed to fix gdbserver's handling of threaded programs,
among other things.

Change-Id: I823387c602cef9891532da946a01db14be780ab0
2010-08-27 08:19:19 -07:00
Szymon Jakubczak
75a3689b69 am 41e533af: added missing ether_aton and ether_ntoa
Merge commit '41e533af4a2720c1dc228ba40b6582ca53085c3a'

* commit '41e533af4a2720c1dc228ba40b6582ca53085c3a':
  added missing ether_aton and ether_ntoa
2010-08-25 09:56:25 -07:00
Szymon Jakubczak
41e533af4a added missing ether_aton and ether_ntoa
Change-Id: I32ee448abde4d5693d393030ed77ddc6d2ad1dfc
2010-08-25 08:46:23 -07:00
Jean-Baptiste Queru
076bc8f92d am 3871d57b: Revert "added missing ether_aton and ether_ntoa"
Merge commit '3871d57ba581236142c9bf2f8be2d34cce7c5829'

* commit '3871d57ba581236142c9bf2f8be2d34cce7c5829':
  Revert "added missing ether_aton and ether_ntoa"
2010-08-18 13:31:49 -07:00
Jean-Baptiste Queru
3871d57ba5 Revert "added missing ether_aton and ether_ntoa"
This reverts commit 4032c1e2df.
2010-08-18 11:15:39 -07:00
Dima Zavin
19c23cc687 am 91af9e64: am 18c5bcc6: Revert "Set SA_RESTORER in sigaction()"
Merge commit '91af9e64b5d86dd5925c0fcfdb3f3db5a86aa43c'

* commit '91af9e64b5d86dd5925c0fcfdb3f3db5a86aa43c':
  Revert "Set SA_RESTORER in sigaction()"
2010-07-30 14:21:43 -07:00
Dima Zavin
91af9e64b5 am 18c5bcc6: Revert "Set SA_RESTORER in sigaction()"
Merge commit '18c5bcc66a9a7b2178dcdcf04a0716958798ab81' into gingerbread-plus-aosp

* commit '18c5bcc66a9a7b2178dcdcf04a0716958798ab81':
  Revert "Set SA_RESTORER in sigaction()"
2010-07-30 14:19:08 -07:00
Dima Zavin
18c5bcc66a Revert "Set SA_RESTORER in sigaction()"
This reverts commit e4fa46e75c.
2010-07-29 19:12:04 -07: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
Jean-Baptiste Queru
6b9d2d6839 am 6d4d8cb7: resolved conflicts for merge of 4f086aeb to gingerbread-plus-aosp
Merge commit '6d4d8cb79c5578d33ab17806d67b1e53a730fbc3'

* commit '6d4d8cb79c5578d33ab17806d67b1e53a730fbc3':
  Implemented pthread_atfork()
2010-07-23 15:04:24 -07:00
Jean-Baptiste Queru
6d4d8cb79c resolved conflicts for merge of 4f086aeb to gingerbread-plus-aosp
Change-Id: Ice2a6d41a7e9d04eca02e15ed189d648d61b5801
2010-07-23 13:53:19 -07:00
Matt Fischer
4f086aeb4a Implemented pthread_atfork()
Change-Id: Ie6c0bf593315d3507b3c4a6c8903a74a1fa053db
2010-07-23 13:10:16 -07:00
The Android Open Source Project
be96be7e83 am 90e83bcc: merge from open-source master
Merge commit '90e83bcc1c41a4d6d310b2bd5cb747a53a88fff3'

* commit '90e83bcc1c41a4d6d310b2bd5cb747a53a88fff3':
  Fix undefined reference to dl_iterate_phdr for x86
2010-07-16 13:04:30 -07:00
The Android Open Source Project
90e83bcc1c merge from open-source master
Change-Id: Iadd4a92f0384fdb8afa015613957b7d78b3d100a
2010-07-16 12:59:04 -07:00
David 'Digit' Turner
85b0c388ed am 7ab9c068: am ab8b5410: libc: fix fstatfs() implementation.
Merge commit '7ab9c068aac3373fe35a94b01a36d360c2bcb97f'

* commit '7ab9c068aac3373fe35a94b01a36d360c2bcb97f':
  libc: fix fstatfs() implementation.
2010-07-08 19:10:52 -07:00
David 'Digit' Turner
7ab9c068aa am ab8b5410: libc: fix fstatfs() implementation.
Merge commit 'ab8b54101eed0a4b92ebf8fa6994cd1b4f22d8f4' into gingerbread-plus-aosp

* commit 'ab8b54101eed0a4b92ebf8fa6994cd1b4f22d8f4':
  libc: fix fstatfs() implementation.
2010-07-08 17:22:08 -07:00
David 'Digit' Turner
ab8b54101e libc: fix fstatfs() implementation.
The syscall expects the size of the buffer as the second argument.

Change-Id: I99ede2fec7fcd385ca03ff022c2cffa4297bea8d
2010-07-08 16:52:27 -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
The Android Open Source Project
8a5705c7fa am d6f31851: merge from open-source master
Merge commit 'd6f3185148933e4bae17e8f6efe7610cd1cf7769'

* commit 'd6f3185148933e4bae17e8f6efe7610cd1cf7769':
  Allow dlclose() to properly call static C++ destructors.
2010-07-02 11:40:56 -07:00
The Android Open Source Project
d6f3185148 merge from open-source master
Change-Id: I6a15428fd9ce1f1dbbb702ff13c6af8da8f54a1e
2010-07-02 11:37:54 -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
David 'Digit' Turner
cb43ffeb10 am cb0f5ed8: am 50ace4fe: Remove compiler warnings when building Bionic.
Merge commit 'cb0f5ed8111d4305cf6798aefdb4f9623570c83a'

* commit 'cb0f5ed8111d4305cf6798aefdb4f9623570c83a':
  Remove compiler warnings when building Bionic.
2010-06-23 12:41:50 -07:00
David 'Digit' Turner
cb0f5ed811 am 50ace4fe: Remove compiler warnings when building Bionic.
Merge commit '50ace4fec5e8cb5afcbc656a4556fa528adfd760' into gingerbread-plus-aosp

* commit '50ace4fec5e8cb5afcbc656a4556fa528adfd760':
  Remove compiler warnings when building Bionic.
2010-06-23 11:17:07 -07:00
David 'Digit' Turner
55cb28032d am e1a739ec: am 6a9b888d: Allow static C++ destructors to be properly called on dlclose().
Merge commit 'e1a739ec38a39fea9e66038dfc7cea364cb6a256'

* commit 'e1a739ec38a39fea9e66038dfc7cea364cb6a256':
  Allow static C++ destructors to be properly called on dlclose().
2010-06-23 10:32:05 -07:00
David 'Digit' Turner
50ace4fec5 Remove compiler warnings when building Bionic.
Also add missing declarations to misc. functions.
Fix clearerr() implementation (previous was broken).
Handle feature test macros like _POSIX_C_SOURCE properly.

Change-Id: Icdc973a6b9d550a166fc2545f727ea837fe800c4
2010-06-22 17:51:41 -07:00
David 'Digit' Turner
e1a739ec38 am 6a9b888d: Allow static C++ destructors to be properly called on dlclose().
Merge commit '6a9b888d7c4b246f6f66360789c72b754ff85021' into gingerbread-plus-aosp

* commit '6a9b888d7c4b246f6f66360789c72b754ff85021':
  Allow static C++ destructors to be properly called on dlclose().
2010-06-22 11:19:25 -07:00
David 'Digit' Turner
6a9b888d7c Allow static C++ destructors to be properly called on dlclose().
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)

Change-Id: Ie771aa204e3acbdf02fd30ebd4150373a1398f39
NOTE: The NDK will need to be modified to enable this feature in
      the shared libraries that are generated through it.
2010-06-18 16:07:10 -07:00
Kristian Monsen
70465614e1 Just link fixes for b 2763938.
Added wcsxfrm.c and wmemcmp.c to the src files in Android.mk and removed wcsxfrm from wchar.c

Change-Id: Iab9b45cf78c27880d2941c360340a7af6b8964fe
2010-06-16 14:51:52 +01:00
David 'Digit' Turner
f201ae83fc am 6a09cfd9: Merge "wchar.h: improve wchar_t support in Bionic" into kraken
Merge commit '6a09cfd9f916e3a60de707ff0806cdeb143d77a4' into gingerbread-plus-aosp

* commit '6a09cfd9f916e3a60de707ff0806cdeb143d77a4':
  wchar.h: improve wchar_t support in Bionic
2010-06-15 07:07:44 -07:00
David 'Digit' Turner
3527fd6f0d wchar.h: improve wchar_t support in Bionic
Change-Id: Iffd41046fd0933c66542abf7627a1569522dfcb2
2010-06-15 07:04:41 -07:00
The Android Open Source Project
49b53c0b94 merge from froyo-plus-aosp
Change-Id: Ibbde24d8ee26259f3eff076ee4d32476f868db85
2010-06-14 11:18:38 -07: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
Andy McFadden
fcd00ebbdf Atomic/SMP update, part 3.
Update ARM atomic ops to use LDREX/STREX.  Stripped out #if 0 chunk.

Insert explicit memory barriers in pthread and semaphore code.

For bug 2721865.

Change-Id: I0f153b797753a655702d8be41679273d1d5d6ae7
2010-05-28 16:12:01 -07:00
David 'Digit' Turner
8a1d2cf142 Add pthread_rwlock_t implementation to the C library (DO NOT MERGE)
Change-Id: I756d8c26afc37cd7b71117ddbaa02a2cb40fdecb
2010-05-19 14:53:18 -07:00
The Android Open Source Project
4aef0ae660 merge from open-source master
Change-Id: I2be62bce462ee53fe9519f433523bd7a44a73d40
2010-05-13 14:31:02 -07:00
Matt Fischer
e4fa46e75c Set SA_RESTORER in sigaction()
GDB looks for specific opcode sequences when trying to recognize a stack
frame as a signal trampoline.  The sequences it looks for happen to be those
created when SA_RESTORER is set, since glibc always sets a restorer.  This
patch does the same here, so that the trampolines can be correctly identified.

Change-Id: I0ac574a68818cb24d939c3527f3aaeb04b853d04
2010-05-12 14:18:36 -05:00
The Android Open Source Project
5ffedb22c8 merge from open-source master
Change-Id: I076e0df8656fdf58c229cc9a168cd6d8e16b6d8e
2010-03-31 14:15:30 -07:00
Bruce Beare
8ff1a2759a Atom optimized string and memory routines
Change-Id: I27b68bb28551c75c9ac84bb9730e2cd8254d8991
2010-03-26 10:54:07 -07:00
The Android Open Source Project
377d4c979d merge from open-source master
Change-Id: I70266ee8c520b216773f267e46c8273d2334c31d
2010-03-22 15:55:09 -07:00
David 'Digit' Turner
d7ed1ae982 Fix timezone management in the C library
Define 'timezone' and 'daylight' global variables that are already
defined in <time.h>

Properly update the 'tm_gmtoff' field in 'struct tm' values.
2010-03-05 14:17:35 -08:00
Bruce Beare
3c543e1da9 x86 syscall system call implementation 2010-03-04 10:29:38 -08:00
Mike Chan
9f6915631b bonic: libc: cpuacct support for setuid functions
Any of the setuid functions now updates /acct/uid/ with its own tid
before changing users. This is so we can properly account for cpu time
per uid.

Change-Id: I34186cf4d5228cac8439e582a9e26c01ef3011e4
Signed-off-by: Mike Chan <mike@android.com>
2010-03-02 18:18:04 -08:00
David 'Digit' Turner
97cf7f3394 Implement clone() C library function properly.
Only provide an implementation for ARM at the moment, since
it requires specific assembly fragments (the standard syscall
stubs cannot be used because the child returns in a different
stack).
2010-01-25 11:18:30 -08:00
Colin Cross
fc10b24acc Add implementation of fdprintf, clearenv, and stubs for ttyname_r, *usershell
Change-Id:	I5fe7e8b6ee5edbb49e707c3b6737a58563781fa3
2010-01-15 16:52:35 -08:00
Colin Cross
8c59d96e24 Add killpg function
Change-Id:	I9bc347d264fe38faf2d0f9935d2ebb43a353196e
2010-01-15 16:27:04 -08:00
Colin Cross
64ceac3f49 Add fts, err, and sys/queue for grep
Change-Id:	Id47514a1812d828e95efa2fab0e9c15c5b682b58
2010-01-15 15:57:02 -08:00
Colin Cross
4fa7b10564 Import regex from OpenBSD
Change-Id: I7ad7d907ef65e4e345f94777d730813b1270a612
2010-01-15 15:01:44 -08:00
Mathias Agopian
f197147a78 am ca07064c: am 5f53a182: Revert "Add qsort_r() implementation to the C library."
Merge commit 'ca07064c9ebd8523ed88fa09e97feaaafb7e9c15' into eclair-mr2-plus-aosp

* commit 'ca07064c9ebd8523ed88fa09e97feaaafb7e9c15':
  Revert "Add qsort_r() implementation to the C library."
2009-12-03 17:15:16 -08:00
Mathias Agopian
caa17a905a am 5f53a182: Revert "Add qsort_r() implementation to the C library."
Merge commit '5f53a18204ec991f5a77872806eeaa185936aa8c' into eclair-plus-aosp

* commit '5f53a18204ec991f5a77872806eeaa185936aa8c':
  Revert "Add qsort_r() implementation to the C library."
2009-12-03 17:10:45 -08:00
Mathias Agopian
ca07064c9e am 5f53a182: Revert "Add qsort_r() implementation to the C library."
Merge commit '5f53a18204ec991f5a77872806eeaa185936aa8c' into eclair-mr2

* commit '5f53a18204ec991f5a77872806eeaa185936aa8c':
  Revert "Add qsort_r() implementation to the C library."
2009-12-03 17:10:14 -08:00
David 'Digit' Turner
be71c8142d am 20b3097d: am 754c178a: Add qsort_r() implementation to the C library.
Merge commit '20b3097d4cc225d948dac38e778a9d3b3b1549db' into eclair-mr2-plus-aosp

* commit '20b3097d4cc225d948dac38e778a9d3b3b1549db':
  Add qsort_r() implementation to the C library.
2009-12-03 16:44:43 -08:00
Mathias Agopian
5f53a18204 Revert "Add qsort_r() implementation to the C library."
This reverts commit 754c178ae5.

Turns out we don't need it afterall (needed a stable sort anyways).
So, we'll make that change in the dev branch instead.
2009-12-03 16:14:40 -08:00
David 'Digit' Turner
20b3097d4c am 754c178a: Add qsort_r() implementation to the C library.
Merge commit '754c178ae551aedcbbfd3bfd1c1c3b710d9ad989' into eclair-mr2

* commit '754c178ae551aedcbbfd3bfd1c1c3b710d9ad989':
  Add qsort_r() implementation to the C library.
2009-12-03 16:00:48 -08:00
David 'Digit' Turner
f7ee5739fa am 754c178a: Add qsort_r() implementation to the C library.
Merge commit '754c178ae551aedcbbfd3bfd1c1c3b710d9ad989' into eclair-plus-aosp

* commit '754c178ae551aedcbbfd3bfd1c1c3b710d9ad989':
  Add qsort_r() implementation to the C library.
2009-12-03 16:00:26 -08:00
David 'Digit' Turner
754c178ae5 Add qsort_r() implementation to the C library.
NOTE: This replaces qsort.c with the FreeBSD version. While
      the patch changes the source, it should not alter the
      implementation that should use the exact same algorithm.
2009-12-03 11:40:15 -08:00
Vladimir Chtchetkine
fdfa16776c am 362b2aab: Merge change Ib4550a04 into eclair-mr2
Merge commit '362b2aabee2dd04e04a3ad9c09f0ad0212569be4' into eclair-mr2-plus-aosp

* commit '362b2aabee2dd04e04a3ad9c09f0ad0212569be4':
  Split libc_debug.so into two .so modules loaded on demand from libc.so
2009-11-19 11:28:22 -08:00
Vladimir Chtchetkine
b74ceb25aa Split libc_debug.so into two .so modules loaded on demand from libc.so
This change is intended to eliminate need to replace libc.so with libc_debug.so in order to enablememory allocation debugging.
This is also the first step towards implementing extended memoryallocation debugging using emulator's capabilities in monitoring memory access.
2009-11-18 10:36:25 -08:00
Jean-Baptiste Queru
83362689f5 merge from open-source master 2009-11-09 08:04:48 -08:00
Jean-Baptiste Queru
10be95cffc merge from open-source master 2009-11-08 16:09:17 -08:00
Thorsten Glaser
92b10af793 Add the BSD sys_signame array.
Signed-off-by: Thorsten Glaser <tg@mirbsd.org>
2009-11-05 15:50:05 -08:00
David 'Digit' Turner
2a7ad97539 Fix ABI breakage in libc.so and libm.so between 1.6 and Eclair.
For a detailed description of the problem and why this fix is
needed, plrease read the comments in libgcc_compat.c
2009-09-29 14:43:38 -07:00
Shin-ichiro KAWASAKI
10093276e9 added and modified bionic code to support SuperH architecture
modified:   libc/Android.mk
    new files:   libc/arch-sh/bionic/*
    new files:   libc/arch-sh/include/*
2009-09-28 16:11:39 +09:00
David 'Digit' Turner
4a05d12cf5 Fix TLS access for ARMv6 and beyond.
For performance reasons, we don't call the kernel helper. Instead, we directly
access the TLS register on ARMv6 and higher. For ARMv5TE, keep using the hard-coded
address populated by the kernel on each task switch.

NOTE: Since we don't call the kernel helper, this must precisely match your
      kernel configuration. This is controlled by setting the ARCH_ARM_HAVE_TLS_REGISTER
      variable to 'true' in your board configuration file.
2009-09-22 10:03:59 -07:00
Dima Zavin
49e5533278 libc: Add an intermediate version of the static libc without malloc
For now, this will only used by the dynamic loader to ensure that
malloc and friends are never called.

Signed-off-by: Dima Zavin <dima@android.com>
2009-05-27 20:16:19 -07:00
Dima Zavin
ca122b0e34 libc: Cleanup the libc makefile.
Removes a lot of redundant code, and reorganizes the file. We first
setup all the comomn variables we may need, and then define the
actual libraries that need to be generated.

Signed-off-by: Dima Zavin <dima@android.com>
2009-05-27 20:16:19 -07:00
Dave Bort
d2c9dcc926 libc: Replace a reference to TARGET_BUILD_TYPE with DEBUG_BIONIC_LIBC
We're soon going to stop using TARGET_BUILD_TYPE==debug to debug
native modules.

Signed-off-by: Dave Bort <dbort@android.com>
2009-04-24 14:13:53 -07:00
The Android Open Source Project
1dc9e472e1 auto import from //depot/cupcake/@135843 2009-03-03 19:28:35 -08:00
The Android Open Source Project
1767f908af auto import from //depot/cupcake/@135843 2009-03-03 18:28:13 -08:00
The Android Open Source Project
9f65adf2ba auto import from //branches/cupcake/...@130745 2009-02-10 15:43:56 -08:00
The Android Open Source Project
6d6c82c7a0 auto import from //branches/cupcake/...@125939 2009-01-09 17:50:54 -08:00
The Android Open Source Project
4e468ed2eb Code drop from //branches/cupcake/...@124589 2008-12-17 18:03:48 -08:00
The Android Open Source Project
a27d2baa0c Initial Contribution 2008-10-21 07:00:00 -07:00