)]}'
{
  "commit": "cbe950e9fe8a56f788bcf985cc51733f18abb45b",
  "tree": "de47fda9cf9ccd6a3aed05d68e65ca79fd754505",
  "parents": [
    "3aa14d16c669ca75f9fa4e995a2e2d13069dff3f"
  ],
  "author": {
    "name": "H.J. Lu",
    "email": "hjl.tools@gmail.com",
    "time": "Mon Jun 01 13:11:52 2009 +0000"
  },
  "committer": {
    "name": "H.J. Lu",
    "email": "hjl.tools@gmail.com",
    "time": "Mon Jun 01 13:11:52 2009 +0000"
  },
  "message": "bfd/\n\n2009-06-01  H.J. Lu  \u003chongjiu.lu@intel.com\u003e\n\n\tPR ld/10205\n\t* elf32-i386.c (elf_howto_table): Add R_386_IRELATIVE.\n\t(elf_i386_reloc_type_lookup): Likewise.\n\t(R_386_tls): Removed.\n\t(R_386_irelative): New.\n\t(R_386_vt_offset): Updated.\n\t(elf_i386_rtype_to_howto): Likewise.\n\t(elf_i386_link_hash_table): Add igotplt, iplt and irelplt.\n\t(elf_i386_link_hash_table_create): Initialize igotplt,\n\tiplt and irelplt.\n\t(elf_i386_check_relocs): Handle STT_GNU_IFUNC symbol first.\n\t(elf_i386_adjust_dynamic_symbol): Likewise.\n\t(elf_i386_allocate_dynrelocs): Likewise.\n\t(elf_i386_relocate_section): Likewise.\n\t(elf_i386_size_dynamic_sections): Set up .iplt and .igot.plt\n\tsections.\n\t(elf_i386_finish_dynamic_symbol): When building a static\n\texecutable, use .iplt, .igot.plt and .rel.iplt sections for\n\tSTT_GNU_IFUNC symbols.  Generate R_386_IRELATIVE relocation for\n\tlocally defined STT_GNU_IFUNC symbol.\n\n\t* elf64-x86-64.c (x86_64_elf_howto): Add R_X86_64_IRELATIVE.\n\t(x86_64_reloc_map): Likewise.\n\t(R_X86_64_standard): Updated.\n\t(elf64_x86_64_link_hash_table): Add igotplt, iplt and irelplt.\n\t(elf64_x86_64_link_hash_table_create): Initialize igotplt,\n\tiplt and irelplt.\n\t(elf64_x86_64_check_relocs): Handle STT_GNU_IFUNC symbol first.\n\t(elf64_x86_64_adjust_dynamic_symbol): Likewise.\n\t(elf64_x86_64_allocate_dynrelocs): Likewise.\n\t(elf64_x86_64_relocate_section): Likewise.\n\t(elf64_x86_64_size_dynamic_sections): Set up .iplt and .igot.plt\n\tsections.\n\t(elf64_x86_64_finish_dynamic_symbol): When building a static\n\texecutable, use .iplt, .igot.plt and .rela.iplt sections for\n\tSTT_GNU_IFUNC symbols.  Generate R_X86_64_IRELATIVE relocation\n\tfor locally defined STT_GNU_IFUNC symbol.\n\n\t* reloc.c (BFD_RELOC_386_IRELATIVE): New.\n\t(BFD_RELOC_X86_64_IRELATIVE): Likewise.\n\n\t* bfd-in2.h: Regenerated.\n\t* libbfd.h: Likewise.\n\ninclude/elf/\n\n2009-06-01  H.J. Lu  \u003chongjiu.lu@intel.com\u003e\n\n\tPR ld/10205\n\t* i386.h (R_386_IRELATIVE): New.\n\t* x86-64.h (R_X86_64_IRELATIVE): Likewise.\n\nld/testsuite/\n\n2009-06-01  H.J. Lu  \u003chongjiu.lu@intel.com\u003e\n\n\tPR ld/10205\n\t* ld-ifunc/ifunc.exp (contains_irelative_reloc): New.\n\tUse it on executable and shared library.\n\tRun *.d.\n\n\t* ld-ifunc/lib.c: Add a hidden alias, __GI_library_func2, for\n\tlibrary_func2.\n\t(library_func): New.\n\n\t* ld-ifunc/ifunc-1-x86.d: New.\n\t* ld-ifunc/ifunc-1-x86.s: Likewise.\n\t* ld-ifunc/ifunc-2-i386.d: Likewise.\n\t* ld-ifunc/ifunc-2-i386.s: Likewise.\n\t* ld-ifunc/ifunc-2-x86-64.d: Likewise.\n\t* ld-ifunc/ifunc-2-x86-64.s: Likewise.\n\t* ld-ifunc/ifunc-3a-x86.d: Likewise.\n\t* ld-ifunc/ifunc-3b-x86.d: Likewise.\n\t* ld-ifunc/ifunc-3-x86.s: Likewise.\n\t* ld-ifunc/ifunc-4-x86.d: Likewise.\n\t* ld-ifunc/ifunc-4-x86.s: Likewise.\n\t* ld-ifunc/ifunc-5-i386.d: Likewise.\n\t* ld-ifunc/ifunc-5-i386.s: Likewise.\n\t* ld-ifunc/ifunc-5-x86-64.d: Likewise.\n\t* ld-ifunc/ifunc-5-x86-64.s: Likewise.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "615530b50f6b1a89ba1e4ddb907def13f9f7ee12",
      "old_mode": 33188,
      "old_path": "bfd/ChangeLog",
      "new_id": "b7cf0effe0288e56d27aa37b30ad0d38657a96f7",
      "new_mode": 33188,
      "new_path": "bfd/ChangeLog"
    },
    {
      "type": "modify",
      "old_id": "7a28129fcbff2dc98ed44fcdc003cd4762565e43",
      "old_mode": 33188,
      "old_path": "bfd/bfd-in2.h",
      "new_id": "004affe308ddc57848174c3f6ea038b1a1dea64f",
      "new_mode": 33188,
      "new_path": "bfd/bfd-in2.h"
    },
    {
      "type": "modify",
      "old_id": "8499f7e9c53bcdb7d00f59c26411b37083a28361",
      "old_mode": 33188,
      "old_path": "bfd/elf32-i386.c",
      "new_id": "70c579e76fc66ad1792a6250cf64af8560e4e6ce",
      "new_mode": 33188,
      "new_path": "bfd/elf32-i386.c"
    },
    {
      "type": "modify",
      "old_id": "253473f6f85bc475aed090a6e7e0f5da7f0800f0",
      "old_mode": 33188,
      "old_path": "bfd/elf64-x86-64.c",
      "new_id": "86715865b6a166b6b0e1b01a04219ba24cf06df4",
      "new_mode": 33188,
      "new_path": "bfd/elf64-x86-64.c"
    },
    {
      "type": "modify",
      "old_id": "7fc58a4e677b5f2239c3f931f70d8e536a5b96f1",
      "old_mode": 33188,
      "old_path": "bfd/libbfd.h",
      "new_id": "ea1a080a23b4398459a41a7a337fa334f39aa69e",
      "new_mode": 33188,
      "new_path": "bfd/libbfd.h"
    },
    {
      "type": "modify",
      "old_id": "66fb672dba39d575acbf139c5a2350de68c0899e",
      "old_mode": 33188,
      "old_path": "bfd/reloc.c",
      "new_id": "ad002d73de3494ac7e6237e70196309ff834868a",
      "new_mode": 33188,
      "new_path": "bfd/reloc.c"
    },
    {
      "type": "modify",
      "old_id": "fb8c1a88ea8c6a20f4407d868f10313208cb7c83",
      "old_mode": 33188,
      "old_path": "include/elf/ChangeLog",
      "new_id": "ff92f5cf9532ab0c3b696b00ae5d7480ec3572a7",
      "new_mode": 33188,
      "new_path": "include/elf/ChangeLog"
    },
    {
      "type": "modify",
      "old_id": "e167871f34a731304467d2df33346217eab6e246",
      "old_mode": 33188,
      "old_path": "include/elf/i386.h",
      "new_id": "3e31dd36650c5c484c8cb2a4931d3bd5d1b78588",
      "new_mode": 33188,
      "new_path": "include/elf/i386.h"
    },
    {
      "type": "modify",
      "old_id": "97b53948f5171bc32f8429be502a1f38f4222681",
      "old_mode": 33188,
      "old_path": "include/elf/x86-64.h",
      "new_id": "7ad0e3494f3cca49a52cf7f3473eca75a38a0209",
      "new_mode": 33188,
      "new_path": "include/elf/x86-64.h"
    },
    {
      "type": "modify",
      "old_id": "e6a02b0b2eb4b25bf09341531b98795d419cb335",
      "old_mode": 33188,
      "old_path": "ld/testsuite/ChangeLog",
      "new_id": "03fb645a0cd3218106e68c34328e96725fbbb41b",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ChangeLog"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ee043b1207b8b41802bbe6af423fa6dff0df8bfe",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-ifunc/ifunc-1-x86.d"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "82b64f06e89c31bfa2640bbdd08ebcacc0e88ce6",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-ifunc/ifunc-1-x86.s"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7dfc1fe3c4c4955763c4b0d64e9862d75f6f1252",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-ifunc/ifunc-2-i386.d"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "32d8812c80080845669c2293a123743e2e28722f",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-ifunc/ifunc-2-i386.s"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "103db78cf488b5f558b2153657ef366c74e0f40f",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-ifunc/ifunc-2-x86-64.d"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4137ff1e10d833fe7b424cbd860b47c2999733a9",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-ifunc/ifunc-2-x86-64.s"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "24af7ebed5a8c6e6bb60f6fd98c0c0d490702712",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-ifunc/ifunc-3-x86.s"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "97225bad7699a0725f08026b7d640b218e888428",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-ifunc/ifunc-3a-x86.d"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a5438252badaa8cd4c736d5fb9c171459c7fd89a",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-ifunc/ifunc-3b-x86.d"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5fe66e09e1179f3e819cadcded53241e9b5f885d",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-ifunc/ifunc-4-x86.d"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1c7e07e70cfc69b13acb3eee686f43f716e7f602",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-ifunc/ifunc-4-x86.s"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "eb3fc01e7bc98316bdcf14df7c3e51ee6a98a284",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-ifunc/ifunc-5-i386.d"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8e351ffcb0286c3b4896423a6492e65eaf412bfb",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-ifunc/ifunc-5-i386.s"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "84347cc4f9ccfa72563c4335642abd92de34cb8f",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-ifunc/ifunc-5-x86-64.d"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "054ce97a83b98bdb4e0c838918c8da28414a2332",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-ifunc/ifunc-5-x86-64.s"
    },
    {
      "type": "modify",
      "old_id": "2ba5da12f066199de6920f8b35fcdf2f5543f410",
      "old_mode": 33188,
      "old_path": "ld/testsuite/ld-ifunc/ifunc.exp",
      "new_id": "6840e4e6abf0bc99d6c2bce3b85157f8906aceef",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-ifunc/ifunc.exp"
    },
    {
      "type": "modify",
      "old_id": "5bfd2cd485b19ccf0e49cda10d5b5ad0794f6c52",
      "old_mode": 33188,
      "old_path": "ld/testsuite/ld-ifunc/lib.c",
      "new_id": "393dabf29698b4b3a9b79ec5ada89538c9d575ea",
      "new_mode": 33188,
      "new_path": "ld/testsuite/ld-ifunc/lib.c"
    }
  ]
}
