)]}'
{
  "commit": "c4fea3905617af89d1ad87319893e250f5b72dd6",
  "tree": "323c82e60a01a8bcb0ad8ffa4eaafeb8b688534e",
  "parents": [
    "afc5cca0d4016f09f0d7e2683d5a920c7ecf9397"
  ],
  "author": {
    "name": "Amilendra Kodithuwakku",
    "email": "Amilendra.Kodithuwakku@arm.com",
    "time": "Wed Jun 21 12:48:33 2023 +0100"
  },
  "committer": {
    "name": "Amilendra Kodithuwakku",
    "email": "Amilendra.Kodithuwakku@arm.com",
    "time": "Wed Jun 21 14:47:34 2023 +0100"
  },
  "message": "[LLD][ELF] Cortex-M Security Extensions (CMSE) Support\n\nThis commit provides linker support for Cortex-M Security Extensions (CMSE).\nThe specification for this feature can be found in ARM v8-M Security Extensions:\nRequirements on Development Tools.\n\nThe linker synthesizes a security gateway veneer in a special section;\n`.gnu.sgstubs`, when it finds non-local symbols `__acle_se_\u003centry\u003e` and `\u003centry\u003e`,\ndefined relative to the same text section and having the same address. The\naddress of `\u003centry\u003e` is retargeted to the starting address of the\nlinker-synthesized security gateway veneer in section `.gnu.sgstubs`.\n\nIn summary, the linker translates input:\n\n```\n    .text\n  entry:\n  __acle_se_entry:\n    [entry_code]\n\n```\ninto:\n\n```\n    .section .gnu.sgstubs\n  entry:\n    SG\n    B.W __acle_se_entry\n\n    .text\n  __acle_se_entry:\n    [entry_code]\n```\n\nIf addresses of `__acle_se_\u003centry\u003e` and `\u003centry\u003e` are not equal, the linker\nconsiders that `\u003centry\u003e` already defines a secure gateway veneer so does not\nsynthesize one.\n\nIf `--out-implib\u003d\u003cout.lib\u003e` is specified, the linker writes the list of secure\ngateway veneers into a CMSE import library `\u003cout.lib\u003e`. The CMSE import library\nwill have 3 sections: `.symtab`, `.strtab`, `.shstrtab`. For every secure gateway\nveneer \u003centry\u003e at address `\u003caddr\u003e`, `.symtab` contains a `SHN_ABS` symbol `\u003centry\u003e` with\nvalue `\u003caddr\u003e`.\n\nIf `--in-implib\u003d\u003cin.lib\u003e` is specified, the linker reads the existing CMSE import\nlibrary `\u003cin.lib\u003e` and preserves the entry function addresses in the resulting\nexecutable and new import library.\n\nReviewed By: MaskRay, peter.smith\n\nDifferential Revision: https://reviews.llvm.org/D139092\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "79635a22df4ec93cbd1dc383a014961e18a44c38",
      "old_mode": 33188,
      "old_path": "lld/ELF/Arch/ARM.cpp",
      "new_id": "93e999fd2df11d3eec3dbf8d57b41051d3a063b7",
      "new_mode": 33188,
      "new_path": "lld/ELF/Arch/ARM.cpp"
    },
    {
      "type": "modify",
      "old_id": "956530098c0f18e216bd5aecfbc04bd6c59e1041",
      "old_mode": 33188,
      "old_path": "lld/ELF/Config.h",
      "new_id": "699c9d31e9433922a183d28cf8c435d46c65e0cc",
      "new_mode": 33188,
      "new_path": "lld/ELF/Config.h"
    },
    {
      "type": "modify",
      "old_id": "4eb10fc3c91e1575d7d880c99cf9fd07cdf3f7b5",
      "old_mode": 33188,
      "old_path": "lld/ELF/Driver.cpp",
      "new_id": "2dbc2f24bc179cdde474cb341e98561c26401fa0",
      "new_mode": 33188,
      "new_path": "lld/ELF/Driver.cpp"
    },
    {
      "type": "modify",
      "old_id": "5f24af5a9c6f56a92c6650f1f9608fa2ca02330b",
      "old_mode": 33188,
      "old_path": "lld/ELF/InputFiles.cpp",
      "new_id": "7c50291352190fee0522d2fb9914c04fff3ba53a",
      "new_mode": 33188,
      "new_path": "lld/ELF/InputFiles.cpp"
    },
    {
      "type": "modify",
      "old_id": "2ee15e89347ab7015f8caa83396ac10fe2b1fa42",
      "old_mode": 33188,
      "old_path": "lld/ELF/InputFiles.h",
      "new_id": "cc658bdc231988e182088fd8f3e20a9115085d58",
      "new_mode": 33188,
      "new_path": "lld/ELF/InputFiles.h"
    },
    {
      "type": "modify",
      "old_id": "777f1f2f85f950969de849e04630d68a802ef886",
      "old_mode": 33188,
      "old_path": "lld/ELF/LinkerScript.cpp",
      "new_id": "28e9f0461b2d60937fc67bb11133a9fc3127b72f",
      "new_mode": 33188,
      "new_path": "lld/ELF/LinkerScript.cpp"
    },
    {
      "type": "modify",
      "old_id": "ee0985ae9438277fce4c9ca6a43a585613b3075b",
      "old_mode": 33188,
      "old_path": "lld/ELF/LinkerScript.h",
      "new_id": "8b8320f9f18e0fd65c7959512a1259fc383f5abb",
      "new_mode": 33188,
      "new_path": "lld/ELF/LinkerScript.h"
    },
    {
      "type": "modify",
      "old_id": "7db7d1c257d4697b3043a49148c86332b7640050",
      "old_mode": 33188,
      "old_path": "lld/ELF/MarkLive.cpp",
      "new_id": "353c7ead55dfba4b879b698eff1239a1814d2068",
      "new_mode": 33188,
      "new_path": "lld/ELF/MarkLive.cpp"
    },
    {
      "type": "modify",
      "old_id": "0c6884afe52d4203b57efb7cd468ed7195a7df1c",
      "old_mode": 33188,
      "old_path": "lld/ELF/Options.td",
      "new_id": "e9fbe232d846230e82c22a019d810439493fce86",
      "new_mode": 33188,
      "new_path": "lld/ELF/Options.td"
    },
    {
      "type": "modify",
      "old_id": "9c93ae1876af0c1685c68b589bc65e96f6b4c701",
      "old_mode": 33188,
      "old_path": "lld/ELF/SymbolTable.h",
      "new_id": "37e31d23729637b3180c135b36cbb6a870d56cdc",
      "new_mode": 33188,
      "new_path": "lld/ELF/SymbolTable.h"
    },
    {
      "type": "modify",
      "old_id": "48f30123dcc0020c00d037e338cbce2857fe2a94",
      "old_mode": 33188,
      "old_path": "lld/ELF/SyntheticSections.cpp",
      "new_id": "678b130e9ef631e8a11a3711e8de320d82a9dc38",
      "new_mode": 33188,
      "new_path": "lld/ELF/SyntheticSections.cpp"
    },
    {
      "type": "modify",
      "old_id": "a2554c7fd4a73ffdb2e7b1d9b3759df4666ee24f",
      "old_mode": 33188,
      "old_path": "lld/ELF/SyntheticSections.h",
      "new_id": "de07aee9c98cc4b94a68c5bd62ae60f2f2dbb78a",
      "new_mode": 33188,
      "new_path": "lld/ELF/SyntheticSections.h"
    },
    {
      "type": "modify",
      "old_id": "59534ab3256df1d461360eca18353ac4eca18df7",
      "old_mode": 33188,
      "old_path": "lld/ELF/Target.h",
      "new_id": "cec105f967a9067a4c5e13b10404c3c999bdb086",
      "new_mode": 33188,
      "new_path": "lld/ELF/Target.h"
    },
    {
      "type": "modify",
      "old_id": "3630b199714da6c78ed5194e44a7205325cc07f4",
      "old_mode": 33188,
      "old_path": "lld/ELF/Writer.cpp",
      "new_id": "361e0ab33f7cf6011598774b2c368550e3540b65",
      "new_mode": 33188,
      "new_path": "lld/ELF/Writer.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "bfa3dcf33258ed495860fe23c2832680e50d503a",
      "new_mode": 33188,
      "new_path": "lld/test/ELF/Inputs/arm-cmse-macros.s"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a360d482272d953f94f4f913074101dafe6afa12",
      "new_mode": 33188,
      "new_path": "lld/test/ELF/aarch64-cmse.s"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "579cc409ad1e258e1e83e50c81f64e97b470d5db",
      "new_mode": 33188,
      "new_path": "lld/test/ELF/arm-cmse-diagnostics.s"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3f643a132f6cd3c4c34ba37d8acef74e2de8574e",
      "new_mode": 33188,
      "new_path": "lld/test/ELF/arm-cmse-implib.s"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5157da77cd5e8cb851706e125839acd9c4025518",
      "new_mode": 33188,
      "new_path": "lld/test/ELF/arm-cmse-keep-sections.s"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "19e7a45e356b9064dd68991dec611faf72657dcc",
      "new_mode": 33188,
      "new_path": "lld/test/ELF/arm-cmse-noveneers.s"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d6fb661c4649341cd5a8436aa6693152681cc24a",
      "new_mode": 33188,
      "new_path": "lld/test/ELF/arm-cmse-secure.s"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e9b4e6d28a9561931ba20abcd23df80ba35e8d97",
      "new_mode": 33188,
      "new_path": "lld/test/ELF/arm-cmse-veneers.s"
    }
  ]
}
