Commit graph

26 commits

Author SHA1 Message Date
Elliott Hughes
240f1e2940 Clean up warnings in libstdc++.
Change-Id: Ie71a2fdf227e7a5fc9a446bb1be110da9b3a4280
2014-02-18 12:02:37 -08:00
Elliott Hughes
eb847bc866 Fix x86_64 build, clean up intermediate libraries.
The x86_64 build was failing because clone.S had a call to __thread_entry which
was being added to a different intermediate .a on the way to making libc.so,
and the linker couldn't guarantee statically that such a relocation would be
possible.

  ld: error: out/target/product/generic_x86_64/obj/STATIC_LIBRARIES/libc_common_intermediates/libc_common.a(clone.o): requires dynamic R_X86_64_PC32 reloc against '__thread_entry' which may overflow at runtime; recompile with -fPIC

This patch addresses that by ensuring that the caller and callee end up in the
same intermediate .a. While I'm here, I've tried to clean up some of the mess
that led to this situation too. In particular, this removes libc/private/ from
the default include path (except for the DNS code), and splits out the DNS
code into its own library (since it's a weird special case of upstream NetBSD
code that's diverged so heavily it's unlikely ever to get back in sync).

There's more cleanup of the DNS situation possible, but this is definitely a
step in the right direction, and it's more than enough to get x86_64 building
cleanly.

Change-Id: I00425a7245b7a2573df16cc38798187d0729e7c4
2013-10-09 16:00:17 -07:00
Elliott Hughes
8f2a5a0b40 Clean up internal libc logging.
We only need one logging API, and I prefer the one that does no
allocation and is thus safe to use in any context.

Also use O_CLOEXEC when opening the /dev/log files.

Move everything logging-related into one header file.

Change-Id: Ic1e3ea8e9b910dc29df351bff6c0aa4db26fbb58
2013-03-15 16:12:58 -07:00
Elliott Hughes
32dbc03c73 Regenerate all NOTICE files with the latest version of the script.
This sorts every entry, so we should have more stability and fewer
merge conflicts in future.

Change-Id: Ifc5347dc53352da22c82d41ca59b483966fcfc6b
2012-08-15 15:43:13 -07:00
Elliott Hughes
ae5c64413b Add dependencies on all the makefiles.
This should help prevent broken builds next time I'm messing with
assembler/compiler/linker flags...

Change-Id: I30f15a3ce3c3f3c60cad7bc59aaba9f42d792224
2012-08-13 14:06:05 -07:00
Elliott Hughes
387d4b7de9 Auto-generate a complete NOTICE file.
Remove the hand-collated ones, and switch to a script that pulls the
copyright headers out of every file and collects the unique ones.

Change-Id: Ied3b98b3f56241df97166c410ff81de4e0157c9d
2012-08-09 16:05:31 -07:00
Elliott Hughes
52d6233296 Report errors to the log, not just stderr.
In particular this affects assert(3) and __cxa_pure_virtual, both of
which have managed to confuse people this week by apparently aborting
without reason. (Because stderr goes nowhere, normally.)

Bug: 6852995
Bug: 6840813
Change-Id: I7f5d17d5ddda439e217b7932096702dc013b9142
2012-07-27 17:43:38 -07:00
Elliott Hughes
762a4fe2ee resolved conflicts for merge of 35d592cc to master
Change-Id: I8184302daf61814d26c837f9920b4e68d96d7f65
2012-04-16 14:40:26 -07:00
Fengwei Yin
ee18fb4aac libstdc++: Fix x86 thread-safe one-time-construction implementation.
The root of the problem is that the existing implementation is based on the
ARM C++ ABI, which mandates a different guard variable layout than the
Itanium/x86 C++ one.

This patch modifies the implementation in a way that satisfies both ABIs (and
doesn't require changing the toolchains).

Change-Id: I885e9adc7f088b9c0a78355bd752f1e6aeec9f07
Signed-off-by: Fengwei Yin <fengwei.yin@intel.com>
Signed-off-by: Jack Ren <jack.ren@intel.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
2012-04-16 14:20:30 +08:00
David 'Digit' Turner
e31bfae2ba bionic: Do not use <sys/atomics.h> for platform code.
We're going to modify the __atomic_xxx implementation to provide
full memory barriers, to avoid problems for NDK machine code that
link to these functions.

First step is to remove their usage from our platform code.
We now use inlined versions of the same functions for a slight
performance boost.

+ remove obsolete atomics_x86.c (was never compiled)

NOTE: This improvement was benchmarked on various devices.
      Comparing a pthread mutex lock + atomic increment + unlock
      we get:

  - ARMv7 emulator, running on a 2.4 GHz Xeon:
       before: 396 ns    after: 288 ns

  - x86 emulator in KVM mode on same machine:
       before: 27 ns     after: 27 ns

  - Google Nexus S, in ARMv7 mode (single-core):
       before: 82 ns     after: 76 ns

  - Motorola Xoom, in ARMv7 mode (multi-core):
       before: 121 ns    after: 120 ns

The code has also been rebuilt in ARMv5TE mode for correctness.

Change-Id: Ic1dc72b173d59b2e7af901dd70d6a72fb2f64b17
2011-11-16 16:28:10 +01:00
David 'Digit' Turner
7c72513bfa libstdc++: make operator new call abort on failure.
This change ensures that operator new will call abort() in case
of memory allocation failure. Note that due to our usage of memory
overcommit, this can only happen under very rare circumstances
(i.e. trying to allocate memory larger than the larger free range
of virtual address space, or when memory is corrutped in various
ways).

Change-Id: I128b8bf626216e899c22a00f24492cd148a1fc94
2011-06-14 21:58:55 +02:00
David 'Digit' Turner
1aa6708cc2 Fix the build. Oops.
(We remove the declaration for on_exit() from the C library headers,
so do the same for the C++ <cstdlib>)

Change-Id: I31a21d5643068cd160724908dd8156863a44d95a
2010-10-11 15:27:39 +02:00
David 'Digit' Turner
d466780c7c Add missing SMP barriers to libstdc++
Change-Id: I20a8dcd2e3316ac60237e800c682cacc8e59e187
2010-07-07 14:18:20 -07:00
David 'Digit' Turner
0621a279ad libstdc++: use extern "C++" in all our C++ system headers.
This is needed to build an independent toolchain with g++ that doesn't think
that all these headers are in C.

Change-Id: Ie9a8ccfcab7780d6a4e5722777d61c2b1b312001
2010-06-25 16:53:37 -07:00
André Goddard Rosa
8f92500fa9 optimize delete/delete[] operators by removing unneeded branch
Remove redundant not NULL check already done in free().

Signed-off-by: André Goddard Rosa <andre.goddard@gmail.com>
2010-01-30 22:26:30 -02:00
Jean-Baptiste Queru
194d3fa048 eclair snapshot 2009-11-12 18:45:14 -08:00
David 'Digit' Turner
348065586a Add new C++ headers <cerrno> and <cfloat>
Also add std::malloc/realloc/calloc/free to <cstdlib>
Rename <cwchar_is_not_supported> to <cwchar>
2009-07-10 18:40:55 +02: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
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
00a18f62a7 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
2009-04-08 09:01:36 -07:00
Niko Catania
88f8a4ab85 AI 144236: Added new C to stdc++ header files: cassert, cctype, climits, ctime.
QA Impact:None
  BUG=1601432

Automated import of CL 144236
2009-04-02 09:31:46 -07:00
Niko Catania
416ceb861c 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
2009-03-30 12:50:56 -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
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