)]}'
{
  "commit": "d429e20367b198593bc9d6e1babac786eafb5434",
  "tree": "70029f0b4e943a40a848e93f6bcc7c55b4a5b702",
  "parents": [
    "bd3bddf0517f9d9b5e00f8ffeedd939dc80652f5"
  ],
  "author": {
    "name": "Stian Halseth",
    "email": "stian@itx.no",
    "time": "Wed Aug 26 08:04:00 2026 +0000"
  },
  "committer": {
    "name": "Gopher Robot",
    "email": "gobot@golang.org",
    "time": "Wed Aug 26 10:28:52 2026 -0700"
  },
  "message": "unix: stop generating sparc termbits from the generic header\n\nmkerrors.sh takes the generic termbits header on sparc rather than the\narchitecture\u0027s own:\n\n\t#if defined(__sparc__)\n\t#include \u003casm-generic/termbits.h\u003e\n\t#else\n\t#include \u003casm/termbits.h\u003e\n\t#endif\n\nsparc\u0027s termbits differs from the generic one, so the constants it produces\nfor that architecture are wrong. VMIN is the clearest case: sparc defines it\nas an alias, #define VMIN VEOF with VEOF 4, where the generic header defines\na literal 6. Raw mode is termios.Cc[unix.VMIN] \u003d 1 in moby/term,\ncontainerd/console and x/term alike, so with 6 the assignment lands in a\nslot nothing reads, the real VMIN keeps its default of 4, and reads on a\nterminal block until four bytes arrive. On sparc64 that made interactive\ndocker run -it deliver stdin in 4-byte groups.\n\nIt is not only VMIN. Switching to the architecture\u0027s header changes 25\nconstants. The baud rates are the most visible: B1000000 is 0x100c on\nsparc but 0x1008 is generated, and B2500000, B3000000, B3500000 and\nB4000000 do not exist on sparc while B76800, B153600, B307200 and B614400\ndo and are absent. FLUSHO, WRAP, VDSUSP, TIOCM_LOOP, TIOCM_OUT1,\nTIOCM_OUT2, TIOCSER_TEMT, VEOL and VEOL2 are also affected.\n\nThe comment justifies the workaround by a struct redefinition clashing with\nglibc, but that cannot arise here: the include block is used in exactly one\nplace, the $CC -x c - -E -dM pass, which only preprocesses. Feeding it both\n\u003ctermios.h\u003e and \u003casm/termbits.h\u003e on sparc64 emits every macro with empty\nstderr.\n\nNo other architecture is affected, since they already took the #else branch.\n\nVerified by running mkerrors.sh on an UltraSPARC T4-1: unmodified it\nreproduces the checked-in VMIN\u003d0x6, VEOL\u003d0xb, VEOL2\u003d0x10, and with this\nchange it produces 0x4, 0x5, 0x6.\n\nTIOCSER_TEMT moves to zerrors_linux.go: sparc64 now agrees with every\nother architecture, so mkmerge hoists it.\n\nUpdates golang/go#55000\n\nChange-Id: I53fb230b3b341f10c88e633cac2c4a7c6718a210\nGitHub-Last-Rev: 3e111d14b58ce443cf04c730ce15fc62855cf54a\nGitHub-Pull-Request: golang/sys#288\nReviewed-on: https://go-review.googlesource.com/c/sys/+/820180\nReviewed-by: Cherry Mui \u003ccherryyz@google.com\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Ian Lance Taylor \u003ciant@golang.org\u003e\nReviewed-by: David Chase \u003cdrchase@google.com\u003e\nAuto-Submit: Ian Lance Taylor \u003ciant@golang.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "fa74cfe9e8a485ce4c1e5012c6b78332bc858f32",
      "old_mode": 33261,
      "old_path": "unix/mkerrors.sh",
      "new_id": "b05d99dc9fe5bd683bf925beb68b3b0543394163",
      "new_mode": 33261,
      "new_path": "unix/mkerrors.sh"
    },
    {
      "type": "modify",
      "old_id": "5bb51d7ae1e3e5fabef46d661cc4c5052a36cb26",
      "old_mode": 33188,
      "old_path": "unix/zerrors_linux.go",
      "new_id": "67c69b85278ad05b6cb629e735c5890846508dd7",
      "new_mode": 33188,
      "new_path": "unix/zerrors_linux.go"
    },
    {
      "type": "modify",
      "old_id": "c0a8ea1de0e5768eaf865f1f843060cbadd6c739",
      "old_mode": 33188,
      "old_path": "unix/zerrors_linux_386.go",
      "new_id": "6f74d4a0cff7b9edb302af4686234f3f9acfd2bc",
      "new_mode": 33188,
      "new_path": "unix/zerrors_linux_386.go"
    },
    {
      "type": "modify",
      "old_id": "ff927c830100fb28ebfba2ccb7c49240ea1323d9",
      "old_mode": 33188,
      "old_path": "unix/zerrors_linux_amd64.go",
      "new_id": "36c1f0b68c47501c9389580f70973d27fd787b41",
      "new_mode": 33188,
      "new_path": "unix/zerrors_linux_amd64.go"
    },
    {
      "type": "modify",
      "old_id": "55294eda5bce63bc839d96c5d8ec9a8a0a3152b7",
      "old_mode": 33188,
      "old_path": "unix/zerrors_linux_arm.go",
      "new_id": "c5512dbea607e425862010a24fa80d9e04054f2c",
      "new_mode": 33188,
      "new_path": "unix/zerrors_linux_arm.go"
    },
    {
      "type": "modify",
      "old_id": "5dac54c35cce5cb377857581de336d37ea813ede",
      "old_mode": 33188,
      "old_path": "unix/zerrors_linux_arm64.go",
      "new_id": "4dabfae07117fc466a61d08086e7791a5a53dd22",
      "new_mode": 33188,
      "new_path": "unix/zerrors_linux_arm64.go"
    },
    {
      "type": "modify",
      "old_id": "46ac1fcb220279ea899202fcac86e70f782ea0db",
      "old_mode": 33188,
      "old_path": "unix/zerrors_linux_loong64.go",
      "new_id": "ea97930f1f3de0ec631b66c02a77d605b1cf72af",
      "new_mode": 33188,
      "new_path": "unix/zerrors_linux_loong64.go"
    },
    {
      "type": "modify",
      "old_id": "b55483e8a9806dc53f55ac94cae993b2872a313e",
      "old_mode": 33188,
      "old_path": "unix/zerrors_linux_mips.go",
      "new_id": "0826a929e01b531bad9add9ce494925d56209233",
      "new_mode": 33188,
      "new_path": "unix/zerrors_linux_mips.go"
    },
    {
      "type": "modify",
      "old_id": "71890c98a40df2bd6733542b964b68f1769d05b7",
      "old_mode": 33188,
      "old_path": "unix/zerrors_linux_mips64.go",
      "new_id": "139deedd95682b36754b28950f8f2241b73d9f47",
      "new_mode": 33188,
      "new_path": "unix/zerrors_linux_mips64.go"
    },
    {
      "type": "modify",
      "old_id": "a78b6cc14bf851ec2bf9220ba6d7571d91722fd9",
      "old_mode": 33188,
      "old_path": "unix/zerrors_linux_mips64le.go",
      "new_id": "b8018af335234e162a9ece9403f6ed95c0d13a32",
      "new_mode": 33188,
      "new_path": "unix/zerrors_linux_mips64le.go"
    },
    {
      "type": "modify",
      "old_id": "d0e38ca7390b7b734cc82db154c985d9370dd730",
      "old_mode": 33188,
      "old_path": "unix/zerrors_linux_mipsle.go",
      "new_id": "deb5c2e6a9cc90dd6a44648d3437c5999164bdbd",
      "new_mode": 33188,
      "new_path": "unix/zerrors_linux_mipsle.go"
    },
    {
      "type": "modify",
      "old_id": "c883e14c772a3686bcaa679f3f10fb4af87c5a31",
      "old_mode": 33188,
      "old_path": "unix/zerrors_linux_ppc.go",
      "new_id": "0603bf3a1a1a3b938b5df5bede64eb98d023ec12",
      "new_mode": 33188,
      "new_path": "unix/zerrors_linux_ppc.go"
    },
    {
      "type": "modify",
      "old_id": "1834273d44a19560aa8928bb3ab87d18e8cce6ac",
      "old_mode": 33188,
      "old_path": "unix/zerrors_linux_ppc64.go",
      "new_id": "5fa8a5d3672a81b6cbf5e7c85a945bd0c9a9a296",
      "new_mode": 33188,
      "new_path": "unix/zerrors_linux_ppc64.go"
    },
    {
      "type": "modify",
      "old_id": "39945dd9aec8abff8cec340c50fd69fa5c6ee5dd",
      "old_mode": 33188,
      "old_path": "unix/zerrors_linux_ppc64le.go",
      "new_id": "2733e9993455a494fef3de56e64cf9a695bfde8e",
      "new_mode": 33188,
      "new_path": "unix/zerrors_linux_ppc64le.go"
    },
    {
      "type": "modify",
      "old_id": "bc0f372416fe1a8ca8847f57b181aae02b265c1a",
      "old_mode": 33188,
      "old_path": "unix/zerrors_linux_riscv64.go",
      "new_id": "1470172fd9e4577674a63c20092bc8e95dadb28d",
      "new_mode": 33188,
      "new_path": "unix/zerrors_linux_riscv64.go"
    },
    {
      "type": "modify",
      "old_id": "6e87bd6598b0daf6949857c016370c406950263a",
      "old_mode": 33188,
      "old_path": "unix/zerrors_linux_s390x.go",
      "new_id": "1871579c5c8a0bb0a71446d4aa5bc310e0490d70",
      "new_mode": 33188,
      "new_path": "unix/zerrors_linux_s390x.go"
    },
    {
      "type": "modify",
      "old_id": "7e2b2e8a6677e7618cb8893f66bc168920cdec09",
      "old_mode": 33188,
      "old_path": "unix/zerrors_linux_sparc64.go",
      "new_id": "10881cf6d31e77a3b15e0084f2af6c8f8128fdfa",
      "new_mode": 33188,
      "new_path": "unix/zerrors_linux_sparc64.go"
    }
  ]
}
