OSDN Git Service
Android (Google) Code Review [Tue, 29 Sep 2009 22:21:53 +0000 (18:21 -0400)]
Merge changes I3bd27087,I0c9ec550,I3a0e5e86 into eclair
* changes:
bionic/linker: allow resolving of symbols from library back to executable
bionic/linker: change lookup() to return soinfo, not base
Revert "Revert "bionic/linker: fix symbol lookup during relocations""
Android (Google) Code Review [Tue, 29 Sep 2009 22:04:51 +0000 (18:04 -0400)]
Merge change I2a7ad975 into eclair
* changes:
Fix ABI breakage in libc.so and libm.so between 1.6 and Eclair.
David 'Digit' Turner [Tue, 29 Sep 2009 21:43:38 +0000 (14:43 -0700)]
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
Iliyan Malchev [Tue, 29 Sep 2009 18:43:20 +0000 (11:43 -0700)]
bionic/linker: allow resolving of symbols from library back to executable
Signed-off-by: Iliyan Malchev <malchev@google.com>
Iliyan Malchev [Tue, 29 Sep 2009 01:21:30 +0000 (18:21 -0700)]
bionic/linker: change lookup() to return soinfo, not base
Iliyan Malchev [Tue, 29 Sep 2009 02:38:04 +0000 (19:38 -0700)]
Revert "Revert "bionic/linker: fix symbol lookup during relocations""
This reverts commit
33acbf0719c4f3db059bc9e1f52cf554a5d0295f.
Mathias Agopian [Mon, 28 Sep 2009 00:46:43 +0000 (17:46 -0700)]
NEON optimized memcpy.
372 MB/s for large transfers, 440 MB/s for smaller ones down to 1KB. 130 MB/s for very small transfers ( < 32 bytes )
Performance is similar with non-congruent buffers.
Mathias Agopian [Mon, 28 Sep 2009 05:04:15 +0000 (22:04 -0700)]
Revert "bionic/linker: fix symbol lookup during relocations"
This reverts commit
8d0c0334f1106d36f2fd5c1cf6d5dc75a4b88850.
Android (Google) Code Review [Mon, 28 Sep 2009 00:23:22 +0000 (20:23 -0400)]
Merge change 27075 into eclair
* changes:
bionic/linker: fix symbol lookup during relocations
Iliyan Malchev [Fri, 25 Sep 2009 00:14:33 +0000 (17:14 -0700)]
bionic/linker: fix symbol lookup during relocations
When resolving relocations while loading a library, the linker used to find
symbols by looking them up in the list of all linked libraries for the current
process, as opposed to following just the library's DT_NEEDED entries. This
can cause a problem where the symbol is picked up from the wrong library.
Signed-off-by: Iliyan Malchev <malchev@google.com>
David 'Digit' Turner [Sun, 27 Sep 2009 14:08:46 +0000 (07:08 -0700)]
Remove NEON optimizations for memcpy
David 'Digit' Turner [Wed, 23 Sep 2009 22:56:50 +0000 (15:56 -0700)]
Fix a typo that resulted in a crash in the boot sequence
Android (Google) Code Review [Wed, 23 Sep 2009 19:10:02 +0000 (15:10 -0400)]
Merge change 26419 into eclair
* changes:
Add pthread_mutex_lock_timeout_np
David 'Digit' Turner [Tue, 22 Sep 2009 19:40:22 +0000 (12:40 -0700)]
Add pthread_mutex_lock_timeout_np
This is used to perform a mutex lock for a given amount of
milliseconds before giving up. Using the _np prefix since this
is absolutely not portable.
Also remove a compiler warning in pthread_attr_getstackaddr
David 'Digit' Turner [Fri, 18 Sep 2009 20:35:05 +0000 (13:35 -0700)]
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.
Dima Zavin [Mon, 21 Sep 2009 02:11:02 +0000 (19:11 -0700)]
libc: kernel-headers: update msm_mdp.h to include premultiplied alpha
Change-Id: I653d638353d9246287bcf568bbffd0f5dbc64019
Signed-off-by: Dima Zavin <dima@android.com>
Ben Cheng [Tue, 15 Sep 2009 20:41:14 +0000 (13:41 -0700)]
Add stack unwinding directives to assembly leaf functions.
So that the real culprit of native crashes can surface in the stack trace.
Iliyan Malchev [Fri, 11 Sep 2009 07:29:59 +0000 (00:29 -0700)]
bionic: update processed msm_camera.h
Signed-off-by: Iliyan Malchev <malchev@google.com>
Android (Google) Code Review [Thu, 10 Sep 2009 00:53:15 +0000 (20:53 -0400)]
Merge change 24463 into eclair
* changes:
Fix an infinite loop in time2sub.
David 'Digit' Turner [Thu, 10 Sep 2009 00:41:59 +0000 (17:41 -0700)]
Fix an infinite loop in time2sub.
The problem is that time_t is signed, and the original code relied on the
fact that (X + c < X) in case of overflow for c >= 0. Unfortunately, this
condition is only guaranteed by the standard for unsigned arithmetic, and
the gcc 4.4.0 optimizer did completely remove the corresponding test from
the code. This resulted in a missing boundary check, and an infinite loop.
The problem is solved by testing explicitely for TIME_T_MIN and TIME_T_MAX
in the loop that uses this.
Also fix increment_overflow and long_increment_overflow which were buggy
for exactly the same reasons.
Note: a similar fix is needed for system/core/libcutils
Erik Gilling [Wed, 9 Sep 2009 21:58:19 +0000 (14:58 -0700)]
libc: add void to clock() function prototype
Signed-off-by: Erik Gilling <konkers@android.com>
Android (Google) Code Review [Wed, 2 Sep 2009 22:06:32 +0000 (15:06 -0700)]
Merge change 22848 into eclair
* changes:
Neon-optimized versions of memcpy.
David 'Digit' Turner [Wed, 26 Aug 2009 19:50:42 +0000 (21:50 +0200)]
Neon-optimized versions of memcpy.
This optimization come from the external 0xdroid repository.
Original patch can be found here:
http://gitorious.org/0xdroid/bionic/commit/
ebafe41c2c02f8c09a3c1d7746047083df180ac5
Dima Zavin [Mon, 31 Aug 2009 02:17:26 +0000 (19:17 -0700)]
libc: kernel-headers: Add qdsp6 vdec header
Change-Id: Ib6cd13e86cea84c1cc0901dee3e9ef05eb8279cd
Signed-off-by: Dima Zavin <dima@android.com>
Iliyan Malchev [Thu, 20 Aug 2009 23:31:28 +0000 (16:31 -0700)]
bionic: add sanitized lightsensor kernel header
Signed-off-by: Iliyan Malchev <malchev@google.com>
Dima Zavin [Thu, 20 Aug 2009 01:48:57 +0000 (18:48 -0700)]
Update pmem/hw3d/mdp headers
Signed-off-by: Dima Zavin <dima@android.com>
Erik Gilling [Thu, 13 Aug 2009 23:05:30 +0000 (16:05 -0700)]
bionic: linker: add error message if link failed due to previous error
Signed-off-by: Erik Gilling <konkers@android.com>
Android (Google) Code Review [Sat, 8 Aug 2009 16:46:30 +0000 (09:46 -0700)]
Merge change 9642
* changes:
Don't request IPv6 addresses if AI_ADDRCONFIG is specified and the system has no IPv6 connectivity.
Jean-Baptiste Queru [Sat, 8 Aug 2009 00:04:35 +0000 (17:04 -0700)]
merge from open-source master
Android Code Review [Fri, 7 Aug 2009 23:43:33 +0000 (16:43 -0700)]
Merge change 10057
* changes:
Add mspace_merge_objects
Dima Zavin [Thu, 6 Aug 2009 00:51:29 +0000 (17:51 -0700)]
libc: add linux/msm_kgsl.h kernel include
Signed-off-by: Dima Zavin <dima@android.com>
Dima Zavin [Thu, 6 Aug 2009 00:55:30 +0000 (17:55 -0700)]
libc: kernel: let clean_header tool take path to kernel originals as argument
Signed-off-by: Dima Zavin <dima@android.com>
Lorenzo Colitti [Tue, 4 Aug 2009 05:36:31 +0000 (22:36 -0700)]
Don't request IPv6 addresses if AI_ADDRCONFIG is specified and the system has no IPv6 connectivity.
Android (Google) Code Review [Tue, 4 Aug 2009 17:06:58 +0000 (10:06 -0700)]
Merge change 9546
* changes:
Fix strftime to use localized month names.
Jean-Baptiste Queru [Tue, 4 Aug 2009 16:00:15 +0000 (09:00 -0700)]
merge from open-source master
Eric Fischer [Mon, 3 Aug 2009 22:43:18 +0000 (15:43 -0700)]
Fix strftime to use localized month names.
It was using the default locale (capital L) instead of the
current locale (lowercase l).
Bug
2030864
Jean-Baptiste Queru [Mon, 3 Aug 2009 14:45:26 +0000 (07:45 -0700)]
merge from donut
Erik Gilling [Thu, 30 Jul 2009 13:57:18 +0000 (06:57 -0700)]
am
fde8642f: bionic/linker: keep track of opened libraries by basename
Merge commit '
fde8642fc43bdd224e43e5ee9583a49a758fb03c'
* commit '
fde8642fc43bdd224e43e5ee9583a49a758fb03c':
bionic/linker: keep track of opened libraries by basename
Jean-Baptiste Queru [Wed, 29 Jul 2009 21:56:48 +0000 (14:56 -0700)]
merge from donut
Android (Google) Code Review [Wed, 29 Jul 2009 21:47:55 +0000 (14:47 -0700)]
am
22b5eb85: Merge change 8281 into donut
Merge commit '
22b5eb858dcbb537f2522ad920ca793348d574a2'
* commit '
22b5eb858dcbb537f2522ad920ca793348d574a2':
linker: remove newlines from DL_ERR so that dlerror works correctly
Erik Gilling [Wed, 29 Jul 2009 03:28:19 +0000 (20:28 -0700)]
bionic/linker: keep track of opened libraries by basename
Prior to this change, the dynamic loader kept track of opened libraries
either by their base name (i.e., libfoo.so instead of /system/lib/libfoo.so)
when the shared library was loaded through the DT_NEEDED tag in an ELF header,
or by whatever name was passed to dlopen(). This created a number of problems,
among which:
1. dlopen("libfoo.so") and dlopen("/path/to/libfoo.so") would open the same
library twice;
2. dlopen("/path/to/libfoo.so") and then dlopen("libbar.so"), where libbar.so
depends on libfoo.so, would open libfoo.so twice.
This patch makes the dynamic loader keep track of each loaded library by
basename, which resolves the above ambiguity. The patch also enforces
library lookup by base name, which means that it will refuse to load another
library that has the same name.
Thanks for the inspiration Iliyan.
Signed-off-by: Erik Gilling <konkers@android.com>
Cc: Iliyan Malchev <malchev@google.com>
Android (Google) Code Review [Wed, 29 Jul 2009 00:35:12 +0000 (17:35 -0700)]
Merge change 8281 into donut
* changes:
linker: remove newlines from DL_ERR so that dlerror works correctly
David 'Digit' Turner [Tue, 28 Jul 2009 22:27:33 +0000 (15:27 -0700)]
am
3773d35e: Make the DNS resolver accept domain names with an underscore.
Merge commit '
3773d35eb98e22b5edab4d82fb72bdf86ff80494'
* commit '
3773d35eb98e22b5edab4d82fb72bdf86ff80494':
Make the DNS resolver accept domain names with an underscore.
David 'Digit' Turner [Mon, 27 Jul 2009 17:19:29 +0000 (19:19 +0200)]
Make the DNS resolver accept domain names with an underscore.
More precisely, this accepts domain labels with an underscore in
the middle (i.e. not at the start or the end of the label). This
is needed to perform complex CNAME chain resolution in certain
VPN networks.
Jean-Baptiste Queru [Sun, 26 Jul 2009 18:43:53 +0000 (11:43 -0700)]
reconcile korg/master into goog/master
Jean-Baptiste Queru [Sun, 26 Jul 2009 00:48:00 +0000 (17:48 -0700)]
Merge korg/donut into korg/master
Erik Gilling [Thu, 23 Jul 2009 00:06:11 +0000 (17:06 -0700)]
linker: remove newlines from DL_ERR so that dlerror works correctly
Signed-off-by: Erik Gilling <konkers@android.com>
Andy McFadden [Tue, 21 Jul 2009 23:40:00 +0000 (16:40 -0700)]
Andy McFadden [Tue, 21 Jul 2009 22:25:23 +0000 (15:25 -0700)]
Restore malloc debug.
Some libc changes were preventing the initialization call from being made.
The basic problem appears to be that libc_init_common.c is only built once,
and it's only built for the non-debug libc.
David 'Digit' Turner [Mon, 20 Jul 2009 07:13:21 +0000 (00:13 -0700)]
am
b56b5659: Fix the C library runtime initialization order.
Merge commit '
b56b5659b3996e98c2060f168d1cff1474e77d2a'
* commit '
b56b5659b3996e98c2060f168d1cff1474e77d2a':
Fix the C library runtime initialization order.
David 'Digit' Turner [Mon, 20 Jul 2009 07:12:01 +0000 (00:12 -0700)]
am
ef0bd185: Pass the elfdata pointer in a slot of the temporary TLS area.
Merge commit '
ef0bd1857041ffde069cf52138aaf22c1af7130e'
* commit '
ef0bd1857041ffde069cf52138aaf22c1af7130e':
Pass the elfdata pointer in a slot of the temporary TLS area.
David 'Digit' Turner [Fri, 17 Jul 2009 23:11:10 +0000 (01:11 +0200)]
Fix the C library runtime initialization order.
This allows libc.so to run the C runtime initializer as soon as the
dynamic linker loads the shared library, i.e. before any other initializers
(e.g. static C++ constructors in other shared libraries the executable depends
on).
This also removes the bug where the initializers from the executable itself
were run twice: once by the dynamic linker, and another time by __libc_init
as defined by libc_init_dynamic.c
Android (Google) Code Review [Fri, 17 Jul 2009 22:34:38 +0000 (15:34 -0700)]
Merge change 7652
* changes:
Updating v4l2 headers from kernel
David 'Digit' Turner [Fri, 17 Jul 2009 15:55:01 +0000 (17:55 +0200)]
Pass the elfdata pointer in a slot of the temporary TLS area.
This is needed to properly initialize the C runtime when libc.so
is loaded by the dynamic linker.
Move the temporary TLS setup before the first system call, just
in case something really horrible happens, we won't crash when
trying to write an error code in 'errno'
Remove the broken TLS_SLOT_THREAD_ID setup. First, this slot
should normally receive the address of a pthread_internal_t,
not a kernel thread identifier. Second, it is never used by
the linker anyway.
Also remove an obsolete comment.
Rebecca Schultz Zavin [Fri, 17 Jul 2009 01:33:52 +0000 (18:33 -0700)]
Updating v4l2 headers from kernel
Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com>
Android (Google) Code Review [Thu, 16 Jul 2009 23:20:28 +0000 (16:20 -0700)]
Merge change 7610
* changes:
linux: add headers for lis331dlh and sfh7743 sensor drivers.
Dmitry Shmidt [Thu, 16 Jul 2009 22:31:30 +0000 (15:31 -0700)]
Add linux/ethtool.h header file
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
Mike Lockwood [Thu, 16 Jul 2009 22:53:41 +0000 (18:53 -0400)]
linux: add headers for lis331dlh and sfh7743 sensor drivers.
Signed-off-by: Mike Lockwood <lockwood@android.com>
Mathias Agopian [Tue, 14 Jul 2009 05:00:33 +0000 (22:00 -0700)]
allow pthread_mutexattr_setpshared to accept SHARED mutexes, since our current impl actually uses shared mutexes
Mathias Agopian [Mon, 13 Jul 2009 22:00:46 +0000 (15:00 -0700)]
added pthread_cond_timedwait_relative_np()
David 'Digit' Turner [Mon, 13 Jul 2009 04:56:33 +0000 (21:56 -0700)]
am
34806558: Add new C++ headers <cerrno> and <cfloat>
Merge commit '
348065586a2e6154d6cff36afa6e00af6bbc5918'
* commit '
348065586a2e6154d6cff36afa6e00af6bbc5918':
Add new C++ headers <cerrno> and <cfloat>
David 'Digit' Turner [Fri, 10 Jul 2009 10:23:09 +0000 (12:23 +0200)]
Add new C++ headers <cerrno> and <cfloat>
Also add std::malloc/realloc/calloc/free to <cstdlib>
Rename <cwchar_is_not_supported> to <cwchar>
David 'Digit' Turner [Thu, 9 Jul 2009 23:11:43 +0000 (16:11 -0700)]
am
db4616b2: Add <linux/uinput.h> to C library kernel headers
Merge commit '
db4616b2d3234a1916cafb48e65c50cf302afcde'
* commit '
db4616b2d3234a1916cafb48e65c50cf302afcde':
Add <linux/uinput.h> to C library kernel headers
David 'Digit' Turner [Thu, 9 Jul 2009 22:59:56 +0000 (00:59 +0200)]
Add <linux/uinput.h> to C library kernel headers
David 'Digit' Turner [Thu, 9 Jul 2009 22:51:54 +0000 (15:51 -0700)]
am
c4eee376: Prevent a crash in the memory leak checker (which happened in chk_free())
Merge commit '
c4eee3765bf9dd81ff055e70ff7daa83a3926d2a'
* commit '
c4eee3765bf9dd81ff055e70ff7daa83a3926d2a':
Prevent a crash in the memory leak checker (which happened in chk_free())
David 'Digit' Turner [Wed, 8 Jul 2009 12:22:41 +0000 (14:22 +0200)]
Prevent a crash in the memory leak checker (which happened in chk_free())
Simplify the code a little, removing un-necessary mutex locks/unlocks.
Provide slightly better diagnostic message in case of corruption.
Use snprintf/strlcat instead of sprintf/strcat
Iliyan Malchev [Wed, 8 Jul 2009 21:04:16 +0000 (14:04 -0700)]
bionic: add cleaned-up proximity-sensor header
Signed-off-by: Iliyan Malchev <malchev@google.com>
Android (Google) Code Review [Thu, 25 Jun 2009 22:17:28 +0000 (15:17 -0700)]
am
6ee8f1b0: Merge change 2990 into donut
Merge commit '
6ee8f1b0444c0db94931d2cd64427ded8fba38b0'
* commit '
6ee8f1b0444c0db94931d2cd64427ded8fba38b0':
Add LD_LIBRARY_PATH support to bionic's linker
Android (Google) Code Review [Thu, 25 Jun 2009 22:15:14 +0000 (15:15 -0700)]
Merge change 2990 into donut
* changes:
Add LD_LIBRARY_PATH support to bionic's linker
Android (Google) Code Review [Wed, 24 Jun 2009 22:45:01 +0000 (15:45 -0700)]
am
380f2498: Merge change 5184 into donut
Merge commit '
380f24983e8e33d0b189dda198ec64c1766a359d'
* commit '
380f24983e8e33d0b189dda198ec64c1766a359d':
update clean msm_camera.h
Android (Google) Code Review [Wed, 24 Jun 2009 19:45:35 +0000 (12:45 -0700)]
Merge change 5184 into donut
* changes:
update clean msm_camera.h
Iliyan Malchev [Wed, 24 Jun 2009 03:08:10 +0000 (20:08 -0700)]
update clean msm_camera.h
Signed-off-by: Iliyan Malchev <malchev@google.com>
Iliyan Malchev [Tue, 23 Jun 2009 18:13:19 +0000 (11:13 -0700)]
delete akm8973.h from original headers
Signed-off-by: Iliyan Malchev <malchev@google.com>
Iliyan Malchev [Mon, 22 Jun 2009 22:07:34 +0000 (15:07 -0700)]
add header for akm8973
Signed-off-by: Iliyan Malchev <malchev@google.com>
David 'Digit' Turner [Mon, 22 Jun 2009 16:56:46 +0000 (09:56 -0700)]
am
09baf4e8: Add Glibc-compatible macro aliases for the nanosecond time accessors in stat structure
Merge commit '
09baf4e881c78e67c7849aa81432ceb34e72e913'
* commit '
09baf4e881c78e67c7849aa81432ceb34e72e913':
Add Glibc-compatible macro aliases for the nanosecond time accessors in stat structure
Android (Google) Code Review [Mon, 22 Jun 2009 16:25:27 +0000 (09:25 -0700)]
Merge change 4509
* changes:
Removed non-standard declaration in cstring.
David 'Digit' Turner [Mon, 22 Jun 2009 10:16:06 +0000 (12:16 +0200)]
Add Glibc-compatible macro aliases for the nanosecond time accessors in stat structure
Android (Google) Code Review [Wed, 17 Jun 2009 22:36:55 +0000 (15:36 -0700)]
Merge change 4025
* changes:
Make IPv6 definitions comply with RFC 3493: - Add some definitions to netinet/in6.h - Include netinet/in6.h from netinet/in.h
Nicolas Catania [Wed, 17 Jun 2009 21:30:33 +0000 (14:30 -0700)]
Removed non-standard declaration in cstring.
Aligned the list of the function declared in std:: to
match gcc.
In the first cut, too many functions were included.
The test under system/extras/tests/bionic/libstdc++ already
has the correct (shorter) list.
Lorenzo Colitti [Fri, 12 Jun 2009 02:33:45 +0000 (19:33 -0700)]
Make IPv6 definitions comply with RFC 3493:
- Add some definitions to netinet/in6.h
- Include netinet/in6.h from netinet/in.h
David 'Digit' Turner [Tue, 16 Jun 2009 15:37:54 +0000 (08:37 -0700)]
am
9cfccefa: Update cleaned-up kernel headers
Merge commit '
9cfccefa055554c7e951741c01373a52a82d3fd6'
* commit '
9cfccefa055554c7e951741c01373a52a82d3fd6':
Update cleaned-up kernel headers
David 'Digit' Turner [Fri, 12 Jun 2009 12:37:15 +0000 (14:37 +0200)]
Update cleaned-up kernel headers
David Bartley [Wed, 3 Jun 2009 01:27:28 +0000 (18:27 -0700)]
Add LD_LIBRARY_PATH support to bionic's linker
David 'Digit' Turner [Mon, 15 Jun 2009 03:49:29 +0000 (20:49 -0700)]
am
3ddc15e1: Add new clean header for PPP on PPTP (VPN)
Merge commit '
3ddc15e10a6f5690e53e729c0da2c42f0eb944d1'
* commit '
3ddc15e10a6f5690e53e729c0da2c42f0eb944d1':
Add new clean header for PPP on PPTP (VPN)
David 'Digit' Turner [Fri, 12 Jun 2009 12:21:49 +0000 (14:21 +0200)]
Add new clean header for PPP on PPTP (VPN)
Iliyan Malchev [Fri, 5 Jun 2009 05:43:23 +0000 (22:43 -0700)]
am
bf8709f5: bionic: update msm_camera.h header
Merge commit '
bf8709f54b1eabbd4e9bb81e91b9385a9863f505'
* commit '
bf8709f54b1eabbd4e9bb81e91b9385a9863f505':
bionic: update msm_camera.h header
Iliyan Malchev [Thu, 4 Jun 2009 18:55:53 +0000 (11:55 -0700)]
bionic: update msm_camera.h header
Signed-off-by: Iliyan Malchev <malchev@google.com>
David 'Digit' Turner [Wed, 3 Jun 2009 20:00:20 +0000 (13:00 -0700)]
am
3a654b1e: Revert "Fix the C library initialization to avoid calling static C++ constructors twice."
Merge commit '
3a654b1e04d4275ae315cfe1b196998acf10052c'
* commit '
3a654b1e04d4275ae315cfe1b196998acf10052c':
Revert "Fix the C library initialization to avoid calling static C++ constructors twice."
David 'Digit' Turner [Wed, 3 Jun 2009 17:32:37 +0000 (19:32 +0200)]
Revert "Fix the C library initialization to avoid calling static C++ constructors twice."
This reverts commit
03eabfe65e1e2c36f4d26c78a730fa19a3bdada3.
David 'Digit' Turner [Wed, 3 Jun 2009 12:44:25 +0000 (05:44 -0700)]
am
03eabfe6: Fix the C library initialization to avoid calling static C++ constructors twice.
Merge commit '
03eabfe65e1e2c36f4d26c78a730fa19a3bdada3'
* commit '
03eabfe65e1e2c36f4d26c78a730fa19a3bdada3':
Fix the C library initialization to avoid calling static C++ constructors twice.
Barry Hayes [Tue, 26 May 2009 17:33:04 +0000 (10:33 -0700)]
Add mspace_merge_objects
David 'Digit' Turner [Thu, 28 May 2009 13:54:03 +0000 (15:54 +0200)]
Fix the C library initialization to avoid calling static C++ constructors twice.
The problem was due to the fact that, in the case of dynamic executables,
the dynamic linker calls the DT_PREINIT_ARRAY, DT_INIT and DT_INIT_ARRAY
constructors when loading shared libraries and dynamic executables,
*before* calling the executable's entry point (i.e. arch-$ARCH/bionic/crtbegin_dynamic.c)
which in turns call __libc_init() in libc.so, as defined by bionic/libc_init_dynamic.c
The latter did call these constructors array again, mistakenly.
The patch also updates the documentation of many related functions.
Also adds a new section to linker/README.TXT explaining restrictions on
C library usage.
The patch has been tested on a Dream for stability issues with
proprietary blobs:
- H264 decoding works
- Camera + Video recording works
- GPS works
- Sensors work
The tests in system/extra/tests/bionic/libc/common/test_static_cpp_mutex.cpp has been
run and shows the static C++ constructor being called only once.
Dima Zavin [Mon, 1 Jun 2009 20:02:20 +0000 (13:02 -0700)]
am
0353195f: linker: Give more context for failures during library dependency resolution.
Merge commit '
0353195f344666256dba474a15c9ba22cf0cccc9'
* commit '
0353195f344666256dba474a15c9ba22cf0cccc9':
linker: Give more context for failures during library dependency resolution.
Dima Zavin [Sat, 30 May 2009 00:30:25 +0000 (17:30 -0700)]
linker: Give more context for failures during library dependency resolution.
Signed-off-by: Dima Zavin <dima@android.com>
Dima Zavin [Thu, 28 May 2009 19:38:04 +0000 (12:38 -0700)]
am
2e85579c: linker: Make the errors reported by dlopen/dlsym be more useful.
Merge commit '
2e85579c34047c305caf15fb0ebe02bf3d001d0e'
* commit '
2e85579c34047c305caf15fb0ebe02bf3d001d0e':
linker: Make the errors reported by dlopen/dlsym be more useful.
Dima Zavin [Thu, 28 May 2009 19:38:02 +0000 (12:38 -0700)]
am
49e55332: libc: Add an intermediate version of the static libc without malloc
Merge commit '
49e55332784b82f7112ee7c1ea3c176c9dc32d7a'
* commit '
49e55332784b82f7112ee7c1ea3c176c9dc32d7a':
libc: Add an intermediate version of the static libc without malloc
Dima Zavin [Thu, 28 May 2009 19:38:00 +0000 (12:38 -0700)]
am
ca122b0e: libc: Cleanup the libc makefile.
Merge commit '
ca122b0e34df0e8c485be0d3ab1b80f728b76276'
* commit '
ca122b0e34df0e8c485be0d3ab1b80f728b76276':
libc: Cleanup the libc makefile.
Dima Zavin [Thu, 21 May 2009 01:28:09 +0000 (18:28 -0700)]
linker: Make the errors reported by dlopen/dlsym be more useful.
Changed it so that when the linker generates error messages, they are
scribbled away into a buffer that dlfcn and friends can read from.
Since the error messages are generetad with snprintf, and snprintf
MAY call malloc during some code paths, we now link against a version
of libc that does not contain malloc/free/realloc/calloc. We then define
malloc and friends in the dynamic loader, and make them abort() if they
are ever called.
Signed-off-by: Dima Zavin <dima@android.com>
Dima Zavin [Wed, 27 May 2009 17:52:37 +0000 (10:52 -0700)]
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>
Dima Zavin [Wed, 27 May 2009 17:52:37 +0000 (10:52 -0700)]
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>