)]}'
{
  "commit": "2b27fadf12add13caab83de885b46619e5018835",
  "tree": "bd9fe81242515578ad0a2e115493430505f2c7e3",
  "parents": [
    "ca7fdd7e629a0c15093cb26e5d55f6c8df6e2b57"
  ],
  "author": {
    "name": "Joseph Huber",
    "email": "jhuber6@vols.utk.edu",
    "time": "Wed Jun 14 18:59:29 2023 -0500"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Thu Jun 15 05:13:02 2023 -0700"
  },
  "message": "[libc] Move the definitions of the standard IO streams to the platform\n\nThis patch moves the definitions of the standard IO streams to the\nplatform file definition. This is necessary because previously we had a\nlevel of indirection where the stream\u0027s `FILE *` was initialized based\non the pointer to the internal `__llvm_libc` version. This cannot be\nresolved ahead of time by the linker because the address will not be\nknown until runtime. This caused the previous implementation to emit a\nglobal constructor to initialize the pointer to the actual `FILE *`. By\nmoving these definitions so that we can bind their address to the\noriginal file type we can avoid this global constructor.\n\nThis file keeps the entrypoints, but makes them empty files only\ncontaining an external reference. This is so they still appear as\nentrypoints and get emitted as declarations in the generated headers.\n\nReviewed By: lntue, sivachandra\n\nDifferential Revision: https://reviews.llvm.org/D152983\n\nGitOrigin-RevId: a09bec6459331e7f949c2ed3df6102de52d25f5d\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9985a3c76df97ea4e20dc47220b4058f07ab8510",
      "old_mode": 33188,
      "old_path": "src/__support/File/gpu/file.cpp",
      "new_id": "2db56d7ce5e5fdcd9b61f47f416493a170db5796",
      "new_mode": 33188,
      "new_path": "src/__support/File/gpu/file.cpp"
    },
    {
      "type": "modify",
      "old_id": "02746eeedc0bf9878ebba3b4f14f07152e045e8f",
      "old_mode": 33188,
      "old_path": "src/__support/File/linux/file.cpp",
      "new_id": "7fb7cb587c86fcebc297aa11b38b6636b654b7d9",
      "new_mode": 33188,
      "new_path": "src/__support/File/linux/file.cpp"
    },
    {
      "type": "modify",
      "old_id": "56ec9b78a67f0180071f99a0e60d933a77a1f503",
      "old_mode": 33188,
      "old_path": "src/stdio/stderr.cpp",
      "new_id": "31b618f6928a0ebdac378c5ad489939e515b3fb2",
      "new_mode": 33188,
      "new_path": "src/stdio/stderr.cpp"
    },
    {
      "type": "modify",
      "old_id": "b6ae95d32ff4015e7043d4181ba6d22178a8c8db",
      "old_mode": 33188,
      "old_path": "src/stdio/stdin.cpp",
      "new_id": "f99ea898dfcd1a187b4b0e2fa6a120e6b131bb6f",
      "new_mode": 33188,
      "new_path": "src/stdio/stdin.cpp"
    },
    {
      "type": "modify",
      "old_id": "7eb9e1bf8e735bd3a0f8b856b07697a173281e6d",
      "old_mode": 33188,
      "old_path": "src/stdio/stdout.cpp",
      "new_id": "2d5aaf5667260f4a2945106245a538ac466cf015",
      "new_mode": 33188,
      "new_path": "src/stdio/stdout.cpp"
    }
  ]
}
