)]}'
{
  "commit": "9bee8d65d32ac1480997c13ce76ae7991180f1ed",
  "tree": "d7197b33ead5403346115ae31a7258daf6069f1b",
  "parents": [
    "4d71e17a9fd8d319359ded891eb3034a2325d4c0"
  ],
  "author": {
    "name": "H.J. Lu",
    "email": "hjl.tools@gmail.com",
    "time": "Thu May 22 11:29:49 2025 +0800"
  },
  "committer": {
    "name": "H.J. Lu",
    "email": "hjl.tools@gmail.com",
    "time": "Fri May 23 05:23:56 2025 +0800"
  },
  "message": "x86: Check MODRM for call and jmp in binutils older than 2.45\n\nWhen i386 glibc was assembled with commit:\n\ncommit 11c2852449825a5f486f63bc40aabed56b7c04c1 (HEAD)\nAuthor: Jan Beulich \u003cjbeulich@suse.com\u003e\nDate:   Fri Feb 21 10:24:50 2025 +0100\n\n    x86: widen @got{,pcrel} support to PUSH and APX IMUL\n\n    With us doing the transformation to an immediate operand for MOV and\n    various ALU insns, there\u0027s little reason to then not support the same\n    conversion for the other two insns which have respective immediate\n    operand forms. Unfortunately for IMUL (due to the 0F opcode prefix)\n    there\u0027s no suitable relocation, so the pre-APX forms cannot be marked\n    for relaxation in the assembler.\n\n\"pushl main@GOT(%ebx)\" in sysdeps/i386/start.S was assembled to\n\n1c: ff b3 00 00 00 00 push 0x0(%ebx) 1e: R_386_GOT32X main\n\nLinkers in binutils versions older than 2.45 treated it as jmp and relaxed\nit to\n\n22c: e9 cf ff ff ff   jmp    200 \u003cmain\u003e\n231: 90               nop\n\nUpdate elf_i386_convert_load_reloc in binutils versions older than 2.45\nto check MODRM for call and jmp to work with i386 glibc assembled with\nbinutils 2.45 or newer.  Do the same in elf_x86_64_convert_load_reloc.\n\n\tPR ld/32991\n\t* elf32-i386.c (elf_i386_convert_load_reloc): Check MODRM for\n\tcall and jmp.\n\t* elf64-x86-64.c (elf_x86_64_convert_load_reloc): Likewise.\n\nSigned-off-by: H.J. Lu \u003chjl.tools@gmail.com\u003e\n(cherry picked from commit 452f5511154ca02095a271cf085e17f536587207)\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6666871c40e7f9b60416119c412e34445eef6332",
      "old_mode": 33188,
      "old_path": "bfd/elf32-i386.c",
      "new_id": "b8890e9f3811a218637146c9decd3e0edbd07dd7",
      "new_mode": 33188,
      "new_path": "bfd/elf32-i386.c"
    },
    {
      "type": "modify",
      "old_id": "970379dea3b46f189349a6e9a792a788b3e69e6e",
      "old_mode": 33188,
      "old_path": "bfd/elf64-x86-64.c",
      "new_id": "6b0c15fa5604b155a5acddab8894a013eefca4b7",
      "new_mode": 33188,
      "new_path": "bfd/elf64-x86-64.c"
    }
  ]
}
