Compare commits

...

63 Commits

Author SHA1 Message Date
The Android Automerger
5308b48c87 merge in mnc-dr-ryu-release history after reset to mnc-dr-ryu-dev 2015-11-12 01:00:14 -08:00
Daniel Xie
1a5bfd9eaf Merge "Fix potential race condition on CTS TC pthread_gettid_np" into marshmallow-cts-dev am: 2010fb6722
am: eebe01b523

* commit 'eebe01b523075c0634b04463c210510f192f154d':
  Fix potential race condition on CTS TC pthread_gettid_np
2015-11-11 19:00:17 +00:00
Daniel Xie
eebe01b523 Merge "Fix potential race condition on CTS TC pthread_gettid_np" into marshmallow-cts-dev
am: 2010fb6722

* commit '2010fb6722ea2bd9d07c9f0a3e69eafa3d6114e9':
  Fix potential race condition on CTS TC pthread_gettid_np
2015-11-11 18:57:14 +00:00
Daniel Xie
2010fb6722 Merge "Fix potential race condition on CTS TC pthread_gettid_np" into marshmallow-cts-dev 2015-11-11 18:53:16 +00:00
Junjie Hu
4f80102935 Fix potential race condition on CTS TC pthread_gettid_np
Root cause:
If start_routine thread exits before pthread_gettid_np is invokded, the "tid" field
will be cleared so that pthread_gettid_np will get "0" (which is cleared by kernel, 
due to the flag "CLONE_CHILD_CLEARTID" is set while calling clone system call inside
pthread_create).

Proposed patch:
Use a mutex to guarantee pthread_gettid_np will be invoked and returned before the
start_routine exits

Signed-off-by: Junjie Hu <junjie.hu@mediatek.com>

Change-Id: I22411f1b0f7446d76a0373cef4ccec858fac7018
2015-11-11 04:54:52 +00:00
The Android Automerger
7cfba3b057 merge in mnc-dr-ryu-release history after reset to mnc-dr-dev 2015-10-25 01:00:18 -07:00
Andreas Gampe
807032d0e1 resolve merge conflicts of 216bff9ff3 to mnc-dr-dev.
Change-Id: I63c4f3a4e56f30d6f476ad2c623c23ee7e1a3778
2015-10-22 22:15:26 -07:00
Christopher Ferris
216bff9ff3 resolve merge conflicts of d676080a37 to lmp-mr1-ub-dev.
am: afff4442ae

* commit 'afff4442ae092469f298a71862d61c65ceb67b03':
  Sync with upstream NetBSD lib/libc/regex.
2015-10-22 22:27:54 +00:00
Christopher Ferris
afff4442ae resolve merge conflicts of d676080a37 to lmp-mr1-ub-dev.
Change-Id: I56c1bb2adb4b6a48733c928415e788e689b4944e
2015-10-21 14:56:52 -07:00
Elliott Hughes
d676080a37 Sync with upstream NetBSD lib/libc/regex.
am: 055a66c9b1

* commit '055a66c9b1017c01b82c12b65a571bf9efad8b19':
  Sync with upstream NetBSD lib/libc/regex.
2015-10-21 21:45:01 +00:00
Elliott Hughes
055a66c9b1 Sync with upstream NetBSD lib/libc/regex.
Bug: http://b/22850181
Change-Id: I11a51a2031e68a953ccd5691da98c699c7d01904

(cherry-picked from commit 71927a8237)
2015-10-19 10:42:31 -07:00
Elliott Hughes
43b1f823b5 am 1a61896b: am 98384649: am 75316283: am 2d23418e: am 18442e02: (-s ours) am beb6e08a: Sync with upstream NetBSD lib/libc/regex.
* commit '1a61896b1bc470f9377eeeafec461aba0d0dda6c':
  Sync with upstream NetBSD lib/libc/regex.
2015-10-19 17:32:59 +00:00
Elliott Hughes
1a61896b1b am 98384649: am 75316283: am 2d23418e: am 18442e02: (-s ours) am beb6e08a: Sync with upstream NetBSD lib/libc/regex.
* commit '98384649b2d3f3eb5b03077bc0004e14a99a4d55':
  Sync with upstream NetBSD lib/libc/regex.
2015-10-19 17:29:49 +00:00
Elliott Hughes
98384649b2 am 75316283: am 2d23418e: am 18442e02: (-s ours) am beb6e08a: Sync with upstream NetBSD lib/libc/regex.
* commit '753162836a0d3a82739611c9e30aa872363558b1':
  Sync with upstream NetBSD lib/libc/regex.
2015-10-19 17:25:29 +00:00
Elliott Hughes
753162836a am 2d23418e: am 18442e02: (-s ours) am beb6e08a: Sync with upstream NetBSD lib/libc/regex.
* commit '2d23418e68acdab7e142cc75db2850a54aa829aa':
  Sync with upstream NetBSD lib/libc/regex.
2015-10-19 10:14:41 -07:00
Elliott Hughes
2d23418e68 am 18442e02: (-s ours) am beb6e08a: Sync with upstream NetBSD lib/libc/regex.
* commit '18442e023536c5cf205b820ed5d74b972b710acb':
  Sync with upstream NetBSD lib/libc/regex.
2015-10-19 10:07:34 -07:00
Elliott Hughes
18442e0235 am beb6e08a: Sync with upstream NetBSD lib/libc/regex.
* commit 'beb6e08abf1393663151afde2742bb23eccab4e1':
  Sync with upstream NetBSD lib/libc/regex.
2015-10-19 15:34:19 +00:00
The Android Automerger
306ae636fd merge in mnc-dr-ryu-release history after reset to mnc-dr-dev 2015-10-19 06:43:02 -07:00
Elliott Hughes
beb6e08abf Sync with upstream NetBSD lib/libc/regex.
Bug: http://b/22850181
(cherry-picked from commit 71927a8237)

Change-Id: I11a51a2031e68a953ccd5691da98c699c7d01904
2015-10-16 17:52:55 -07:00
Neil Fuller
842866bd00 Merge "Update timezone data to 2015g" into mnc-dr-dev 2015-10-15 08:25:58 +00:00
The Android Automerger
ab900ef9d4 merge in mnc-dr-ryu-release history after reset to mnc-dr-dev 2015-10-15 01:00:23 -07:00
Dimitry Ivanov
95ac6dbbb2 Merge "Ensure that readlink has access to /proc/self/fd" into mnc-dr-dev 2015-10-15 01:17:55 +00:00
Christopher Ferris
3c30a15652 Merge "Sync with upstream NetBSD lib/libc/regex." into mnc-dr-dev 2015-10-15 01:15:22 +00:00
Elliott Hughes
9a9572d577 Sync with upstream NetBSD lib/libc/regex.
Bug: http://b/22850181

(cherry picked from commit 71927a8237)

Change-Id: I4a914f0594a66f38efb3026b7ba9d28a4887cb2d
2015-10-14 16:30:08 -07:00
Dmitriy Ivanov
cf92738fa5 Ensure that readlink has access to /proc/self/fd
/proc/self/fd is not available when PR_DUMPABLE is set to 0
which is default for the user builds. It leads to permission
denials on readlink.

This change fixes the problem by setting PR_DUMPABLE flag to 1
for readlink and restoring it's previous value after the call.

Bug: http://b/24912743
Change-Id: I3fd179c5c6b56af96d6a15ee597024ccb15e1a13
2015-10-14 11:15:45 -07:00
Neil Fuller
cd9278798a Update timezone data to 2015g
Changes affecting future time stamps

    Turkey's 2015 fall-back transition is scheduled for Nov. 8, not Oct. 25.
    (Thanks to Fatih.)

    Norfolk moves from +1130 to +1100 on 2015-10-04 at 02:00 local time.
    (Thanks to Alexander Krivenyshev.)

    Fiji's 2016 fall-back transition is scheduled for January 17, not 24.
    (Thanks to Ken Rylander.)

    Fort Nelson, British Columbia will not fall back on 2015-11-01. It has
    effectively been on MST (-0700) since it advanced its clocks on 2015-03-08.
    New zone America/Fort_Nelson.  (Thanks to Matt Johnson.)

  Changes affecting past time stamps

    Norfolk observed DST from 1974-10-27 02:00 to 1975-03-02 02:00.

Bug: 24595281
(cherry-picked from commit 31740bfdb9)

Change-Id: I6a57fbdaf12a4b4ebf2a760fd3bd872055621106
2015-10-14 08:54:17 +00:00
The Android Automerger
f2e4f3c1fa merge in mnc-dr-ryu-release history after reset to mnc-dr-dev 2015-10-14 01:00:28 -07:00
Dmitriy Ivanov
f32b689d3d Log dlopen failures caused by text relocations
Some apps will fail to load native libraries with
text relocations when switching target sdk version to M.
It could be hard to diagnose because some of them
suppress dlerror and/or UnsatisfiedLinkError.

This change unconditionally logs the error message making
the cause of the failure more visible to developers.

Bug: http://b/24876001
Change-Id: I0477a0d1307d0879000f3a3a43b974b4cf34bdb2
2015-10-13 11:13:19 -07:00
The Android Automerger
63265e59fa merge in mnc-dr-ryu-release history after reset to mnc-dr-dev 2015-10-13 01:00:24 -07:00
Torne (Richard Coles)
a828a2f8e6 linker: don't pass dlextinfo to dependent loads.
Don't pass the parent load's dlextinfo to dependent loads, since this
causes the linker to try to load the dependencies using the same
addresses/relro/fds/etc as the main library, which is never going to
work. This was how it worked before ae69a95 which broke this.

Bug: 23742664
Change-Id: I53d8cdf0982d8758e6d2ced4864c704cdf74118f
2015-10-08 12:28:39 -07:00
The Android Automerger
509940238d merge in mnc-dr-ryu-release history after reset to mnc-dr-dev 2015-09-30 01:00:22 -07:00
Christopher Ferris
4f3e3591ac am 93a91f0c: Force cts to only run one test at a time.
* commit '93a91f0cf4f015762ac1ed57395c4c0de8ba7db3':
  Force cts to only run one test at a time.
2015-09-29 15:11:45 +00:00
Christopher Ferris
93a91f0cf4 Force cts to only run one test at a time.
Also, slightly increase the timeout for each test run.

Bug: 24198050

(cherry picked from commit daaaed18ce)

Change-Id: I29e169e962da803a89abf0a28e071abcafa315b7
2015-09-25 15:33:20 -07:00
The Android Automerger
bad632a16a merge in mnc-dr-ryu-release history after reset to mnc-dr-dev 2015-09-23 21:29:19 -07:00
The Android Automerger
22af16f113 merge in mnc-dr-release history after reset to mnc-dr-dev 2015-08-26 01:01:31 -07:00
The Android Automerger
0aa018ccc0 merge in mnc-dr-release history after reset to mnc-dr-dev 2015-08-12 01:00:55 -07:00
The Android Automerger
b97c8b4024 merge in mnc-dr-release history after reset to mnc-dr-dev 2015-07-28 01:01:08 -07:00
The Android Automerger
2e8ac0b72c merge in mnc-dr-release history after reset to mnc-dr-dev 2015-07-25 01:01:52 -07:00
The Android Automerger
b6b6fcfa31 merge in mnc-dr-release history after reset to mnc-dr-dev 2015-07-23 01:00:43 -07:00
The Android Automerger
f117eb873b merge in mnc-dr-release history after reset to mnc-dr-dev 2015-07-22 01:01:18 -07:00
The Android Automerger
89fddb56ed merge in mnc-dr-release history after reset to mnc-dr-dev 2015-07-14 01:00:58 -07:00
The Android Automerger
b530200ef3 merge in mnc-dr-release history after reset to mnc-dr-dev 2015-07-11 01:00:59 -07:00
The Android Automerger
d5887751b2 merge in mnc-dr-release history after reset to mnc-dr-dev 2015-07-06 16:02:04 -07:00
The Android Automerger
2cddffe900 merge in mnc-release history after reset to mnc-dev 2015-06-18 01:00:43 -07:00
The Android Automerger
04363e4437 merge in mnc-release history after reset to mnc-dev 2015-06-17 01:00:50 -07:00
The Android Automerger
01c72f8c1c merge in mnc-release history after reset to mnc-dev 2015-06-16 01:00:37 -07:00
The Android Automerger
0e7aca1dff merge in mnc-release history after reset to mnc-dev 2015-06-15 11:57:26 -07:00
The Android Automerger
1a78032e30 merge in mnc-release history after reset to mnc-dev 2015-06-13 01:00:53 -07:00
The Android Automerger
64eb843f74 merge in mnc-release history after reset to mnc-dev 2015-06-11 01:00:38 -07:00
The Android Automerger
8b18a3c922 merge in mnc-release history after reset to mnc-dev 2015-06-09 01:00:42 -07:00
The Android Automerger
741df2881b merge in mnc-release history after reset to mnc-dev 2015-06-07 01:00:29 -07:00
The Android Automerger
9660d32e74 merge in mnc-release history after reset to mnc-dev 2015-06-06 01:01:01 -07:00
The Android Automerger
2ff7422771 merge in mnc-release history after reset to mnc-dev 2015-06-03 01:01:03 -07:00
The Android Automerger
3619d6b922 merge in mnc-release history after reset to mnc-dev 2015-06-02 01:00:48 -07:00
The Android Automerger
2783166c35 merge in mnc-release history after reset to mnc-dev 2015-05-30 01:01:05 -07:00
Dmitriy Ivanov
c3351ea94d Work around incorrect dt_needed entries
This applies for apps targeting sdk<=22 and
  only for lp32 platforms.

Bug: http://b/21364029
Change-Id: I903e81c9ccda2a8beaba1d132d68c77d30a4cdb2
(cherry picked from commit d974e88046)
2015-05-28 17:42:27 -07:00
The Android Automerger
730c0a475c merge in mnc-release history after reset to mnc-dev 2015-05-28 01:00:47 -07:00
The Android Automerger
c8e23a4c1a merge in mnc-release history after reset to mnc-dev 2015-05-23 01:00:56 -07:00
The Android Automerger
4d49212a5f merge in mnc-release history after reset to mnc-dev 2015-05-21 01:00:54 -07:00
The Android Automerger
aa3ef00a43 merge in mnc-release history after reset to mnc-dev 2015-05-19 01:01:19 -07:00
The Android Automerger
304307243f merge in mnc-release history after reset to mnc-dev 2015-05-17 01:00:23 -07:00
The Android Automerger
51d3926d8a merge in mnc-release history after reset to mnc-dev 2015-05-16 01:00:43 -07:00
John Reck
4cb434df9b Fix regression in crash reporting
Bug: 19532651

Partial revert of be0e43b776

Change-Id: I99e220328aff985facb920ebcd84ac1a016759b5
2015-05-15 15:12:36 -07:00
10 changed files with 165 additions and 57 deletions

View File

@@ -309,6 +309,7 @@ libc_upstream_netbsd_src_files := \
upstream-netbsd/lib/libc/stdlib/nrand48.c \
upstream-netbsd/lib/libc/stdlib/_rand48.c \
upstream-netbsd/lib/libc/stdlib/rand_r.c \
upstream-netbsd/lib/libc/stdlib/reallocarr.c \
upstream-netbsd/lib/libc/stdlib/seed48.c \
upstream-netbsd/lib/libc/stdlib/srand48.c \
upstream-netbsd/lib/libc/string/memccpy.c \

View File

@@ -31,4 +31,7 @@
#define __readlockenv() 0
#define __unlockenv() 0
#include <stddef.h>
__LIBC_HIDDEN__ int reallocarr(void*, size_t, size_t);
#endif

View File

@@ -1,4 +1,4 @@
/* $NetBSD: regcomp.c,v 1.33 2012/03/13 21:13:43 christos Exp $ */
/* $NetBSD: regcomp.c,v 1.36 2015/09/12 19:08:47 christos Exp $ */
/*-
* Copyright (c) 1992, 1993, 1994
@@ -76,7 +76,7 @@
#if 0
static char sccsid[] = "@(#)regcomp.c 8.5 (Berkeley) 3/20/94";
#else
__RCSID("$NetBSD: regcomp.c,v 1.33 2012/03/13 21:13:43 christos Exp $");
__RCSID("$NetBSD: regcomp.c,v 1.36 2015/09/12 19:08:47 christos Exp $");
#endif
#endif /* LIBC_SCCS and not lint */
@@ -262,12 +262,11 @@ regcomp(
len = strlen(pattern);
/* do the mallocs early so failure handling is easy */
g = (struct re_guts *)malloc(sizeof(struct re_guts) +
(NC-1)*sizeof(cat_t));
g = malloc(sizeof(struct re_guts) + (NC - 1) * sizeof(cat_t));
if (g == NULL)
return(REG_ESPACE);
p->ssize = len/(size_t)2*(size_t)3 + (size_t)1; /* ugh */
p->strip = malloc(p->ssize * sizeof(sop));
p->strip = calloc(p->ssize, sizeof(sop));
p->slen = 0;
if (p->strip == NULL) {
free(g);
@@ -1075,19 +1074,19 @@ ordinary(
int ch)
{
cat_t *cap;
unsigned char uc = (unsigned char)ch;
_DIAGASSERT(p != NULL);
cap = p->g->categories;
if ((p->g->cflags&REG_ICASE) && isalpha((unsigned char) ch)
&& othercase((unsigned char) ch) != (unsigned char) ch)
bothcases(p, (unsigned char) ch);
if ((p->g->cflags & REG_ICASE) && isalpha(uc) && othercase(uc) != uc)
bothcases(p, uc);
else {
EMIT(OCHAR, (sopno)(unsigned char)ch);
if (cap[ch] == 0) {
EMIT(OCHAR, (sopno)uc);
if (cap[uc] == 0) {
_DIAGASSERT(__type_fit(unsigned char,
p->g->ncategories + 1));
cap[ch] = (unsigned char)p->g->ncategories++;
cap[uc] = (unsigned char)p->g->ncategories++;
}
}
}
@@ -1236,6 +1235,7 @@ allocset(
cset *cs;
size_t css;
size_t i;
void *old_ptr;
_DIAGASSERT(p != NULL);
@@ -1248,28 +1248,18 @@ allocset(
nbytes = nc / CHAR_BIT * css;
if (MEMSIZE(p) > MEMLIMIT)
goto oomem;
if (p->g->sets == NULL)
p->g->sets = malloc(nc * sizeof(cset));
else
p->g->sets = realloc(p->g->sets, nc * sizeof(cset));
if (p->g->setbits == NULL)
p->g->setbits = malloc(nbytes);
else {
p->g->setbits = realloc(p->g->setbits, nbytes);
/* xxx this isn't right if setbits is now NULL */
if (reallocarr(&p->g->sets, nc, sizeof(cset)))
goto oomem;
old_ptr = p->g->setbits;
if (reallocarr(&p->g->setbits, nc / CHAR_BIT, css)) {
free(old_ptr);
goto oomem;
}
if (old_ptr != p->g->setbits) {
for (i = 0; i < no; i++)
p->g->sets[i].ptr = p->g->setbits + css*(i/CHAR_BIT);
}
if (p->g->sets != NULL && p->g->setbits != NULL)
(void) memset((char *)p->g->setbits + (nbytes - css),
0, css);
else {
oomem:
no = 0;
SETERROR(REG_ESPACE);
/* caller's responsibility not to do set ops */
return NULL;
}
(void) memset((char *)p->g->setbits + (nbytes - css), 0, css);
}
cs = &p->g->sets[no];
@@ -1280,6 +1270,11 @@ oomem:
cs->multis = NULL;
return(cs);
oomem:
SETERROR(REG_ESPACE);
/* caller's responsibility not to do set ops */
return NULL;
}
/*
@@ -1763,30 +1758,18 @@ dofwd(
== static void enlarge(struct parse *p, sopno size);
*/
static int
enlarge(
struct parse *p,
sopno size)
enlarge(struct parse *p, sopno size)
{
sop *sp;
sopno osize;
_DIAGASSERT(p != NULL);
if (p->ssize >= size)
return 1;
osize = p->ssize;
p->ssize = size;
if (MEMSIZE(p) > MEMLIMIT)
goto oomem;
sp = realloc(p->strip, p->ssize * sizeof(sop));
if (sp == NULL) {
oomem:
p->ssize = osize;
if (MEMSIZE(p) > MEMLIMIT || reallocarr(&p->strip, size, sizeof(sop))) {
SETERROR(REG_ESPACE);
return 0;
}
p->strip = sp;
p->ssize = size;
return 1;
}
@@ -1804,11 +1787,9 @@ stripsnug(
_DIAGASSERT(g != NULL);
g->nstates = p->slen;
g->strip = realloc(p->strip, p->slen * sizeof(sop));
if (g->strip == NULL) {
SETERROR(REG_ESPACE);
g->strip = p->strip;
}
g->strip = p->strip;
reallocarr(&g->strip, p->slen, sizeof(sop));
/* Ignore error as tries to free memory only. */
}
/*

View File

@@ -0,0 +1,95 @@
/* $NetBSD: reallocarr.c,v 1.5 2015/08/20 22:27:49 kamil Exp $ */
/*-
* Copyright (c) 2015 Joerg Sonnenberger <joerg@NetBSD.org>.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#if HAVE_NBTOOL_CONFIG_H
#include "nbtool_config.h"
#endif
#include <sys/cdefs.h>
__RCSID("$NetBSD: reallocarr.c,v 1.5 2015/08/20 22:27:49 kamil Exp $");
#include "namespace.h"
#include <errno.h>
/* Old POSIX has SIZE_MAX in limits.h */
#include <limits.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#ifdef _LIBC
#ifdef __weak_alias
__weak_alias(reallocarr, _reallocarr)
#endif
#endif
#define SQRT_SIZE_MAX (((size_t)1) << (sizeof(size_t) * CHAR_BIT / 2))
#if !HAVE_REALLOCARR
int
reallocarr(void *ptr, size_t number, size_t size)
{
int saved_errno, result;
void *optr;
void *nptr;
saved_errno = errno;
memcpy(&optr, ptr, sizeof(ptr));
if (number == 0 || size == 0) {
free(optr);
nptr = NULL;
memcpy(ptr, &nptr, sizeof(ptr));
errno = saved_errno;
return 0;
}
/*
* Try to avoid division here.
*
* It isn't possible to overflow during multiplication if neither
* operand uses any of the most significant half of the bits.
*/
if (__predict_false((number|size) >= SQRT_SIZE_MAX &&
number > SIZE_MAX / size)) {
errno = saved_errno;
return EOVERFLOW;
}
nptr = realloc(optr, number * size);
if (__predict_false(nptr == NULL)) {
result = errno;
} else {
result = 0;
memcpy(ptr, &nptr, sizeof(ptr));
}
errno = saved_errno;
return result;
}
#endif

Binary file not shown.

View File

@@ -37,6 +37,7 @@
#include <string.h>
#include <sys/mman.h>
#include <sys/param.h>
#include <sys/prctl.h>
#include <unistd.h>
#include <new>
@@ -317,6 +318,13 @@ static void parse_LD_PRELOAD(const char* path) {
static bool realpath_fd(int fd, std::string* realpath) {
std::vector<char> buf(PATH_MAX), proc_self_fd(PATH_MAX);
snprintf(&proc_self_fd[0], proc_self_fd.size(), "/proc/self/fd/%d", fd);
// set DUMPABLE to 1 to access /proc/self/fd
int dumpable = prctl(PR_GET_DUMPABLE, 0, 0, 0, 0);
prctl(PR_SET_DUMPABLE, 1, 0, 0, 0);
auto guard = make_scope_guard([&]() {
// restore dumpable
prctl(PR_SET_DUMPABLE, dumpable, 0, 0, 0);
});
if (readlink(&proc_self_fd[0], &buf[0], buf.size()) == -1) {
PRINT("readlink('%s') failed: %s [fd=%d]", &proc_self_fd[0], strerror(errno), fd);
return false;
@@ -1468,13 +1476,14 @@ static bool find_libraries(soinfo* start_with, const char* const library_names[]
// Step 1: load and pre-link all DT_NEEDED libraries in breadth first order.
for (LoadTask::unique_ptr task(load_tasks.pop_front());
task.get() != nullptr; task.reset(load_tasks.pop_front())) {
soinfo* si = find_library_internal(load_tasks, task->get_name(), rtld_flags, extinfo);
soinfo* needed_by = task->get_needed_by();
soinfo* si = find_library_internal(load_tasks, task->get_name(),
rtld_flags, needed_by == nullptr ? extinfo : nullptr);
if (si == nullptr) {
return false;
}
soinfo* needed_by = task->get_needed_by();
if (needed_by != nullptr) {
needed_by->add_child(si);
}
@@ -2936,6 +2945,7 @@ bool soinfo::link_image(const soinfo_list_t& global_group, const soinfo_list_t&
// TODO (dimitry): remove != __ANDROID_API__ check once http://b/20020312 is fixed
if (get_application_target_sdk_version() != __ANDROID_API__
&& get_application_target_sdk_version() > 22) {
PRINT("%s: has text relocations", get_realpath());
DL_ERR("%s: has text relocations", get_realpath());
return false;
}

View File

@@ -241,7 +241,12 @@ libBionicCtsGtestMain_src_files := gtest_main.cpp
libBionicCtsGtestMain_cflags := $(test_cflags)
libBionicCtsGtestMain_cppflags := $(test_cppflags) -DUSING_GTEST_OUTPUT_FORMAT
libBionicCtsGtestMain_cppflags := $(test_cppflags) -DUSING_GTEST_OUTPUT_FORMAT \
# Temporarily fix the job count to 1 for CTS since on some devices the
# number of online cores is incorrectly read as the total number of cores
# in the system. When b/24376925 is fixed, this should be removed.
libBionicCtsGtestMain_cppflags += -DJOB_COUNT_FIXED=1
module := libBionicCtsGtestMain
module_tag := optional

View File

@@ -59,7 +59,7 @@ using testing::internal::COLOR_GREEN;
using testing::internal::COLOR_YELLOW;
using testing::internal::ColoredPrintf;
constexpr int DEFAULT_GLOBAL_TEST_RUN_DEADLINE_MS = 60000;
constexpr int DEFAULT_GLOBAL_TEST_RUN_DEADLINE_MS = 90000;
constexpr int DEFAULT_GLOBAL_TEST_RUN_WARNLINE_MS = 2000;
// The time each test can run before killed for the reason of timeout.
@@ -839,8 +839,12 @@ static bool RunTestInSeparateProc(int argc, char** argv, std::vector<TestCase>&
return all_tests_passed;
}
static size_t GetProcessorCount() {
static size_t GetDefaultJobCount() {
#if defined(JOB_COUNT_FIXED)
return JOB_COUNT_FIXED;
#else
return static_cast<size_t>(sysconf(_SC_NPROCESSORS_ONLN));
#endif
}
static void AddPathSeparatorInTestProgramPath(std::vector<char*>& args) {
@@ -950,7 +954,7 @@ static bool PickOptions(std::vector<char*>& args, IsolationTestOptions& options)
}
// Init default isolation test options.
options.job_count = GetProcessorCount();
options.job_count = GetDefaultJobCount();
options.test_deadline_ms = DEFAULT_GLOBAL_TEST_RUN_DEADLINE_MS;
options.test_warnline_ms = DEFAULT_GLOBAL_TEST_RUN_WARNLINE_MS;
options.gtest_color = testing::GTEST_FLAG(color);

View File

@@ -67,6 +67,8 @@ libdlext_test_src_files := \
libdlext_test_ldflags := \
-Wl,-z,relro \
libdlext_test_shared_libraries := libtest_simple
module := libdlext_test
module_tag := optional
include $(LOCAL_PATH)/Android.build.testlib.mk

7
tests/pthread_test.cpp Normal file → Executable file
View File

@@ -1245,8 +1245,11 @@ TEST(pthread, pthread_attr_getstack_18908062) {
}
#if defined(__BIONIC__)
static pthread_mutex_t gettid_mutex;
static void* pthread_gettid_np_helper(void* arg) {
pthread_mutex_lock(&gettid_mutex);
*reinterpret_cast<pid_t*>(arg) = gettid();
pthread_mutex_unlock(&gettid_mutex);
return NULL;
}
#endif
@@ -1257,11 +1260,15 @@ TEST(pthread, pthread_gettid_np) {
pid_t t_gettid_result;
pthread_t t;
pthread_mutex_init(&gettid_mutex, NULL);
pthread_mutex_lock(&gettid_mutex);
pthread_create(&t, NULL, pthread_gettid_np_helper, &t_gettid_result);
pid_t t_pthread_gettid_np_result = pthread_gettid_np(t);
pthread_mutex_unlock(&gettid_mutex);
pthread_join(t, NULL);
pthread_mutex_destroy(&gettid_mutex);
ASSERT_EQ(t_gettid_result, t_pthread_gettid_np_result);
#else