)]}'
{
  "commit": "c77d5ade84b7e09fec2a2f4f1e339385238b4c28",
  "tree": "f05ea7242da71d5d60137158e00b01da9ba27bb4",
  "parents": [
    "336778acc2841670ff439ac07c47bedd1902af1f"
  ],
  "author": {
    "name": "Barret Rhoden",
    "email": "brho@cs.berkeley.edu",
    "time": "Fri Aug 18 15:53:37 2017 -0400"
  },
  "committer": {
    "name": "Barret Rhoden",
    "email": "brho@cs.berkeley.edu",
    "time": "Tue Aug 22 16:13:50 2017 -0400"
  },
  "message": "parlib: Fix fake parlib detection for dlopen() (XCC)\n\nThis goes back to commit 2d0747b5a1f4 (\"parlib: Don\u0027t run ctors in \"fake\nparlib\"\").\n\nThat commit worked if the library was loaded first, as is the case with\ne.g. libelf.so.  However, if the library was loaded after the binary, it\nmight see the program binary\u0027s _start, and rightly notice it differs from\n__fake_start.  To make matters worse, whether or not the library\u0027s _start\nwas overloaded depended on whether or not the binary accessed it.  It\u0027s a\nmess that I never fully tracked down.\n\nThe current version does the trick, at least as long as we keep the binary\nmapped below our anonymous mmaps.\n\nIf you\u0027re paranoid, rebuild the world, though that\u0027s probably unnecessary.\nAt least do this:\n\n$ make install-libs\n$ make apps-install\n\nAnd then build any other shared libs.\n\nSigned-off-by: Barret Rhoden \u003cbrho@cs.berkeley.edu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ac0b4804d1276e2e01af54e2f49034b2ea7a3137",
      "old_mode": 33188,
      "old_path": "user/parlib/vcore.c",
      "new_id": "3a29c65869c00120d595d9e5ad24071ec3289296",
      "new_mode": 33188,
      "new_path": "user/parlib/vcore.c"
    }
  ]
}
