)]}'
{
  "commit": "dd327181e96b8bc4d9bd97aa8d3d7fe01bf29628",
  "tree": "58258932920f080369cdb116aa37ab2e3ea672b9",
  "parents": [
    "6130dcb9e58209ee7679a38642ee43fb4a0b16d5"
  ],
  "author": {
    "name": "Jens Remus",
    "email": "jremus@linux.ibm.com",
    "time": "Fri Mar 01 12:45:14 2024 +0100"
  },
  "committer": {
    "name": "Jens Remus",
    "email": "jremus@linux.ibm.com",
    "time": "Fri Mar 01 12:45:14 2024 +0100"
  },
  "message": "s390: Do not erroneously use base operand value for length operand\n\nThe base register operand B may optionally be omitted in D(B) by coding\nD and in D(L,B) by coding D(L). The index register operand X may\noptionally be omitted in D(X,B) by coding D(,B) or D(B). Both base and\nindex register operands may optionally be omitted in D(X,B) by coding D.\nIn any case the omitted base and/or index register operand value\ndefaults to zero.\n\nWhen parsing an erroneously omitted length L operand in D(L,B) by coding\nD(,B) the base register operand B was erroneously consumed as length\noperand. When using a register name for the base register operand this\nwas detected and reported as error. But when not using a register name\nthe base register operand value was erroneously used as length operand\nvalue.\n\nCorrect the parsing of an omitted optional base or index register to not\nerroneously use the base register operand value as length, when\nerroneously omitting the length operand.\n\nWhile at it rename the variable used to remember whether the base or\nindex register operand was omitted to enhance code readability.\nAdditionally add test cases for the optional omission of base and/or\nindex register operands.\n\nExample assembler source:\n\tmvc\t16(1,%r1),32(%r2)\n\tmvc\t16(1),32(%r2)\n\tmvc\t16(,1),32(%r2)\t\t# undetected syntax error\n\nDisassembly of bad assembly without commit shows the base register\noperand value was erroneously used as length operand value:\n   0:   d2 00 10 10 20 20       mvc     16(1,%r1),32(%r2)\n   6:   d2 00 00 10 20 20       mvc     16(1,%r0),32(%r2)\n   c:   d2 00 00 10 20 20       mvc     16(1,%r0),32(%r2)\n\nAssembler messages with commit:\n3: Error: operand 1: missing operand\n\ngas/\n\t* config/tc-s390.c: Correct parsing of omitted base register.\n\t* testsuite/gas/s390/s390.exp: Add test cases for omitted base\n\tand/or index register.\n\t* testsuite/gas/s390/zarch-omitted-base-index.s: Test cases for\n\tomitted optional base or index register.\n\t* testsuite/gas/s390/zarch-omitted-base-index.d: Likewise.\n\t* testsuite/gas/s390/zarch-omitted-base-index-err.s: Test cases\n\tfor omitted base and/or index register.\n\t* testsuite/gas/s390/zarch-omitted-base-index-err.l: Likewise.\n\nReviewed-by: Andreas Krebbel \u003ckrebbel@linux.ibm.com\u003e\nSigned-off-by: Jens Remus \u003cjremus@linux.ibm.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "019f26b2f4abf3506653706293e34ec70e34adc0",
      "old_mode": 33188,
      "old_path": "gas/config/tc-s390.c",
      "new_id": "cfe98b5e94bec3ec18b5f5009c85bfe53e72c92a",
      "new_mode": 33188,
      "new_path": "gas/config/tc-s390.c"
    },
    {
      "type": "modify",
      "old_id": "86e2dd492cd12bde5a50348c57a027fd151cabe8",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/s390/s390.exp",
      "new_id": "7fbc7f8a7515d8967544d179e8a702831051730b",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/s390/s390.exp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fe13f95d31749843765eac2303100a7c2f3fbfa6",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/s390/zarch-omitted-base-index-err.l"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "65ad739d02c667d316132535f1f10e2ce88d34e6",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/s390/zarch-omitted-base-index-err.s"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b2ff292628b1e5cb8c86eb5bb50907b1dcaf3db7",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/s390/zarch-omitted-base-index.d"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8381319068bcb8701f8400ceecff30a6496bd1e2",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/s390/zarch-omitted-base-index.s"
    }
  ]
}
