Commit Graph

17015 Commits

Author SHA1 Message Date
Treehugger Robot 5ac45a2add Merge "Remove a duplicate declaration, improve check-symbols-glibc.py." 2016-05-06 22:42:11 +00:00
Treehugger Robot f67dcc8f9d Merge "Re-land "Fix invalid using decl in bionic relocation_packer"" 2016-05-06 22:08:31 +00:00
Dimitry Ivanov 83fcb54208 Fix linker crash on trying to unload main executable
Linker crashed if linking of the main executable fails
instead of aborting with readable error message.

This patch modifies unload to soinfo_unload it all at once
in this particular case. This helps avoid situations when
one of the libraries on the DT_NEEDED list of main executable
has gotten unloaded by previous library unload because it
DT_NEEDED it too.

Example (consider following dependency tree):
main_executable
|-> liba.so
  |-> libb.so
|-> libb.so

The list of the libraries need to be unloaded in this case
is [liba.so, libb.so], but if linker does unload one by one
by the time it gets to libb.so - the soinfo for the library
is already unloaded (and the segments were unmapped).

Passing everything as an array helps soinfo_unload to check
if a library was already unloaded by looking into local_unload_list.

Bug: http://b/28565608
Change-Id: I7199290e10a186057dcf3b7b68dbce954af7dba1
2016-05-06 14:50:23 -07:00
Elliott Hughes 21788265da Remove a duplicate declaration, improve check-symbols-glibc.py.
Change-Id: I97a98dfc8acaa93172386b4475487a05a35a9337
2016-05-06 14:43:50 -07:00
Treehugger Robot 96029e30ce Merge "Remove --exclude-libs ldflags." 2016-05-06 21:41:26 +00:00
rnk 18d0e8c11d Re-land "Fix invalid using decl in bionic relocation_packer"
This time with more namespace qualification.

Tested manually by building clang_x64/android_relocation_packer locally,
as the Android trybot analyze step does not think it needs to run for
this change.

Original description:

> The code was essentially doing 'using Logger::INFO' in the global
> namespace to make its 'LOG(INFO)' macros work. Unfortunately, C++ does
> not allow you to use using decls on classes like this unless you are in
> a derived class. GCC does not accept this code, and Clang was recently
> updated (LLVM r268594) to reject it as well.
>
> This should fix the Chromium Android ASan build with TOT Clang:
> https://build.chromium.org/p/chromium.fyi/builders/ClangToTAndroidASan/

TBR=thakis@chromium.org,sgurun@chromium.org
BUG=609543

Review-Url: https://codereview.chromium.org/1952353005
Cr-Commit-Position: refs/heads/master@{#391952}
(cherry picked from commit 5762af8ad13e62957493c3e4314a234ee57a4200)

Change-Id: Ibc6f6023aef028c5029be128ac799dc67fc6683c
2016-05-06 14:09:58 -07:00
Dan Albert e29e99c514 Remove --exclude-libs ldflags.
This is now done by default in the build system.

The comments say don't do this, but we have linker scripts that
protect the few symbols we have to actually keep now.

Bug: http://b/24166967
Change-Id: Iff1beeb0f54f80b23fb1561f37a39f208e0bf676
2016-05-06 13:18:59 -07:00
Treehugger Robot 98ac6f415f Merge "Use clang's nullability instead of nonnull." 2016-05-06 02:27:18 +00:00
Dan Albert baa2a973bd Use clang's nullability instead of nonnull.
http://clang.llvm.org/docs/AttributeReference.html#nonnull

_Nonnull is similar to the nonnull attribute in that it will instruct
compilers to warn the user if it can prove that a null argument is
being passed. Unlike the nonnull attribute, this annotation indicated
that a value *should not* be null, not that it *cannot* be null, or
even that the behavior is undefined. The important distinction is that
the optimizer will perform surprising optimizations like the
following:

    void foo(void*) __attribute__(nonnull, 1);

    int bar(int* p) {
      foo(p);

      // The following null check will be elided because nonnull
      // attribute means that, since we call foo with p, p can be
      // assumed to not be null. Thus this will crash if we are called
      // with a null pointer.
      if (src != NULL) {
        return *p;
      }
      return 0;
    }

    int main() {
      return bar(NULL);
    }

Note that by doing this we are no longer attaching any sort of
attribute for GCC (GCC doesn't support attaching nonnull directly to a
parameter, only to the function and naming the arguments
positionally). This means we won't be getting a warning for this case
from GCC any more. People that listen to warnings tend to use clang
anyway, and we're quickly moving toward that as the default, so this
seems to be an acceptable tradeoff.

Change-Id: Ie05fe7cec2f19a082c1defb303f82bcf9241b88d
2016-05-05 17:11:54 -07:00
Elliott Hughes 5e2342f970 Merge "Remove <sys/atomics.h>." 2016-05-05 23:55:04 +00:00
Colin Cross 7ee8e299ba Merge "Update Android.bp to match Android.mk" 2016-05-04 20:41:17 +00:00
Colin Cross 7941678b39 Update Android.bp to match Android.mk
Change-Id: Idaaf5019599739c50f387382ca6749af968d7095
2016-05-04 12:23:25 -07:00
Chih-hung Hsieh 9f0aab88a8 Merge "Fix google-explicit-constructor warnings." 2016-05-04 00:37:58 +00:00
Colin Cross 0f93237db7 Merge "Update strip property format" 2016-05-03 21:20:43 +00:00
Christopher Ferris 2ab69ccf10 Merge "Update documentation to work with gitiles." 2016-05-03 19:47:47 +00:00
Chih-Hung Hsieh 62e3a078aa Fix google-explicit-constructor warnings.
Bug: 28341362
Change-Id: I84effbdfa1b9b39328a909b7f70fe17e7ee316c8
2016-05-03 12:08:05 -07:00
Elliott Hughes 9ee905f12f Merge "Move <machine/endian.h> somewhere more private." 2016-05-03 00:45:38 +00:00
Treehugger Robot 45d3cf9f0f Merge "Update Android.bp to match Android.mk" 2016-05-02 23:19:20 +00:00
Elliott Hughes ed507636c0 Remove <sys/atomics.h>.
It's no longer used in the platform (including vendor code), and everyone
should be using <stdatomic.h> anyway.

Change-Id: Ic1ad743625ffb15b4837ff6ccb91dcd840d19ec2
2016-05-02 16:04:57 -07:00
Elliott Hughes 3d125175d7 Move <machine/endian.h> somewhere more private.
Bug: http://b/28519060
Change-Id: I1c7811f95f46c65d4152bcf509b6e048c45bc28b
2016-05-02 15:44:56 -07:00
Elliott Hughes 3338ee5257 Merge "Move glibc-syscalls.h into bits/." 2016-05-02 22:41:34 +00:00
Elliott Hughes 3fb1b37bba Merge "Remove <sys/utime.h>." 2016-05-02 21:35:14 +00:00
Elliott Hughes d3b4166b5b Merge "Move the IEEE fp header out of the public headers." 2016-05-02 21:22:32 +00:00
Elliott Hughes eb9b0a1819 Merge "Move nsswitch.h into libc/dns/include." 2016-05-02 21:11:30 +00:00
Elliott Hughes af5afdba34 Merge "Remove <net/if_ieee1394.h>." 2016-05-02 21:11:10 +00:00
Elliott Hughes 5ab6f6c3bd Merge "Remove <sys/ioctl_compat.h>." 2016-05-02 21:07:13 +00:00
Elliott Hughes e10ff49ec3 Remove <sys/utime.h>.
As far as I can tell, this is a Windows-ism.

Bug: http://b/28519060
Change-Id: I28ca39ba799aaae81695eff3ce57eacb326e941c
2016-05-02 13:13:49 -07:00
Elliott Hughes d3f51a482f Merge "Remove unused <sys/socketcalls.h> header." 2016-05-02 20:03:53 +00:00
Elliott Hughes 64959d2b7f Remove <sys/ioctl_compat.h>.
This is all legacy BSD stuff (legacy even on BSD!) that's meaningless on Linux.

Bug: http://b/28519060
Change-Id: I92d317ede844ebd50b48368021fa2ad036e2b0c1
2016-05-02 12:53:00 -07:00
Elliott Hughes 8aabbd7f63 Move glibc-syscalls.h into bits/.
Bug: http://b/28519060
Change-Id: I0de1ba16b16eb7b780de89954d3fa45cca2f5295
2016-05-02 12:47:58 -07:00
Elliott Hughes b0da5760dc Move the IEEE fp header out of the public headers.
Bug: http://b/28519060
Change-Id: I9f1a1a9ac1f22462bf86991b57c51824cb42eefd
2016-05-02 12:44:41 -07:00
Elliott Hughes 82140bed6a Remove <net/if_ieee1394.h>.
It's 2016.

Bug: http://b/28519060
Change-Id: Idbb2c40f37e57a87933b8b13b20e15035105e918
2016-05-02 12:35:26 -07:00
Elliott Hughes 42d752754e Move nsswitch.h into libc/dns/include.
Not a public header file except in NetBSD, where it came from. Even
OpenBSD doesn't have it.

Bug: http://b/28519060
Change-Id: Id5feec4a4e8010a9f4433e73b1bfa6f935d884b9
2016-05-02 12:24:58 -07:00
Josh Gao 583a4f8d35 Merge changes I25dca710,I85fdf927,I667fe53e,I46bf95ac
* changes:
  Remove nonexported _ns_flagdata from public header.
  Add platform specific version tags.
  Add __INTRODUCED_IN_FUTURE for unreleased APIs.
  Add versioning information to symbols.
2016-05-02 18:33:04 +00:00
Elliott Hughes 6bad319c5f Remove unused <sys/socketcalls.h> header.
These constants come from <linux/net.h> on Linux.

Change-Id: I546fadac2478771c2455298d776dbc4a20c73b17
2016-05-02 08:09:37 -07:00
Elliott Hughes ec4671928c Merge "Fix various empty .h files in bionic." 2016-05-02 14:43:01 +00:00
Lorenzo Colitti edfc5d7b74 Merge "Record the resolution start time on errors." 2016-05-02 11:28:42 +00:00
Pierre Imai 8b8611a0e6 Record the resolution start time on errors.
Also only record samples on the first try for a server.

BUG: 25731675

Change-Id: I10a68813c6636874e63aca1db661e63e1af72a2d
2016-05-02 17:39:19 +09:00
Elliott Hughes 6b3bec031f Fix various empty .h files in bionic.
Bug: http://b/28432688
Change-Id: I339f5221b9e66ce5983eb3685b9405e8d6f58808
2016-04-29 22:30:19 -07:00
Treehugger Robot ee6fb66dc1 Merge changes I0aa46d9d,I6431111b
* changes:
  Add __INTRODUCED_IN_{32,64}.
  Add __INTRODUCED_IN hack to complex test.
2016-04-30 00:48:38 +00:00
Josh Gao b089e468bd Remove nonexported _ns_flagdata from public header.
Bug: http://b/28178111
Change-Id: I25dca710964099c4e07bf694635db75a72b38508
2016-04-29 16:39:50 -07:00
Josh Gao 5a3d5cac64 Add __INTRODUCED_IN_{32,64}.
Some symbols appeared at different times between 32 and 64 bit. Add a
macro to represent this.

Bug: http://b/28178111
Change-Id: I0aa46d9da3c7301b60df0416bce252f0f37b7b36
2016-04-29 16:39:50 -07:00
Josh Gao d51bc71294 Add platform specific version tags.
Some functions were added at different times on different platforms.
This should hopefully get most of them.

Bug: http://b/28178111
Change-Id: I85fdf92779a2f3277e9b537c6bfc7216790c607a
2016-04-29 16:39:50 -07:00
Josh Gao ff504e63ee Add __INTRODUCED_IN hack to complex test.
complex_test.cpp is compiled with both bionic and glibc, so when
__INTRODUCED_IN starts being used in <complex.h>, we'll need this to
keep it building.

Bug: http://b/28178111
Change-Id: I6431111be35288cad72e9c23ca8599f548b6d906
2016-04-29 16:39:50 -07:00
Josh Gao 34c599a8b0 Add __INTRODUCED_IN_FUTURE for unreleased APIs.
Future API levels aren't known (e.g. 25 could be a maintenance release
of N that doesn't contain any bionic updates), so use a placeholder
macro that we can find and replace with the actual API level before each
release.

Bug: http://b/28178111
Change-Id: I667fe53ea1ac49b64135170fc30d5dbe9df94e29
2016-04-29 16:39:50 -07:00
Josh Gao 14adff1cfa Add versioning information to symbols.
Bug: http://b/28178111
Change-Id: I46bf95accd819f4521afb1173d8badcc5e9df31c
2016-04-29 16:39:50 -07:00
Elliott Hughes e23df93915 Merge "Remove __UNAVAILABLE." 2016-04-29 22:12:20 +00:00
Colin Cross 37f3632806 Update strip property format
Change-Id: Ic95655d25753b2c0f056a5660d42f582f90abe74
2016-04-29 14:06:14 -07:00
Colin Cross ee84786bfc Update Android.bp to match Android.mk
Change-Id: I6b71d8ee91c550e2d37c88ce2ca088964639d433
2016-04-29 14:06:14 -07:00
Elliott Hughes 7e94d292b0 Remove __UNAVAILABLE.
We fixed the things we needed this for, and should never reintroduce a
similar mistake in future.

Change-Id: I74b447bcf22ea533f3c79db48b66a3c217d76c2f
2016-04-29 11:07:55 -07:00