)]}'
{
  "commit": "b2c74dcb465ccec1289dde0e1c8d299d85bb34f8",
  "tree": "458b41378878d63ada7cf89d11c43a77a4aa2ebe",
  "parents": [
    "cd1d2793d704617a2d660fb410b9018fb85e21ad"
  ],
  "author": {
    "name": "John David Anglin",
    "email": "danglin@gcc.gnu.org",
    "time": "Tue Jan 20 14:27:49 2026 -0500"
  },
  "committer": {
    "name": "John David Anglin",
    "email": "danglin@gcc.gnu.org",
    "time": "Tue Jan 20 14:27:49 2026 -0500"
  },
  "message": "hppa64: Improve relocation handling for local symbols and add gc_section support\n\nWith this patch, gcc-16 can be built and there are significant\nimprovements in test results.  I spent a lot of time trying to\nfix the EH exception support.  While there are still issues with\nhandling relocations in linkonce sessions, exception handling\nmostly works if pc-relative and text relative encoding is used\nin .eh_frame.  The main problems are the HP-UX dynamic linker\nrelocates the text and data segements indpendently, and it does\nnot support unaligned dynamic relocations.\n\nDue to a configure bug in libstdc++-v3, the lack of gc_section\nsupport caused many test failures, so I added the gc_section\nsupport form elf32-hppa.c.\n\nI also move the HP_LOAD_MAP scratchpad to the end of the .bss\nsection and fixed a number of issues with the linker scripts.\n\n2026-01-20  John David Anglin  \u003cdanglin@gcc.gnu.org\u003e\n\nbfd/ChangeLog:\n\n\t* elf64-hppa.c (elf64_hppa_check_relocs): Drop NEED_PLT\n\tfrom R_PARISC_LTOFF_FPTR relocations.  Revise R_PARISC_FPTR64\n\trelocation to use maybe_dynamic.  Add support for\n\tR_PARISC_GNU_VTINHERIT and R_PARISC_GNU_VTENTRY relocations.\n\tAdd code to handle dynamic relocations of local symbols.\n\t(elf64_hppa_gc_mark_hook): New.\n\t(ensure_undef_dynamic): New.\n\t(allocate_dynrel_entries): Revise checks to determine when\n\tto discard relocs.\n\t(elf64_hppa_late_size_sections): Revise allocation of local\n\tPLT, DLT and OPD entries.\n\t(elf64_hppa_finalize_opd): Remove assert.\n\t(elf64_hppa_finalize_dlt): Change type of dynindx to long.\n\t(elf64_hppa_finalize_dynreloc): Likewise.  Add check for\n\tdiscarded sections.  Correct handling of  R_PARISC_FPTR64\n\trelocation.  Remove assert.  Add new assert to check that\n\twe don\u0027t allocate more relocs in .rela.data than it can\n\thold.\n\t(elf64_hppa_finish_dynamic_sections): Move allocation for\n\tDT_HP_LOAD_MAP to end of .bss section.  Only allocate on\n\tHP-UX.\n\t(elf_hppa_dlt_dynrel_reloc): Add dynrel_type argument.\n\tChange type of dynindx.  Drop use of value.  Remove assert.\n\t(elf_hppa_opd_dynrel_relocs): Rename to elf_hppa_opd_eplt_reloc.\n\tDrop code to to emit R_PARISC_FPTR64 relocation.\n\t(elf_hppa_opd_fptr_reloc): New.\n\t(elf_hppa_final_link_relocate): Add SYM arguement.  Move\n\tcheck for SEC_DEBUGGING.  Rework DLT, LTOFF, FPTR and DIR64\n\trelocation handling.\n\t(elf64_hppa_relocate_section): Add asserts to ensure symbol\n\tisn\u0027t undefined and input_section hasn\u0027t been discarded.\n\t(elf_backend_gc_mark_hook): Define.\n\t(elf_backend_can_gc_sections): Define.\n\nld/ChangeLog:\n\n\t* emulparams/elf64hppa.sh (DATA_ADDR): Revise value to match\n\tHP-UX 11 value.\n\t(SHLIB_DATA_ADDR): Likewise.\n\t(NOP): Define.\n\t(OTHER_READONLY_SECTIONS): Add .data.rel, .HP.init, .preinit,\n\t.init and .fini sections to list.\n\t(__SYSTEM_ID_D, __TLS_SIZE_D, __FPU_REVISION, __FPU_MODEL,\n\t__CPU_REVISION, __CPU_KEYBITS_1, __LOAD_INFO, __ARGC, __ARGV,\n\t__ENVP, __libdl_jmp_tbl, __systab): Provide.\n\t(DATA_START_SYMBOLS, OTHER_SYMBOLS, INIT_START): Delete.\n\t(PREINIT_START, PREINIT_END, INIT_START): Define.\n\temulparams/hppa64linux.sh (NOP): Define.\n\t(DATA_START_SYMBOLS): Delete.\n\tscripttempl/elf64hppa.sc: Delete .init and .fini sections\n\tfrom script.  Allocate 16 bytes at end of .bss for HP_LOAD_MAP.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2df62923ee5ad433dc0a12c39ab6cccf5cf65e70",
      "old_mode": 33188,
      "old_path": "bfd/elf64-hppa.c",
      "new_id": "c35dcf0297620d945fcc9af5caf95fff43cfaa25",
      "new_mode": 33188,
      "new_path": "bfd/elf64-hppa.c"
    },
    {
      "type": "modify",
      "old_id": "b0b43f7ecde9f5d1f4ea4c17ef31627ce406a6f1",
      "old_mode": 33188,
      "old_path": "ld/emulparams/elf64hppa.sh",
      "new_id": "5afe0e2714a62ed12dca1847e74a999638326a2b",
      "new_mode": 33188,
      "new_path": "ld/emulparams/elf64hppa.sh"
    },
    {
      "type": "modify",
      "old_id": "3caad892dbf02945721a6d06540f1681b0ad2229",
      "old_mode": 33188,
      "old_path": "ld/emulparams/hppa64linux.sh",
      "new_id": "d72c6bb9a845f2f18c58777efe98a7ccc73064c4",
      "new_mode": 33188,
      "new_path": "ld/emulparams/hppa64linux.sh"
    },
    {
      "type": "modify",
      "old_id": "6b92ba58f5a018079e42a53ab70d919d26d96602",
      "old_mode": 33188,
      "old_path": "ld/scripttempl/elf64hppa.sc",
      "new_id": "d742675fb8c899bffcf9feb4c5ecf5202543c1f7",
      "new_mode": 33188,
      "new_path": "ld/scripttempl/elf64hppa.sc"
    }
  ]
}
