OSDN Git Service
Yabin Cui [Tue, 2 Dec 2014 19:45:47 +0000 (19:45 +0000)]
Merge "Use mmap to create the pthread_internal_t."
Dmitriy Ivanov [Tue, 2 Dec 2014 19:10:03 +0000 (19:10 +0000)]
Merge "Count references for groups instead of instances"
Dmitriy Ivanov [Sat, 29 Nov 2014 21:57:41 +0000 (13:57 -0800)]
Count references for groups instead of instances
Count references on the group level to avoid
partially unloading function that might be
referenced by other libraries in the local_group
Bonus: with this change we can correctly unload recursively
linked libraries. is_recursive check is removed.
Also dynamic executables (not .so) with 0 DT_NEEDED libraries
are now correctly linked.
Change-Id: Idfa83baef402840599b93a875f2881d9f020dbcd
Yabin Cui [Tue, 2 Dec 2014 06:37:56 +0000 (22:37 -0800)]
Use mmap to create the pthread_internal_t.
Bug:
16847284
Change-Id: I488fa236f57aa3acb29b4ffbbab2fab51b0653be
Yabin Cui [Tue, 2 Dec 2014 18:37:28 +0000 (18:37 +0000)]
Merge "restore sigprocmask in setjmp/longjmp test."
Yabin Cui [Tue, 2 Dec 2014 17:57:45 +0000 (09:57 -0800)]
restore sigprocmask in setjmp/longjmp test.
Bug:
18571921
Change-Id: Ib8ca7a36abd3ccc729c20c0e32d45b1b33069f65
Dmitriy Ivanov [Tue, 2 Dec 2014 17:37:17 +0000 (17:37 +0000)]
Merge "Resolve "unused DT entry" warnings for DT_VERNEED and DT_VERNEEDNUM."
Alexander Ivchenko [Tue, 2 Dec 2014 12:32:25 +0000 (15:32 +0300)]
Resolve "unused DT entry" warnings for DT_VERNEED and DT_VERNEEDNUM.
Change-Id: Id18310811a6d183878a1d4d26cc2498f4fd00c55
Signed-off-by: Alexander Ivchenko <alexander.ivchenko@intel.com>
Christopher Ferris [Tue, 2 Dec 2014 02:29:51 +0000 (02:29 +0000)]
Merge "Specify .cpu cortex-a15"
Elliott Hughes [Tue, 2 Dec 2014 00:57:44 +0000 (00:57 +0000)]
Merge "Build our benchmarks against glibc too."
Elliott Hughes [Tue, 2 Dec 2014 00:43:51 +0000 (16:43 -0800)]
Build our benchmarks against glibc too.
Bug:
18556607
Change-Id: I455ac8b93c0835836180e549486bc52d393ee6a6
Elliott Hughes [Mon, 1 Dec 2014 21:43:31 +0000 (21:43 +0000)]
Merge "Benchmark fread/fwrite both buffered and unbuffered."
Elliott Hughes [Mon, 1 Dec 2014 21:40:24 +0000 (21:40 +0000)]
Merge "Fix running the bionic benchmarks on the host."
Elliott Hughes [Mon, 1 Dec 2014 21:12:18 +0000 (13:12 -0800)]
Benchmark fread/fwrite both buffered and unbuffered.
Bug:
18556607
Change-Id: I53905aedcea75fe550d9c423fb701c2c9bf8e831
Elliott Hughes [Mon, 1 Dec 2014 21:11:38 +0000 (13:11 -0800)]
Fix running the bionic benchmarks on the host.
Bug:
18556607
Change-Id: I4e75bfcde788b43e1926be1b0146acf09b496390
Yabin Cui [Mon, 1 Dec 2014 17:06:01 +0000 (17:06 +0000)]
Merge "support _POSIX_CPUTIME"
David 'Digit' Turner [Mon, 1 Dec 2014 16:50:04 +0000 (16:50 +0000)]
Merge "libc: Fix headers to allow direct inclusion."
David 'Digit' Turner [Tue, 18 Nov 2014 11:21:55 +0000 (12:21 +0100)]
libc: Fix headers to allow direct inclusion.
These headers are missing a few #includes to allow their direct
inclusion from C
http://b.android.com/79841
Change-Id: Ifc712c17f4da70b26adb67d4d49ed659f53c3621
Bernhard Rosenkränzer [Sun, 30 Nov 2014 21:17:30 +0000 (22:17 +0100)]
Specify .cpu cortex-a15
When building with clang without this change, as errors out saying pldw
is an unsupported instruction (because it isn't part of the ARMv7 core
instruction set).
Let as know using pldw is fine.
Change-Id: Ie1f9c4b873e93ab2b3b374d2d46e476a4e581710
Signed-off-by: Bernhard Rosenkränzer <Bernhard.Rosenkranzer@linaro.org>
Elliott Hughes [Thu, 27 Nov 2014 19:05:13 +0000 (19:05 +0000)]
Merge "Add error-check when mapping socket to fd"
Robert Alm [Tue, 25 Nov 2014 12:28:11 +0000 (13:28 +0100)]
Add error-check when mapping socket to fd
The call to fdopen can fail in several ways.
The fprintf on the next line will then dereference a
NULL-pointer FILE*.
Added a NULL-check, closed the socket, returned system error
and added a comment about it.
Change-Id: I7a6b26aa3c79452b1fdd76af12dfa75da88cbad7
Elliott Hughes [Thu, 27 Nov 2014 17:20:49 +0000 (17:20 +0000)]
Merge "Move a private x86-64 header file out of the limelight."
Elliott Hughes [Thu, 27 Nov 2014 03:31:19 +0000 (19:31 -0800)]
Move a private x86-64 header file out of the limelight.
Currently this is on everyone's include path and is getting exported
via the NDK.
Change-Id: Ia417839fb65c7e0afddcd9fae3438665dae8e752
Elliott Hughes [Thu, 27 Nov 2014 02:28:49 +0000 (02:28 +0000)]
Merge "[MIPS] Rewrite of setjmp/longjmp for mips64 and mipsr6"
Elliott Hughes [Thu, 27 Nov 2014 01:33:08 +0000 (01:33 +0000)]
Merge "bionic tests: add setjmp/_setjmp/sigsetjmp tests."
Yongqin Liu [Fri, 31 Oct 2014 08:37:09 +0000 (16:37 +0800)]
bionic tests: add setjmp/_setjmp/sigsetjmp tests.
Bug:
17288973
Change-Id: I2808eee58cbddae1b16fbe19a715b72d6dbaaec3
Signed-off-by: Yongqin Liu <yongqin.liu@linaro.org>
Yabin Cui [Wed, 26 Nov 2014 22:04:26 +0000 (14:04 -0800)]
support _POSIX_CPUTIME
Bug:
18490039
Change-Id: I01fa83b48e1b908de1f227b6e4f98e280bcd50ee
Nicolas Geoffray [Wed, 26 Nov 2014 11:57:46 +0000 (11:57 +0000)]
Merge "Revert "Use mmap to create the pthread_internal_t.""
Nicolas Geoffray [Wed, 26 Nov 2014 11:53:44 +0000 (11:53 +0000)]
Revert "Use mmap to create the pthread_internal_t."
Unfortunately, this change provokes random crashes for ART, and
I have seen libc crashes on the device that might be related to it.
Reverting it fixes the ART crashes. there is unfortunately no
stack trace for the crashes, but just a "Segmentation fault" message.
This reverts commit
cc5f6543e3f91385b9a912438965b7e8265df54a.
Change-Id: I68dca8e1e9b9edcce7eb84596e8db619e40e8052
Duane Sand [Wed, 26 Nov 2014 01:33:10 +0000 (17:33 -0800)]
[MIPS] Rewrite of setjmp/longjmp for mips64 and mipsr6
Change-Id: Idcd13413520dd503bc9cf782553675313e500a83
Yabin Cui [Tue, 25 Nov 2014 23:53:43 +0000 (23:53 +0000)]
Merge "Use mmap to create the pthread_internal_t."
Yabin Cui [Tue, 25 Nov 2014 22:18:12 +0000 (14:18 -0800)]
Use mmap to create the pthread_internal_t.
Bug:
16847284
Change-Id: Ic8c85f95afac1d8422ecb69674c688d1fecb6a44
Yabin Cui [Mon, 24 Nov 2014 01:59:22 +0000 (01:59 +0000)]
Merge "flesh out sysconf(3) and the _POSIX_* constants"
Elliott Hughes [Sun, 23 Nov 2014 18:06:28 +0000 (18:06 +0000)]
Merge "Sync with upstream OpenBSD fts.c."
Dan Albert [Sat, 22 Nov 2014 22:38:50 +0000 (22:38 +0000)]
Merge "Move some pthread functions to signal.h."
Elliott Hughes [Sat, 22 Nov 2014 03:25:27 +0000 (19:25 -0800)]
Sync with upstream OpenBSD fts.c.
Change-Id: Ia7e26b603f6461095b5a8d7e8a6cdf4f8279fa84
Yabin Cui [Thu, 20 Nov 2014 03:49:14 +0000 (19:49 -0800)]
flesh out sysconf(3) and the _POSIX_* constants
Bug:
17571891
Change-Id: I81036615486bde65969ae5662587fcc88348474e
Elliott Hughes [Sat, 22 Nov 2014 02:41:44 +0000 (02:41 +0000)]
Merge "Bring our <machine/endian.h> files back in sync."
Elliott Hughes [Sat, 22 Nov 2014 02:34:36 +0000 (18:34 -0800)]
Bring our <machine/endian.h> files back in sync.
They'd drifted slightly which led to a compilation error in toybox,
which was assuming pid_t was defined. arm and arm64 were picking it
up via <endian.h> but x86 wasn't.
Change-Id: I58401e6c0066959dfc3b305b020876aaf7074bbf
Dmitriy Ivanov [Fri, 21 Nov 2014 22:59:06 +0000 (22:59 +0000)]
Merge "Mips: remove arch-specific atexit.h"
Dmitriy Ivanov [Fri, 21 Nov 2014 22:42:53 +0000 (14:42 -0800)]
Mips: remove arch-specific atexit.h
Change-Id: I687ff4ead6c5e81db44782bf851cb84f87bfe085
Dmitriy Ivanov [Fri, 21 Nov 2014 22:38:47 +0000 (22:38 +0000)]
Merge "Mips: Remove unused files"
Dmitriy Ivanov [Fri, 21 Nov 2014 22:29:43 +0000 (14:29 -0800)]
Mips: Remove unused files
Change-Id: If98b832ee32f6dcd9f5d7ae21c601c210adfad6b
Dmitriy Ivanov [Fri, 21 Nov 2014 21:17:18 +0000 (21:17 +0000)]
Merge "Mips: Reuse atexit.h from libc/arch-common"
Dmitriy Ivanov [Fri, 21 Nov 2014 21:07:36 +0000 (13:07 -0800)]
Mips: Reuse atexit.h from libc/arch-common
Change-Id: Ica1670e6d3d1b6b0c64df93720efa65586e67727
Dan Albert [Fri, 21 Nov 2014 20:15:55 +0000 (20:15 +0000)]
Merge "Revert "<sched.h> should offer both __sched_priority and sched_priority.""
Dan Albert [Fri, 21 Nov 2014 08:18:07 +0000 (00:18 -0800)]
Move some pthread functions to signal.h.
POSIX specifies that pthread_kill(3) and pthread_sigmask(3) are
supposed to live in signal.h rather than pthread.h.
Since signal.h now needs pthread_t and pthread_attr_t, I've moved
those defintions into include/machine/pthread_types.h to keep the
namespace clean. I also sorted some includes. The combination of these
two things seems to have exploded into a cascade of missing includes,
so this patch also cleans up all those.
Change-Id: Icfa92a39432fe83f542a797e5a113289d7e4ad0c
Dan Albert [Fri, 21 Nov 2014 18:22:09 +0000 (10:22 -0800)]
Revert "<sched.h> should offer both __sched_priority and sched_priority."
This was only ever added to keep strace compiling, but strace has
since (actually, prior) fixed their source to use the less ugly name,
so we don't need this anymore (good riddance, #define!).
This reverts commit
bbb34f9536db8234b0b43bd5333256fa4accc50e.
Dmitriy Ivanov [Fri, 21 Nov 2014 16:02:42 +0000 (16:02 +0000)]
Merge "Rename test_forked -> test_isolated"
Dmitriy Ivanov [Fri, 21 Nov 2014 05:21:26 +0000 (21:21 -0800)]
Rename test_forked -> test_isolated
Change-Id: Ie72627e986c159832cbd3635d8ff5b1af3d5b1eb
Dmitriy Ivanov [Fri, 21 Nov 2014 01:21:15 +0000 (01:21 +0000)]
Merge "Add test_forked() option"
Dmitriy Ivanov [Fri, 21 Nov 2014 00:53:47 +0000 (16:53 -0800)]
Add test_forked() option
Executing test via test_forked() allows us to
avoid undesired global state changes in tests like
atexit, dlopen(.., RTLD_NODELETE) and similar.
Change-Id: I118cdf009269ab5dd7b117c9b61dafa47de2a011
Elliott Hughes [Thu, 20 Nov 2014 00:09:32 +0000 (00:09 +0000)]
Merge "Make the ftw(3) tests a bit more thorough."
Elliott Hughes [Wed, 19 Nov 2014 23:48:19 +0000 (23:48 +0000)]
Merge "Fix flockfile(3) and friends for stdin/stdout/stderr too."
Elliott Hughes [Tue, 18 Nov 2014 23:57:23 +0000 (15:57 -0800)]
Make the ftw(3) tests a bit more thorough.
These also test much of fts(3).
Change-Id: Ia9245d6acbbd071191563ab1b91a400044104028
Elliott Hughes [Wed, 19 Nov 2014 23:16:51 +0000 (15:16 -0800)]
Fix flockfile(3) and friends for stdin/stdout/stderr too.
stdin/stdout/stderr are special; their mutexes are initialized by
__sinit. There's no unit test for this, because __sinit has already
been called by the time the first unit test runs, but you could
reproduce this failure with a trivial main() that calls flockfile
or ftrylockfile on one of the standard streams before otherwise
using stdio.
Bug:
18208568
Change-Id: I28d232cf05a9f198a2bed61854d8047b23d2091d
Dmitriy Ivanov [Wed, 19 Nov 2014 19:35:59 +0000 (19:35 +0000)]
Merge "Yet another relocation test"
Dmitriy Ivanov [Wed, 19 Nov 2014 01:26:31 +0000 (17:26 -0800)]
Yet another relocation test
This time we check if a -> b -> c function in 'a' relocates against
implementation in 'c'.
Change-Id: I528180c3efd346bd447ea0237e5a8a0ac3cc031f
David 'Digit' Turner [Wed, 19 Nov 2014 14:49:51 +0000 (14:49 +0000)]
Merge "libc: Move <sgidefs.h> to libc/arch-mips/"
Yabin Cui [Wed, 19 Nov 2014 04:25:24 +0000 (04:25 +0000)]
Merge "fix shared gid support in getpwnam/getgrnam"
Yabin Cui [Wed, 19 Nov 2014 00:14:54 +0000 (16:14 -0800)]
fix shared gid support in getpwnam/getgrnam
Bug:
18374693
Change-Id: I5353403cbbead6f6abac87bee2cf53a60dba408c
Dmitriy Ivanov [Tue, 18 Nov 2014 21:25:37 +0000 (21:25 +0000)]
Merge "Fix jump to unmapped memory on atexit"
Dmitriy Ivanov [Tue, 18 Nov 2014 20:03:09 +0000 (12:03 -0800)]
Fix jump to unmapped memory on atexit
Split d-tor calls and soinfo_free to 2 separate steps
Bug:
18338888
Change-Id: Idbcb7242ade16fa18cba7fe30505ebd8d6023622
David 'Digit' Turner [Tue, 18 Nov 2014 19:13:10 +0000 (20:13 +0100)]
libc: Move <sgidefs.h> to libc/arch-mips/
This is a MIPS-only header, and should not be part of the common
headers. See http://b.android.com/79841 for context.
Change-Id: I610bc3ff626b57e7854dad15a4a2f67e1e5ded75
Elliott Hughes [Mon, 17 Nov 2014 23:14:57 +0000 (23:14 +0000)]
Merge "libc: Fix mktime returns an uncorrect time in empty TZ case"
Dmitriy Ivanov [Mon, 17 Nov 2014 18:43:31 +0000 (18:43 +0000)]
Merge "bionic/test: migrate sysconf tests from system/extras to bionic/tests"
Elliott Hughes [Mon, 17 Nov 2014 18:26:45 +0000 (18:26 +0000)]
Merge "Add getaddrinfo(3) tests for NULL arguments."
Elliott Hughes [Mon, 17 Nov 2014 18:24:22 +0000 (18:24 +0000)]
Merge "Remove remaining bionic support for TARGET_CPU_SMP being false."
Elliott Hughes [Mon, 17 Nov 2014 18:06:20 +0000 (10:06 -0800)]
Remove remaining bionic support for TARGET_CPU_SMP being false.
Change-Id: I02a0a1c0ae55ccb5c45d17fb99a09c374d71def4
Elliott Hughes [Sun, 16 Nov 2014 18:14:54 +0000 (10:14 -0800)]
Add getaddrinfo(3) tests for NULL arguments.
According to https://github.com/ukanth/afwall/pull/213 some OEMs have
shipped a getaddrinfo(3) that crashes given NULL hostnames.
Change-Id: I9cea5fdd68546b7c64cf47e10e2b2b4d672b69d0
Dan Albert [Sat, 15 Nov 2014 06:47:07 +0000 (06:47 +0000)]
Merge "Allow asan for glibc tests."
Dan Albert [Sat, 15 Nov 2014 03:58:26 +0000 (19:58 -0800)]
Allow asan for glibc tests.
SANITIZE_HOST will break if we don't allow ASAN.
Change-Id: I0beed82b058db391f633e0ea1098f140497c65d4
Satoru Takeuchi [Tue, 27 May 2014 08:04:04 +0000 (17:04 +0900)]
libc: Fix mktime returns an uncorrect time in empty TZ case
The mktime API returned an uncorrect time when TZ is set as empty.
A timezone UTC/GMT+0 should be implied in the empty case. However
mktime keeps previous information about timezone. If mktime was called
with a timezone which has DST before, the "defaulttype" member of
"state" structure wouldn't be 0. Then it would be used next time,
even though UTC/GMT+0 doesn't have DST.
Added initialization of the "defaulttype" in the empty TZ case.
Change-Id: Ic480c63c548c05444134e0aefb30a7b380e3f40b
Derek Xue [Thu, 25 Sep 2014 09:55:34 +0000 (10:55 +0100)]
bionic/test: migrate sysconf tests from system/extras to bionic/tests
The old test are implemented in file:
system/extras/tests/bionic/libc/other/test_sysconf.c
This change is to migrate them to bionic/tests with the gtest format.
and since the sysconf is defined in unistd.h, will put the test under
bionic/tests/unistd_test.cpp file as unistd.syscon test
Change-Id: Ie519147c1c86a6c4cefa8c88b18bf58bdfbffbdb
Signed-off-by: Yongqin Liu <yongqin.liu@linaro.org>
Yabin Cui [Sat, 15 Nov 2014 00:53:37 +0000 (00:53 +0000)]
Merge "Add functions in sysinfo.h."
Yabin Cui [Fri, 14 Nov 2014 23:51:58 +0000 (15:51 -0800)]
Add functions in sysinfo.h.
Bug:
17703902
Change-Id: I699d12d76a8fc483c919be730c2ac63641b71a1d
Yabin Cui [Fri, 14 Nov 2014 23:45:44 +0000 (23:45 +0000)]
Merge "Increase support of pathconf options."
Yabin Cui [Sat, 8 Nov 2014 22:58:12 +0000 (14:58 -0800)]
Increase support of pathconf options.
Bug:
18206366
Change-Id: Ie770e49f5af3631eb9fbd2cd5174edf004c81e00
Elliott Hughes [Fri, 14 Nov 2014 23:33:20 +0000 (23:33 +0000)]
Merge "sysconf(3) returns long."
Elliott Hughes [Fri, 14 Nov 2014 23:14:44 +0000 (15:14 -0800)]
sysconf(3) returns long.
On LP32, this makes no difference. Not an ABI change.
On LP64, results are going to be in %rax or x0 whether they're 32- or 64-bit,
and the only difference is going to be whether the top bits are clobbered.
Bug:
18390956
Change-Id: I0bd4496231bdded34c1fa03e895021ac0df7f8e1
Elliott Hughes [Fri, 14 Nov 2014 22:52:08 +0000 (22:52 +0000)]
Merge "Add non-macro stdin/stdout/stderr too."
Elliott Hughes [Fri, 14 Nov 2014 22:42:59 +0000 (14:42 -0800)]
Add non-macro stdin/stdout/stderr too.
Various C and C++ standards explicitly say that stdin/stdout/stderr
should be macros, but glibc makes them global variables too. This
means it's possible to write code that uses those names as locals,
but that code (toybox being an example) won't build on bionic.
If we'd done this earlier, we could have hidden __sF for LP64, but
it's too late now.
Change-Id: I90cf8c73f52b66e1760b8fa2e135b9f9f9651230
Dmitriy Ivanov [Fri, 14 Nov 2014 20:19:37 +0000 (20:19 +0000)]
Merge "Fix host build for arm/arm64"
Dmitriy Ivanov [Fri, 14 Nov 2014 20:17:06 +0000 (12:17 -0800)]
Fix host build for arm/arm64
Change-Id: Id92543e4080aede205b3e63099fa2baa36ba21f0
Dmitriy Ivanov [Fri, 14 Nov 2014 19:31:32 +0000 (19:31 +0000)]
Merge "Add test for --hash-style=sysv"
Dmitriy Ivanov [Fri, 14 Nov 2014 19:19:22 +0000 (11:19 -0800)]
Add test for --hash-style=sysv
With build system switched to gnu-hash we need
a test for sysv-hashed library.
Change-Id: I34adc216fa79199aa46066cf13fcc1c1f2581f0e
Dmitriy Ivanov [Fri, 14 Nov 2014 16:33:16 +0000 (16:33 +0000)]
Merge "Rename soinfo methods and fields"
Dmitriy Ivanov [Thu, 13 Nov 2014 17:39:20 +0000 (09:39 -0800)]
Rename soinfo methods and fields
Change-Id: If68fbe287d3ad954238b1688f71013371f3f7fae
Christopher Ferris [Fri, 14 Nov 2014 03:23:35 +0000 (03:23 +0000)]
Merge "Add missing function prototypes wcpcpy/wcpncpy."
Christopher Ferris [Thu, 13 Nov 2014 23:48:39 +0000 (15:48 -0800)]
Add missing function prototypes wcpcpy/wcpncpy.
Also add smoke tests for a few of the wchar functions.
Change-Id: Id1be522f55a6708564d444941f42097548f16497
Elliott Hughes [Fri, 14 Nov 2014 00:00:53 +0000 (00:00 +0000)]
Merge "Fix our <mntent.h> implementation."
Elliott Hughes [Thu, 13 Nov 2014 22:27:25 +0000 (14:27 -0800)]
Fix our <mntent.h> implementation.
Used by toybox.
Change-Id: I36a5053423e5cc54ae02a68f4fe110d75134accd
Elliott Hughes [Thu, 13 Nov 2014 18:11:00 +0000 (18:11 +0000)]
Merge "Assume glibc >= 2.15."
Elliott Hughes [Thu, 13 Nov 2014 17:56:07 +0000 (17:56 +0000)]
Merge "Don't receive structs containing pointers over sockets."
Hans Boehm [Thu, 13 Nov 2014 17:49:53 +0000 (17:49 +0000)]
Merge "Allow stdatomic.h to be included from mingw prebuilt."
Elliott Hughes [Thu, 13 Nov 2014 01:00:30 +0000 (17:00 -0800)]
Don't receive structs containing pointers over sockets.
Fixes x86-64 netd.
Change-Id: Iee5ef802ebbf2e000b2593643de4eec46f296c04
Elliott Hughes [Thu, 13 Nov 2014 05:03:26 +0000 (21:03 -0800)]
Assume glibc >= 2.15.
This catches one trivial difference between us and glibc --- the error
returned by pthread_setname_np for an invalid pthread_t.
Change-Id: If4c21e22107c6488333d11184f8005f8669096c2
Elliott Hughes [Thu, 13 Nov 2014 03:37:47 +0000 (03:37 +0000)]
Merge "Fix glibc 2.15 build."
Dmitriy Ivanov [Thu, 13 Nov 2014 03:36:54 +0000 (03:36 +0000)]
Merge "Fix mips build"
Elliott Hughes [Thu, 13 Nov 2014 03:22:48 +0000 (19:22 -0800)]
Fix glibc 2.15 build.
glibc 2.15 has prlimit64, has an unsetenv that's declared nonnull,
and hasn't fixed the problems we were having trying to use the
POSIX strerror_r in C++ code.
Change-Id: I834356a385e5ae55500bd86781691b6c1c9c8300