Commit graph

21447 commits

Author SHA1 Message Date
Dan Albert
1a8b7f2d1c Add a non-TLS slot implementation of locale.cpp.
libandroid_support shouldn't be using Bionic's TLS slot. Add a
thread_local based implementation. We can't use the thread_local
implementation in bionic because the linker needs this and pthread
thread-locals (which is how thread_local is implemented) doesn't work
that early.

Test: make checkbuild
Test: adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests
Bug: https://github.com/android-ndk/ndk/issues/300
Change-Id: I7dcbf554ade2264d541d722fa3f86df04926e67a
2017-07-12 13:47:42 -07:00
Anders Lewis
f4447b9105 Support memory alignment tests for string_benchmark.cpp
Test: Manually verify that benchmark times are similar and add a unit test.
Change-Id: Idaaeb4c8c3629f797ffd8d0c86c8d7b7b9653181
2017-07-12 13:42:23 -07:00
Dan Albert
e2fd01035b Move non-locale.h APIs out of locale.cpp.
libandroid_support only needs the locale.h stuff.

Test: make checkbuild
Bug: None
Change-Id: I0c53fe9d2df4f9ff4b99771727034508bc89cb32
2017-07-12 12:41:47 -07:00
Elliott Hughes
7532b32627 Replace killpg.
Upstream's killpg is diverging further from glibc behavior, so let's just fork.

Bug: N/A
Test: ran tests
Change-Id: I70a3543018bc0a5c0bbf019ac527043b90568fda
2017-07-11 15:00:17 -07:00
Treehugger Robot
3537331942 Merge "Sync with upstream OpenBSD: trivial stuff." 2017-07-11 21:34:08 +00:00
Elliott Hughes
b364683ea6 Sync with upstream OpenBSD: trivial stuff.
No active ingredient to any of these changes.

Bug: N/A
Test: builds
Change-Id: Ib1191a5c2826da024245d03dfc57557c8903a6cc
2017-07-11 12:34:19 -07:00
Treehugger Robot
61fcd39e17 Merge "The future passed part of <stdlib.h> by..." 2017-07-11 18:54:24 +00:00
Treehugger Robot
fc544af6cb Merge "Properly handle elf-files without relocation sections" 2017-07-11 17:41:13 +00:00
dimitry
0acb63aaa6 Properly handle elf-files without relocation sections
Relocation packer no longer complains about missing
relocation sections.

Test: relocation-packer-unit-tests
Test: mm
Change-Id: I56814be326c15e046db1a96d14568d951f689ae2
2017-07-11 17:00:09 +02:00
Treehugger Robot
fbefc86310 Merge "sys_ptrace_test: Better detect missing HW support" 2017-07-11 08:10:41 +00:00
Victor Khimenko
73d17e7720 Merge "Move environ valiable into it's own file" 2017-07-10 22:33:54 +00:00
Elliott Hughes
e76ff925df Merge "Make inline tcsetattr definition match constants." 2017-07-10 20:40:53 +00:00
Treehugger Robot
6aaa227f74 Merge "Undo recent _FILE_OFFSET_BITS=64 changes." 2017-07-10 20:20:53 +00:00
Treehugger Robot
c2828b87ec Merge "Fix ffs on x86 for old API levels." 2017-07-10 20:07:01 +00:00
Elliott Hughes
00fedf5879 Undo recent _FILE_OFFSET_BITS=64 changes.
We had several bugs filed saying "if I set _FILE_OFFSET_BITS=64 when
targeting an API < L, various functions are missing". Instead of
saying "yes, they are", we quietly just modified the header files to
expose the non-64-bit variants. This makes no sense. We can't just say
"oh, yeah, we don't have a version of this function that agrees with
your calling code about how large off_t is, but here's a version that
doesn't: I'm sure it'll be fine".

_FILE_OFFSET_BITS=64 on Android LP32 has always been a game of chance,
but that game should be "are all the functions my code needs available
at compile time?", not "will my code actually work at run time?".

Bug: https://github.com/android-ndk/ndk/issues/449
Bug: https://github.com/android-ndk/ndk/issues/442
Bug: https://github.com/android-ndk/ndk/issues/333
Bug: https://github.com/android-ndk/ndk/issues/332
Bug: https://github.com/android-ndk/ndk/issues/324
Test: builds
Change-Id: Ib095251d3e21e77ed50cc3575388107fecec4ecd
2017-07-10 19:52:18 +00:00
Victor Khimenko
0a0743f864 Move environ valiable into it's own file
Test: build statically the example program below

  char** environ;
  int main() {
  }

Change-Id: I3f01652da1d5063d92ba7cbff7fb09bd0a89325c
2017-07-10 21:44:17 +02:00
Elliott Hughes
4cae5c374e The future passed part of <stdlib.h> by...
Bug: N/A
Test: builds
Change-Id: Ibac3c1abd82838dccd360cb70decb7083401c28e
2017-07-10 11:51:00 -07:00
Pavel Labath
95d8fb1e84 sys_ptrace_test: Better detect missing HW support
If the hardware debug support is missing from the CPU, the kernel can
end up in the state where it reports that it supports N(>0) watchpoints,
but the "maximum supported watchpoint size" is zero.

This is not a really sensible API, but it is what we have. I'm going to
speak to folks upstream about whether we can have it report something
more sensible, but that will take a while (if ever).

So, for the time being, detect this situation and treat it as if no
hardware watchtpoints/breakpoints are supported.

Test: bionic-unit-tests --gtest_filter="sys_ptrace.*"
Change-Id: Id6a013c9bec8d8b450b4a36c28431f6b7fd15879
Bug: 63116544
2017-07-10 12:52:35 +00:00
Ivan Lozano
ddefae7ba9 Merge "Disable integer_overflow sanitizer in libm." 2017-07-07 20:07:20 +00:00
Elliott Hughes
6c716a155d Merge "Support building binutils out of the box for x86/x86-64." 2017-07-06 22:33:42 +00:00
Elliott Hughes
1de6d0bb8a Merge "Make <sys/ttydefaults.h> more usable." 2017-07-06 22:20:34 +00:00
Ivan Lozano
e925418bdd Disable integer_overflow sanitizer in libm.
Explicitly disables the integer_overflow sanitizer in the libm library.
This change should not impact any other build targets.

Bug: 30969751
Test: Built with and without SANITIZE_TARGET=integer_overflow
Change-Id: I98d0312344086b01394f456d4b953463b5e6cb1a
2017-07-06 15:17:54 -07:00
Elliott Hughes
0ff813fb48 Merge "Update <arpa/*> from FreeBSD." 2017-07-06 22:15:04 +00:00
Elliott Hughes
4ceefe27e7 Merge "Claim to have a POSIX shell and utilities." 2017-07-06 21:22:20 +00:00
Elliott Hughes
10c836fe08 Merge "Conditionally expose splice(2) and sync_file_range(2) constants." 2017-07-06 21:21:20 +00:00
Elliott Hughes
913ae73395 Merge "Fix <dirent.h> d_ino/d_off types." 2017-07-06 21:15:35 +00:00
Elliott Hughes
8d307c9a30 Support building binutils out of the box for x86/x86-64.
x86 needs the <sys/user.h> additions, x86-64 the <sys/procfs.h> ones.

Bug: N/A
Test: ndkports x86 and x86_64 binutils-2.28
Change-Id: I2e4738d3f8343d12db0536ca77045e2a0ccc6596
2017-07-06 11:10:01 -07:00
Elliott Hughes
02fdd0570e Make <sys/ttydefaults.h> more usable.
* TTYDEF_OFLAG referred to the BSD OXTABS constant instead of the Linux XTABS,
  so references to it wouldn't compile.

* CEOL was incorrect (compared to `stty -a`).

* ttydefchars wouldn't compile (removed rather than attempt to fix something
  of unclear utility).

Bug: http://b/63145226
Test: new test
Change-Id: I823e5eaab789cafd2eeea03f77ea553346822f74
2017-07-06 10:33:15 -07:00
Dimitry Ivanov
9d2d21d636 Merge "The ifdef check for AT_SYSINFO_EHDR is no longer needed" 2017-07-06 15:16:03 +00:00
Treehugger Robot
7b7475ce85 Merge "Bionic: Add ziparchive test dependency" 2017-07-06 14:48:01 +00:00
dimitry
f9abbf6983 The ifdef check for AT_SYSINFO_EHDR is no longer needed
AT_SYSINFO_EHDR is present in all architectures

Test: make
Change-Id: I0f4c115bb48e47ea156e7fca936960f5f10c618e
2017-07-06 12:24:33 +02:00
Andreas Gampe
b9797fe91c Bionic: Add ziparchive test dependency
Add missing dependency.

Bug: 37342627
Test: m
test: mmma bionic
Change-Id: I43ae69a007f0e8745db5721296f457b3e58206dd
2017-07-05 22:36:20 -07:00
Elliott Hughes
964564d290 Claim to have a POSIX shell and utilities.
We pretty much do these days. And apparently some GNU tools turn on obsolete
backwards-compatible behaviors otherwise.

Bug: http://b/63145226
Test: builds
Change-Id: I9a8af860768cc2c10548f172d1e8b4fba3e5115b
2017-07-05 16:45:55 -07:00
Elliott Hughes
02a3fe9fc6 Update <arpa/*> from FreeBSD.
We've had <arpa/telnet.h> for years, despite being slightly more useless
than <arpa/ftp.h> and <arpa/tftp.h>. The inetutils package expects these
to be available.

Bug: http://b/63145226
Test: builds
Change-Id: I1e3c7421779e965b3342d681fefb8dc2561b604d
2017-07-05 16:03:59 -07:00
Elliott Hughes
9d2507205e Conditionally expose splice(2) and sync_file_range(2) constants.
As in other places, only expose the constants at API levels where
we're also exposing the functions (to cope with "poor man's configure"
where an author assumes the presence of the #define to imply the
availability of the function).

Bug: http://b/63145226
Test: builds
Change-Id: I524f7288513aa6c35479c550e748a619397929b0
2017-07-05 15:59:58 -07:00
Elliott Hughes
0af3e8febd Fix <dirent.h> d_ino/d_off types.
Bug: http://b/63336806
Test: builds
Change-Id: I781e7c66c41bcb772d49ce7c23aab185ddd5da1e
2017-07-05 12:34:29 -07:00
Elliott Hughes
1449974d27 Make inline tcsetattr definition match constants.
Before this change we have the old NDK inline termios functions with the
modern constants. Unfortunately the old NDK inline functions relied on
hacking the constants. Fix things by sharing the implementation between
the platform and the NDK headers.

Bug: https://github.com/android-ndk/ndk/issues/441
Test: ran tests
Change-Id: I2773634059530bc954167f29c4783413a2294d5a
2017-07-05 12:00:29 -07:00
Elliott Hughes
f45bc14d54 Merge "Work around missing _Exit in old API levels." 2017-07-01 15:48:58 +00:00
Elliott Hughes
8f5608b614 Fix ffs on x86 for old API levels.
<strings.h>'s ffs used to work by accident. In the past, <strings.h> used
to incorrectly declare ffs for all platforms at all API levels. In the
unified headers, there's no such declaration for x86 before API 18 (which
makes sense, because that function was missing on x86 until then).

But as long as there was a declaration for ffs, the compiler just inlined
__builtin_ffs. There was no problem at link time because the compiler didn't
actually add a reference to the missing ffs symbol.

Restore the old behavior by manually instructing the compiler to inline its
builtin in these cases.

Bug: https://github.com/android-ndk/ndk/issues/439
Test: built new NDK 'ffs' test
Change-Id: I840e99f237c86f7cb028a0f67aaa8c6ff3eda245
2017-06-30 17:50:44 -07:00
Elliott Hughes
79dd9889d1 Work around missing _Exit in old API levels.
Rather than do this in libandroid_support, we may as well just stick it with
the other historical stdlib workarounds in bionic itself...

Bug: N/A
Test: built new NDK test
Change-Id: Ia5cf4010581eb79d4adf924e87d0bc050b9e2839
2017-06-30 16:39:25 -07:00
Treehugger Robot
d09f3b67a3 Merge "Add version info for C++ versions of basename, strchrnul." 2017-06-30 22:33:27 +00:00
Josh Gao
16d9ba808b Add version info for C++ versions of basename, strchrnul.
These still won't get guards added by the preprocessor, because it
compiles with C-only.

Bug: https://github.com/android-ndk/ndk/issues/440
Test: treehugger
Change-Id: I893b345e528ed1b761e0db00700037411bbb8b78
2017-06-30 13:21:25 -07:00
Roozbeh Pournader
1378c8710d Merge "Revert "arm64: expand CFI shadow to cover 48-bit virtual addresses"" 2017-06-30 01:10:10 +00:00
Elliott Hughes
ea3df0c52b Revert "arm64: expand CFI shadow to cover 48-bit virtual addresses"
This reverts commit ae735163e5.

QA claims this causes:

  AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.media.MediaPlayer.setSurface(android.view.Surface)' on a null object reference
  AndroidRuntime:        at com.android.setupwizardlib....

Bug: http://b/63141434
Change-Id: I05a6849471623d4cde8b254b1020b0ccbd84b699
2017-06-29 23:48:43 +00:00
Treehugger Robot
e202036e03 Merge "bionic: fix assorted static analyzer warnings" 2017-06-29 16:27:52 +00:00
Elliott Hughes
03c379971e Merge "arm64: expand CFI shadow to cover 48-bit virtual addresses" 2017-06-29 15:23:32 +00:00
Treehugger Robot
fa21a80407 Merge "Put back more legacy pthread APIs." 2017-06-29 00:39:30 +00:00
George Burgess IV
705910094d bionic: fix assorted static analyzer warnings
Warnings:

bionic/libc/bionic/fts.c:722:5: warning: Null passed to a callee that
requires a non-null 1st parameter

bionic/libc/bionic/sched_cpualloc.c:34:25: warning: Result of 'malloc'
is converted to a pointer of type 'cpu_set_t', which is incompatible
with sizeof operand type 'unsigned long'

bionic/linker/linker_main.cpp:315:7: warning: Access to field 'e_type'
results in a dereference of a null pointer (loaded from variable
'elf_hdr')

bionic/linker/linker_main.cpp:493:66: warning: Access to field 'e_phoff'
results in a dereference of a null pointer (loaded from variable
'elf_hdr')

bionic/linker/linker_main.cpp:90:14: warning: Access to field 'next'
results in a dereference of a null pointer (loaded from variable 'prev')

Bug: None
Test: mma; analyzer warnings are gone. CtsBionicTestCases pass.
Change-Id: I699a60c2c6f64c50b9ea06848a680c98a8abb44a
2017-06-28 15:03:15 -07:00
Kevin Brodsky
ae735163e5 arm64: expand CFI shadow to cover 48-bit virtual addresses
Starting from Linux 4.7, arm64's defconfig enables 48-bit VAs, see:
https://git.kernel.org/torvalds/c/211102d8

On arm64, the CFI shadow configuration currently assumes that VAs
are 39-bit long, and as expected this results in a segfault on a
(defconfig) 4.7+ kernel, when linking a CFI-enabled library.

Consequently, this change increases the max target address to
account for the new max VA size.

Change-Id: I3fb808563fa77a457c65e9663da0613117332072
2017-06-28 14:42:05 +01:00
Treehugger Robot
291e895b37 Merge "Enable dlfcn.dt_runpath_absolute_path in glibc tests" 2017-06-27 19:46:30 +00:00