)]}'
{
  "log": [
    {
      "commit": "d04672513351af4eb302692e0f39fd5bd17191cb",
      "tree": "0ea1cef08bcfedafa705e3374863d51ec69080e1",
      "parents": [
        "5ffedb22c856ae5731324b43832ab3f5309683f2",
        "4ad72f89b12fe0157074a253190f6aa2cbfe15ac"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Mar 31 14:19:51 2010 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Mar 31 14:19:51 2010 -0700"
      },
      "message": "merge from open-source master\n\nChange-Id: I483fedf77d978b1c6e52d73eebc14f011bb9f809\n"
    },
    {
      "commit": "3cab22c8cf0dcf30718a1452ce9cbb637876cea3",
      "tree": "119a7ffa38d392147813a75a6af3247dd688917a",
      "parents": [
        "58f0326362ca0f5fc17cbc19fd9217cabf0d93dd"
      ],
      "author": {
        "name": "Min-su, Kim",
        "email": "min-su.kim@windriver.com",
        "time": "Tue Jan 19 10:05:33 2010 +0900"
      },
      "committer": {
        "name": "Bruce Beare",
        "email": "brucex.j.beare@intel.com",
        "time": "Mon Mar 29 15:43:09 2010 -0700"
      },
      "message": "linker: fix the undefined weak symbols issue\n"
    },
    {
      "commit": "377d4c979dee3dcb5929e8f7a68a53c2407259ab",
      "tree": "1783fe0272f1437faabfe8365e615696eb8d374c",
      "parents": [
        "709a898de82128c065381e258e8e71f0a55df976",
        "1825fb5d5f214849e39d95660795a0d3633f8eeb"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Mar 22 15:55:09 2010 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Mar 22 15:55:09 2010 -0700"
      },
      "message": "merge from open-source master\n\nChange-Id: I70266ee8c520b216773f267e46c8273d2334c31d\n"
    },
    {
      "commit": "e2a8b1fd19fb3a8ead2ba28ddba27be19fa978b5",
      "tree": "e5448ec45187a37dbade76fcf10115f91135a8bd",
      "parents": [
        "ede2e75f4942293342dfb8dfd4751369600ed8f1"
      ],
      "author": {
        "name": "Matt Fischer",
        "email": "matt.fischer@garmin.com",
        "time": "Thu Dec 31 12:17:40 2009 -0600"
      },
      "committer": {
        "name": "Garmin Android technology group",
        "email": "android@garmin.com",
        "time": "Wed Mar 17 16:11:37 2010 -0500"
      },
      "message": "Added support for dladdr()\n\ndladdr() is a GNU extension function, which allows the caller to retrieve\nsymbol information for a specified memory address.  It is useful for things\nlike generating backtrace information at runtime.\n\nChange-Id: I3a1def1a6c9c666d93e1e97b7d260dfa5b9b79a9\n"
    },
    {
      "commit": "5c734644eebf8d01be1e86cbe20a111a5c5a2738",
      "tree": "5e442dc0157ec487f51a65f85f87fe2bd66fd0cf",
      "parents": [
        "e100f52f4ad1b70762bbcc5ad9828bd258917ee5"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jan 20 12:36:51 2010 -0800"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Feb 11 10:46:48 2010 -0800"
      },
      "message": "Fix debug output in the dynamic linker.\n\nThis provides a mini-printf implementation that reduces the\nsize of the dynamic linker by 25 KB, by preventing the drag of\nformatting-related routines from the C library.\n\nAlso allow traces to be sent to the log, instead of stdout.\n\nNOTE: You now need to modify Android.mk to enable/disable debug\n      output.\n"
    },
    {
      "commit": "e100f52f4ad1b70762bbcc5ad9828bd258917ee5",
      "tree": "084f45cde2c5f3650370130e37a063af2ed1b968",
      "parents": [
        "16f7d16f9f0273bed58f5e8c74eb0ee11eaa8037"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Wed Feb 10 15:19:37 2010 -0800"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Wed Feb 10 19:14:35 2010 -0800"
      },
      "message": "bionic/linker: rename ba_prelink to ba_nonprelink\n\n-- fixes b/2432550\n-- ba_prelink is used to manage non-prelinked libraries, hence ba_nonprelink is\n   a more appropriate name for it\n\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "a3de55c83185ba3d1355f20b48ef9ec3fc4c281d",
      "tree": "646efa88e98233342cc102298b8dcb64606c569d",
      "parents": [
        "157cdf42d7e2cded9a4461fd105b98b2db1a13ac",
        "fe62de1ad036a1417df44b7b1a7c65cc79dc7091"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Dec 02 11:17:29 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Dec 02 11:17:29 2009 -0800"
      },
      "message": "am fe62de1a: Add support for R_ARM_REL32 to the dynamic linker.\n\nMerge commit \u0027fe62de1ad036a1417df44b7b1a7c65cc79dc7091\u0027 into eclair-plus-aosp\n\n* commit \u0027fe62de1ad036a1417df44b7b1a7c65cc79dc7091\u0027:\n  Add support for R_ARM_REL32 to the dynamic linker.\n"
    },
    {
      "commit": "fe62de1ad036a1417df44b7b1a7c65cc79dc7091",
      "tree": "0c55fda658ee39f7f64ead6ec98a690379a8fe42",
      "parents": [
        "cd5df2d92c3adeac41e27aab5ba0f999c753c4c4"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Dec 02 10:54:53 2009 -0800"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Dec 02 10:54:53 2009 -0800"
      },
      "message": "Add support for R_ARM_REL32 to the dynamic linker.\n\nMerged from eclair-mr2\n"
    },
    {
      "commit": "83d3d7491a2d3870efd8d5be9281ee942f5fad07",
      "tree": "9a82b536c53a2d45e6f23aa827b3bd1822cc502b",
      "parents": [
        "0493b61c1a23cbcf0edb4667ff84ab0152327cb2",
        "ebf3ea006e5367fff93d2491eec24c4b1a633805"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Nov 17 16:16:52 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 17 16:16:52 2009 -0800"
      },
      "message": "am ebf3ea00: am 34ea5117: Add support for R_ARM_REL32 to the dynamic linker.\n\nMerge commit \u0027ebf3ea006e5367fff93d2491eec24c4b1a633805\u0027\n\n* commit \u0027ebf3ea006e5367fff93d2491eec24c4b1a633805\u0027:\n  Add support for R_ARM_REL32 to the dynamic linker.\n"
    },
    {
      "commit": "ebf3ea006e5367fff93d2491eec24c4b1a633805",
      "tree": "e7e84eed54db64bd5a48b153f0c5174583782230",
      "parents": [
        "a7f8f312e0791509b2382f90861fe9f373bd4f0b",
        "34ea5117dbeba41ae5dfdfb2c2ec8cae23388b66"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Nov 17 16:06:26 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 17 16:06:26 2009 -0800"
      },
      "message": "am 34ea5117: Add support for R_ARM_REL32 to the dynamic linker.\n\nMerge commit \u002734ea5117dbeba41ae5dfdfb2c2ec8cae23388b66\u0027 into eclair-mr2-plus-aosp\n\n* commit \u002734ea5117dbeba41ae5dfdfb2c2ec8cae23388b66\u0027:\n  Add support for R_ARM_REL32 to the dynamic linker.\n"
    },
    {
      "commit": "34ea5117dbeba41ae5dfdfb2c2ec8cae23388b66",
      "tree": "aea1d56c13025d3961830eb6fb698d1419f3e06f",
      "parents": [
        "e8870ffc965d553a885f63b26e724da279728b72"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Nov 17 14:56:26 2009 -0800"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Nov 17 14:56:26 2009 -0800"
      },
      "message": "Add support for R_ARM_REL32 to the dynamic linker.\n"
    },
    {
      "commit": "b152dde4cafffb3b37ca60c589f71110ca988c79",
      "tree": "7b871a83d4a01c87c58bb62bccb67ea5d2b10af3",
      "parents": [
        "2d04a7847747a3f9b7ad36988486ef775cae1965",
        "83362689f5b1f6393d376d242fe29541b63ead2d"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Nov 09 12:07:54 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 09 12:07:54 2009 -0800"
      },
      "message": "am 83362689: merge from open-source master\n\nMerge commit \u002783362689f5b1f6393d376d242fe29541b63ead2d\u0027\n\n* commit \u002783362689f5b1f6393d376d242fe29541b63ead2d\u0027:\n  added and modified linker to support SuperH architecture\n  Add the BSD sys_signame array.\n  added and modified bionic code to support SuperH architecture\n"
    },
    {
      "commit": "83362689f5b1f6393d376d242fe29541b63ead2d",
      "tree": "729a4fc7fd44630738510d1477e968cb7ec0fa3f",
      "parents": [
        "ecac54db21256952b4b4a9c6f17604ec31743183",
        "ad13c57298e57d33c130fb03a2c6494da573408c"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Nov 09 08:04:48 2009 -0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Nov 09 08:04:48 2009 -0800"
      },
      "message": "merge from open-source master\n"
    },
    {
      "commit": "10be95cffc7f2b02d8baac55a9cf1b16d8afbadb",
      "tree": "372359d357eb01bd7c3160cb20339c20c317804f",
      "parents": [
        "47c5e30b61bad28731e4acff2d690a4207801f27",
        "ad13c57298e57d33c130fb03a2c6494da573408c"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sun Nov 08 16:09:17 2009 -0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sun Nov 08 16:09:17 2009 -0800"
      },
      "message": "merge from open-source master\n"
    },
    {
      "commit": "ad13c57298e57d33c130fb03a2c6494da573408c",
      "tree": "9c3977ff3a5ffdd64e333ebd198717e0aee99bba",
      "parents": [
        "92b10af793da235659198cf38ff2e0237c181058"
      ],
      "author": {
        "name": "Shin-ichiro KAWASAKI",
        "email": "shinichiro.kawasaki.mg@hitachi.com",
        "time": "Fri Nov 06 10:36:37 2009 +0900"
      },
      "committer": {
        "name": "Tony Sim",
        "email": "sim.chinyeow@renesas.com",
        "time": "Fri Nov 06 10:36:37 2009 +0900"
      },
      "message": "added and modified linker to support SuperH architecture\n"
    },
    {
      "commit": "e823807dc2fb5f2d44cd00d75c10ddd9f5e93bea",
      "tree": "006f003f90243f149adc3ea65788e6a585352083",
      "parents": [
        "f1729553e310b55eef8ee784c95cd9dd8ffd24fd"
      ],
      "author": {
        "name": "Doug Kwan",
        "email": "dougkwan@google.com",
        "time": "Mon Oct 26 12:05:23 2009 -0700"
      },
      "committer": {
        "name": "Doug Kwan",
        "email": "dougkwan@google.com",
        "time": "Mon Oct 26 12:05:23 2009 -0700"
      },
      "message": "Add weak symbol support.  Also fix a bug caused by a typo.\n"
    },
    {
      "commit": "f1729553e310b55eef8ee784c95cd9dd8ffd24fd",
      "tree": "28887d23e21d7933e8af752973cb68bc8a11ee6f",
      "parents": [
        "943043583a8f3a8de34970b550a3e8e8a6fb0fb8",
        "9e78de3e3c90ec3c2970431d8eae7378fdc0dac6"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Fri Oct 23 18:58:19 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 23 18:58:19 2009 -0700"
      },
      "message": "am 9e78de3e: am 70bba516: am 763ac283: Merge changes Ibcba4b4f,I9af341e1 into eclair\n\nMerge commit \u00279e78de3e3c90ec3c2970431d8eae7378fdc0dac6\u0027\n\n* commit \u00279e78de3e3c90ec3c2970431d8eae7378fdc0dac6\u0027:\n  bionic/linker: make the buddy allocator compute max_order on its own\n  bionic/linker: change the buddy allocator to take a handle to the managed area\n"
    },
    {
      "commit": "9e78de3e3c90ec3c2970431d8eae7378fdc0dac6",
      "tree": "b1f655666740f367cac99df6748d543e6f09dc35",
      "parents": [
        "05324b36c1372cba6348ad5c75a96b3adfc4d9fe",
        "70bba5160f83ecd6251c4539f747ae39e9ed469c"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Fri Oct 23 18:49:14 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 23 18:49:14 2009 -0700"
      },
      "message": "am 70bba516: am 763ac283: Merge changes Ibcba4b4f,I9af341e1 into eclair\n\nMerge commit \u002770bba5160f83ecd6251c4539f747ae39e9ed469c\u0027 into eclair-mr2-plus-aosp\n\n* commit \u002770bba5160f83ecd6251c4539f747ae39e9ed469c\u0027:\n  bionic/linker: make the buddy allocator compute max_order on its own\n  bionic/linker: change the buddy allocator to take a handle to the managed area\n"
    },
    {
      "commit": "53b32f8b7ef0ae319cc048ce1f0a81a4be8bce64",
      "tree": "fb106097c697cd46ebac8f1e892b61a243487546",
      "parents": [
        "0703efeae25523e8f870cbf70f57b9ecc1186ac7",
        "763ac28357f604e0e4196e0a7ad5b0f5cdcf274a"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Fri Oct 23 18:39:30 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 23 18:39:30 2009 -0700"
      },
      "message": "am 763ac283: Merge changes Ibcba4b4f,I9af341e1 into eclair\n\nMerge commit \u0027763ac28357f604e0e4196e0a7ad5b0f5cdcf274a\u0027 into eclair-plus-aosp\n\n* commit \u0027763ac28357f604e0e4196e0a7ad5b0f5cdcf274a\u0027:\n  bionic/linker: make the buddy allocator compute max_order on its own\n  bionic/linker: change the buddy allocator to take a handle to the managed area\n"
    },
    {
      "commit": "943043583a8f3a8de34970b550a3e8e8a6fb0fb8",
      "tree": "a7dba5c8a0d6d531005dc0d75e07048327a513f1",
      "parents": [
        "a6210dc5105d5e4c4924a36efebd2d1a524cf3e0"
      ],
      "author": {
        "name": "Doug Kwan",
        "email": "dougkwan@google.com",
        "time": "Fri Oct 23 18:11:40 2009 -0700"
      },
      "committer": {
        "name": "Doug Kwan",
        "email": "dougkwan@google.com",
        "time": "Fri Oct 23 18:11:40 2009 -0700"
      },
      "message": "Clean up some linker code.\n"
    },
    {
      "commit": "bb9eedeff4ddc4550991eb4511003bda8672d6c4",
      "tree": "8d3769c0545e031410ba3fa16394a3057016efb8",
      "parents": [
        "af7315acf6a3a5ac329b04cb543b5d8a95dc26f1"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Oct 19 14:25:17 2009 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Oct 19 18:10:35 2009 -0700"
      },
      "message": "bionic/linker: make the buddy allocator compute max_order on its own\n\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "af7315acf6a3a5ac329b04cb543b5d8a95dc26f1",
      "tree": "4a948c38f280ca63a66e06af4f5ea3731775b603",
      "parents": [
        "7e7d6c48a064af82f0ec39f47b9eb803a6e1df4c"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Fri Oct 16 17:50:42 2009 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Oct 19 18:10:35 2009 -0700"
      },
      "message": "bionic/linker: change the buddy allocator to take a handle to the managed area\n\n-- rename struct ba_info to struct ba\n-- move the static ba descriptor from ba.c to linker.c and rename it ba_prelink\n-- ba_init, ba_allocate, ba_free, ba_start_addr, and ba_len all take a pointer\n   to struct ba\n\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "5d436ddcae640e2b2af30a5654bec33273b7a9c3",
      "tree": "790abda1151b91710b6ae7d85396055854cae337",
      "parents": [
        "b63e4e88b0d13afa431864190b3515a549c16d85",
        "8213d5c3c072b23f5cc1922d232efe7338091d9b"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Oct 16 12:46:51 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 16 12:46:51 2009 -0700"
      },
      "message": "am 8213d5c3: am ff7b46b8: Merge change I3c998761 into eclair\n\nMerge commit \u00278213d5c3c072b23f5cc1922d232efe7338091d9b\u0027 into eclair-mr2-plus-aosp\n\n* commit \u00278213d5c3c072b23f5cc1922d232efe7338091d9b\u0027:\n  Allow the dynamic linker to relocate references to thumb symbols in NDK libraries.\n"
    },
    {
      "commit": "cd230988286eb6aa395e051345052773f1943294",
      "tree": "85d4905b542cc668d66f689d2390bd296f888153",
      "parents": [
        "73981476a389847e8537cca37503c43e107fadc9",
        "ff7b46b87c4d85881d88c2105a94be6c6accb628"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Oct 16 12:36:27 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 16 12:36:27 2009 -0700"
      },
      "message": "am ff7b46b8: Merge change I3c998761 into eclair\n\nMerge commit \u0027ff7b46b87c4d85881d88c2105a94be6c6accb628\u0027 into eclair-plus-aosp\n\n* commit \u0027ff7b46b87c4d85881d88c2105a94be6c6accb628\u0027:\n  Allow the dynamic linker to relocate references to thumb symbols in NDK libraries.\n"
    },
    {
      "commit": "73981476a389847e8537cca37503c43e107fadc9",
      "tree": "a60ed9cc386c36ef6937974e0a729c5d429c57b5",
      "parents": [
        "60c221ccfaf67bdd9cadfd151d0bad9d3f8482ce",
        "4e30c09e57a0351daff70f6657794569445be21c"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Oct 14 08:18:23 2009 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Oct 14 08:18:23 2009 -0700"
      },
      "message": "merge from open-source master\n"
    },
    {
      "commit": "3c99876116356cae09231189f09e5a679fd0d2fd",
      "tree": "d02eb77976ec9143a153546f78b0dcac93f036ae",
      "parents": [
        "9a96aaa8efcde245ac4ba23228b8a8d61e008d91"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Oct 13 16:55:18 2009 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Oct 13 16:55:18 2009 -0700"
      },
      "message": "Allow the dynamic linker to relocate references to thumb symbols in NDK libraries.\n\nThe lowest bit of the symbol\u0027s value should be ignored when looking at UNDEF symbols\nfor correctness. It is used as an ARM/Thumb flag by the linker.\n"
    },
    {
      "commit": "4a9afcb10151b083cd2d75253385615f459172ed",
      "tree": "8879a1126fce0aa369e13b8db7b8dae0290145ae",
      "parents": [
        "9ea64da6c511e8f9f4edae4c10c20879957631ab"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Tue Sep 29 11:43:20 2009 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Tue Sep 29 14:33:46 2009 -0700"
      },
      "message": "bionic/linker: allow resolving of symbols from library back to executable\n\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "9ea64da6c511e8f9f4edae4c10c20879957631ab",
      "tree": "11adf7525e859f87f980f7836936c30570213446",
      "parents": [
        "6ed80c8814db9eed1fb687be22322e38dc46a2fb"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Sep 28 18:21:30 2009 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Tue Sep 29 14:33:46 2009 -0700"
      },
      "message": "bionic/linker: change lookup() to return soinfo, not base\n"
    },
    {
      "commit": "6ed80c8814db9eed1fb687be22322e38dc46a2fb",
      "tree": "372d444d6f7cba193fdc41ed2fbdf95a0682adc8",
      "parents": [
        "ee223d02d96815c989b62043ff1237b1cd4e14b0"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Sep 28 19:38:04 2009 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Tue Sep 29 14:33:46 2009 -0700"
      },
      "message": "Revert \"Revert \"bionic/linker: fix symbol lookup during relocations\"\"\n\nThis reverts commit 33acbf0719c4f3db059bc9e1f52cf554a5d0295f.\n"
    },
    {
      "commit": "33acbf0719c4f3db059bc9e1f52cf554a5d0295f",
      "tree": "914ca013c2b4979b97c639c301a70c41a4785a4a",
      "parents": [
        "4e5a965d6a4c4a0c7977cc9b90755027130c1e46"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Sep 27 22:04:15 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Sep 27 22:04:15 2009 -0700"
      },
      "message": "Revert \"bionic/linker: fix symbol lookup during relocations\"\n\nThis reverts commit 8d0c0334f1106d36f2fd5c1cf6d5dc75a4b88850.\n"
    },
    {
      "commit": "8d0c0334f1106d36f2fd5c1cf6d5dc75a4b88850",
      "tree": "4f0b57fa3743ec253faac9ced5e4d9586920a633",
      "parents": [
        "bc10cd2900cdb7fed077163b6a33e0f8572b2b19"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Thu Sep 24 17:14:33 2009 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Sun Sep 27 17:18:06 2009 -0700"
      },
      "message": "bionic/linker: fix symbol lookup during relocations\n\nWhen resolving relocations while loading a library, the linker used to find\nsymbols by looking them up in the list of all linked libraries for the current\nprocess, as opposed to following just the library\u0027s DT_NEEDED entries.  This\ncan cause a problem where the symbol is picked up from the wrong library.\n\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "5cf640c926e7d7b79934c97226433a3dc448e1eb",
      "tree": "f4346697a0b0028d23b0f021af7da201ddf1660f",
      "parents": [
        "76ec6891e2bc18c9e12cd2f567358bb817b24cff"
      ],
      "author": {
        "name": "Thinker K.F Li",
        "email": "thinker@branda.to",
        "time": "Fri Jul 03 19:40:32 2009 +0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Sep 15 17:05:55 2009 -0700"
      },
      "message": "Fill l_ld of linkmaps with value from soinfo::dynamic.\n\nGDB will try to read l_ld of linkmaps and compare the value to vma of\n.dynamic sections from shared objects.  Since linker does not assign l_ld,\nGDB will complain about and re-compute l_addr from l_ld.  And, GDB will get a\nwrong value.\n"
    },
    {
      "commit": "30eb40241c612a7ddbd21c4daa4e7bbfd9d5e89f",
      "tree": "12f9c24ab25aa130fe55b9a64b6139e8346343eb",
      "parents": [
        "ac68b70ed95db959274106d268deca1d303fa15c"
      ],
      "author": {
        "name": "Erik Gilling",
        "email": "konkers@android.com",
        "time": "Thu Aug 13 16:05:30 2009 -0700"
      },
      "committer": {
        "name": "Erik Gilling",
        "email": "konkers@android.com",
        "time": "Thu Aug 13 16:18:07 2009 -0700"
      },
      "message": "bionic: linker: add error message if link failed due to previous error\n\nSigned-off-by: Erik Gilling \u003ckonkers@android.com\u003e\n"
    },
    {
      "commit": "fde8642fc43bdd224e43e5ee9583a49a758fb03c",
      "tree": "0c722ced21166d5b6a79cc7c0aa14d073934bdd4",
      "parents": [
        "22b5eb858dcbb537f2522ad920ca793348d574a2"
      ],
      "author": {
        "name": "Erik Gilling",
        "email": "konkers@android.com",
        "time": "Tue Jul 28 20:28:19 2009 -0700"
      },
      "committer": {
        "name": "Erik Gilling",
        "email": "konkers@android.com",
        "time": "Tue Jul 28 20:36:47 2009 -0700"
      },
      "message": "bionic/linker: keep track of opened libraries by basename\n\nPrior to this change, the dynamic loader kept track of opened libraries\neither by their base name (i.e., libfoo.so instead of /system/lib/libfoo.so)\nwhen the shared library was loaded through the DT_NEEDED tag in an ELF header,\nor by whatever name was passed to dlopen(). This created a number of problems,\namong which:\n\n1. dlopen(\"libfoo.so\") and dlopen(\"/path/to/libfoo.so\") would open the same\nlibrary twice;\n2. dlopen(\"/path/to/libfoo.so\") and then dlopen(\"libbar.so\"), where libbar.so\ndepends on libfoo.so, would open libfoo.so twice.\n\nThis patch makes the dynamic loader keep track of each loaded library by\nbasename, which resolves the above ambiguity. The patch also enforces\nlibrary lookup by base name, which means that it will refuse to load another\nlibrary that has the same name.\n\nThanks for the inspiration Iliyan.\n\nSigned-off-by: Erik Gilling \u003ckonkers@android.com\u003e\nCc: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "d00d23a9d4598108d7f498291b35c7730e48cf5c",
      "tree": "1655df6502c82285d5c850c19becead637b10fb9",
      "parents": [
        "39f3745cf30efe38482ffead1c32f4e62f6fe32e"
      ],
      "author": {
        "name": "Erik Gilling",
        "email": "konkers@android.com",
        "time": "Wed Jul 22 17:06:11 2009 -0700"
      },
      "committer": {
        "name": "Erik Gilling",
        "email": "konkers@android.com",
        "time": "Wed Jul 22 17:10:39 2009 -0700"
      },
      "message": "linker: remove newlines from DL_ERR so that dlerror works correctly\n\nSigned-off-by: Erik Gilling \u003ckonkers@android.com\u003e\n"
    },
    {
      "commit": "ef0bd1857041ffde069cf52138aaf22c1af7130e",
      "tree": "c61b6ca4b286821ff473533183eba42e7da234a3",
      "parents": [
        "348065586a2e6154d6cff36afa6e00af6bbc5918"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jul 17 17:55:01 2009 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jul 17 17:55:01 2009 +0200"
      },
      "message": "Pass the elfdata pointer in a slot of the temporary TLS area.\n\nThis is needed to properly initialize the C runtime when libc.so\nis loaded by the dynamic linker.\n\nMove the temporary TLS setup before the first system call, just\nin case something really horrible happens, we won\u0027t crash when\ntrying to write an error code in \u0027errno\u0027\n\nRemove the broken TLS_SLOT_THREAD_ID setup. First, this slot\nshould normally receive the address of a pthread_internal_t,\nnot a kernel thread identifier. Second, it is never used by\nthe linker anyway.\n\nAlso remove an obsolete comment.\n"
    },
    {
      "commit": "bc3a5c26f1b9cf29da6abfc3e197258ef4c03362",
      "tree": "5044c0ebf690e102eef4842d94e81a8d8baf6388",
      "parents": [
        "0353195f344666256dba474a15c9ba22cf0cccc9"
      ],
      "author": {
        "name": "David Bartley",
        "email": "dtb@google.com",
        "time": "Tue Jun 02 18:27:28 2009 -0700"
      },
      "committer": {
        "name": "David Bartley",
        "email": "dtb@google.com",
        "time": "Mon Jun 15 21:36:03 2009 -0700"
      },
      "message": "Add LD_LIBRARY_PATH support to bionic\u0027s linker\n"
    },
    {
      "commit": "0353195f344666256dba474a15c9ba22cf0cccc9",
      "tree": "79ce08ac573c6c5bd7d7a65f7fdc24237c00452a",
      "parents": [
        "2e85579c34047c305caf15fb0ebe02bf3d001d0e"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Fri May 29 17:30:25 2009 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Mon Jun 01 12:55:48 2009 -0700"
      },
      "message": "linker: Give more context for failures during library dependency resolution.\n\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "2e85579c34047c305caf15fb0ebe02bf3d001d0e",
      "tree": "0fb54231b64d077f94b567acfbae3ecaaec672bc",
      "parents": [
        "49e55332784b82f7112ee7c1ea3c176c9dc32d7a"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Wed May 20 18:28:09 2009 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Wed May 27 20:16:19 2009 -0700"
      },
      "message": "linker: Make the errors reported by dlopen/dlsym be more useful.\n\nChanged it so that when the linker generates error messages, they are\nscribbled away into a buffer that dlfcn and friends can read from.\n\nSince the error messages are generetad with snprintf, and snprintf\nMAY call malloc during some code paths, we now link against a version\nof libc that does not contain malloc/free/realloc/calloc. We then define\nmalloc and friends in the dynamic loader, and make them abort() if they\nare ever called.\n\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "8215679b355efe3829bab571bd566dc818ea4ccc",
      "tree": "2f69e2ec0c696c19668f8f05ec91b50ad24ebecd",
      "parents": [
        "e5446feb21a991426fb683d077a1a8ca5831ac0f"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon May 18 14:37:41 2009 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue May 26 11:16:28 2009 +0200"
      },
      "message": "Fix the parsing of the .fini_array in the dynamic linker (it should happen in reverse order).\nAlso add a small design overview document for the linker. The latter contains details on\nhow the initialization/finalization is supposed to work.\n"
    },
    {
      "commit": "d1b40d8c69dfca94185ea9231f6cb16f70c02e39",
      "tree": "51044c6b31d8fc43a588c5350ca966d3bccf4ba7",
      "parents": [
        "5e563700380eade647f347669ea61dbb0ede9814"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Tue May 12 10:59:09 2009 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Tue May 12 10:59:09 2009 -0700"
      },
      "message": "linker: Compute symbol name before lookup so we can also use it for error msg\n\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "ba52b3092f361580a5dea7ab8fbe2a227b55ee43",
      "tree": "471f6de66b75e1659a425a5c6b136fae9763a290",
      "parents": [
        "d2c9dcc9265e66f6432ec39dcc7378b944449e60"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Apr 30 20:37:36 2009 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Apr 30 20:37:36 2009 -0700"
      },
      "message": "Increase the limit of loaded shared libraries from 64 to 96 This change is required for OpenCORE 2.0\nThis is the same as Change 71 in master branch.\n"
    },
    {
      "commit": "5e12d7ec70472659623d2e4552a670d8877f2423",
      "tree": "74046e2007c6720be54a9224cfe4510db4c92be2",
      "parents": [
        "78bf5fc677a2d25d50598b01781eafacdb5e6afe"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "",
        "time": "Tue Mar 24 19:02:00 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 24 19:02:00 2009 -0700"
      },
      "message": "Automated import from //branches/donutburger/...@140950,140950\n"
    },
    {
      "commit": "1dc9e472e19acfe6dc7f41e429236e7eef7ceda1",
      "tree": "3be0c520fae17689bbf5584e1136fb820caef26f",
      "parents": [
        "1767f908af327fa388b1c66883760ad851267013"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:28:35 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:28:35 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "1767f908af327fa388b1c66883760ad851267013",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [
        "a799b53f10e5a6fd51fef4436cfb7ec99836a516"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:13 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:13 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "a799b53f10e5a6fd51fef4436cfb7ec99836a516",
      "tree": "9f06bfedddae069d0388739f5f2779472da5dc7f",
      "parents": [
        "fe5745033a4f397c62a4e00efd9257ac9f83755c"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 14:03:51 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 14:03:51 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@132589\n"
    },
    {
      "commit": "fe5745033a4f397c62a4e00efd9257ac9f83755c",
      "tree": "3be0c520fae17689bbf5584e1136fb820caef26f",
      "parents": [
        "7d9dcdc82a871926e5e3a27143908fa3f4181b5f"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Mar 02 22:54:14 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Mar 02 22:54:14 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@137055\n"
    },
    {
      "commit": "6f04a0f4c72acff80dad04828cb69ef67fa609d1",
      "tree": "915db7d93cb742f72b5d3819e69f48cb29c40a15",
      "parents": [
        "2489551343aa89fc539f369f7689c941b78c08d1"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Feb 19 10:57:29 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Feb 19 10:57:29 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@132276\n"
    },
    {
      "commit": "9f65adf2ba3bb15feb8b7a7b3eef788df3fd270e",
      "tree": "c06064fc9022ef63a40f83a91292103784f49780",
      "parents": [
        "d37527501c85edcb3a6a7c8a0b6297d52d434897"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Feb 10 15:43:56 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Feb 10 15:43:56 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@130745\n"
    },
    {
      "commit": "e5cc1f386b167b9f7bfdebc7219e89aa9b71e4b2",
      "tree": "2cbd43daa6744ed80e833528f8cbfc0c485e5253",
      "parents": [
        "6d6c82c7a0a6b9a89f61b61c66f9b90d9c7177dc"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jan 15 16:12:07 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jan 15 16:12:07 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@126645\n"
    },
    {
      "commit": "4e468ed2eb86a2406e14f1eca82072ee501d05fd",
      "tree": "4e05b3c66eef86531e464521a3bf96a1864d4bf5",
      "parents": [
        "a27d2baa0c1a2ec70f47ea9199b1dd6762c8a349"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Dec 17 18:03:48 2008 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Dec 17 18:03:48 2008 -0800"
      },
      "message": "Code drop from //branches/cupcake/...@124589\n"
    },
    {
      "commit": "a27d2baa0c1a2ec70f47ea9199b1dd6762c8a349",
      "tree": "defd1cc07d16ad2f3b21154114e092d11c94c5bb",
      "parents": [],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "message": "Initial Contribution\n"
    }
  ]
}
