Commit Graph

1140 Commits

Author SHA1 Message Date
David 'Digit' Turner
03eabfe65e 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.
2009-06-02 23:27:44 +02:00
Dima Zavin
654476654e 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.
2009-06-01 13:02:20 -07:00
Dima Zavin
0353195f34 linker: Give more context for failures during library dependency resolution.
Signed-off-by: Dima Zavin <dima@android.com>
2009-06-01 12:55:48 -07:00
Dima Zavin
563b15dbfe 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.
2009-05-28 12:38:04 -07:00
Dima Zavin
e76de9a8ca 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
2009-05-28 12:38:02 -07:00
Dima Zavin
b489245af2 am ca122b0e: libc: Cleanup the libc makefile.
Merge commit 'ca122b0e34df0e8c485be0d3ab1b80f728b76276'

* commit 'ca122b0e34df0e8c485be0d3ab1b80f728b76276':
  libc: Cleanup the libc makefile.
2009-05-28 12:38:00 -07:00
Dima Zavin
2e85579c34 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>
2009-05-27 20:16:19 -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
Android (Google) Code Review
4cab53af77 am cdb68bf8: Merge change 2470 into donut
Merge commit 'cdb68bf8ce26448cfe173d86f1c074e167c3420f'

* commit 'cdb68bf8ce26448cfe173d86f1c074e167c3420f':
  Fix getservent() so that it returns s_port in network byte order.
2009-05-27 03:31:12 -07:00
Android (Google) Code Review
cdb68bf8ce 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.
2009-05-27 03:29:35 -07:00
Android (Google) Code Review
1ff2ee440b am 5c106fca: Merge change 1852 into donut
Merge commit '5c106fcaa5b9d0a3ebeb2e8cdca589129d6a7ebd'

* commit '5c106fcaa5b9d0a3ebeb2e8cdca589129d6a7ebd':
  Fix __eabi_atexit() implementation, as well as a bug in the BSD-originated __cxa_finalize() implementation
2009-05-27 01:50:28 -07:00
Android (Google) Code Review
5c106fcaa5 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
2009-05-27 01:48:26 -07:00
Iliyan Malchev
b572dc4b51 am 94a144ea: add msm_camera.h header and .gitignore file to bionic
Merge commit '94a144eabd1c7477e77e81e83aa04d43c8a79791'

* commit '94a144eabd1c7477e77e81e83aa04d43c8a79791':
  add msm_camera.h header and .gitignore file to bionic
2009-05-26 17:55:26 -07:00
Iliyan Malchev
bdde630b4a am 1c8e1094: update msm_adsp.h header
Merge commit '1c8e10945eb1ab1352f73c7fb026b99397a8ca70'

* commit '1c8e10945eb1ab1352f73c7fb026b99397a8ca70':
  update msm_adsp.h header
2009-05-26 17:51:49 -07:00
Iliyan Malchev
94a144eabd add msm_camera.h header and .gitignore file to bionic
Signed-off-by: Iliyan Malchev <malchev@google.com>
2009-05-26 17:06:24 -07:00
Iliyan Malchev
1c8e10945e update msm_adsp.h header
Signed-off-by: Iliyan Malchev <malchev@google.com>
2009-05-26 17:06:21 -07:00
David 'Digit' Turner
2735b33519 Fix getservent() so that it returns s_port in network byte order.
Also add a new document detailing known issues in the C library.
2009-05-27 00:01:11 +02:00
David 'Digit' Turner
d7f5035959 am 8215679b: 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.
Merge commit '8215679b355efe3829bab571bd566dc818ea4ccc'

* commit '8215679b355efe3829bab571bd566dc818ea4ccc':
  Fix the parsing of the .fini_array in the dynamic linker (it should happen in reverse order).
2009-05-26 10:11:25 -07:00
David 'Digit' Turner
8215679b35 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.
2009-05-26 11:16:28 +02:00
David 'Digit' Turner
38460b45bc am e5446feb: Add <linux/ipsec.h> and <linux/if_pppolac.h> for VPN support.
Merge commit 'e5446feb21a991426fb683d077a1a8ca5831ac0f'

* commit 'e5446feb21a991426fb683d077a1a8ca5831ac0f':
  Add <linux/ipsec.h> and <linux/if_pppolac.h> for VPN support.
2009-05-25 08:36:49 -07:00
David 'Digit' Turner
e5446feb21 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
2009-05-20 13:00:10 +02:00
David 'Digit' Turner
0ba91ed3ca 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
2009-05-20 11:42:52 +02:00
David 'Digit' Turner
24a41091f4 am 8169573c: Add <cmath> standard C++ header. This is needed for upcoming STLport experimentation.
Merge commit '8169573c8744ee3a484ea74bd5e06a8a4f708e37'

* commit '8169573c8744ee3a484ea74bd5e06a8a4f708e37':
  Add <cmath> standard C++ header.
2009-05-19 02:53:26 -07:00
David 'Digit' Turner
8169573c87 Add <cmath> standard C++ header.
This is needed for upcoming STLport experimentation.
2009-05-18 23:34:13 +02:00
Eric Fischer
a48fa7f4de Add standalone_months field to libc strftime().
Replicate my change 722a5c0462f38827f4097065bfc3826b9e0e9fb4 into
bionic in an attempt to fix the build.
2009-05-15 13:46:55 -07:00
David 'Digit' Turner
a0508577c9 am d386afcc: 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...
Merge commit 'd386afcc41e92c96778d9b1a498199f48fa2d4aa'

* commit 'd386afcc41e92c96778d9b1a498199f48fa2d4aa':
  revert to previous implementation of __aeabi_atexit() since the new one seems to crash a static ICU String destructor.
2009-05-14 17:14:08 -07:00
David 'Digit' Turner
d386afcc41 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...
2009-05-15 02:11:12 +02:00
David 'Digit' Turner
3ccce08bf8 am 3e16f84f: Fix __aeabi_atexit to call __cxa_atexit properly. This function is defined by the C++ ABI for ARM document.
Merge commit '3e16f84fcad103c97a2df4a58948835277043569'

* commit '3e16f84fcad103c97a2df4a58948835277043569':
  Fix __aeabi_atexit to call __cxa_atexit properly. This function is defined by the C++ ABI for ARM document.
2009-05-14 15:39:55 -07:00
David 'Digit' Turner
3e16f84fca Fix __aeabi_atexit to call __cxa_atexit properly. This function is defined by the C++ ABI for ARM document. 2009-05-14 14:25:26 +02:00
Dima Zavin
cd64095ad1 am d1b40d8: linker: Compute symbol name before lookup so we can also use
Merge commit 'd1b40d8c69dfca94185ea9231f6cb16f70c02e39'

* commit 'd1b40d8c69dfca94185ea9231f6cb16f70c02e39':
  linker: Compute symbol name before lookup so we can also use it for error msg
2009-05-12 11:31:39 -07:00
Dima Zavin
d1b40d8c69 linker: Compute symbol name before lookup so we can also use it for error msg
Signed-off-by: Dima Zavin <dima@android.com>
2009-05-12 10:59:09 -07:00
David 'Digit' Turner
6c9f88d15c am 5e56370: change getaddrinfo() implementation to match GLibc.
Merge commit '5e563700380eade647f347669ea61dbb0ede9814'

* commit '5e563700380eade647f347669ea61dbb0ede9814':
  change getaddrinfo() implementation to match GLibc.
2009-05-05 07:13:33 -07:00
David 'Digit' Turner
5e56370038 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.
2009-05-05 15:50:24 +02:00
Android (Google) Code Review
bc89169b5e am 85a01ff: Merge change 57 into donut
Merge commit '85a01ffba337b123436f57eba4daae38c7c90d1e'

* commit '85a01ffba337b123436f57eba4daae38c7c90d1e':
  Add the domain search list for VPN connection.
2009-05-01 23:01:54 -07:00
Android (Google) Code Review
85a01ffba3 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.
2009-05-01 14:28:28 -07:00
James Dong
9122f51d44 am ba52b30: Increase the limit of loaded shared libraries from 64 to 96
Merge commit 'ba52b3092f361580a5dea7ab8fbe2a227b55ee43'

* commit 'ba52b3092f361580a5dea7ab8fbe2a227b55ee43':
  Increase the limit of loaded shared libraries from 64 to 96 This change is required for OpenCORE 2.0
2009-05-01 14:09:44 -07:00
James Dong
ba52b3092f 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.
2009-04-30 20:37:36 -07:00
Dave Bort
3707ba5132 am d2c9dcc: libc: Replace a reference to TARGET_BUILD_TYPE with DEBUG_BI
Merge commit 'd2c9dcc9265e66f6432ec39dcc7378b944449e60'

* commit 'd2c9dcc9265e66f6432ec39dcc7378b944449e60':
  libc: Replace a reference to TARGET_BUILD_TYPE with DEBUG_BIONIC_LIBC
2009-04-29 11:02:39 -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
Jean-Baptiste Queru
5a2edd681c Merge donut into master 2009-04-22 18:33:11 -07:00
Jean-Baptiste Queru
61663573dd merge cupcake into donut 2009-04-22 17:56:50 -07:00
Jean-Baptiste Queru
68f25c31f8 Merge donut into master 2009-04-22 17:12:08 -07:00
Chung-yih Wang
aeae1f5b6c 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.
2009-04-13 10:41:17 +08:00
Android (Google) Code Review
51cec57e44 Merge change 71
* changes:
  Increase the limit of loaded shared libraries from 64 to 96 This change is required for OpenCORE 2.0
2009-04-10 15:17:20 -07:00
Dave Sparks
ee40369656 Increase the limit of loaded shared libraries from 64 to 96
This change is required for OpenCORE 2.0

	modified:   linker/linker.c
2009-04-10 14:23:20 -07:00
Niko Catania
862ed2d3db Merge branch 'readonly-p4-master' 2009-04-10 10:55:24 -07:00
Niko Catania
69b1a8ac50 AI 145716: am: CL 145714 Added cstring wrapper around string.h.
In new, include cstddef which declares std::size_t.
  Original author: niko

Automated import of CL 145716
2009-04-10 10:54:03 -07:00
Niko Catania
89b62a18a0 AI 145714: Added cstring wrapper around string.h.
In new, include cstddef which declares std::size_t.
  BUG=1601432

Automated import of CL 145714
2009-04-10 10:51:53 -07:00
Niko Catania
d99f61fda8 Merge branch 'readonly-p4-master' 2009-04-08 18:50:24 -07:00