)]}'
{
  "commit": "6ab3f09a682adcb4e841faf7fc19dea2671debed",
  "tree": "c36fb7423de76579a8f44e10d842669a1f5a9ff6",
  "parents": [
    "7f8017add951c46959e54590c70cb2adcc1cede4"
  ],
  "author": {
    "name": "Indu Bhagat",
    "email": "indu.bhagat@oracle.com",
    "time": "Fri Jul 11 23:32:58 2025 -0700"
  },
  "committer": {
    "name": "Indu Bhagat",
    "email": "indu.bhagat@oracle.com",
    "time": "Fri Jul 11 23:32:58 2025 -0700"
  },
  "message": "gas: elf: binutils: add new section type SHT_GNU_SFRAME\n\nSo far, SFrame sections were of type SHT_PROGBITS.\n\nAs per ELF specification, SHT_PROGBITS indicates that the section holds\ninformation defined by the program, whose format and meaning are\ndetermined solely by the program.\n\nOn the linker side, SHT_PROGBITS should be reserved for the simple \"cat\ncontents after applying relocs\" semantics.\n\nCurrently, the only way to know that a section contains SFrame stack\ntrace data is if consumer checks for section name.  Such a check for\nsection name is not quite conformant to ELF principles.\n\nSome of this was discussed here\nhttps://sourceware.org/pipermail/binutils/2025-March/140181.html\n\nWith this change, the SFrame sections generated by gas, ld will have\nsection type set to SHT_GNU_SFRAME.   The new section type is defined in\nthe SHT_LOOS/SHT_HIOS space.  The SFrame parsing routine\n_bfd_elf_parse_sframe () now admits sections only when the the section\ntype is SHT_GNU_SFRAME.\n\nNo special handling / validation is done at the moment for the case of\nmanual creation of SFrame sections via obj_elf_section ().  Add function\nlevel comments for now to add a note about this.\n\nAlthough the default handling for (sh_type \u003e\u003d SHT_LOOS \u0026\u0026 sh_type \u003c\u003d\nSHT_HIOS) is sufficient when SHT_GNU_SFRAME is in that range, it makes\nsense to add it as a case of its own.\n\nbfd/\n\t* elf-sframe.c (_bfd_elf_parse_sframe): Check if section type is\n\tSHT_GNU_SFRAME.\n\t(_bfd_elf_set_section_sframe): Set SHT_GNU_SFRAME for output\n\tSFrame section.\n\t* elflink.c (obj_elf_section): Use section type for check\n\tinstead of section name.\n\t* elfxx-x86.c: Set SHT_GNU_SFRAME for SFrame sections for\n\t.plt* sections.\n\t* elf.c (bfd_section_from_shdr): Add case for SHT_GNU_SFRAME.\nbinutils/\n\t* readelf.c (get_os_specific_section_type_name): Add\n\tSHT_GNU_SFRAME.\ngas/\n\t* NEWS: Announce emitted SFrame sections have SHT_GNU_SFRAME\n\tset.\n\t* config/obj-elf.c (obj_elf_attach_to_group): Add comments to\n\tindicate no special handling for SFrame yet.\n\t* dw2gencfi.c (cfi_finish): Set SHT_GNU_SFRAME for emitted\n\tSFrame section.\nld/\n\t* NEWS: Announce emitted SFrame sections have SHT_GNU_SFRAME\n\tset.\ngas/testsuite/\n\t* gas/cfi-sframe/cfi-sframe.exp: Add new test.\n\t* gas/cfi-sframe/cfi-sframe-common-1b.d: New test.\n\t* gas/cfi-sframe/cfi-sframe-common-1b.s: New test.\ninclude/\n\t* elf/common.h (SHT_GNU_SFRAME): Add new section type for SFrame\n\tstack trace information.\nlibsframe/doc/\n\t* sframe-spec.texi: Add expected ELF section type.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d74235b030a49d620964cd1ac93fd28ee07f22b2",
      "old_mode": 33188,
      "old_path": "bfd/elf-sframe.c",
      "new_id": "b709e590a2dc9240f8910046d126734f5ac90925",
      "new_mode": 33188,
      "new_path": "bfd/elf-sframe.c"
    },
    {
      "type": "modify",
      "old_id": "1eba14283f831370bc08af19f4a6e155cdcb7145",
      "old_mode": 33188,
      "old_path": "bfd/elf.c",
      "new_id": "ba0e313524da31a8359f0f8718c6a5da6ec89dc6",
      "new_mode": 33188,
      "new_path": "bfd/elf.c"
    },
    {
      "type": "modify",
      "old_id": "666399bc6809f6eeb7cd708bb34e020816a1a11e",
      "old_mode": 33188,
      "old_path": "bfd/elflink.c",
      "new_id": "c4f57cf2f3c6aad1e218b168a6abb948c2071be6",
      "new_mode": 33188,
      "new_path": "bfd/elflink.c"
    },
    {
      "type": "modify",
      "old_id": "663f40ae7f071e9555329574629c2b0d0974a151",
      "old_mode": 33188,
      "old_path": "bfd/elfxx-x86.c",
      "new_id": "3dc00956eeff8ea7fc9bfbf9a4758ef25cee7c97",
      "new_mode": 33188,
      "new_path": "bfd/elfxx-x86.c"
    },
    {
      "type": "modify",
      "old_id": "573024727f23513d66fb70ce7fed9a04a1ad6de6",
      "old_mode": 33188,
      "old_path": "binutils/readelf.c",
      "new_id": "87615d95ac12052eedf0cff0ee588cf2536e645b",
      "new_mode": 33188,
      "new_path": "binutils/readelf.c"
    },
    {
      "type": "modify",
      "old_id": "56a2b88d1ea71b3b96723a4548eab023331c580e",
      "old_mode": 33188,
      "old_path": "gas/NEWS",
      "new_id": "24b3c8ace0c36e48aee8f8b4bbfe672b02116289",
      "new_mode": 33188,
      "new_path": "gas/NEWS"
    },
    {
      "type": "modify",
      "old_id": "03b6c2470e741904a23c635001e98ffb58024133",
      "old_mode": 33188,
      "old_path": "gas/config/obj-elf.c",
      "new_id": "315d08ea9963c44d6dcf86f00df8676574179d2f",
      "new_mode": 33188,
      "new_path": "gas/config/obj-elf.c"
    },
    {
      "type": "modify",
      "old_id": "6f8d5912a36061dd1d44ac6098158bc9efc47417",
      "old_mode": 33188,
      "old_path": "gas/dw2gencfi.c",
      "new_id": "5c63054292f4ec569dce6a7004ac4fdae610ba7f",
      "new_mode": 33188,
      "new_path": "gas/dw2gencfi.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c6ddfba32567ee428be4b9cd0f93ff3039fed419",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-common-1b.d"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ac9c6ca2cf376272038ea3473298005d8b5b95f6",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe-common-1b.s"
    },
    {
      "type": "modify",
      "old_id": "9c5a16f255b469922dd8f9cc66d4516bc257efeb",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe.exp",
      "new_id": "8a424198a88e9e8b87bbe1d5e3a8f0679f29a112",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/cfi-sframe/cfi-sframe.exp"
    },
    {
      "type": "modify",
      "old_id": "f395278b243841e930673d1a3a91199727b0e4dc",
      "old_mode": 33188,
      "old_path": "include/elf/common.h",
      "new_id": "0d9a7b7a8a98e177ac0e6fd02ae119c3a1a80942",
      "new_mode": 33188,
      "new_path": "include/elf/common.h"
    },
    {
      "type": "modify",
      "old_id": "2ad06e9c124ee4d32d921f5c1dbc24529693b79d",
      "old_mode": 33188,
      "old_path": "ld/NEWS",
      "new_id": "c37352b89f6a08d085412424e7f345f69840ef72",
      "new_mode": 33188,
      "new_path": "ld/NEWS"
    },
    {
      "type": "modify",
      "old_id": "ecc333df3ae8fbb72394972d50e5346cc46e7f3f",
      "old_mode": 33188,
      "old_path": "libsframe/doc/sframe-spec.texi",
      "new_id": "7307789df2645b0c51cf10b03b4089b5ba2fade3",
      "new_mode": 33188,
      "new_path": "libsframe/doc/sframe-spec.texi"
    }
  ]
}
