)]}'
{
  "commit": "c1929fda6660edad022d21e83ff4b037168dbbb2",
  "tree": "ec64b2dede0f8b7b3243a996fd948346f499ca61",
  "parents": [
    "4553b29a0eca14400587d0583b53dc97f1827793"
  ],
  "author": {
    "name": "Indu Bhagat",
    "email": "indu.bhagat@oracle.com",
    "time": "Thu Jan 15 16:43:58 2026 -0800"
  },
  "committer": {
    "name": "Indu Bhagat",
    "email": "indu.bhagat@oracle.com",
    "time": "Thu Jan 15 17:02:28 2026 -0800"
  },
  "message": "[SFrame-V3] sframe: s390: gas: testsuite: enable flex FDE for s390x\n\nThis commit amalgamates a patch set proposed by Jens Remus to enable the\nSFrame Version 3 Flexible FDE Type (SFRAME_FDE_TYPE_FLEX) generation for\nthe s390x ABI.\n\nPreviously, s390x relied on architecture-specific encoding (shifting register\nnumbers into offset fields) to represent register recovery rules.  This limited\nthe complexity of CFI that could be supported.  With Flex FDE enabled:\n  - s390x can now represent .cfi_def_cfa using non-SP/FP registers.\n  - The architecture-specific function s390_sframe_xlate_do_register () in GAS\n    is replaced by the generic Flex FDE generation path.\n  - The SFrame V3 specific macros for s390x register encoding are removed\n    from libsframe/include, as the generic Flex FDE format handles explicit\n    register columns natively.\n\nThe testsuite is updated to replace negative tests (which asserted\nwarnings or empty SFrame generation for these patterns) with positive\ntests verifying valid Flex FDE generation.\n\nCo-authored-by: Jens Remus \u003cjremus@linux.ibm.com\u003e\n\ngas/\n\t* config/tc-s390.c (s390_support_flex_fde_p): Return true to\n\tenable Flex FDE generation.\n\t* gen-sframe.c (s390_sframe_xlate_do_register): Disable s390x\n\tspecific implementation.\n\t(sframe_xlate_do_register): Invoke generic Flex FDE path now\n\tthat flex FDE generation is supported.\ngas/testsuite/\n\t* gas/cfi-sframe/cfi-sframe-s390x-err-1.d: Removed.\n\t* gas/cfi-sframe/cfi-sframe-s390x-err-1.s: Moved to...\n\t* gas/cfi-sframe/cfi-sframe-s390x-non-spfp-cfa-1.s: ...here.\n\t* gas/cfi-sframe/cfi-sframe-s390x-err-2.d: Removed.\n\t* gas/cfi-sframe/cfi-sframe-s390x-err-2.s: Moved to...\n\t* gas/cfi-sframe/cfi-sframe-s390x-non-spfp-cfa-2.s: ...here.\n\t* gas/cfi-sframe/cfi-sframe-s390x-fpra-register-1.d: Update to\n\texpect Flex FDE output.\n\t* gas/cfi-sframe/cfi-sframe-s390x-fpra-register-2.d: Likewise.\n\t* gas/cfi-sframe/cfi-sframe.exp: Run renamed tests.\ninclude/\n\t* sframe.h (SFRAME_V3_S390X_OFFSET_IS_REGNUM): Remove.\n\t(SFRAME_V3_S390X_OFFSET_ENCODE_REGNUM): Remove.\n\t(SFRAME_V3_S390X_OFFSET_DECODE_REGNUM): Remove.\nlibsframe/\n\t* sframe-dump.c (sframe_s390x_offset_regnum_p): Return false\n\tfor SFrame V3.\n\t(sframe_s390x_offset_decode_regnum): Remove V3 support.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7d7c56dc8a95bf180a7dab51ffd435b54ba03673",
      "old_mode": 33188,
      "old_path": "gas/config/tc-s390.c",
      "new_id": "535c424ca046f48ef3592e322af2e5f268fb7a41",
      "new_mode": 33188,
      "new_path": "gas/config/tc-s390.c"
    },
    {
      "type": "modify",
      "old_id": "071d26baf3189aa7d3e5233c6edccc89f0b949b0",
      "old_mode": 33188,
      "old_path": "gas/gen-sframe.c",
      "new_id": "931c14c4b02a244e260b60117f5e2d6f198209b0",
      "new_mode": 33188,
      "new_path": "gas/gen-sframe.c"
    },
    {
      "type": "delete",
      "old_id": "5cd31c7da00cc141e7f4651ccdbec9c15f8eb8f6",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-s390x-err-1.d",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "0397cd84c05d634158ae4000403d7a810d296dcd",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-s390x-err-2.d",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "c53b2477cdc77e4e182b565f3b6d9012279dd451",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-s390x-fpra-register-1.d",
      "new_id": "63219dcae99ac0efc7463422183e8692291d8a0f",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-s390x-fpra-register-1.d"
    },
    {
      "type": "modify",
      "old_id": "f781fb1dee97859de39bcb6108ebf938f5dbbe33",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-s390x-fpra-register-2.d",
      "new_id": "d82b4557d947720362e1475a573a0f78b8044030",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-s390x-fpra-register-2.d"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "adf92e13232beb9fa924aec93ce127965d2e12d2",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-s390x-non-spfp-cfa-1.d"
    },
    {
      "type": "rename",
      "old_id": "8b724df40ff37da596f6423ec3b80f213f561704",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-s390x-err-1.s",
      "new_id": "8b724df40ff37da596f6423ec3b80f213f561704",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-s390x-non-spfp-cfa-1.s",
      "score": 100
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5415d8431fc28780b48f3c7cc91987984f3f3d0b",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-s390x-non-spfp-cfa-2.d"
    },
    {
      "type": "rename",
      "old_id": "dbcf439c15631b066e70d82e0c2703104a939950",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-s390x-err-2.s",
      "new_id": "dbcf439c15631b066e70d82e0c2703104a939950",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-s390x-non-spfp-cfa-2.s",
      "score": 100
    },
    {
      "type": "modify",
      "old_id": "98af7297b2d9ad62b51177c9c8bbb1c2b57786b9",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe.exp",
      "new_id": "3f246d2da243c1586b4a64fe5d981aa0f39337bc",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe.exp"
    },
    {
      "type": "modify",
      "old_id": "1c026d514728ebd6404df2ce934f917608b396ec",
      "old_mode": 33188,
      "old_path": "include/sframe.h",
      "new_id": "2d47cc73ae886a8e424178603b00631400582eb3",
      "new_mode": 33188,
      "new_path": "include/sframe.h"
    },
    {
      "type": "modify",
      "old_id": "742b60b6f4f8c29501680386092ceb4fc5081f68",
      "old_mode": 33188,
      "old_path": "libsframe/sframe-dump.c",
      "new_id": "3d7bbafcdbc19019b85fd53377eb45ce23a97add",
      "new_mode": 33188,
      "new_path": "libsframe/sframe-dump.c"
    }
  ]
}
