)]}'
{
  "commit": "5bc71c2a6b8efb27089baa1fecded82be4f550a7",
  "tree": "10dfffcc5c12eaddca36a98b8e55e049592b6283",
  "parents": [
    "3f8f9745c75b333515f399fc2908ede2ed8014e9"
  ],
  "author": {
    "name": "H.J. Lu",
    "email": "hjl.tools@gmail.com",
    "time": "Sat Feb 03 14:32:17 2024 -0800"
  },
  "committer": {
    "name": "H.J. Lu",
    "email": "hjl.tools@gmail.com",
    "time": "Thu Feb 08 03:45:43 2024 -0800"
  },
  "message": "x86-64: Add R_X86_64_CODE_6_GOTTPOFF\n\nFor\n\n\tadd\t%reg1, name@gottpoff(%rip), %reg2\n\nand\n\n\tadd\tname@gottpoff(%rip), %reg1, %reg2\n\nadd\n\n #define R_X86_64_CODE_6_GOTTPOFF\t\t50\n\nif the instruction starts at 6 bytes before the relocation offset.\nThey are similar to R_X86_64_GOTTPOFF.  Linker can covert GOTTPOFF to\n\n\tadd\t$name@tpoff, %reg1, %reg2\n\nRewrite fx_tcbit, fx_tcbit2 and fx_tcbit3 usage to generate\nR_X86_64_GOTPCRELX, R_X86_64_REX_GOTPCRELX, R_X86_64_CODE_4_GOTPCRELX,\nR_X86_64_CODE_4_GOTTPOFF, R_X86_64_CODE_4_GOTPC32_TLSDESC and\nR_X86_64_CODE_6_GOTTPOFF.\n\nNB: There is no need to check BFD_RELOC_X86_64_CODE_4_GOTTPOFF in\nmd_assemble since there is only BFD_RELOC_X86_64_GOTTPOFF at this\nstage, which will be converted to BFD_RELOC_X86_64_CODE_4_GOTTPOFF\nor BFD_RELOC_X86_64_CODE_6_GOTTPOFF in i386_validate_fix.\n\n5 relocations:\n\n #define R_X86_64_CODE_5_GOTPCRELX\t\t46\n #define R_X86_64_CODE_5_GOTTPOFF\t\t47\n #define R_X86_64_CODE_5_GOTPC32_TLSDESC\t48\n #define R_X86_64_CODE_6_GOTPCRELX\t\t49\n #define R_X86_64_CODE_6_GOTPC32_TLSDESC\t51\n\nare added for completeness and they are unused.\n\nbfd/\n\n\t* elf64-x86-64.c (x86_64_elf_howto_table): Add\n\tR_X86_64_CODE_5_GOTPCRELX, R_X86_64_CODE_5_GOTTPOFF,\n\tR_X86_64_CODE_5_GOTPC32_TLSDESC, R_X86_64_CODE_6_GOTPCRELX,\n\tR_X86_64_CODE_6_GOTTPOFF and R_X86_64_CODE_6_GOTPC32_TLSDESC.\n\t(R_X86_64_standard): Updated.\n\t(x86_64_reloc_map): Add R_X86_64_CODE_5_GOTPCRELX,\n\tR_X86_64_CODE_5_GOTTPOFF, R_X86_64_CODE_5_GOTPC32_TLSDESC,\n\tR_X86_64_CODE_6_GOTPCRELX, R_X86_64_CODE_6_GOTTPOFF and\n\tR_X86_64_CODE_6_GOTPC32_TLSDESC.\n\t(elf_x86_64_check_tls_transition): Handle\n\tR_X86_64_CODE_6_GOTTPOFF.\n\t(elf_x86_64_tls_transition): Likewise.\n\t(elf_x86_64_scan_relocs): Handle R_X86_64_CODE_6_GOTTPOFF.\n\tIssue an error for R_X86_64_CODE_5_GOTPCRELX,\n\tR_X86_64_CODE_5_GOTTPOFF, R_X86_64_CODE_5_GOTPC32_TLSDESC,\n\tR_X86_64_CODE_6_GOTPCRELX and R_X86_64_CODE_6_GOTPC32_TLSDESC.\n\t(elf_x86_64_relocate_section): Handle R_X86_64_CODE_6_GOTTPOFF.\n\t* reloc.c (bfd_reloc_code_real): Add\n\tBFD_RELOC_X86_64_CODE_5_GOTPCRELX,\n\tBFD_RELOC_X86_64_CODE_5_GOTTPOFF,\n\tBFD_RELOC_X86_64_CODE_5_GOTPC32_TLSDESC,\n\tBFD_RELOC_X86_64_CODE_6_GOTPCRELX,\n\tBFD_RELOC_X86_64_CODE_6_GOTTPOFF and\n\tBFD_RELOC_X86_64_CODE_6_GOTPC32_TLSDESC.\n\t* bfd-in2.h: Regenerated.\n\t* libbfd.h: Likewise.\n\nelfcpp/\n\n\t* x86_64.h (R_X86_64_CODE_5_GOTPCRELX): New.\n\t(R_X86_64_CODE_5_GOTTPOFF): Likewise.\n\t(R_X86_64_CODE_5_GOTPC32_TLSDESC): Likewise.\n\t(R_X86_64_CODE_6_GOTPCRELX): Likewise.\n\t(R_X86_64_CODE_6_GOTTPOFF): Likewise.\n\t(R_X86_64_CODE_6_GOTPC32_TLSDESC): Likewise.\n\ngas/\n\n\t* config/tc-i386.c (tc_i386_fix_adjustable): Handle\n\tBFD_RELOC_X86_64_CODE_6_GOTTPOFF.\n\t(md_assemble): Don\u0027t check BFD_RELOC_X86_64_CODE_4_GOTTPOFF.\n\tAllow \"add %reg1, foo@gottpoff(%rip), %reg2\".\n\t(output_disp): Handle BFD_RELOC_X86_64_CODE_6_GOTTPOFF.  Rewrite\n\tsetting fx_tcbitX bits for BFD_RELOC_X86_64_GOTTPOFF,\n\tBFD_RELOC_X86_64_GOTPC32_TLSDESC and BFD_RELOC_32_PCREL.\n\t(md_apply_fix): Handle BFD_RELOC_X86_64_CODE_6_GOTTPOFF.\n\t(i386_validate_fix): Rewrite fx_tcbitX bit checking for\n\tBFD_RELOC_X86_64_GOTTPOFF, BFD_RELOC_X86_64_GOTPC32_TLSDESC and\n\tBFD_RELOC_32_PCREL.\n\t(tc_gen_reloc): Handle BFD_RELOC_X86_64_CODE_6_GOTTPOFF.\n\t* testsuite/gas/i386/x86-64-gottpoff.d: Updated.\n\t* testsuite/gas/i386/x86-64-gottpoff.s: Add tests for\n\t\"add %reg1, foo@gottpoff(%rip), %reg2\" and\n\t\"add foo@gottpoff(%rip), %reg, %reg2\".\n\ngold/\n\n\t* x86_64.cc (Target_x86_64::optimize_tls_reloc): Handle\n\tR_X86_64_CODE_6_GOTTPOFF.\n\t(Target_x86_64::Scan::get_reference_flags): Likewise.\n\t(Target_x86_64::Scan::local): Likewise.\n\t(Target_x86_64::Scan::global): Likewise.\n\t(Target_x86_64::Relocate::relocate): Likewise.\n\t(Target_x86_64::Relocate::relocate_tls): Likewise.\n\t(Target_x86_64::Relocate::tls_ie_to_le): Handle.\n\tR_X86_64_CODE_6_GOTTPOFF.\n\t* testsuite/x86_64_ie_to_le.s: Add tests for\n\t\"add %reg1, foo@gottpoff(%rip), %reg2\" and\n\t\"add foo@gottpoff(%rip), %reg, %reg2\".\n\t* testsuite/x86_64_ie_to_le.sh: Updated.\n\ninclude/\n\n\t* elf/x86-64.h (elf_x86_64_reloc_type): Add\n\tR_X86_64_CODE_5_GOTPCRELX, R_X86_64_CODE_5_GOTTPOFF,\n\tR_X86_64_CODE_5_GOTPC32_TLSDESC, R_X86_64_CODE_6_GOTPCRELX,\n\tR_X86_64_CODE_6_GOTTPOFF and R_X86_64_CODE_6_GOTPC32_TLSDESC.\n\nld/\n\n\t* testsuite/ld-x86-64/tlsbindesc.s: Add R_X86_64_CODE_6_GOTTPOFF\n\ttests.\n\t* testsuite/ld-x86-64/tlsbindesc.d: Updated.\n\t* testsuite/ld-x86-64/tlsbindesc.rd: Likewise.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "581d8fe0b3e14f7267c18436dab6b394c2611cd3",
      "old_mode": 33188,
      "old_path": "bfd/bfd-in2.h",
      "new_id": "dbafcf8da3684c8e7c860cea689fd86b9aff6c57",
      "new_mode": 33188,
      "new_path": "bfd/bfd-in2.h"
    },
    {
      "type": "modify",
      "old_id": "f1253751bbd2c57cad1f88caaed99a794dfaf846",
      "old_mode": 33188,
      "old_path": "bfd/elf64-x86-64.c",
      "new_id": "2ed120af7801647458c554e4cb68b2c9d9338d7b",
      "new_mode": 33188,
      "new_path": "bfd/elf64-x86-64.c"
    },
    {
      "type": "modify",
      "old_id": "ebd4f24149b05a78fad38670bf9f6a295b451474",
      "old_mode": 33188,
      "old_path": "bfd/libbfd.h",
      "new_id": "40bbe6a3886aa8b5d792b325e20ba0c1259f4c37",
      "new_mode": 33188,
      "new_path": "bfd/libbfd.h"
    },
    {
      "type": "modify",
      "old_id": "e74cbd75e96d32f3423445ffd112f3ffd4ae95b7",
      "old_mode": 33188,
      "old_path": "bfd/reloc.c",
      "new_id": "7583b7fd5525d8271fc3a7f7772876388c599543",
      "new_mode": 33188,
      "new_path": "bfd/reloc.c"
    },
    {
      "type": "modify",
      "old_id": "135f339fccf6caaa667b50a715aba62dd5cec381",
      "old_mode": 33188,
      "old_path": "elfcpp/x86_64.h",
      "new_id": "5d254ce483b2b80047219fd2999bbb00c37f83e9",
      "new_mode": 33188,
      "new_path": "elfcpp/x86_64.h"
    },
    {
      "type": "modify",
      "old_id": "50d890c4481493ce5e7b11447503fd4f909f55fb",
      "old_mode": 33188,
      "old_path": "gas/config/tc-i386.c",
      "new_id": "9e7bb1dd4d617e57a959a0eec97d9f6fefa6eccc",
      "new_mode": 33188,
      "new_path": "gas/config/tc-i386.c"
    },
    {
      "type": "modify",
      "old_id": "d42abccc6d910e4eb9f03c1dcdbcab50d0f74744",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/i386/x86-64-gottpoff.d",
      "new_id": "f2c039abe727628297e6298944f6c57e26bfca5c",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/i386/x86-64-gottpoff.d"
    },
    {
      "type": "modify",
      "old_id": "6f8f9d1480c517b4e5e774a7a9ab9b24548b6109",
      "old_mode": 33188,
      "old_path": "gas/testsuite/gas/i386/x86-64-gottpoff.s",
      "new_id": "0335ec5debf4c62d9ff252f6a65026ddc5a9a330",
      "new_mode": 33188,
      "new_path": "gas/testsuite/gas/i386/x86-64-gottpoff.s"
    },
    {
      "type": "modify",
      "old_id": "c575206886651ef99c112d27142d9aabee76cad4",
      "old_mode": 33188,
      "old_path": "gold/testsuite/x86_64_ie_to_le.s",
      "new_id": "bd0643dc87f671ef6d98a8ed979fa432767ad572",
      "new_mode": 33188,
      "new_path": "gold/testsuite/x86_64_ie_to_le.s"
    },
    {
      "type": "modify",
      "old_id": "9d2e082f3e095d24c2ab4db2615d90401ec0f697",
      "old_mode": 33261,
      "old_path": "gold/testsuite/x86_64_ie_to_le.sh",
      "new_id": "5308712ddbd70c8d7d83fa5b24eca82299ed527e",
      "new_mode": 33261,
      "new_path": "gold/testsuite/x86_64_ie_to_le.sh"
    },
    {
      "type": "modify",
      "old_id": "58e191a055aa2cb726003b96c71dc2a41280cc19",
      "old_mode": 33188,
      "old_path": "gold/x86_64.cc",
      "new_id": "f77430bfb3d7c43d3dc2ba2ad63a2fee1db30e4f",
      "new_mode": 33188,
      "new_path": "gold/x86_64.cc"
    },
    {
      "type": "modify",
      "old_id": "33a824620a611990a8843c9f61cbe9a65df51394",
      "old_mode": 33188,
      "old_path": "include/elf/x86-64.h",
      "new_id": "ea5036a8bbf3efe18cfc195b5892a1f4d35e4ad8",
      "new_mode": 33188,
      "new_path": "include/elf/x86-64.h"
    },
    {
      "type": "modify",
      "old_id": "4587cc751b40c15e746a1aaf6ff5ea5428bf8766",
      "old_mode": 33188,
      "old_path": "ld/testsuite/ld-x86-64/tlsbindesc.dd",
      "new_id": "be89f38199dda62d4a2514d6c21af40b352428bf",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-x86-64/tlsbindesc.dd"
    },
    {
      "type": "modify",
      "old_id": "daaea7a53716e0db7b5dffd3bc1f10767d6c420f",
      "old_mode": 33188,
      "old_path": "ld/testsuite/ld-x86-64/tlsbindesc.rd",
      "new_id": "59325b04e19ec25c746419d30208683435acf35e",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-x86-64/tlsbindesc.rd"
    },
    {
      "type": "modify",
      "old_id": "b80e5f192c0d3556a5e1e37c66fef3b061b11cbc",
      "old_mode": 33188,
      "old_path": "ld/testsuite/ld-x86-64/tlsbindesc.s",
      "new_id": "4747fc1bc307838b52b633539c421999a283b212",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-x86-64/tlsbindesc.s"
    }
  ]
}
