)]}'
{
  "commit": "a533c8df598b5ef99c54a13e2b137c98b34b043c",
  "tree": "cb019f462896604b2b48bb1f40dfe01bc0437051",
  "parents": [
    "4a54cb06585f568031dfd291d0fe45979ad75e98"
  ],
  "author": {
    "name": "H.J. Lu",
    "email": "hjl.tools@gmail.com",
    "time": "Fri Jun 09 13:50:22 2023 -0700"
  },
  "committer": {
    "name": "H.J. Lu",
    "email": "hjl.tools@gmail.com",
    "time": "Thu Dec 28 08:47:17 2023 -0800"
  },
  "message": "x86-64: Add R_X86_64_CODE_4_GOTTPOFF/R_X86_64_CODE_4_GOTPC32_TLSDESC\n\nFor\n\n\tadd\tname@gottpoff(%rip), %reg\n\tmov\tname@gottpoff(%rip), %reg\n\nadd\n\n # define R_X86_64_CODE_4_GOTTPOFF\t44\n\nand for\n\n\tlea\tname@tlsdesc(%rip), %reg\n\nadd\n\n # define R_X86_64_CODE_4_GOTPC32_TLSDESC\t45\n\nif the instruction starts at 4 bytes before the relocation offset.\nThey are similar to R_X86_64_GOTTPOFF and R_X86_64_GOTPC32_TLSDESC,\nrespectively.  Linker can covert GOTTPOFF to\n\n\tadd\t$name@tpoff, %reg\n\tmov\t$name@tpoff, %reg\n\nand GOTPC32_TLSDESC to\n\n\tmov\t$name@tpoff, %reg\n\tmov\tname@gottpoff(%rip), %reg\n\nif the instruction is encoded with the REX2 prefix when possible.\n\nbfd/\n\n\t* elf64-x86-64.c (x86_64_elf_howto_table): Add\n\tR_X86_64_CODE_4_GOTTPOFF and R_X86_64_CODE_4_GOTPC32_TLSDESC.\n\t(R_X86_64_standard): Updated.\n\t(x86_64_reloc_map): Add BFD_RELOC_X86_64_CODE_4_GOTTPOFF\n\tand BFD_RELOC_X86_64_CODE_4_GOTPC32_TLSDESC.\n\t(elf_x86_64_check_tls_transition): Handle R_X86_64_CODE_4_GOTTPOFF\n\tand R_X86_64_CODE_4_GOTPC32_TLSDESC.\n\t(elf_x86_64_tls_transition): Likewise.\n\t(elf_x86_64_scan_relocs): Likewise.\n\t(elf_x86_64_relocate_section): Likewise.\n\t* reloc.c (bfd_reloc_code_real): Add\n\tBFD_RELOC_X86_64_CODE_4_GOTTPOFF and\n\tBFD_RELOC_X86_64_CODE_4_GOTPC32_TLSDESC.\n\t* bfd-in2.h: Regenerated.\n\t* libbfd.h: Likewise.\n\ngas/\n\n\t* config/tc-i386.c (tc_i386_fix_adjustable): Handle\n\tBFD_RELOC_X86_64_CODE_4_GOTTPOFF and\n\tBFD_RELOC_X86_64_CODE_4_GOTPC32_TLSDESC.\n\t(md_assemble): Handle BFD_RELOC_X86_64_CODE_4_GOTTPOFF.\n\t(output_insn): Don\u0027t add empty REX prefix with REX2 prefix.\n\t(output_disp): Handle BFD_RELOC_X86_64_CODE_4_GOTTPOFF and\n\tBFD_RELOC_X86_64_CODE_4_GOTPC32_TLSDESC.\n\t(md_apply_fix): Likewise.\n\t(i386_validate_fix): Generate BFD_RELOC_X86_64_CODE_4_GOTTPOFF or\n\tBFD_RELOC_X86_64_CODE_4_GOTPC32_TLSDESC if ixp-\u003efx_tcbit3 is set.\n\t(tc_gen_reloc): Handle BFD_RELOC_X86_64_CODE_4_GOTTPOFF and\n\tBFD_RELOC_X86_64_CODE_4_GOTPC32_TLSDESC.\n\t* testsuite/gas/i386/x86-64-gottpoff.d: New file.\n\t* testsuite/gas/i386/x86-64-gottpoff.s: Likewise.\n\t* testsuite/gas/i386/x86-64-tlsdesc.d: Likewise.\n\t* testsuite/gas/i386/x86-64-tlsdesc.s: Likewise.\n\ninclude/\n\n\t* elf/x86-64.h (elf_x86_64_reloc_type): Add\n\tR_X86_64_CODE_4_GOTTPOFF and R_X86_64_CODE_4_GOTPC32_TLSDESC\n\nld/\n\n\t* testsuite/ld-x86-64/tlsbindesc.d: Updated.\n\t* testsuite/ld-x86-64/tlsbindesc.rd: Likewise.\n\t* testsuite/ld-x86-64/tlsbindesc.s: Add R_X86_64_CODE_4_GOTTPOFF\n\tand R_X86_64_CODE_4_GOTPC32_TLSDESC tests.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "96709da917095b1d9002639ffdec8413cebb392c",
      "old_mode": 33188,
      "old_path": "bfd/bfd-in2.h",
      "new_id": "550704ae89fb6d23f1114b192c146e05abc6ed04",
      "new_mode": 33188,
      "new_path": "bfd/bfd-in2.h"
    },
    {
      "type": "modify",
      "old_id": "a2d1b6f14b7080f4b17d61ecd4d5acfaa1ee0cd3",
      "old_mode": 33188,
      "old_path": "bfd/elf64-x86-64.c",
      "new_id": "3406bc86ec1e151250399182dd4a47695edfc534",
      "new_mode": 33188,
      "new_path": "bfd/elf64-x86-64.c"
    },
    {
      "type": "modify",
      "old_id": "8873fafdde9dc8b64447d50ae3f5109357585a43",
      "old_mode": 33188,
      "old_path": "bfd/libbfd.h",
      "new_id": "196e7e55ea644b6def33032998e9c494db6dd838",
      "new_mode": 33188,
      "new_path": "bfd/libbfd.h"
    },
    {
      "type": "modify",
      "old_id": "56d852d084f896338c7c0d9bdbeb042115695b52",
      "old_mode": 33188,
      "old_path": "bfd/reloc.c",
      "new_id": "30852b1422fd6afb91614a564ee35401b5b8cad0",
      "new_mode": 33188,
      "new_path": "bfd/reloc.c"
    },
    {
      "type": "modify",
      "old_id": "8d76446010b38957881b2e872abfb89e278f4b91",
      "old_mode": 33188,
      "old_path": "gas/config/tc-i386.c",
      "new_id": "694c494edec6e5ed011a6980f4fcf69db3d7a39e",
      "new_mode": 33188,
      "new_path": "gas/config/tc-i386.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d42abccc6d910e4eb9f03c1dcdbcab50d0f74744",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/i386/x86-64-gottpoff.d"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6f8f9d1480c517b4e5e774a7a9ab9b24548b6109",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/i386/x86-64-gottpoff.s"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "50c04e1e6b95bc07d7c72a7b220b051c3559102f",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/i386/x86-64-tlsdesc.d"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "91f8d23dca4ccb034c08e08bb9e143b231e70063",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/i386/x86-64-tlsdesc.s"
    },
    {
      "type": "modify",
      "old_id": "fa6a1c3c9458c54a7ed2bbaea972a41fb3f19321",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/i386/x86-64.exp",
      "new_id": "cd28846ca8f79695e7706c471956e920a3fb646b",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/i386/x86-64.exp"
    },
    {
      "type": "modify",
      "old_id": "30d1722cb73151e5abe0455b9ee69f758b4c2c04",
      "old_mode": 33188,
      "old_path": "include/elf/x86-64.h",
      "new_id": "bbcf190532e358d0b503abceac72cf8d3b001aeb",
      "new_mode": 33188,
      "new_path": "include/elf/x86-64.h"
    },
    {
      "type": "modify",
      "old_id": "5bdb659555f681277d974d3fb6e47cebb7bb6fc3",
      "old_mode": 33188,
      "old_path": "ld/testsuite/ld-x86-64/tlsbindesc.dd",
      "new_id": "4587cc751b40c15e746a1aaf6ff5ea5428bf8766",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-x86-64/tlsbindesc.dd"
    },
    {
      "type": "modify",
      "old_id": "682c4a066a2bec86998ac05a7317ca60fbea15f9",
      "old_mode": 33188,
      "old_path": "ld/testsuite/ld-x86-64/tlsbindesc.rd",
      "new_id": "daaea7a53716e0db7b5dffd3bc1f10767d6c420f",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-x86-64/tlsbindesc.rd"
    },
    {
      "type": "modify",
      "old_id": "cbebf02171d7dec1e0ad61df90e21971727184df",
      "old_mode": 33188,
      "old_path": "ld/testsuite/ld-x86-64/tlsbindesc.s",
      "new_id": "b80e5f192c0d3556a5e1e37c66fef3b061b11cbc",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-x86-64/tlsbindesc.s"
    }
  ]
}
