)]}'
{
  "commit": "03b4f972f3f509d2d39c1126830811180ed66359",
  "tree": "d1ab97636cfec956f2d5fcebc6be3497d395c7e6",
  "parents": [
    "6f5e2c066bac9ad51d89f159925f9760423be2f7"
  ],
  "author": {
    "name": "Adhemerval Zanella",
    "email": "adhemerval.zanella@linaro.org",
    "time": "Tue Mar 04 11:39:30 2025 -0300"
  },
  "committer": {
    "name": "Adhemerval Zanella",
    "email": "adhemerval.zanella@linaro.org",
    "time": "Fri Mar 07 08:48:50 2025 -0300"
  },
  "message": "elf: Add PT_GNU_MUTABLE\n\nThe section mark a memory region that should not be sealed if\nGNU_PROPERTY_MEMORY_SEAL attribute is present.  PT_GNU_MUTABLE\nsection names start with \".gnu.mutable\" and are maximum page\naligned and have a size of maximum page size.\n\nFor instance the code:\n\nunsigned char mutable_array1[64]\n__attribute__ ((section (GNU_MUTABLE_SECTION_NAME)))\n   \u003d { 0 };\nunsigned char mutable_array2[32]\n__attribute__ ((section (GNU_MUTABLE_SECTION_NAME)))\n   \u003d { 0 };\n\nplaces both \u0027mutable_array1\u0027 and \u0027mutable_array2\u0027 on a page\naligned memory region in a size of a page (the alignment and size\ncan be change with -Wl,-z,max-page-size\u003d linker option).\n\nThe linker sets the alignment and size to make it easier to\nloader to avoid sealing the area (since mseal only work on\nmultiple of page size areas), and to simplify the userland\nprocess to change protection of either seal the area after\ninitialization.\n\nChange-Id: I1304af9ec6b5b2682a1416b2b3d8d5b2c65b9f1c\nTODO: add tests.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3f8bc838bfb34b367c500b916046a090b4015143",
      "old_mode": 33188,
      "old_path": "bfd/elf.c",
      "new_id": "d3ef9ddd17f5d38a408ddbea202cc5ff9412c95b",
      "new_mode": 33188,
      "new_path": "bfd/elf.c"
    },
    {
      "type": "modify",
      "old_id": "dd1871d8c75a72bd0ea1ad2b5e5a3bbfd987ef98",
      "old_mode": 33188,
      "old_path": "binutils/readelf.c",
      "new_id": "b1f4d5c1b468700241569965deb81e0b7c3d7b9c",
      "new_mode": 33188,
      "new_path": "binutils/readelf.c"
    },
    {
      "type": "modify",
      "old_id": "fd032d1e03ed5b19f84fda4a8f1a9ecb14867de3",
      "old_mode": 33188,
      "old_path": "include/elf/common.h",
      "new_id": "4e68f2ca9611e483c5f3cee4cb11ccdacd7baa8a",
      "new_mode": 33188,
      "new_path": "include/elf/common.h"
    },
    {
      "type": "modify",
      "old_id": "6635e598562e79b6c1bcd946f93f7087dac9f761",
      "old_mode": 33188,
      "old_path": "ld/ldgram.y",
      "new_id": "cbeff7fb0dbb213a08f0fba5436961ef88082508",
      "new_mode": 33188,
      "new_path": "ld/ldgram.y"
    },
    {
      "type": "modify",
      "old_id": "be8d19fcf1112bc42741d102c3f292dd0cc4512a",
      "old_mode": 33188,
      "old_path": "ld/scripttempl/elf.sc",
      "new_id": "5eadc18aa98e0b21078f7a39218f2ce6960745ff",
      "new_mode": 33188,
      "new_path": "ld/scripttempl/elf.sc"
    },
    {
      "type": "modify",
      "old_id": "2651a68c935fb6ebf72725bae70e1d3953c90c20",
      "old_mode": 33188,
      "old_path": "ld/testsuite/ld-aarch64/variant_pcs-r.d",
      "new_id": "25b800080be585229da672466d17acf9397a2ec6",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-aarch64/variant_pcs-r.d"
    },
    {
      "type": "modify",
      "old_id": "55ed17d6f7e46031eb01318c916d8b034bc9f814",
      "old_mode": 33188,
      "old_path": "ld/testsuite/ld-x86-64/pr27590.rd",
      "new_id": "5c5710d7d73f3c1ab5fc190f8faa56ecd8a138dc",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-x86-64/pr27590.rd"
    },
    {
      "type": "modify",
      "old_id": "4e3e74a2e759dc2d0739b2253b6a5564e1159b24",
      "old_mode": 33188,
      "old_path": "ld/testsuite/ld-x86-64/split-by-file.rd",
      "new_id": "7f9b732541828f2b23718ef6f882e18a4c4bbcfd",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-x86-64/split-by-file.rd"
    }
  ]
}
