)]}'
{
  "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",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0c1af9dd25426f322f275121d0a0c869cfcb4a76",
      "old_mode": 33188,
      "old_path": "linker/linker.c",
      "new_id": "789a82840ea5c78739bf75c53030cffe8abe2570",
      "new_mode": 33188,
      "new_path": "linker/linker.c"
    }
  ]
}
