)]}'
{
  "commit": "0f5abd8b117ea7da0747fe36b66c050706f6584f",
  "tree": "aec562bf1eacf3e3024e5845d64c55fc1d8a09cf",
  "parents": [
    "a846c4ccfc7db212dff792e081991df17268b4d5"
  ],
  "author": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Thu Feb 08 16:39:35 2024 +0000"
  },
  "committer": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Sat Feb 10 14:47:40 2024 +0000"
  },
  "message": "[libc] Allow build_assert() failures to be ignored via NO_WERROR\u003d1\n\nWe build with -Werror by default so that any warning is treated as an\nerror and aborts the build.  The build system allows NO_WERROR\u003d1 to be\nused to override this behaviour, in order to allow builds to succeed\nwhen spurious warnings occur (e.g. when using a newer compiler that\nincludes checks for which the codebase is not yet prepared).\n\nSome versions of gcc (observed with gcc 4.8.5 in CentOS 7) will report\nspurious build_assert() failures: the compilation will fail due to an\nallegedly unelided call to the build assertion\u0027s external function\ndeclared with __attribute__((error)) even though the compiler does\nmanage to successfully elide the call (as verified by the fact that\nthere are no unresolvable symbol references in the compiler output).\n\nChange build_assert() to declare __attribute__((warning)) instead of\n__attribute__((error)) on its extern function.  This will still abort\na normal build if the assertion fails, but may be overridden using\nNO_WERROR\u003d1 if necessary to work around a spurious assertion failure.\n\nNote that if the build assertion has genuinely failed (i.e. if the\ncompiler has genuinely not been able to elide the call) then the\nobject will still contain an unresolvable symbol reference that will\ncause the link to fail (which matches the behaviour of the old\nlinker_assert() mechanism).\n\nSigned-off-by: Michael Brown \u003cmcb30@ipxe.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b3a9b1fe030f96ea0b39fd5377b4f4b2cfa4b151",
      "old_mode": 33188,
      "old_path": "src/include/assert.h",
      "new_id": "01a287855189eb40e008bcc43842b98003cbdeec",
      "new_mode": 33188,
      "new_path": "src/include/assert.h"
    }
  ]
}
