)]}'
{
  "commit": "4b7d9a6af08cb704ce77eadba2a7bb1b06c1554c",
  "tree": "9ee6e4fab3807cea2b6b4c5fa8f1984510e6107a",
  "parents": [
    "6d29415c89d607b988381bc367c9c521694fa728"
  ],
  "author": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Tue Jan 16 13:24:29 2024 +0000"
  },
  "committer": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Tue Jan 16 13:35:08 2024 +0000"
  },
  "message": "[libc] Replace linker_assert() with build_assert()\n\nWe currently implement build-time assertions via a mechanism that\ngenerates a call to an undefined external function that will cause the\nlink to fail unless the compiler can prove that the asserted condition\nis true (and thereby eliminate the undefined function call).\n\nThis assertion mechanism can be used for conditions that are not\namenable to the use of static_assert(), since static_assert() will not\nallow for proofs via dead code elimination.\n\nAdd __attribute__((error(...))) to the undefined external function, so\nthat the error is raised at compile time rather than at link time.\nThis allows us to provide a more meaningful error message (which will\ninclude the file name and line number, as with any other compile-time\nerror), and avoids the need for the caller to specify a unique symbol\nname for the external function.\n\nChange the name from linker_assert() to build_assert(), since the\nassertion now takes place at compile time rather than at link time.\n\nSigned-off-by: Michael Brown \u003cmcb30@ipxe.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9d8bae824dc8d83f6169ed0dae773f7452153106",
      "old_mode": 33188,
      "old_path": "src/crypto/gcm.c",
      "new_id": "c21aad14c9f57d8b7fa7ddf0686a5eed6cbd4be0",
      "new_mode": 33188,
      "new_path": "src/crypto/gcm.c"
    },
    {
      "type": "modify",
      "old_id": "ca5dcc21bff137e054b50791ff9b14f13c97f9ea",
      "old_mode": 33188,
      "old_path": "src/crypto/md4.c",
      "new_id": "dcd86a4281a73337ccfbf7441159018dd3b71638",
      "new_mode": 33188,
      "new_path": "src/crypto/md4.c"
    },
    {
      "type": "modify",
      "old_id": "bee382e95a4772ec700467399cbf32bedcc06f6d",
      "old_mode": 33188,
      "old_path": "src/crypto/md5.c",
      "new_id": "5c62513e2070b6fbc1fa54a8708512e6bc50a29d",
      "new_mode": 33188,
      "new_path": "src/crypto/md5.c"
    },
    {
      "type": "modify",
      "old_id": "94fce0029fade06cb24bbd9d56b654d3196ab9f6",
      "old_mode": 33188,
      "old_path": "src/crypto/sha1.c",
      "new_id": "8eecc75b3fa2d2648281b3955288300da6fc5b50",
      "new_mode": 33188,
      "new_path": "src/crypto/sha1.c"
    },
    {
      "type": "modify",
      "old_id": "6bd727719ae2674f436fc381adcd9bd9ae37af91",
      "old_mode": 33188,
      "old_path": "src/crypto/sha256.c",
      "new_id": "c30300eb41a4dc8bc7133d44d130441cbc5e8f9e",
      "new_mode": 33188,
      "new_path": "src/crypto/sha256.c"
    },
    {
      "type": "modify",
      "old_id": "e84895010fad40de4f83cfa60981d4de99c3330a",
      "old_mode": 33188,
      "old_path": "src/crypto/sha512.c",
      "new_id": "d7d44b2846d1a37bf318eebd6177b0d632b98da5",
      "new_mode": 33188,
      "new_path": "src/crypto/sha512.c"
    },
    {
      "type": "modify",
      "old_id": "8c59126607b50eb53008b478301e28ff7bcbbcb3",
      "old_mode": 33188,
      "old_path": "src/drivers/infiniband/linda.c",
      "new_id": "0c8a043a1d664d37b486941bd4d1d734fb9a3c93",
      "new_mode": 33188,
      "new_path": "src/drivers/infiniband/linda.c"
    },
    {
      "type": "modify",
      "old_id": "da055b744c378929b3f4a423e5c5fed74e0d5fd8",
      "old_mode": 33188,
      "old_path": "src/drivers/infiniband/qib7322.c",
      "new_id": "a011dafc15413858afc9ce9a809d0ca4154dccfd",
      "new_mode": 33188,
      "new_path": "src/drivers/infiniband/qib7322.c"
    },
    {
      "type": "modify",
      "old_id": "6d0531801f89d9eb32dfcc3a01baea6822d4c540",
      "old_mode": 33188,
      "old_path": "src/include/assert.h",
      "new_id": "b3a9b1fe030f96ea0b39fd5377b4f4b2cfa4b151",
      "new_mode": 33188,
      "new_path": "src/include/assert.h"
    },
    {
      "type": "modify",
      "old_id": "77429f3a0a8f7004f7c04094f271469de98979f7",
      "old_mode": 33188,
      "old_path": "src/include/ipxe/asn1.h",
      "new_id": "452fcef0b067ef5ddbca3bd0b2482706c9242e92",
      "new_mode": 33188,
      "new_path": "src/include/ipxe/asn1.h"
    },
    {
      "type": "modify",
      "old_id": "240feace09ab6518bef69099e8131bd3e8d44815",
      "old_mode": 33188,
      "old_path": "src/include/ipxe/entropy.h",
      "new_id": "82bb11826ab4aa628df86174e402b05b9715f365",
      "new_mode": 33188,
      "new_path": "src/include/ipxe/entropy.h"
    },
    {
      "type": "modify",
      "old_id": "90ef0b522bd7fea529fd196298d53f4a6de2b12f",
      "old_mode": 33188,
      "old_path": "src/include/ipxe/gcm.h",
      "new_id": "9653a0a1ac096b2a17d8fcb027e928935b29638b",
      "new_mode": 33188,
      "new_path": "src/include/ipxe/gcm.h"
    }
  ]
}
