OSDN Git Service

android-x86/bionic.git
14 years agobionic/linker: keep track of opened libraries by basename
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>
14 years agoMerge change 8281 into donut
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

14 years agoMake 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.

15 years agolinker: remove newlines from DL_ERR so that dlerror works correctly
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>
15 years agoRestore malloc debug.
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.

15 years agoFix the C library runtime initialization order.
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

15 years agoPass the elfdata pointer in a slot of the temporary TLS area.
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.

15 years agoAdd 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>

15 years agoAdd <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

15 years agoPrevent 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

15 years agoMerge change 2990 into donut
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

15 years agoMerge change 5184 into donut
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

15 years agoupdate 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>
15 years agoAdd Glibc-compatible macro aliases for the nanosecond time accessors in stat structure
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

15 years agoUpdate cleaned-up kernel headers
David 'Digit' Turner [Fri, 12 Jun 2009 12:37:15 +0000 (14:37 +0200)]
Update cleaned-up kernel headers

15 years agoAdd LD_LIBRARY_PATH support to bionic's linker
David Bartley [Wed, 3 Jun 2009 01:27:28 +0000 (18:27 -0700)]
Add LD_LIBRARY_PATH support to bionic's linker

15 years agoAdd 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)

15 years agobionic: 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>
15 years agoRevert "Fix the C library initialization to avoid calling static C++ constructors...
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.

15 years agoFix the C library initialization to avoid calling static C++ constructors twice.
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.

15 years agolinker: 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>
15 years agolinker: Make the errors reported by dlopen/dlsym be more useful.
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>
15 years agolibc: Add an intermediate version of the static libc without malloc
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>
15 years agolibc: Cleanup the libc makefile.
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>
15 years agoMerge change 2470 into donut
Android (Google) Code Review [Wed, 27 May 2009 10:29:35 +0000 (03:29 -0700)]
Merge change 2470 into donut

* changes:
  Fix getservent() so that it returns s_port in network byte order. Also add a new document detailing known issues in the C library.

15 years agoMerge change 1852 into donut
Android (Google) Code Review [Wed, 27 May 2009 08:48:26 +0000 (01:48 -0700)]
Merge change 1852 into donut

* changes:
  Fix __eabi_atexit() implementation, as well as a bug in the BSD-originated __cxa_finalize() implementation This patch uses "#if ANDROID" instead of "#if 1" in the __cxa_finalize() fix

15 years agoadd msm_camera.h header and .gitignore file to bionic
Iliyan Malchev [Thu, 30 Apr 2009 19:29:52 +0000 (12:29 -0700)]
add msm_camera.h header and .gitignore file to bionic

Signed-off-by: Iliyan Malchev <malchev@google.com>
15 years agoupdate msm_adsp.h header
Iliyan Malchev [Wed, 20 May 2009 23:51:12 +0000 (16:51 -0700)]
update msm_adsp.h header

Signed-off-by: Iliyan Malchev <malchev@google.com>
15 years agoFix getservent() so that it returns s_port in network byte order.
David 'Digit' Turner [Tue, 26 May 2009 21:54:37 +0000 (23:54 +0200)]
Fix getservent() so that it returns s_port in network byte order.
Also add a new document detailing known issues in the C library.

15 years agoFix the parsing of the .fini_array in the dynamic linker (it should happen in reverse...
David 'Digit' Turner [Mon, 18 May 2009 12:37:41 +0000 (14:37 +0200)]
Fix the parsing of the .fini_array in the dynamic linker (it should happen in reverse order).
Also add a small design overview document for the linker. The latter contains details on
how the initialization/finalization is supposed to work.

15 years agoAdd <linux/ipsec.h> and <linux/if_pppolac.h> for VPN support.
David 'Digit' Turner [Wed, 20 May 2009 11:00:10 +0000 (13:00 +0200)]
Add <linux/ipsec.h> and <linux/if_pppolac.h> for VPN support.

Also update tools/update_all.py to not use perforce add/edit/delete commands automatically now that we're using git

15 years agoFix __eabi_atexit() implementation, as well as a bug in the BSD-originated __cxa_fina...
David 'Digit' Turner [Wed, 20 May 2009 09:42:52 +0000 (11:42 +0200)]
Fix __eabi_atexit() implementation, as well as a bug in the BSD-originated __cxa_finalize() implementation
This patch uses "#if ANDROID" instead of "#if 1" in the __cxa_finalize() fix

15 years agoAdd <cmath> standard C++ header.
David 'Digit' Turner [Mon, 18 May 2009 21:23:32 +0000 (23:23 +0200)]
Add <cmath> standard C++ header.
This is needed for upcoming STLport experimentation.

15 years agorevert to previous implementation of __aeabi_atexit() since the new one seems to...
David 'Digit' Turner [Fri, 15 May 2009 00:11:12 +0000 (02:11 +0200)]
revert to previous implementation of __aeabi_atexit() since the new one seems to crash a static ICU String destructor.
I don't have the time to investigate why right now, so a revert is preferred. Damn...

15 years agoFix __aeabi_atexit to call __cxa_atexit properly. This function is defined by the...
David 'Digit' Turner [Thu, 14 May 2009 12:25:26 +0000 (14:25 +0200)]
Fix __aeabi_atexit to call __cxa_atexit properly. This function is defined by the C++ ABI for ARM document.

15 years agolinker: Compute symbol name before lookup so we can also use it for error msg
Dima Zavin [Tue, 12 May 2009 17:59:09 +0000 (10:59 -0700)]
linker: Compute symbol name before lookup so we can also use it for error msg

Signed-off-by: Dima Zavin <dima@android.com>
15 years agochange getaddrinfo() implementation to match GLibc.
David 'Digit' Turner [Tue, 5 May 2009 13:50:24 +0000 (15:50 +0200)]
change getaddrinfo() implementation to match GLibc.

the issue is that the BSD implementation doesn't accept a call like:

  getaddrinfo(SERVER_NAME, "9999", NULL, &res);

because if will reject a numerical string in the second parameter if no hints are explicitely
provided. This technically doesn't violate POSIX but might make porting Linux software a bit
difficult. For more details see:

http://groups.google.com/group/android-ndk/browse_thread/thread/818ab9c53f24c87

also comment debugging printf() calls which shouldn't be there.

15 years agoMerge change 57 into donut
Android (Google) Code Review [Fri, 1 May 2009 21:28:28 +0000 (14:28 -0700)]
Merge change 57 into donut

* changes:
  Add the domain search list for VPN connection.   The current solution is to read the net.dns.search property, and expand the list during the resolve initialization. In the future, we could implement search list per process.

15 years agoIncrease the limit of loaded shared libraries from 64 to 96 This change is required...
James Dong [Fri, 1 May 2009 03:37:36 +0000 (20:37 -0700)]
Increase the limit of loaded shared libraries from 64 to 96 This change is required for OpenCORE 2.0
This is the same as Change 71 in master branch.

15 years agolibc: Replace a reference to TARGET_BUILD_TYPE with DEBUG_BIONIC_LIBC
Dave Bort [Thu, 23 Apr 2009 22:50:03 +0000 (15:50 -0700)]
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>
15 years agomerge cupcake into donut
Jean-Baptiste Queru [Thu, 23 Apr 2009 00:56:50 +0000 (17:56 -0700)]
merge cupcake into donut

15 years agoAdd the domain search list for VPN connection.
Chung-yih Wang [Thu, 9 Apr 2009 10:09:50 +0000 (18:09 +0800)]
Add the domain search list for VPN connection.
  The current solution is to read the net.dns.search property,
and expand the list during the resolve initialization. In the
future, we could implement search list per process.

Update: refine the code accordingly.

Update: remove unnecessary code.

Update: remove the unused variable.

15 years agoAI 145714: Added cstring wrapper around string.h.
Niko Catania [Fri, 10 Apr 2009 17:51:53 +0000 (10:51 -0700)]
AI 145714: Added cstring wrapper around string.h.
  In new, include cstddef which declares std::size_t.
  BUG=1601432

Automated import of CL 145714

15 years agoAI 145059: (Almost) final set of wrapper around the C headers for stdc++ and their...
Niko Catania [Wed, 8 Apr 2009 16:01:36 +0000 (09:01 -0700)]
AI 145059: (Almost) final set of wrapper around the C headers for stdc++ and their tests.
  The only one left is cstring.
  * bionic/libstdc++/include/cstdlib:
  * bionic/libstdc++/include/cstdio:
  * bionic/libstdc++/include/cstdint:
  * bionic/libstdc++/include/csignal:
  * bionic/libstdc++/include/csetjmp:
  Added header file.
  Checks the bionic headers file were picked up instead of the host ones.
  Added test for new header files
  * system/extras/tests/bionic/libstdc++/Android.mk:
  Added tests for the new header files.
  EXTRA_CFLAGS: include the bionic header files.
  BUG=1601432

Automated import of CL 145059

15 years agoAI 144236: Added new C to stdc++ header files: cassert, cctype, climits, ctime.
Niko Catania [Thu, 2 Apr 2009 16:31:46 +0000 (09:31 -0700)]
AI 144236: Added new C to stdc++ header files: cassert, cctype, climits, ctime.
  QA Impact:None
  BUG=1601432

Automated import of CL 144236

15 years agoAI 143504: Completed cstddef to be non empty and similar to the gnu stl implementation.
Niko Catania [Mon, 30 Mar 2009 19:50:56 +0000 (12:50 -0700)]
AI 143504: Completed cstddef to be non empty and similar to the gnu stl implementation.
  Even if we don't want to have a bloated stl implementation, having empty
  files around is probably not very good either.
  Added a test to make sure the header file compiles on host and kila-eng.
  QA Impact: In system/extras/test/bionic/libstdc++ build the tests using:
  mm BIONIC_TESTS=1
  to build the host and target tests.
  BUG=1601432

Automated import of CL 143504

15 years agoAI 143161: am: CL 142857 Add some bluring to the animation. This requires a new kerne...
Mathias Agopian [Fri, 27 Mar 2009 22:40:01 +0000 (15:40 -0700)]
AI 143161: am: CL 142857 Add some bluring to the animation. This requires a new kernel which will be checked-in later, at which point the blur effect will automatically be enabled.
  Original author: mathias
  Merged from: //branches/cupcake/...

Automated import of CL 143161

15 years agoAutomated import from //branches/cupcake/...@142857,142857
Mathias Agopian [Thu, 26 Mar 2009 04:43:43 +0000 (21:43 -0700)]
Automated import from //branches/cupcake/...@142857,142857

15 years agoAutomated import from //branches/donutburger/...@140950,140950
Iliyan Malchev [Wed, 25 Mar 2009 02:02:00 +0000 (19:02 -0700)]
Automated import from //branches/donutburger/...@140950,140950

15 years agoauto import from //branches/cupcake_rel/...@141571
The Android Open Source Project [Fri, 20 Mar 2009 06:08:36 +0000 (23:08 -0700)]
auto import from //branches/cupcake_rel/...@141571

15 years agoauto import from //branches/cupcake_rel/...@140373
The Android Open Source Project [Thu, 19 Mar 2009 00:39:42 +0000 (17:39 -0700)]
auto import from //branches/cupcake_rel/...@140373

15 years agoauto import from //depot/cupcake/@135843
The Android Open Source Project [Wed, 4 Mar 2009 03:28:35 +0000 (19:28 -0800)]
auto import from //depot/cupcake/@135843

15 years agoauto import from //depot/cupcake/@135843
The Android Open Source Project [Wed, 4 Mar 2009 02:28:13 +0000 (18:28 -0800)]
auto import from //depot/cupcake/@135843

15 years agoauto import from //depot/cupcake/@132589
The Android Open Source Project [Tue, 3 Mar 2009 22:03:51 +0000 (14:03 -0800)]
auto import from //depot/cupcake/@132589

15 years agoauto import from //depot/cupcake/@137055
The Android Open Source Project [Tue, 3 Mar 2009 06:54:14 +0000 (22:54 -0800)]
auto import from //depot/cupcake/@137055

15 years agoauto import from //branches/cupcake/...@132569
The Android Open Source Project [Fri, 20 Feb 2009 15:38:28 +0000 (07:38 -0800)]
auto import from //branches/cupcake/...@132569

15 years agoauto import from //branches/cupcake/...@132276
The Android Open Source Project [Thu, 19 Feb 2009 18:57:29 +0000 (10:57 -0800)]
auto import from //branches/cupcake/...@132276

15 years agoauto import from //branches/cupcake/...@131421
The Android Open Source Project [Fri, 13 Feb 2009 20:57:48 +0000 (12:57 -0800)]
auto import from //branches/cupcake/...@131421

15 years agoauto import from //branches/cupcake/...@130745
The Android Open Source Project [Tue, 10 Feb 2009 23:43:56 +0000 (15:43 -0800)]
auto import from //branches/cupcake/...@130745

15 years agoauto import from //branches/cupcake/...@127101
The Android Open Source Project [Tue, 20 Jan 2009 22:03:55 +0000 (14:03 -0800)]
auto import from //branches/cupcake/...@127101

15 years agoauto import from //branches/cupcake/...@126645
The Android Open Source Project [Fri, 16 Jan 2009 00:12:07 +0000 (16:12 -0800)]
auto import from //branches/cupcake/...@126645

15 years agoauto import from //branches/cupcake/...@125939
The Android Open Source Project [Sat, 10 Jan 2009 01:50:54 +0000 (17:50 -0800)]
auto import from //branches/cupcake/...@125939

15 years agoCode drop from //branches/cupcake/...@124589
The Android Open Source Project [Thu, 18 Dec 2008 02:03:48 +0000 (18:03 -0800)]
Code drop from //branches/cupcake/...@124589

15 years agoInitial Contribution
The Android Open Source Project [Tue, 21 Oct 2008 14:00:00 +0000 (07:00 -0700)]
Initial Contribution