)]}'
{
  "log": [
    {
      "commit": "ecdc451ccf9e3f6fa4a89ec99f0f59b0a8080516",
      "tree": "106c9d3feab344ad09751f27a728b2de4f19df41",
      "parents": [
        "543b4013e7e24813b33709750fe86ca190f0ac4c",
        "16455b5100ea46b930c1fa84d6bc905b7977643d"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Jan 28 19:32:59 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 28 19:32:59 2019 +0000"
      },
      "message": "Merge changes I3c9b1292,I05c28d6a,I788c4a95,If8cd798f,I1c8d1cd7, ...\n\n* changes:\n  Implement dynamic TLS accesses and allocation\n  Implement TLS_DTPMOD and TLS_DTPREL relocations\n  Ignore DT_TLSDESC_GOT / DT_TLSDESC_PLT\n  Disable the dlfcn.dlopen_library_with_ELF_TLS test\n  Add BionicAllocator::memalign\n  Move the linker allocator into libc\n  Replace some of linker_allocator\u0027s header includes\n"
    },
    {
      "commit": "543b4013e7e24813b33709750fe86ca190f0ac4c",
      "tree": "7c2562760e7f9f47fe7b97b434a779550f0b12aa",
      "parents": [
        "122ecb1ca8023d32211b61004b1a107d83490b5c",
        "db59b891ca5a6f930161255cfd1f1d77eebd68fe"
      ],
      "author": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Mon Jan 28 18:14:48 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 28 18:14:48 2019 +0000"
      },
      "message": "Merge \"Allow to reset malloc hooks.\""
    },
    {
      "commit": "db59b891ca5a6f930161255cfd1f1d77eebd68fe",
      "tree": "9d26d8bd324f0cd7221333ecae3248247d175cf4",
      "parents": [
        "a9aeccbf74eb05291d69cafc1058ad494b9d55e9"
      ],
      "author": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Tue Nov 27 17:06:54 2018 +0000"
      },
      "committer": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Mon Jan 28 15:01:50 2019 +0000"
      },
      "message": "Allow to reset malloc hooks.\n\nThis is used to prevent the additional indirection even after heap\nprofiling has finished, preventing any performance impact on processes\nthat are not currently being profiled.\n\nTest: m\nTest: flash sailfish\nTest: try tearing down \u0026 re-enabling hooks\n\nBug: 120186127\n\nChange-Id: Idc5988111a47870d2c093fd6a017b47e65f5616b\n"
    },
    {
      "commit": "122ecb1ca8023d32211b61004b1a107d83490b5c",
      "tree": "167d935c15e77f73cef1c53e673eb690aeca9b83",
      "parents": [
        "70ee1825d0e8c72570c834db0f27ab806de5d857",
        "4e02cc185873c9ab0b6be6260f987cbdfe87f5d5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sun Jan 27 03:42:35 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sun Jan 27 03:42:35 2019 +0000"
      },
      "message": "Merge \"bionic_unit_tests: Remove dependency on libpagemap\""
    },
    {
      "commit": "16455b5100ea46b930c1fa84d6bc905b7977643d",
      "tree": "2cbeacaeecab2980c47fbf21ce860d44d86ea8c6",
      "parents": [
        "3b463cf7f4f7fa54567ff42f6772091b22add2b8"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Jan 18 01:00:59 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Jan 25 17:53:01 2019 -0800"
      },
      "message": "Implement dynamic TLS accesses and allocation\n\nInitialize a thread\u0027s DTV to an empty zeroed DTV. Allocate the DTV and\nany ELF module\u0027s TLS segment on-demand in __tls_get_addr. Use a generation\ncounter, incremented in the linker, to signal when threads should\nupdate/reallocate their DTV objects.\n\nA generation count of 0 always indicates the constant zero DTV.\n\nOnce a DTV is allocated, it isn\u0027t freed until the thread exits, because\na signal handler could interrupt the fast path of __tls_get_addr between\naccessing the DTV slot and reading a field of the DTV. Bionic keeps a\nlinked list of DTV objects so it can free them at thread-exit.\n\nDynamic TLS memory is allocated using a BionicAllocator instance in\nlibc_shared_globals. For async-signal safety, access to the\nlinker/libc-shared state is protected by first blocking signals, then by\nacquiring the reader-writer lock, TlsModules::rwlock. A write lock is\nneeded to allocate or free memory.\n\nIn pthread_exit, unconditionally block signals before freeing dynamic\nTLS memory or freeing the shadow call stack.\n\nndk_cruft.cpp: Avoid including pthread_internal.h inside an extern \"C\".\n(The header now includes a C++ template that doesn\u0027t compile inside\nextern \"C\".)\n\nBug: http://b/78026329\nBug: http://b/123094171\nTest: bionic unit tests\nChange-Id: I3c9b12921c9e68b33dcc1d1dd276bff364eff5d7\n"
    },
    {
      "commit": "3b463cf7f4f7fa54567ff42f6772091b22add2b8",
      "tree": "2802c885b6134a45c567b0f5bce3c3cd251fe9a8",
      "parents": [
        "ea41ab0548f4340a3d5f5a4253ce4a04fd66e157"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Tue Jan 22 22:49:22 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Jan 25 17:53:01 2019 -0800"
      },
      "message": "Implement TLS_DTPMOD and TLS_DTPREL relocations\n\nGeneralize the omitted symbol and missing-TLS-segment behaviors to all TLS\nrelocations.\n\nR_GENERIC_TLS_DTPMOD is a module ID, which starts at 1 for the executable.\n\nR_GENERIC_TLS_DTPREL is an offset from the start of a module to a specific\nTLS symbol.\n\nbinutils currently disagrees with Bionic about the values of\nR_AARCH64_TLS_DTPMOD64 and R_AARCH64_TLS_DTPREL64, so disable\nDTPMOD/DTPREL for now on arm64.\n\nBug: http://b/78026329\nTest: bionic unit tests (Tests for dynamic TLS will be added later)\nChange-Id: I05c28d6a1036bdd6127f605036679b7475689445\n"
    },
    {
      "commit": "ea41ab0548f4340a3d5f5a4253ce4a04fd66e157",
      "tree": "a2bc46e8657576764c9a6b6088751c404c198a6d",
      "parents": [
        "5f5a1929e8bd883c79669dc5dd2348d9cec1d1a6"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Jan 23 16:33:03 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Jan 25 17:53:01 2019 -0800"
      },
      "message": "Ignore DT_TLSDESC_GOT / DT_TLSDESC_PLT\n\nThese dynamic table entries are used for lazy relocation of TLSDESC\nrelocations. Bionic relocates everything eagerly and can ignore these\nentries.\n\nBug: http://b/78026329\nTest: bionic unit tests\nTest: manual\nChange-Id: I788c4a95041fae66de2fbeab3babe0205631999c\n"
    },
    {
      "commit": "5f5a1929e8bd883c79669dc5dd2348d9cec1d1a6",
      "tree": "9bcd21c4e14268e538c2728474ae48b222020b33",
      "parents": [
        "96773a2daf8d11f2d95801935e26f71eb0265559"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Jan 25 16:14:31 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Jan 25 17:53:01 2019 -0800"
      },
      "message": "Disable the dlfcn.dlopen_library_with_ELF_TLS test\n\nThis test is verifying that an ELF TLS solib can\u0027t be loaded, but once\nELF TLS is implemented, it *can* be loaded. Removing the test requires\ncoordinated changes with internal test suites.\n\nI could modify the test to verify that the solib was successfully loaded,\nbut support for dynamic ELF TLS appears across a few different CLs.\n\nBug: http://b/78026329\nTest: bionic unit tests\nChange-Id: If8cd798f456568a5c76310b754cea48ca8edaa82\n"
    },
    {
      "commit": "96773a2daf8d11f2d95801935e26f71eb0265559",
      "tree": "44a8da51e6b6acfb7054830a44e23b00d82afefc",
      "parents": [
        "083d850b30c5eb29c16500bca934d7f6682e4aaa"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu Jan 24 15:22:50 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Jan 25 15:31:35 2019 -0800"
      },
      "message": "Add BionicAllocator::memalign\n\nBionic needs this functionality to allocate a TLS segment with greater\nthan 16-byte alignment. For simplicity, this allocator only supports up\nto one page of alignment.\n\nThe memory layout changes slightly when allocating an object of exactly\nPAGE_SIZE alignment. Instead of allocating the page_info header at the\nstart of the page containing the pointer, it is allocated at the start\nof the preceding page.\n\nBug: http://b/78026329\nTest: linker-unit-tests{32,64}\nChange-Id: I1c8d1cd7ca72d113bced5ee15ba8d831426b0081\n"
    },
    {
      "commit": "083d850b30c5eb29c16500bca934d7f6682e4aaa",
      "tree": "5138d02782bff5e30af0c97cf114000674ca8771",
      "parents": [
        "52165b34b9c36eae4e15c47c25ab3c51b2029592"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu Jan 24 13:47:13 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Jan 25 15:31:35 2019 -0800"
      },
      "message": "Move the linker allocator into libc\n\nRename LinkerMemoryAllocator -\u003e BionicAllocator\nRename LinkerSmallObjectAllocator -\u003e BionicSmallObjectAllocator\n\nlibc and the linker need to share an instance of the allocator for\nallocating and freeing dynamic ELF TLS memory (DTVs and segments). The\nlinker also continues to use this allocator.\n\nBug: http://b/78026329\nTest: /data/nativetest/bionic-unit-tests-static\nTest: /data/nativetest64/bionic-unit-tests-static\nTest: /data/nativetest/linker-unit-tests/linker-unit-tests32\nTest: /data/nativetest64/linker-unit-tests/linker-unit-tests64\nChange-Id: I2da037006ddf8041a75f3eba2071a8fcdcc223ce\n"
    },
    {
      "commit": "52165b34b9c36eae4e15c47c25ab3c51b2029592",
      "tree": "60e48aa85eb4ed8fefa0275667a5bfe1c5db1f80",
      "parents": [
        "70ee1825d0e8c72570c834db0f27ab806de5d857"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Jan 23 17:46:24 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Jan 25 14:48:00 2019 -0800"
      },
      "message": "Replace some of linker_allocator\u0027s header includes\n\nThe \u003casync_safe/log.h\u003e include in linker_allocator.h was made\nunnecessary when the STL dependency was removed.\n\nReplace the linker_*.h header includes with private/bionic_*.h\nincludes.\n\nThis change prepares LinkerMemoryAllocator for use in libc allocating\ndynamic ELF TLS memory.\n\nBug: http://b/78026329\nTest: bionic unit tests\nChange-Id: I6ad62bd513e71dd3f91a4b724a92b19a1eb6c3b4\n"
    },
    {
      "commit": "70ee1825d0e8c72570c834db0f27ab806de5d857",
      "tree": "7d3d32a5f704035fe1b9d18fe9519c1523322bc9",
      "parents": [
        "fbd6f3c7969a2a72e9384d3b50d037e414eedabf",
        "42e81985b1cfb0e2b9439721b2507f240518df31"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 25 22:41:50 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 25 22:41:50 2019 +0000"
      },
      "message": "Merge \"Call realpath(3) only when the path is accessible for read\""
    },
    {
      "commit": "fbd6f3c7969a2a72e9384d3b50d037e414eedabf",
      "tree": "c96fa4939220ef9cda003204946db18557036510",
      "parents": [
        "65502ea8e0a9b5ca1dd326b29f25bfbfdfed646d",
        "dac328ad5118417a4622952ed8c62b3943612d09"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 25 22:39:27 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 25 22:39:27 2019 +0000"
      },
      "message": "Merge changes Iece631a5,I53769e0e\n\n* changes:\n  linker: Reduce number of mmap()/prctl() calls in block allocator\n  linker: Purge block allocator memory when possible\n"
    },
    {
      "commit": "65502ea8e0a9b5ca1dd326b29f25bfbfdfed646d",
      "tree": "68d78c01718b37055199b5bd936c137cde7eb530",
      "parents": [
        "3ce06c7b0ad60cafece0fedd2cf88340eb6a6c22",
        "ba40ff657f841c685d220ebdecbe8ba2c2ab1a8a"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jan 25 22:24:45 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 25 22:24:45 2019 +0000"
      },
      "message": "Merge \"Don\u0027t filter reserved signals in sigaction.\""
    },
    {
      "commit": "4e02cc185873c9ab0b6be6260f987cbdfe87f5d5",
      "tree": "5a6f0b6fa9dfd4db23475df20bb502c043944ffc",
      "parents": [
        "822326db922ac5d0e4dea8cff1d774e8f04db94a"
      ],
      "author": {
        "name": "Sandeep Patil",
        "email": "sspatil@google.com",
        "time": "Mon Jan 21 14:22:05 2019 -0800"
      },
      "committer": {
        "name": "Sandeep Patil",
        "email": "sspatil@google.com",
        "time": "Fri Jan 25 13:07:02 2019 -0800"
      },
      "message": "bionic_unit_tests: Remove dependency on libpagemap\n\nUse libmeminfo instead.\nBug: 111694435\nTest: bionic-unit-tests --gtest_filter\u003dDlExtRelroSharingTest.*\n\nChange-Id: Ice217a91a16ee0216354608b2776c0f1e5f65c09\nMerged-In: Ice217a91a16ee0216354608b2776c0f1e5f65c09\nSigned-off-by: Sandeep Patil \u003csspatil@google.com\u003e\n"
    },
    {
      "commit": "42e81985b1cfb0e2b9439721b2507f240518df31",
      "tree": "005b2018b37e7dfa34c3b5f15ceae45a43d12d73",
      "parents": [
        "3ce06c7b0ad60cafece0fedd2cf88340eb6a6c22"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Jan 25 18:18:01 2019 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Jan 25 20:48:12 2019 +0900"
      },
      "message": "Call realpath(3) only when the path is accessible for read\n\nSuppress the SELinux denial log spam by not calling realpath(3) when the\npath does not exist or is not accessible for read, and then not auditing\naccess(2) failure.\n\nBug: 120996057\nTest: copy ping to /data/local/tmp, run it, verify no errors\nTest: run bionic-unit-tests, the tests pass\nChange-Id: Ie6058bfc9524a9b5c50fc7183fdddea6a8fb9200\n"
    },
    {
      "commit": "ba40ff657f841c685d220ebdecbe8ba2c2ab1a8a",
      "tree": "68d78c01718b37055199b5bd936c137cde7eb530",
      "parents": [
        "3ce06c7b0ad60cafece0fedd2cf88340eb6a6c22"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Jan 22 22:53:49 2019 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jan 24 13:21:18 2019 -0800"
      },
      "message": "Don\u0027t filter reserved signals in sigaction.\n\nIf a signal handler is blocking all of their signals, we should\nprobably respect that and not silently unblock bionic\u0027s reserved\nsignals for them. Otherwise, user code can deadlock, run out of stack,\netc. through no fault of their own, if one of the reserved signals\ncomes in while they\u0027ve pivoted onto their signal stack.\n\nBug: http://b/122939726\nTest: treehugger\nChange-Id: I6425a3e7413edc16157b35dffe632e1ab1d76618\n"
    },
    {
      "commit": "3ce06c7b0ad60cafece0fedd2cf88340eb6a6c22",
      "tree": "8c9a90f00043f62f17a769a86c60cbf11c3be41b",
      "parents": [
        "a9aeccbf74eb05291d69cafc1058ad494b9d55e9",
        "a0834d805c2142216dbf8b71289e2409b00490c4"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu Jan 24 18:53:28 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 24 18:53:28 2019 +0000"
      },
      "message": "Merge \"Reassign TLS slot 2 to TLS_SLOT_APP.\""
    },
    {
      "commit": "a9aeccbf74eb05291d69cafc1058ad494b9d55e9",
      "tree": "c47a510f119df45fef6c7ff0abeeea61c216a592",
      "parents": [
        "301f6f3e3731cf4b146adfbea3b05e41be0da0b4",
        "57b9d1e6c077bb348066115707763d8ae7d924d1"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 24 11:20:34 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 24 11:20:34 2019 +0000"
      },
      "message": "Merge \"support LIB in runpath\""
    },
    {
      "commit": "57b9d1e6c077bb348066115707763d8ae7d924d1",
      "tree": "c47a510f119df45fef6c7ff0abeeea61c216a592",
      "parents": [
        "301f6f3e3731cf4b146adfbea3b05e41be0da0b4"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Thu Jan 17 03:14:45 2019 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Thu Jan 24 17:00:37 2019 +0900"
      },
      "message": "support LIB in runpath\n\nIn addition to ORIGIN, LIB is now expanded to either lib or lib64\ndepending on the ABI in the DT_RUNPATH.\n\nTest: To be added (can\u0027t be added to AOSP directly since there are\ninternal tests that have to be updated as well)\n\nChange-Id: I34a8316f1765a27c731bc270ee25c0ce287d7eed\n"
    },
    {
      "commit": "301f6f3e3731cf4b146adfbea3b05e41be0da0b4",
      "tree": "dbd3bbca5d961795a47338dc5eeefa5518db9970",
      "parents": [
        "176d2fbcaefe4691b8fd7844f6cec8e7a1a22c76",
        "f77928de325bae02a9568f7bfc7a254a978c7d8c"
      ],
      "author": {
        "name": "Ryan Savitski",
        "email": "rsavitski@google.com",
        "time": "Thu Jan 24 03:45:13 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 24 03:45:13 2019 +0000"
      },
      "message": "Merge changes I4f001910,Ic251afec\n\n* changes:\n  android_mallopt: opcode preprocess define + missing header\n  conditional zygote child heap profiling + android_internal_mallopt\n"
    },
    {
      "commit": "a0834d805c2142216dbf8b71289e2409b00490c4",
      "tree": "48757863221e3f1ad71e870df4ca72abe74e30c2",
      "parents": [
        "822326db922ac5d0e4dea8cff1d774e8f04db94a"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Jan 23 18:47:10 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Jan 23 18:48:48 2019 -0800"
      },
      "message": "Reassign TLS slot 2 to TLS_SLOT_APP.\n\nBug: http://b/78026329\nBug: http://b/118381796\nTest: mmma bionic\nChange-Id: I1c50d3293206e59d54fbbfe9c9e3d6fd54dded3e\n"
    },
    {
      "commit": "dac328ad5118417a4622952ed8c62b3943612d09",
      "tree": "5cbede9caf341492d9d69c8e8eabc2d7dd52ad9e",
      "parents": [
        "fb78a4ac1b93218f59aa44089ae5f4dbfababf0d"
      ],
      "author": {
        "name": "Vic Yang",
        "email": "victoryang@google.com",
        "time": "Wed Jan 23 14:21:58 2019 -0800"
      },
      "committer": {
        "name": "Vic Yang",
        "email": "victoryang@google.com",
        "time": "Wed Jan 23 14:33:02 2019 -0800"
      },
      "message": "linker: Reduce number of mmap()/prctl() calls in block allocator\n\nGiven that the block allocator does not free allocated memory unless\nall objects are freed, we can allocate a large chunk of memory at a\ntime.  This gives us:\n  1. Higher space efficiency, especially when the objects being\n     allocated has a large size.\n  2. Much less mmap()/prctl() calls.\n  3. Much less vm_area_struct objects.\nWhile this increases the size of virtual memory allocated, the number\nof dirty pages would be unchanged or less.\n\nTest result on a Go device:\n  - Zygote starts 24ms faster on average.\n  - Kernel vm_area_struct usage 138KB less, across the entire system.\n\nBug: 112073665\nTest: Boot and check the result from \u0027showmap\u0027.\nChange-Id: Iece631a5081151dd1e5bf25dbddac9b264bcdcff\n"
    },
    {
      "commit": "fb78a4ac1b93218f59aa44089ae5f4dbfababf0d",
      "tree": "976bf1fa16427ea8a3bce0cbc6cb29cd94390449",
      "parents": [
        "176d2fbcaefe4691b8fd7844f6cec8e7a1a22c76"
      ],
      "author": {
        "name": "Vic Yang",
        "email": "victoryang@google.com",
        "time": "Wed Jan 23 12:19:41 2019 -0800"
      },
      "committer": {
        "name": "Vic Yang",
        "email": "victoryang@google.com",
        "time": "Wed Jan 23 12:24:46 2019 -0800"
      },
      "message": "linker: Purge block allocator memory when possible\n\nIf all allocated memory from a block allocator is freed, it is a good\nopportunity to purge all the pages allocated to reduce lingering dirty\npages.\n\nMemory saving varies with the platform and what processes are running.\nMeasuring right after boot, this saves ~1.8MB on cuttelfish and ~1.3MB\non a 32-bit ARM device.\n\nBug: 112073665\nTest: Boot and check memory usage with \u0027showmap\u0027.\nChange-Id: I53769e0ec9699f0b3645cdf281a2c0bbffb98676\n"
    },
    {
      "commit": "f77928de325bae02a9568f7bfc7a254a978c7d8c",
      "tree": "dbd3bbca5d961795a47338dc5eeefa5518db9970",
      "parents": [
        "ecc37e38771aaf994a97c51104017a7d1b73a568"
      ],
      "author": {
        "name": "Ryan Savitski",
        "email": "rsavitski@google.com",
        "time": "Wed Jan 23 18:39:35 2019 +0000"
      },
      "committer": {
        "name": "Ryan Savitski",
        "email": "rsavitski@google.com",
        "time": "Wed Jan 23 18:40:17 2019 +0000"
      },
      "message": "android_mallopt: opcode preprocess define + missing header\n\nAddressing Elliott\u0027s remaining comments on the android_mallopt change.\nIntending to let this get merged in normally (should be clean).\n\nTest: blueline-userdebug still builds.\nChange-Id: I4f00191091b8af367f84d087432a5af5f83036ee\n"
    },
    {
      "commit": "ecc37e38771aaf994a97c51104017a7d1b73a568",
      "tree": "2b1a1d908e99eb5181cdaf77e06005a4459dcaa1",
      "parents": [
        "176d2fbcaefe4691b8fd7844f6cec8e7a1a22c76"
      ],
      "author": {
        "name": "Ryan Savitski",
        "email": "rsavitski@google.com",
        "time": "Fri Dec 14 15:57:21 2018 +0000"
      },
      "committer": {
        "name": "Ryan Savitski",
        "email": "rsavitski@google.com",
        "time": "Wed Jan 23 18:30:54 2019 +0000"
      },
      "message": "conditional zygote child heap profiling + android_internal_mallopt\n\nOn user builds, heapprofd should only be allowed to profile apps that\nare either debuggable, or profileable (according to the manifest). This\nchange exposes extra zygote-specific knowledge to bionic, and makes the\ndedicated signal handler check for the special case of being in a zygote child.\n\nWith this \u0026 the corresponding framework change, we should now be\nhandling the 4 combinations of:\n  {java, native} x {profile_at_runtime, profile_at_startup}.\n\nSee internal go/heapprofd-java-trigger for further context.\n\nTest: on-device unit tests (shared \u0026 static) on blueline-userdebug.\nTest: flashed blueline-userdebug, confirmed that java profiling activates from startup and at runtime.\nBug: 120409382\nChange-Id: Ic251afeca4324dc650ac1d4f46976b526eae692a\n(cherry picked from commit 998792e2b6e1b84222b5d124f13ecdcb446cb22f)\nMerged-In: Ic251afeca4324dc650ac1d4f46976b526eae692a\n"
    },
    {
      "commit": "176d2fbcaefe4691b8fd7844f6cec8e7a1a22c76",
      "tree": "872a976e528890058b690afc401047f73f0cdf29",
      "parents": [
        "0a692a6d8d8c003749f959b6073f32f9c2c07604",
        "e17fce1a47c48eca15cda63572db50f5b8b17bdd"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 23 08:12:29 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 23 08:12:29 2019 +0000"
      },
      "message": "Merge \"Blacklist setregid(32) for apps.\""
    },
    {
      "commit": "0a692a6d8d8c003749f959b6073f32f9c2c07604",
      "tree": "d470055e9c71be4cb3b5524050e347d497cc40a3",
      "parents": [
        "011523f4dfd65fea3be3e5f2004cb090a557e868",
        "7f209a979c55a58e91946a2efd5f0b339ffe309c"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jan 23 01:43:47 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 23 01:43:47 2019 +0000"
      },
      "message": "Merge \"Bionic malloc debug: add a new option \"abort_on_error\"\""
    },
    {
      "commit": "7f209a979c55a58e91946a2efd5f0b339ffe309c",
      "tree": "481e04cf25531a9ced30b032bb5ba93f06de674e",
      "parents": [
        "822326db922ac5d0e4dea8cff1d774e8f04db94a"
      ],
      "author": {
        "name": "Iris Chang",
        "email": "iris.chang@mediatek.com",
        "time": "Wed Jan 16 11:17:15 2019 +0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Jan 22 15:54:36 2019 -0800"
      },
      "message": "Bionic malloc debug: add a new option \"abort_on_error\"\n\nThis new option causes an abort after malloc debug detects an error.\nThis allows vendors to get process coredumps to analyze memory for\ncorruption.\n\nBug: 123009873\nTest: New test cases added for unit tests and config tests.\n\nChange-Id: I6b480af7f747d6a82f61e8bf3df204a5f7ba017f\n"
    },
    {
      "commit": "011523f4dfd65fea3be3e5f2004cb090a557e868",
      "tree": "baf2054640b8e720d6f81cb5fcc94c482a6d8cf2",
      "parents": [
        "822326db922ac5d0e4dea8cff1d774e8f04db94a",
        "d269d9b9e930ae1fb0df49813fbcdc3d3a5850a7"
      ],
      "author": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Tue Jan 22 22:22:42 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 22 22:22:42 2019 +0000"
      },
      "message": "Merge changes If330efda,I34864837,I8bc5c1cb\n\n* changes:\n  Add support for seccomp filter that limits setresuid/setresgid.\n  Create APP_ZYGOTE seccomp policy.\n  genfunctosyscallnrs: maps bionic functions to syscall numbers.\n"
    },
    {
      "commit": "e17fce1a47c48eca15cda63572db50f5b8b17bdd",
      "tree": "b449159604cf67635e323d1b53f4758d6f6c157e",
      "parents": [
        "ca305a39e50d92dc572f50f00262b3dbb0dece9d"
      ],
      "author": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Mon Jan 21 14:29:35 2019 +0100"
      },
      "committer": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Tue Jan 22 17:22:54 2019 +0100"
      },
      "message": "Blacklist setregid(32) for apps.\n\nGiven that it\u0027s friends setgid/setresgid already are, I don\u0027t see why\nsetregid(32) should be allowed.\n\nTest: (Fixed up) CtsSeccompHostTestcases passes\nChange-Id: I31bb429da26baa18ec63b6bfc62628a937fdab0c\n"
    },
    {
      "commit": "d269d9b9e930ae1fb0df49813fbcdc3d3a5850a7",
      "tree": "0616b498a34f44a378f88ded892de6d7580bd0de",
      "parents": [
        "c3752be83771f00b24909689dde366f75dfa0c27"
      ],
      "author": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Thu Nov 08 16:41:42 2018 +0100"
      },
      "committer": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Sat Jan 19 09:09:30 2019 +0100"
      },
      "message": "Add support for seccomp filter that limits setresuid/setresgid.\n\nAdd a new function that installs a seccomp filter that checks\nall setresuid/setresgid syscalls to fall within the passed in\nuid/gid range. It allows all other syscalls through. Therefore,\nthis filter is meant to be used in addition to one of the\nregular whitelist syscall filters. (If multiple seccomp filters\nare installed a in process, all filters are run, and the most\nrestrictive result is used).\n\nSince the regular app and app_zygote seccomp filters block all\nother calls to change uid/gid (setuid, setgid, setgroups,\nsetreuid, setregid, setfsuid), combining these filters prevents\nthe process from using any other uid/gid than the one passed as\narguments to the new function.\n\nBug: 111434506\nTest: atest CtsSeccompHostTestCases\nChange-Id: If330efdafbedd8e7d38ca81896a4dbb0bc49f431\n"
    },
    {
      "commit": "c3752be83771f00b24909689dde366f75dfa0c27",
      "tree": "52d3a20fb72f74df39a46517f63463940cb6ef94",
      "parents": [
        "0c6de75a45cb3e8fb191cccb7c93d31def4c486f"
      ],
      "author": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Wed Jan 09 16:19:57 2019 +0100"
      },
      "committer": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Sat Jan 19 09:09:30 2019 +0100"
      },
      "message": "Create APP_ZYGOTE seccomp policy.\n\nThe APP_ZYGOTE seccomp policy is identical to the APP seccomp policy,\nwith the exception of allowing setresgid(32), which the app zygote\nneeds to be able to do (within a certain range).\n\nBug: 111434506\nTest: manual\nChange-Id: I34864837c981d201225e3e2e5501c0415a9a7dc8\n"
    },
    {
      "commit": "0c6de75a45cb3e8fb191cccb7c93d31def4c486f",
      "tree": "847bf2d74e79788dd620243b4bb1ca700929df8c",
      "parents": [
        "f9d2299ee2c05477f72dd137f4abddb68b91d8b2"
      ],
      "author": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Wed Jan 02 12:52:51 2019 +0100"
      },
      "committer": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Sat Jan 19 09:09:30 2019 +0100"
      },
      "message": "genfunctosyscallnrs: maps bionic functions to syscall numbers.\n\nBionic maps typical C functions like setresuid() to a syscall,\ndepending on the architecture used. This tool generates a .h\nfile that maps all bionic functions in SYSCALLS.txt to the\nsyscall number used on a particular architecture. It can then\nbe used to generate correct seccomp policy at runtime.\n\nExample output in func_to_syscall_nrs.h:\n\nBug: 111434506\nTest: manually inspect func_to_syscall_nrs.h\nChange-Id: I8bc5c1cb17a2e7b5c534b2e0496411f2d419ad86\n"
    },
    {
      "commit": "822326db922ac5d0e4dea8cff1d774e8f04db94a",
      "tree": "6dba85ba07ca7ac15d072e492654a292e8a7eb3d",
      "parents": [
        "6a8e4b0644598667bc9b0d7267769839923a6cd8",
        "17af91b588177bf4022b27f2c35b2def238f770d"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Sat Jan 19 02:34:34 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jan 19 02:34:34 2019 +0000"
      },
      "message": "Merge \"Add libc_headers header lib\""
    },
    {
      "commit": "6a8e4b0644598667bc9b0d7267769839923a6cd8",
      "tree": "55413168dfdf579a285be7bcb22c50930a898fca",
      "parents": [
        "c85a8823cab8b3d3f0a0a4f83820e3751f598a2d",
        "e4ee12f813d62ba1ef0c0e80b205efd2ee98ca11"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Sat Jan 19 01:02:25 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jan 19 01:02:25 2019 +0000"
      },
      "message": "Merge \"Add tests for static ELF TLS\""
    },
    {
      "commit": "17af91b588177bf4022b27f2c35b2def238f770d",
      "tree": "291e102f3d1c29a41e92f8f9dfc5a247d925ace5",
      "parents": [
        "d4f8f4e20b90dc8ea01ca651ee691506e1c589ee"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue Jan 15 21:19:56 2019 +0800"
      },
      "committer": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Sat Jan 19 07:18:38 2019 +0800"
      },
      "message": "Add libc_headers header lib\n\nThis commit extracts `libc_headers` for `libasync_safe` and\n`libpropertyinfoparser` (in the `system/core` repository).\n\nBefore this change, `libasync_safe` expects that `libc` is automatically\nadded to `system_shared_libs` of the libasync_safe vendor variant even\nif `libc_defaults` explicitly declines any `system_shared_libs`.\n\nThis commit defines `libc_headers` for `libasync_safe` and\n`libpropertyinfoparser` so that they can find the headers from libc\nwithout causing circular dependencies.\n\nBug: 123006819\nTest: make checkbuild\nChange-Id: I2435ab61d36ff79ca2b4ef70bd898b795159c725\n"
    },
    {
      "commit": "e4ee12f813d62ba1ef0c0e80b205efd2ee98ca11",
      "tree": "55413168dfdf579a285be7bcb22c50930a898fca",
      "parents": [
        "c85a8823cab8b3d3f0a0a4f83820e3751f598a2d"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Tue Jan 15 20:35:00 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Jan 18 22:44:55 2019 +0000"
      },
      "message": "Add tests for static ELF TLS\n\nBug: http://b/78026329\nTest: bionic unit tests\nMerged-In: I806f2bd193998dfe352372476104876edb27aebf\nChange-Id: I806f2bd193998dfe352372476104876edb27aebf\n"
    },
    {
      "commit": "c85a8823cab8b3d3f0a0a4f83820e3751f598a2d",
      "tree": "04a5e6057858b325acb23d67de23571f2a4c087b",
      "parents": [
        "4ac3709f66876af38e26178349d5b1278f0367a9",
        "cd4e5ba559d38077576c084a4852b8c39003eedb"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Jan 18 21:44:27 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 18 21:44:27 2019 +0000"
      },
      "message": "Merge \"Turn off XOM on libnstest_root.so\""
    },
    {
      "commit": "4ac3709f66876af38e26178349d5b1278f0367a9",
      "tree": "a7adb7a2ec6cb1dc1e492cba2144aa345c511be7",
      "parents": [
        "314c0f798983895d81705d7b431cc4651accc8a7",
        "0159b64aa50dcff574281ba85c8e3dfd80536ce7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 18 19:38:20 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 18 19:38:20 2019 +0000"
      },
      "message": "Merge \"Allow more leeway to fix sys_time.gettimeofday flakiness.\""
    },
    {
      "commit": "0159b64aa50dcff574281ba85c8e3dfd80536ce7",
      "tree": "a7adb7a2ec6cb1dc1e492cba2144aa345c511be7",
      "parents": [
        "314c0f798983895d81705d7b431cc4651accc8a7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 18 08:20:55 2019 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 18 08:20:55 2019 -0800"
      },
      "message": "Allow more leeway to fix sys_time.gettimeofday flakiness.\n\nBug: http://b/121156651\nTest: ran tests\nChange-Id: Ieb8ee481ea3572533823e6cb0eab4ec089a38e44\n"
    },
    {
      "commit": "cd4e5ba559d38077576c084a4852b8c39003eedb",
      "tree": "273b48ab277c66dbdca480442ec3acf02a098400",
      "parents": [
        "9a238653c1a32a7bd046aba8411e7400dda8367e"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu Jan 17 17:45:42 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Jan 18 01:15:44 2019 -0800"
      },
      "message": "Turn off XOM on libnstest_root.so\n\nThe dlext.ns_anonymous test copies the loaded segments of this shared\nobject into a new mapping, so every segment must be readable. Turn off\neXecute-Only-Memory.\n\nBug: http://b/123034666\nTest: bionic-unit-tests --gtest_filter\u003ddlext.ns_anonymous\nChange-Id: I2d427feb81d353e0403c7ef251a55afb4d8729b4\n"
    },
    {
      "commit": "314c0f798983895d81705d7b431cc4651accc8a7",
      "tree": "376a7bd4524d68fe61570d408116bcb676a530c8",
      "parents": [
        "190626872ab894fb540298950e9200a991f39db1",
        "bf427f42254f0a8d60dad3d1198c2f589d260cc8"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Jan 18 04:15:07 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 18 04:15:07 2019 +0000"
      },
      "message": "Merge \"Fix soinfo_tls::module dangling reference\""
    },
    {
      "commit": "bf427f42254f0a8d60dad3d1198c2f589d260cc8",
      "tree": "357db0946598c5dc08388b51b7503dd33edfd2a2",
      "parents": [
        "9a238653c1a32a7bd046aba8411e7400dda8367e"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu Jan 17 16:37:11 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu Jan 17 17:13:53 2019 -0800"
      },
      "message": "Fix soinfo_tls::module dangling reference\n\nThe field was pointing into an element of an std::vector, but the address\nof a vector element is invalidated when the vector is resized.\n\nThis bug was caught by the new elftls.shared_ie and\nelftls_dl.dlopen_shared_var_ie tests.\n\nBug: http://b/78026329\nTest: bionic unit tests\nChange-Id: I7232f6d703a9e339fe8966a95b7a68bae2c9c420\n"
    },
    {
      "commit": "190626872ab894fb540298950e9200a991f39db1",
      "tree": "b5732f16f74b7ef2bd23e65bd59ee00d98406ad5",
      "parents": [
        "9a238653c1a32a7bd046aba8411e7400dda8367e",
        "a022034da2c6251fe911853c8ada5216751d2b77"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jan 18 00:50:23 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 18 00:50:23 2019 +0000"
      },
      "message": "Merge \"linker: only generate log messages when logging is enabled\""
    },
    {
      "commit": "9a238653c1a32a7bd046aba8411e7400dda8367e",
      "tree": "726605d697cad7873e090acdb5014164ce42f5d6",
      "parents": [
        "1f6adf5863b53c8a9139eef256e87d998f7130d4",
        "fb8730d49586f29868b5697d6a8c74aa9a4847d0"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu Jan 17 23:10:51 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 17 23:10:51 2019 +0000"
      },
      "message": "Merge changes Ia08e1b5c,I60e589dd,Ib7edb665,Ibf1bf5ec,Ibd623857\n\n* changes:\n  Handle R_GENERIC_TLS_TPREL relocations\n  Avoid a dlopen abort on an invalid TLS alignment\n  Initialize static TLS memory using module list\n  Record TLS modules and layout static TLS memory\n  StaticTlsLayout: add exe/tcb and solib layout\n"
    },
    {
      "commit": "a022034da2c6251fe911853c8ada5216751d2b77",
      "tree": "57628c63ec41d3d4b6de2366b84c63e4f0d14ecb",
      "parents": [
        "1f6adf5863b53c8a9139eef256e87d998f7130d4"
      ],
      "author": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Thu Jan 17 11:35:18 2019 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jan 17 14:24:14 2019 -0800"
      },
      "message": "linker: only generate log messages when logging is enabled\n\nAvoids some unnecessary work during dlopen/dlclose/dlsym for most\ncases.\n\nBug: 122471935\nTest: fewer page faults during app startup\nChange-Id: Ie886e1e671066af3c6f3a895f9a8126f209d6660\n"
    },
    {
      "commit": "1f6adf5863b53c8a9139eef256e87d998f7130d4",
      "tree": "a3117011b35b66f8b5446bd6592fe9af56c3383f",
      "parents": [
        "de70b72b4f408a7100000e632e9b887347a531b3",
        "8dff0bb66bd48ef9f5ce472d94c99e5b656ba083"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 17 22:15:33 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 17 22:15:33 2019 +0000"
      },
      "message": "Merge \"Allow more leeway to fix time.clock_gettime flakiness.\""
    },
    {
      "commit": "de70b72b4f408a7100000e632e9b887347a531b3",
      "tree": "1eaf5553b9b978ab171b3110b15b0c3a551384ce",
      "parents": [
        "d4f8f4e20b90dc8ea01ca651ee691506e1c589ee",
        "f9d2299ee2c05477f72dd137f4abddb68b91d8b2"
      ],
      "author": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Thu Jan 17 20:49:19 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 17 20:49:19 2019 +0000"
      },
      "message": "Merge \"Update getpwnam() tests to correctly handle new app zygote uids.\""
    },
    {
      "commit": "8dff0bb66bd48ef9f5ce472d94c99e5b656ba083",
      "tree": "26d5b4029a9f35eceb7e4daaef4e0b07e0bf9cc1",
      "parents": [
        "ca305a39e50d92dc572f50f00262b3dbb0dece9d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 17 12:32:32 2019 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 17 12:32:32 2019 -0800"
      },
      "message": "Allow more leeway to fix time.clock_gettime flakiness.\n\nBug: http://b/121156651\nTest: ran tests\nChange-Id: Ic949763e56c46f05ed2565ca4465a15c7ecf768c\n"
    },
    {
      "commit": "f9d2299ee2c05477f72dd137f4abddb68b91d8b2",
      "tree": "aba2725b8e73ca67fec1a98b7468f89bb98b3afb",
      "parents": [
        "ca305a39e50d92dc572f50f00262b3dbb0dece9d"
      ],
      "author": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Wed Jan 16 16:25:40 2019 +0100"
      },
      "committer": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Thu Jan 17 13:36:47 2019 +0100"
      },
      "message": "Update getpwnam() tests to correctly handle new app zygote uids.\n\nThe UID range [90000..98999] is used for isolated processes that are\nspawned from an application zygote. Otherwise they are identical to\nregular isolated processes in the [99000..99999] range. Fix the tests to\nmatch the new range.\n\nBug: 111434506\nTest: atest bionic-unit-tests-static\nChange-Id: Id0352f2cf0d21edb04d95f01ea2548e95b62317a\n"
    },
    {
      "commit": "d4f8f4e20b90dc8ea01ca651ee691506e1c589ee",
      "tree": "20bb21fd5ba68b6e15814be306140df8c355daff",
      "parents": [
        "5bccde719f9586b3c18ab2ef1eee5ca81e2cc9ac",
        "ae4d10bf4ab7168ac585f65895c623d027b1e740"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Thu Jan 17 12:31:57 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 17 12:31:57 2019 +0000"
      },
      "message": "Merge \"Add __attribute__((unused)) to __BIONIC_ERROR_FUNCTION_VISIBILITY\""
    },
    {
      "commit": "fb8730d49586f29868b5697d6a8c74aa9a4847d0",
      "tree": "2900d8f03068efb6a069eb6b579460855b43627b",
      "parents": [
        "1988350d1ccd1a99c628178612e1c9ce0f7858a3"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Tue Jan 15 00:11:37 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu Jan 17 00:45:55 2019 -0800"
      },
      "message": "Handle R_GENERIC_TLS_TPREL relocations\n\nThis relocation is used for static TLS\u0027s initial-exec (IE) accesses.\n\nA TLS symbol\u0027s value is its offset from the start of the ELF module\u0027s\nTLS segment. It doesn\u0027t make sense to add the load_bias to this value,\nso skip the call to soinfo::resolve_symbol_address.\n\nAllow TLS relocations to refer to an unresolved weak symbol. In that case,\nsym will be non-zero, but lsi will be nullptr. The dynamic linker resolves\nthe TPREL relocation to 0, making \u0026missing_weak_symbol equal the thread\npointer.\n\nRecognize Gold-style relocations to STB_LOCAL TLS symbols/sections and\nissue an error.\n\nRemove the \"case R_AARCH64_TLS_TPREL64\", because the R_GENERIC_TLS_TPREL\ncase handles it.\n\nRemove the no-op R_AARCH64_TLSDESC handler. It\u0027s better to issue an error.\ndlopen_library_with_ELF_TLS now fails with a consistent error about an\nunimplemented dynamic TLS relocation.\n\nBug: http://b/78026329\nTest: bionic unit tests (elftls tests are added in a later CL)\nChange-Id: Ia08e1b5c8098117e12143d3b4ebb4dfaa5ca46ec\n"
    },
    {
      "commit": "1988350d1ccd1a99c628178612e1c9ce0f7858a3",
      "tree": "0b6c9375a51f534051334f40ff9aadc2df757a61",
      "parents": [
        "361c1b4a3bbdfeba70fce2f629a8bd523941981f"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Jan 16 23:13:38 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Jan 16 23:19:40 2019 -0800"
      },
      "message": "Avoid a dlopen abort on an invalid TLS alignment\n\nIf the alignment of a TLS segment in a shared object is invalid, return\nan error through dlerror() rather than aborting the process.\n\nBug: http://b/78026329\nTest: bionic unit tests\nChange-Id: I60e589ddd8ca897f485d55af089f08bd3ff5b1fa\n"
    },
    {
      "commit": "5bccde719f9586b3c18ab2ef1eee5ca81e2cc9ac",
      "tree": "78ce555c6dc7cb920f5e7c9f21fbcc6e40df4f50",
      "parents": [
        "05ca47512c94d919ba72862920985992a5ed2905",
        "de853ffa7fd84e3e2b27ef9cc546d4d4ba300488"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 17 04:16:43 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 17 04:16:43 2019 +0000"
      },
      "message": "Merge \"Fix fd leak in android_dlopen_ext.\""
    },
    {
      "commit": "361c1b4a3bbdfeba70fce2f629a8bd523941981f",
      "tree": "1131a3788cb91990a56877c377fb63dcefe92f48",
      "parents": [
        "e5e69e09128e2e89bcafec45be343674adf983bf"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Tue Jan 15 13:45:27 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Jan 16 16:52:47 2019 -0800"
      },
      "message": "Initialize static TLS memory using module list\n\nThis implementation simply iterates over each static TLS module and\ncopies its initialization image into a new thread\u0027s static TLS block.\n\nBug: http://b/78026329\nTest: bionic unit tests\nChange-Id: Ib7edb665271a07010bc68e306feb5df422f2f9e6\n"
    },
    {
      "commit": "e5e69e09128e2e89bcafec45be343674adf983bf",
      "tree": "3bddb0f2bd3ccb8e6cbb6b55adbe121d6936f825",
      "parents": [
        "977e47d01897be06c2b5fc30267d29f86eeb5fc1"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Tue Jan 01 18:53:48 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Jan 16 16:52:47 2019 -0800"
      },
      "message": "Record TLS modules and layout static TLS memory\n\nBug: http://b/78026329\nTest: bionic unit tests\nChange-Id: Ibf1bf5ec864c7830e4cd1cb882842b644e6182ae\n"
    },
    {
      "commit": "de853ffa7fd84e3e2b27ef9cc546d4d4ba300488",
      "tree": "166b02d35bb3e34f2cfc0dff4dd55a6a87dbb36f",
      "parents": [
        "b21fc16a22cec7056a5231568e1eac636c115b19"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Thu Jan 17 00:18:44 2019 +0000"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Thu Jan 17 00:48:18 2019 +0000"
      },
      "message": "Fix fd leak in android_dlopen_ext.\n\nIt can happen e.g. if android_dlopen_ext is called with an absolute path to\na file that is not accessible in the current namespace. The first\nload_library call in find_library_internal will then open the file and\nassign its fd to the task and return false. Then linked namespaces are\nsearched, and load_library gets called again and opens the same file and\noverwrites the fd in the task without closing it first. (In one of the later\ncalls the namespace config might very well allow the file to be loaded and\nthe android_dlopen_ext call eventually returns successfully, and the process\ncontinues with the leaked fd.)\n\nThe code could perhaps be changed to avoid opening the file repeatedly in\nthese cases, but the LoadTask class should arguably keep its state clean\nanyway.\n\nBug: 113373927\nTest: Flash and boot device with (and without) http://r.android.com/812674,\n  which moves libart.so to the runtime namespace and thus makes it load\n  /system/framework/*/boot*.oat files across the namespace boundary from\n  runtime to default.\nChange-Id: Iae91b7c743c5f3f973506153ba52898ae72e6fee\n"
    },
    {
      "commit": "977e47d01897be06c2b5fc30267d29f86eeb5fc1",
      "tree": "b36bf217ddc383ed63ed343e497bf9096b9790db",
      "parents": [
        "05ca47512c94d919ba72862920985992a5ed2905"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Jan 14 21:52:14 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Jan 16 15:54:52 2019 -0800"
      },
      "message": "StaticTlsLayout: add exe/tcb and solib layout\n\nReplace reserve_tcb with reserve_exe_segment_and_tcb, which lays out both\nthe TCB and the executable\u0027s TLS segment, accounting for the difference in\nlayout between variant 1 and variant 2 targets.\n\nThe function isn\u0027t actually called with a non-null TlsSegment* yet.\n\nBug: http://b/78026329\nTest: bionic unit tests\nChange-Id: Ibd6238577423a7d0451f36da7e64912046959796\n"
    },
    {
      "commit": "05ca47512c94d919ba72862920985992a5ed2905",
      "tree": "db0ad52a5f638da9e334de9ba6738400fe1f9268",
      "parents": [
        "aef4a49a3ff28b2c510546643ccf1e4adaa04ea2",
        "606191fd613a374391a321b30094fa120defab98"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 16 23:46:31 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 16 23:46:31 2019 +0000"
      },
      "message": "Merge \"Revert \"Expose more symbols temporarily\"\""
    },
    {
      "commit": "aef4a49a3ff28b2c510546643ccf1e4adaa04ea2",
      "tree": "8984fbcb2d3b99d1d3ee48da25010c0911cbd3c6",
      "parents": [
        "21709b785df589e9be3ee2f68260c1bbf7c92796",
        "4809755c0f62ff993c9ec1187553760708389a60"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 16 23:23:25 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 16 23:23:25 2019 +0000"
      },
      "message": "Merge changes I221b1342,I1d1276da,I89b128df,Icb348a11,Ifb3b2d8d\n\n* changes:\n  Add a __bionic_get_tls_segment function\n  Factor out ScopedRWLock into its own header\n  Build the linker with -D_USING_LIBCXX\n  Provide a stub aeabi.read_tp on other archs\n  Remove TLS_SLOT_TSAN(8)\n"
    },
    {
      "commit": "21709b785df589e9be3ee2f68260c1bbf7c92796",
      "tree": "966d943e77ae44f09009c562d0fefb60612abd49",
      "parents": [
        "37a7f711eb36ad7326eae55560985a3754fcc546",
        "82aea781365f911e29386479a1da24c7664d78b7"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Jan 16 22:36:53 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 16 22:36:53 2019 +0000"
      },
      "message": "Merge \"Use TLS_SLOT_THREAD_ID macro in vfork.S\""
    },
    {
      "commit": "606191fd613a374391a321b30094fa120defab98",
      "tree": "b5fe2ff27c290da1b5ceef3a4a7d32345a2405b6",
      "parents": [
        "b21fc16a22cec7056a5231568e1eac636c115b19"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Thu Jan 17 04:03:49 2019 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Thu Jan 17 04:04:42 2019 +0900"
      },
      "message": "Revert \"Expose more symbols temporarily\"\n\nThis reverts commit 220f51e5669571aaae66a47a5f29866792359fd7.\n\nThe internal modules that were using extra symbols are all fixed.\n\nBug: 120266448\nTest: m ndk_translation_all in cf_x86_phone\nChange-Id: I561b16de1c320d2624e7cf8e6211e0c70edc823d\n"
    },
    {
      "commit": "37a7f711eb36ad7326eae55560985a3754fcc546",
      "tree": "28cdb0103bac91d9c916ab86b90dc3bb10b0db4a",
      "parents": [
        "702c325933356c17069fc48cb86a196a5cdf7a1e",
        "3a538a4861362602ba7d0bda4e7abbb82db3a2c0"
      ],
      "author": {
        "name": "Florian Mayer",
        "email": "fmayer@google.com",
        "time": "Wed Jan 16 18:48:41 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 16 18:48:41 2019 +0000"
      },
      "message": "Merge \"Do not run heapprofd_initialize twice concurrently.\""
    },
    {
      "commit": "702c325933356c17069fc48cb86a196a5cdf7a1e",
      "tree": "d43ad6559fa3d59f302f2b9509bab62614175650",
      "parents": [
        "b21fc16a22cec7056a5231568e1eac636c115b19",
        "6903fb81e1da87d2123c6f610cd536080190ffd0"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 16 17:52:48 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 16 17:52:48 2019 +0000"
      },
      "message": "Merge \"libc: Sort symbols by size to reduce dirty pages\""
    },
    {
      "commit": "4809755c0f62ff993c9ec1187553760708389a60",
      "tree": "3ddec18dc7c6367fecdf25d21c6f4158823cd71a",
      "parents": [
        "c86576c1fb242e721f0d02cd63810922b1d85384"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Sun Jan 06 18:24:10 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Jan 16 01:11:26 2019 -0800"
      },
      "message": "Add a __bionic_get_tls_segment function\n\nThe function searches for a TLS segment in a ElfXX_Phdr table.\n\nBug: http://b/78026329\nTest: bionic unit tests\nChange-Id: I221b13420d1a2da33fc2174b7dd256589f6ecfdb\n"
    },
    {
      "commit": "82aea781365f911e29386479a1da24c7664d78b7",
      "tree": "98d93d63c4233ea77fbadce21c7c54f2b3b7e5a6",
      "parents": [
        "ca305a39e50d92dc572f50f00262b3dbb0dece9d"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu Jan 03 00:06:17 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Jan 16 01:11:26 2019 -0800"
      },
      "message": "Use TLS_SLOT_THREAD_ID macro in vfork.S\n\nNo functional change intended.\n\nBug: none\nTest: bionic unit tests\nChange-Id: I7ee0a2b3f0e3807abe88bfa34ef3cd56c150a8f6\n"
    },
    {
      "commit": "c86576c1fb242e721f0d02cd63810922b1d85384",
      "tree": "b67974ee704c29588359ba4ed1122c6771d45fb5",
      "parents": [
        "9ee8069046d587a4da2a67feb24ede9e9ea73edf"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Jan 09 03:09:42 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Jan 16 01:11:26 2019 -0800"
      },
      "message": "Factor out ScopedRWLock into its own header\n\nBug: http://b/78026329\nTest: bionic unit tests\nChange-Id: I1d1276da835bc8ecac7a7abb714d639a1ee58007\n"
    },
    {
      "commit": "9ee8069046d587a4da2a67feb24ede9e9ea73edf",
      "tree": "6cd909f2caabfa80c8656542d8ac63c3eac5c2bf",
      "parents": [
        "073fffde090f3d68ce997b6f4c376a58d2a9fc40"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Tue Jan 15 16:10:36 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Jan 16 01:11:26 2019 -0800"
      },
      "message": "Build the linker with -D_USING_LIBCXX\n\nThis macro is necessary for using stdatomic.h and \u003catomic\u003e in the same\nlibc++-based program. \u003catomic\u003e is used implicitly by other STL headers,\nand stdatomic.h is used (or will be used) in headers shared with libc.\nlibc only has access to stdatomic.h because it can\u0027t use an STL.\n\nBug: http://b/78026329\nTest: bionic unit tests\nChange-Id: I89b128df08b478287ef4e2867319e74dbcc30d4e\n"
    },
    {
      "commit": "073fffde090f3d68ce997b6f4c376a58d2a9fc40",
      "tree": "0eb622b140e97f3110398129ac3aabe31c8ec6a7",
      "parents": [
        "2e724175acab8f0b9752bb55acb42a4915eb3d01"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Jan 09 15:55:41 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Jan 16 01:11:26 2019 -0800"
      },
      "message": "Provide a stub aeabi.read_tp on other archs\n\nUsing \"#if defined(...)\" inside the test body seems to be the convention.\n\nBug: none\nTest: bionic-unit-tests\nChange-Id: Icb348a1184e630c5e199129bbe2090fd1e490fa5\n"
    },
    {
      "commit": "2e724175acab8f0b9752bb55acb42a4915eb3d01",
      "tree": "f4c143afc2020212bed23f37cba0aaf16ea71a54",
      "parents": [
        "82aea781365f911e29386479a1da24c7664d78b7"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Tue Jan 15 20:33:27 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Wed Jan 16 01:11:26 2019 -0800"
      },
      "message": "Remove TLS_SLOT_TSAN(8)\n\nAs of the switch to clang-r346389c, it has been replaced with\nTLS_SLOT_SANITIZER(6). lld reserves 8 words beyond the TP on arm/arm64, so\nBionic can\u0027t use anything beyond 7.\n\nThe DTV and bionic_tls slots on x86 haven\u0027t been part of a release yet,\nand they should be strictly internal to Bionic anyway, so shift them down.\n\nBug: http://b/78026329\nTest: bionic unit tests\nChange-Id: Ifb3b2d8d85efe1417ee9a10b657b665ec6f2fd3d\n"
    },
    {
      "commit": "ae4d10bf4ab7168ac585f65895c623d027b1e740",
      "tree": "502263e1afa0a6e2ba237549a881e6164ad297f2",
      "parents": [
        "ca305a39e50d92dc572f50f00262b3dbb0dece9d"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Wed Jan 16 13:21:22 2019 +0800"
      },
      "committer": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Wed Jan 16 15:41:33 2019 +0800"
      },
      "message": "Add __attribute__((unused)) to __BIONIC_ERROR_FUNCTION_VISIBILITY\n\nThis commit adds `__attribute__((unused))` to\n`__BIONIC_ERROR_FUNCTION_VISIBILITY`, so that `open()`, `openat()`,\n`snprintf()`, and `sprintf()` don\u0027t raise `-Werror,-Wunused-function`\nwhen `_FORTIFY_SOURCE` is enabled.\n\nThese errors were hidden because the include directories were passed\nwith `-isystem` (instead of `-I`) and clang did not report\n`-Wunused-function` from `-isystem`.\n\nBug: 119086738\nTest: make checkbuild\nChange-Id: I0de71efdbacd90c5c6a419fc0368c92e8efdfd63\n"
    },
    {
      "commit": "b21fc16a22cec7056a5231568e1eac636c115b19",
      "tree": "becbd67ea40cd4bc2ce001227583421096f061a2",
      "parents": [
        "ca305a39e50d92dc572f50f00262b3dbb0dece9d",
        "86a4837a8eef99b2363dbcf1158a56bb203c2745"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Jan 15 20:09:07 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 15 20:09:07 2019 +0000"
      },
      "message": "Merge \"Update to v4.20.1 kernel headers.\""
    },
    {
      "commit": "86a4837a8eef99b2363dbcf1158a56bb203c2745",
      "tree": "becbd67ea40cd4bc2ce001227583421096f061a2",
      "parents": [
        "ca305a39e50d92dc572f50f00262b3dbb0dece9d"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Jan 10 14:14:59 2019 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Jan 15 07:33:14 2019 -0800"
      },
      "message": "Update to v4.20.1 kernel headers.\n\nThis includes one manual change:\n\nIn the file bionic/libc/kernel/uapi/linux/in.h, the macro IN_BADCLASS\nwas not definied correctly. Change the macro from:\n\n  #define IN_BADCLASS(a) ((((long int) (a)) \u003d\u003d 0xffffffff)\n\nto:\n\n  #define IN_BADCLASS(a) (((long int) (a)) \u003d\u003d (long int)0xffffffff)\n\nThis change is being pushed to the upstream kernels.\n\nTest: Builds and boots.\nChange-Id: Ia304773a9dc6789b34d9769d73742384d6afb571\nMerged-In: Ia304773a9dc6789b34d9769d73742384d6afb571\n(cherry picked from commit 967fb01cce73591281e7804e2c0fa9f83b618f5b)\n"
    },
    {
      "commit": "6903fb81e1da87d2123c6f610cd536080190ffd0",
      "tree": "d4513155300f4a848d973b41744dc53aec12ca92",
      "parents": [
        "ca305a39e50d92dc572f50f00262b3dbb0dece9d"
      ],
      "author": {
        "name": "Vic Yang",
        "email": "victoryang@google.com",
        "time": "Mon Jan 14 11:34:39 2019 -0800"
      },
      "committer": {
        "name": "Vic Yang",
        "email": "victoryang@google.com",
        "time": "Mon Jan 14 11:43:41 2019 -0800"
      },
      "message": "libc: Sort symbols by size to reduce dirty pages\n\nBy sorting symbols by size, small symbols are grouped together and we\nusually have less dirty pages at runtime.  On cuttlefish, this results\nin 20KB less dirty pages just after libc is loaded.\n\nBug: 112073665\nTest: Build libc and check symbol ordering.\nTest: Compare runtime private dirty memory usage on cuttlefish.\nChange-Id: Ic8fa996f81adb5a8cbc4b97817d2b94ef0697a2a\n"
    },
    {
      "commit": "ca305a39e50d92dc572f50f00262b3dbb0dece9d",
      "tree": "5010a8cc0a5beede7857940f872e8bf4fec46501",
      "parents": [
        "2242cca714786c1eddee6fe6a9c48142128da3c1",
        "62d8d9fc8fe48e451704ebf889c3ac6109ce9742"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Sun Jan 13 16:22:59 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sun Jan 13 16:22:59 2019 +0000"
      },
      "message": "Merge \"Track movement of ICU .dat file\""
    },
    {
      "commit": "2242cca714786c1eddee6fe6a9c48142128da3c1",
      "tree": "fe566eac57d2354c8b6bf27fc9db698fe57ea6be",
      "parents": [
        "98564b8c743a5fdea7b8bb7c016921f208b9e1bb",
        "45d1349c638426d99a5319e7be3dbb7c36ece7eb"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Sat Jan 12 00:57:12 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jan 12 00:57:12 2019 +0000"
      },
      "message": "Merge changes I65430637,Ib75d9dab\n\n* changes:\n  Reorganize static TLS memory for ELF TLS\n  pthread_key.cpp: factor out get_thread_key_data\n"
    },
    {
      "commit": "45d1349c638426d99a5319e7be3dbb7c36ece7eb",
      "tree": "fe566eac57d2354c8b6bf27fc9db698fe57ea6be",
      "parents": [
        "27d59338b98bba7f33eb223c4f2e1df4c3b96774"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu Jan 03 02:51:30 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Jan 11 15:34:22 2019 -0800"
      },
      "message": "Reorganize static TLS memory for ELF TLS\n\nFor ELF TLS \"local-exec\" accesses, the static linker assumes that an\nexecutable\u0027s TLS segment is located at a statically-known offset from the\nthread pointer (i.e. \"variant 1\" for ARM and \"variant 2\" for x86).\nBecause these layouts are incompatible, Bionic generally needs to allocate\nits TLS slots differently between different architectures.\n\nTo allow per-architecture TLS slots:\n - Replace the TLS_SLOT_xxx enumerators with macros. New ARM slots are\n   generally negative, while new x86 slots are generally positive.\n - Define a bionic_tcb struct that provides two things:\n    - a void* raw_slots_storage[BIONIC_TLS_SLOTS] field\n    - an inline accessor function: void*\u0026 tls_slot(size_t tpindex);\n\nFor ELF TLS, it\u0027s necessary to allocate a temporary TCB (i.e. TLS slots),\nbecause the runtime linker doesn\u0027t know how large the static TLS area is\nuntil after it has loaded all of the initial solibs.\n\nTo accommodate Golang, it\u0027s necessary to allocate the pthread keys at a\nfixed, small, positive offset from the thread pointer.\n\nThis CL moves the pthread keys into bionic_tls, then allocates a single\nmapping per thread that looks like so:\n - stack guard\n - stack [omitted for main thread and with pthread_attr_setstack]\n - static TLS:\n    - bionic_tcb [exec TLS will either precede or succeed the TCB]\n    - bionic_tls [prefixed by the pthread keys]\n    - [solib TLS segments will be placed here]\n - guard page\n\nAs before, if the new mapping includes a stack, the pthread_internal_t\nis allocated on it.\n\nAt startup, Bionic allocates a temporary bionic_tcb object on the stack,\nthen allocates a temporary bionic_tls object using mmap. This mmap is\ndelayed because the linker can\u0027t currently call async_safe_fatal() before\nrelocating itself.\n\nLater, Bionic allocates a stack-less thread mapping for the main thread,\nand copies slots from the temporary TCB to the new TCB.\n(See *::copy_from_bootstrap methods.)\n\nBug: http://b/78026329\nTest: bionic unit tests\nTest: verify that a Golang app still works\nTest: verify that a Golang app crashes if bionic_{tls,tcb} are swapped\nMerged-In: I6543063752f4ec8ef6dc9c7f2a06ce2a18fc5af3\nChange-Id: I6543063752f4ec8ef6dc9c7f2a06ce2a18fc5af3\n(cherry picked from commit 1e660b70da625fcbf1e43dfae09b7b4817fa1660)\n"
    },
    {
      "commit": "27d59338b98bba7f33eb223c4f2e1df4c3b96774",
      "tree": "a2e26b90699a20f5919577a2f5782e661369b5a5",
      "parents": [
        "98564b8c743a5fdea7b8bb7c016921f208b9e1bb"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu Jan 03 02:51:30 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Jan 11 15:33:57 2019 -0800"
      },
      "message": "pthread_key.cpp: factor out get_thread_key_data\n\nThis change makes it easier to move the location of the pthread keys\n(e.g. into the bionic_tls struct).\n\nBug: http://b/78026329\nTest: bionic unit tests\nTest: disassembly of libc.so doesn\u0027t change\nMerged-In: Ib75d9dab8726de96856af91ec3daa2c5cdbc2178\nChange-Id: Ib75d9dab8726de96856af91ec3daa2c5cdbc2178\n(cherry picked from commit ecad24fad97c3fab6ab7820ce204558940203ffb)\n"
    },
    {
      "commit": "98564b8c743a5fdea7b8bb7c016921f208b9e1bb",
      "tree": "a92f91ad3351af94be0387d3644e81f933d695ef",
      "parents": [
        "688028d7a5b9c6ac5f38b216504d0880bbf6d0e9",
        "220f51e5669571aaae66a47a5f29866792359fd7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 11 16:59:15 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 11 16:59:15 2019 +0000"
      },
      "message": "Merge changes from topic \"move_bionic_to_apex\"\n\n* changes:\n  Expose more symbols temporarily\n  Add stubs variants for bionic libs\n"
    },
    {
      "commit": "688028d7a5b9c6ac5f38b216504d0880bbf6d0e9",
      "tree": "866fe7133ad635ea4a746baba16fb9a518b5d3d0",
      "parents": [
        "19f2ed2d1d963a6e1eb4969ab50cc51256046ae1",
        "48fe0aef16faffb01b68d522aa59455b402edc67"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jan 11 06:03:19 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 11 06:03:19 2019 +0000"
      },
      "message": "Merge \"Update kernel headers with new parser.\""
    },
    {
      "commit": "48fe0aef16faffb01b68d522aa59455b402edc67",
      "tree": "866fe7133ad635ea4a746baba16fb9a518b5d3d0",
      "parents": [
        "19f2ed2d1d963a6e1eb4969ab50cc51256046ae1"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Jan 10 15:59:33 2019 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Jan 10 17:33:56 2019 -0800"
      },
      "message": "Update kernel headers with new parser.\n\nTest: Builds.\nChange-Id: I3f0714d53ac893ccc3e66f7a92d0ea7a6737f1c3\n"
    },
    {
      "commit": "19f2ed2d1d963a6e1eb4969ab50cc51256046ae1",
      "tree": "a3725f316644d8bf059aa3515e1b1e0630bd62da",
      "parents": [
        "9dd7d2e640c00d03bced58eb0e4827d96b0afff7",
        "4282833dfc7dde443bf3e0c3d69ff82b05f54a0b"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jan 11 01:31:58 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 11 01:31:58 2019 +0000"
      },
      "message": "Merge \"Fix notice file.\""
    },
    {
      "commit": "4282833dfc7dde443bf3e0c3d69ff82b05f54a0b",
      "tree": "a3725f316644d8bf059aa3515e1b1e0630bd62da",
      "parents": [
        "9dd7d2e640c00d03bced58eb0e4827d96b0afff7"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Jan 10 16:07:44 2019 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Jan 10 16:07:44 2019 -0800"
      },
      "message": "Fix notice file.\n\nThe only 2019 android copyright is coming from a test file, which is\nnot included in our normal notice.\n\nTest: Can upload.\nChange-Id: Ie22332f927b99c28eb71c1daf5615adfef8c5d11\n"
    },
    {
      "commit": "9dd7d2e640c00d03bced58eb0e4827d96b0afff7",
      "tree": "02b20f115dd08ff1c74ea551b3dd908d81ed1b81",
      "parents": [
        "43889f5e2c05cc4c324d3b8fc186077ac02b0170",
        "658b16fd9078882730861cc2c29cb44828989e52"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Jan 10 23:48:36 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 10 23:48:36 2019 +0000"
      },
      "message": "Merge \"Rewrite removeVarsAndFuncs.\""
    },
    {
      "commit": "658b16fd9078882730861cc2c29cb44828989e52",
      "tree": "bff861d3acba602010b5f3043a605f34ad13e1d6",
      "parents": [
        "e7964158cedf37b50e42ab1988e67eb2154c74f2"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Jan 08 14:58:07 2019 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Jan 10 15:15:15 2019 -0800"
      },
      "message": "Rewrite removeVarsAndFuncs.\n\nThe current version has these bugs:\n- Adding a semicolon after a function results in the removal of structures\n  following the function.\n- Function like macros get removed on accident rather than on purpose.\n- It removes extern \"C\" { completely, which might not be a bug, but doesn\u0027t\n  seem right.\n\nI couldn\u0027t easily fix any of these problems because the code depends heavily\non the header being correct.\n\nNew unit tests added for the function to cover all of these cases.\n\nA follow-on CL will include the updated headers.\n\nBug: 112290385\n\nTest: Passes all new unit tests.\nTest: When run on the current kernel headers, the generated headers are\nTest: nearly the same, missing data is being added.\nChange-Id: Ib22a5f2e78873544e8a9d54e385af1156b2a72bb\n"
    },
    {
      "commit": "62d8d9fc8fe48e451704ebf889c3ac6109ce9742",
      "tree": "26aeb76ebc556f75f6da0307315e6eae8e695af6",
      "parents": [
        "43889f5e2c05cc4c324d3b8fc186077ac02b0170"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Tue Dec 11 20:30:00 2018 +0000"
      },
      "committer": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Wed Jan 09 15:27:02 2019 +0000"
      },
      "message": "Track movement of ICU .dat file\n\nTrack movement of ICU .dat file into the runtime module\n\nThis reverts commit b9e7b699a2e22333e4f844e2d37d222f4c5451c5.\nThis is a reapply of commit 68c6bd8b43f03f7d2ffc81d3490a754e21803a30\n\nBug: 120853401\nBug: 119293618\nTest: build / boot\nChange-Id: I69e0dde2756da64ac0b17f1726145dccacf5961f\n"
    },
    {
      "commit": "43889f5e2c05cc4c324d3b8fc186077ac02b0170",
      "tree": "a002729ff0884d15a7335ff54bf06a9edf124ae3",
      "parents": [
        "c14d46f0862a83491801d8b060b786f1b16ff117",
        "466e0ecb88a5cbdd0528ff22e81fa7c028ee9799"
      ],
      "author": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Wed Jan 09 03:20:43 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 09 03:20:43 2019 +0000"
      },
      "message": "Merge \"Remove some PR_SET_VMAs during pthread_create\""
    },
    {
      "commit": "466e0ecb88a5cbdd0528ff22e81fa7c028ee9799",
      "tree": "30b39f313e493754173eabb9667153b53ad9de3c",
      "parents": [
        "5d89fbd207ce5ab09c6ae54193d82b8495c839c5"
      ],
      "author": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Tue Jan 08 11:01:18 2019 -0800"
      },
      "committer": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Tue Jan 08 13:27:41 2019 -0800"
      },
      "message": "Remove some PR_SET_VMAs during pthread_create\n\nPR_SET_VMA takes mmap_sem, which can cause contention and reduce\nperformance any time many threads are created at the same time,\nlike app startup.\n\nTest: camera launch performance\nBug: 122471935\nChange-Id: If7fa7ad99654c01d503f694976fd92bfd30d2afd\n"
    },
    {
      "commit": "c14d46f0862a83491801d8b060b786f1b16ff117",
      "tree": "7dba7a9be86b7cf986d85e7203cdc131cfe81876",
      "parents": [
        "5d89fbd207ce5ab09c6ae54193d82b8495c839c5",
        "45024fefe7507574faa0653b92c04536b36eb6ab"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Tue Jan 08 21:19:01 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 08 21:19:01 2019 +0000"
      },
      "message": "Merge \"Add ARM EABI function __aeabi_read_tp\""
    },
    {
      "commit": "5d89fbd207ce5ab09c6ae54193d82b8495c839c5",
      "tree": "705568822d710e2641d4008067845a64b4575f23",
      "parents": [
        "e7964158cedf37b50e42ab1988e67eb2154c74f2",
        "2e967fcbab846cb21412ab0a72b3bcc6ad0ce482"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Tue Jan 08 10:06:54 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 08 10:06:54 2019 +0000"
      },
      "message": "Merge \"Update the \"host\" bionic code tzdata lookup logic\""
    },
    {
      "commit": "45024fefe7507574faa0653b92c04536b36eb6ab",
      "tree": "40f657c63af98330eee9d1c2236bc7f522ad8b65",
      "parents": [
        "e7964158cedf37b50e42ab1988e67eb2154c74f2"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Sun Dec 30 21:10:26 2018 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Jan 07 20:30:35 2019 -0800"
      },
      "message": "Add ARM EABI function __aeabi_read_tp\n\nBy default, Clang uses this arm32 function to read the thread pointer,\neither for ELF TLS or via __builtin_thread_pointer(). It\u0027s probably better\nto inline the cp15 access using -mtp\u003dcp15, but that\u0027s not the default yet.\n\nSee https://reviews.llvm.org/D34878?id\u003d114573.\n\nBug: http://b/78026329\nTest: bionic unit tests\nChange-Id: I93b8926075f0b2cea8df9ef518d54f2820a8ff5b\n"
    },
    {
      "commit": "2e967fcbab846cb21412ab0a72b3bcc6ad0ce482",
      "tree": "a4181b96bcdf2e64583caa61bdf531d3121b9c9e",
      "parents": [
        "c975355066daf0b3012d236aa4e726b0d3d7e06a"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Fri Dec 14 16:02:07 2018 +0000"
      },
      "committer": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Mon Jan 07 21:08:37 2019 +0000"
      },
      "message": "Update the \"host\" bionic code tzdata lookup logic\n\nThe \"if defined(__ANDROID__)\" else branch is there to support\nbionic when running on host environments.\n\nThe code now checks the\n${ANDROID_RUNTIME_ROOT}/etc/tz/tzdata path as well.\n\nThis is similar to the current on-device expectations.\n\nEventually, we may remove the /system / ANDROID_ROOT cases.\n\nBug: 119293618\nTest: build only\nChange-Id: I8310f7b5a1c14567a648673970c636c7c84ff818\n"
    },
    {
      "commit": "e7964158cedf37b50e42ab1988e67eb2154c74f2",
      "tree": "e68d469568ce8b112569aba525fd4ca5f2d59f69",
      "parents": [
        "c975355066daf0b3012d236aa4e726b0d3d7e06a",
        "6b55cc36d3a74cd96abcc1592362fc8df4576b0a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 07 01:08:36 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 07 01:08:36 2019 +0000"
      },
      "message": "Merge \"dir.${section}: downgrade \"can\u0027t resolve\" diag\""
    },
    {
      "commit": "6b55cc36d3a74cd96abcc1592362fc8df4576b0a",
      "tree": "e68d469568ce8b112569aba525fd4ca5f2d59f69",
      "parents": [
        "c975355066daf0b3012d236aa4e726b0d3d7e06a"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Jan 04 14:58:26 2019 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Jan 04 15:05:44 2019 -0800"
      },
      "message": "dir.${section}: downgrade \"can\u0027t resolve\" diag\n\nWhen parsing a dir.${section} line in ld.config.txt, the linker uses\nrealpath() to resolve each directory path. If realpath() fails, the linker\nuses the non-resolved path instead. Previously, it issued a warning to\nstderr and logcat, but realpath() is expected to fail on /postinstall when\nrunning a binary in /data/local/tmp, so downgrade the warning to an INFO()\nnotice.\n\nBug: http://b/120996057\nTest: copy ping to /data/local/tmp, run it, verify no errors\nTest: bionic unit tests\nChange-Id: I2104084e12ea18840230997408559299bf3bddac\n"
    },
    {
      "commit": "220f51e5669571aaae66a47a5f29866792359fd7",
      "tree": "02b7b20c23f7fe8b7e54511617791be30c5703a5",
      "parents": [
        "c45fe9f7bd49b110f63b5928d00cf33a7b515d04"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Dec 28 23:27:02 2018 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Jan 04 22:29:36 2019 +0900"
      },
      "message": "Expose more symbols temporarily\n\nFollowing additional symbols are temporarily exposed from the runtime APEX\nto satisfy the dependencies from other non-AOSP modules. This will be\nreverted when the modules are built with the boostrap bionic libraries.\n\nBug: 120266448\nTest: m\nChange-Id: I39ac40a40545723ea2aeb185b9cd293d511f802f\n"
    },
    {
      "commit": "c45fe9f7bd49b110f63b5928d00cf33a7b515d04",
      "tree": "71c0df52796a2e3b24e1983897f019101e6bcf3e",
      "parents": [
        "c975355066daf0b3012d236aa4e726b0d3d7e06a"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Thu Dec 13 18:26:48 2018 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Jan 04 22:29:36 2019 +0900"
      },
      "message": "Add stubs variants for bionic libs\n\nBionic libs are part of the runtime APEX (com.android.runtime). In order\nto be able to update the runtime APEX independetly from the platform, we\nhave to prevent things outside of the APEX from using bionic symbols\nthat are not guaranteed to be stable. Otherwise, platform could break\nwhen a symbol is removed from the libs via the APEX update.\n\nTo achive this goal, this change adds stubs variant to the bionic libs.\nWith this, things outside of the runtime APEX (i.e. other APEXes and the\nplatform) are built with the stubs variants that provide only the\nsymbols that are guaranteed to be stable.\n\nThe set of symbols are basically the same as the symbols available to\nNDK clients. However, there are a few additional symbols that are not\navailable for NDK but should be made available for platform components.\nThey are marked with \"# apex\" tag. Symbols with that tag are not exposed\nto apps (via NDK stubs) or vendors (via LLNDK stubs).\n\nNote that the stubs is a build-time only artifact. It is used just to\nbreak the build when private symbols are used outside of the runtime\nAPEX. At runtime, the real library in the APEX is used.\n\nBug: 120266448\nTest: m\nTest: m bionic-unit-tests\nChange-Id: I7b8d75830c81d7d7d54e2fca21a85b3417531b47\n"
    },
    {
      "commit": "c975355066daf0b3012d236aa4e726b0d3d7e06a",
      "tree": "4700ca36208c7fae3bf48ac76290f44fe81fee7f",
      "parents": [
        "d14d83032c5aeaac49d861683b46a8bedea50195",
        "0b0ee0c634a631693c5d8c8f2d2d42f6ff7ccf7f"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Jan 04 03:56:40 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 04 03:56:40 2019 +0000"
      },
      "message": "Merge \"libc_shared_globals: add a constexpr ctor\""
    },
    {
      "commit": "0b0ee0c634a631693c5d8c8f2d2d42f6ff7ccf7f",
      "tree": "4700ca36208c7fae3bf48ac76290f44fe81fee7f",
      "parents": [
        "d14d83032c5aeaac49d861683b46a8bedea50195"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Fri Dec 14 17:34:05 2018 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Thu Jan 03 17:11:27 2019 -0800"
      },
      "message": "libc_shared_globals: add a constexpr ctor\n\nHaving a constexpr constructor should guarantee that the static\n`globals` variable in __libc_shared_globals is initialized statically\n(as opposed to dynamically), which is important because\n__libc_shared_globals is called very early (before the linker has\nrelocated itself). With the constructor, though, the fields can safely\nhave in-line default initializers.\n\nBug: none\nTest: bionic unit tests\nChange-Id: Icde821557369625734a4d85d7ff55428bad5c247\n"
    },
    {
      "commit": "d14d83032c5aeaac49d861683b46a8bedea50195",
      "tree": "6ad9296b5373effbb36bc655d837b78925aac0bc",
      "parents": [
        "82d4bae5d47512de18601131bcbd0da8fafe6905",
        "ecb95b8a15d3d49fe55614b0ffdd044a60e8d48e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 03 00:55:06 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 03 00:55:06 2019 +0000"
      },
      "message": "Merge \"Check return value of scandir in icu.cpp\""
    }
  ],
  "next": "82d4bae5d47512de18601131bcbd0da8fafe6905"
}
