[committed] hppa64: Improve compatibility with HP ld on HP-UX
Checks
Commit Message
Tested on HP-UX 11.11. Committed to trunk.
Dave
---
hppa64: Improve compatibility with HP ld on HP-UX
Provided symbols are revised to match those provided by HP ld.
This fixes startup issues caused by defining __FPU_MODEL,
__libdl_jmp_tbl and __systab.
This change adds the emultempl/hppa64elf.em file. We now always
link against /lib/pa20_64/milli.a on HP-UX.
HP-UX shared libraries have some unresolved symbols. So, we also
need to ignore unresolved symbols in shared libraries.
We adjust TEXT_START_ADDR and SHLIB_TEXT_START_ADDR to match the
values used by HP ld.
The .data section is moved to the start of the data segment.
2026-03-15 John David Anglin <danglin@gcc.gnu.org>
ld/ChangeLog:
* emulparams/elf64hppa.sh (TEXT_START_ADDR): Revise value to match
HP ld value.
(SHLIB_TEXT_START_ADDR): Likewise.
(EXTRA_EM_FILE): Define.
(OTHER_SYMBOLS): Revise to match symbols provided by HP ld.
* emultempl/hppa64elf.em: New file.
* scripttempl/elf64hppa.sc: Move .data to start of segment.
Comments
On Sun, 15 Mar 2026, John David Anglin wrote:
> This change adds the emultempl/hppa64elf.em file. We now always
> link against /lib/pa20_64/milli.a on HP-UX.
This however has caused zillions of regressions with cross-binutils, here
with the `powerpc64le-linux-gnu' host:
hppa64-hp-hpux11.23 +FAIL: objdump --disassemble= of consecutive same-name functions (1)
hppa64-hp-hpux11.23 +FAIL: objdump --disassemble= of consecutive same-name functions (2)
hppa64-hp-hpux11.23 +FAIL: objdump multiple --disassemble=
hppa64-hp-hpux11.23 +FAIL: Regular archive link
hppa64-hp-hpux11.23 +FAIL: Thin archive link
hppa64-hp-hpux11.23 +FAIL: Fake archive link
hppa64-hp-hpux11.23 +FAIL: Script fake archive link
hppa64-hp-hpux11.23 +FAIL: Regular whole archive link
hppa64-hp-hpux11.23 +FAIL: Thin whole archive link
hppa64-hp-hpux11.23 +FAIL: Fake whole archive link
hppa64-hp-hpux11.23 +FAIL: Script fake whole archive link
hppa64-hp-hpux11.23 +FAIL: Regular non-group archive link reject
hppa64-hp-hpux11.23 +FAIL: Thin non-group archive link reject
hppa64-hp-hpux11.23 +FAIL: Fake non-group archive link reject
hppa64-hp-hpux11.23 +FAIL: Script fake non-group archive link reject
hppa64-hp-hpux11.23 +FAIL: Regular group archive link accept
hppa64-hp-hpux11.23 +FAIL: Thin group archive link accept
hppa64-hp-hpux11.23 +FAIL: Fake group archive link accept
hppa64-hp-hpux11.23 +FAIL: Script fake group archive link accept
hppa64-hp-hpux11.23 +FAIL: Regular archive plus regular link
hppa64-hp-hpux11.23 +FAIL: Regular archive plus thin link
hppa64-hp-hpux11.23 +FAIL: Regular archive plus fake link
hppa64-hp-hpux11.23 +FAIL: Regular archive plus script fake link
hppa64-hp-hpux11.23 +FAIL: Thin archive plus regular link
hppa64-hp-hpux11.23 +FAIL: Thin archive plus thin link
hppa64-hp-hpux11.23 +FAIL: Thin archive plus fake link
hppa64-hp-hpux11.23 +FAIL: Thin archive plus script fake link
hppa64-hp-hpux11.23 +FAIL: Fake archive plus regular link
hppa64-hp-hpux11.23 +FAIL: Script fake archive plus regular link
hppa64-hp-hpux11.23 +FAIL: Fake archive plus thin link
hppa64-hp-hpux11.23 +FAIL: Fake archive plus fake link
hppa64-hp-hpux11.23 +FAIL: Script fake archive plus script fake link
hppa64-hp-hpux11.23 +FAIL: Regular archive plus whole regular link
hppa64-hp-hpux11.23 +FAIL: Regular archive plus whole thin link
hppa64-hp-hpux11.23 +FAIL: Regular archive plus whole fake link
hppa64-hp-hpux11.23 +FAIL: Regular archive w/o index link accept
hppa64-hp-hpux11.23 +FAIL: Thin archive w/o index link accept
hppa64-hp-hpux11.23 +FAIL: Fake archive with --no-link-mapless link accept
hppa64-hp-hpux11.23 +FAIL: Script fake archive with --no-link-mapless link accept
hppa64-hp-hpux11.23 +FAIL: Regular archive w/o index plus thin link accept
hppa64-hp-hpux11.23 +FAIL: Thin archive w/o index plus regular link accept
hppa64-hp-hpux11.23 +FAIL: Regular non-group archive w/o index link reject
hppa64-hp-hpux11.23 +FAIL: Thin non-group archive w/o index link reject
hppa64-hp-hpux11.23 +FAIL: Regular group archive w/o index link accept
hppa64-hp-hpux11.23 +FAIL: Thin group archive w/o index link accept
hppa64-hp-hpux11.23 +FAIL: check sections 1
hppa64-hp-hpux11.23 +FAIL: check sections 2
hppa64-hp-hpux11.23 +FAIL: ld-discard/extern
hppa64-hp-hpux11.23 +FAIL: ld-discard/start
hppa64-hp-hpux11.23 +FAIL: ld-discard/static
hppa64-hp-hpux11.23 +FAIL: ld-discard/zero-range
hppa64-hp-hpux11.23 +FAIL: ld-discard/zero-rel
hppa64-hp-hpux11.23 +FAIL: --export-dynamic-symbol foo archive
hppa64-hp-hpux11.23 +FAIL: -u --export-dynamic-symbol foo archive
hppa64-hp-hpux11.23 +FAIL: -u --export-dynamic-symbol "f*" archive
hppa64-hp-hpux11.23 +FAIL: --export-dynamic-symbol-list foo archive
hppa64-hp-hpux11.23 +FAIL: -u --export-dynamic-symbol-list foo bar archive
hppa64-hp-hpux11.23 +FAIL: -u --export-dynamic-symbol-list fstar archive
hppa64-hp-hpux11.23 +FAIL: Common symbol override test (auxiliary shared object build)
hppa64-hp-hpux11.23 +FAIL: Common symbol override test
hppa64-hp-hpux11.23 +FAIL: Common symbol override test 3a
hppa64-hp-hpux11.23 +FAIL: Common symbol override test 3b
hppa64-hp-hpux11.23 +FAIL: libpr26580-1.so
hppa64-hp-hpux11.23 +FAIL: pr26580-1
hppa64-hp-hpux11.23 +FAIL: pr26580-2
hppa64-hp-hpux11.23 +FAIL: Build eh-group1.o
hppa64-hp-hpux11.23 +FAIL: Link eh-group.o to eh-group
hppa64-hp-hpux11.23 +FAIL: PR ld/21703
hppa64-hp-hpux11.23 +FAIL: PR ld/21703 -r
hppa64-hp-hpux11.23 +FAIL: ld-elf/anno-sym
hppa64-hp-hpux11.23 +FAIL: Symbol flags copy
hppa64-hp-hpux11.23 +FAIL: ld-elf/comm-data4
hppa64-hp-hpux11.23 +FAIL: ld-elf/comm-data5
hppa64-hp-hpux11.23 +FAIL: ld-elf/compress1a
hppa64-hp-hpux11.23 +FAIL: ld-elf/compress1b
hppa64-hp-hpux11.23 +FAIL: ld-elf/compressed1a
hppa64-hp-hpux11.23 +FAIL: ld-elf/compressed1d
hppa64-hp-hpux11.23 +FAIL: ld-elf/eh5
hppa64-hp-hpux11.23 +FAIL: ld-elf/empty
hppa64-hp-hpux11.23 +FAIL: ld-elf/empty2
hppa64-hp-hpux11.23 +FAIL: ld-elf/endsym
hppa64-hp-hpux11.23 +FAIL: ld-elf/exclude3a
hppa64-hp-hpux11.23 +FAIL: ld-elf/exclude3c
hppa64-hp-hpux11.23 +FAIL: ld-elf/expr1
hppa64-hp-hpux11.23 +FAIL: ld-elf/fatal-warnings-2a
hppa64-hp-hpux11.23 +FAIL: ld-elf/fatal-warnings-2b
hppa64-hp-hpux11.23 +FAIL: --set-section-flags test 1 (sections)
hppa64-hp-hpux11.23 +FAIL: ld-elf/group1
hppa64-hp-hpux11.23 +FAIL: ld-elf/group10
hppa64-hp-hpux11.23 +FAIL: ld-elf/group11
hppa64-hp-hpux11.23 +FAIL: ld-elf/group12
hppa64-hp-hpux11.23 +FAIL: ld-elf/group2
hppa64-hp-hpux11.23 +FAIL: ld-elf/group3a
hppa64-hp-hpux11.23 +FAIL: ld-elf/group3b
hppa64-hp-hpux11.23 +FAIL: ld-elf/group4
hppa64-hp-hpux11.23 +FAIL: ld-elf/group5
hppa64-hp-hpux11.23 +FAIL: ld-elf/group6
hppa64-hp-hpux11.23 +FAIL: ld-elf/group7
hppa64-hp-hpux11.23 +FAIL: ld-elf/group8a
hppa64-hp-hpux11.23 +FAIL: ld-elf/group8b
hppa64-hp-hpux11.23 +FAIL: ld-elf/group9a
hppa64-hp-hpux11.23 +FAIL: ld-elf/group9b
hppa64-hp-hpux11.23 +FAIL: ld-elf/init-fini-arrays
hppa64-hp-hpux11.23 +FAIL: --interleave test byte 0
hppa64-hp-hpux11.23 +FAIL: --interleave test byte 4
hppa64-hp-hpux11.23 +FAIL: ld-elf/linkonce1
hppa64-hp-hpux11.23 +FAIL: ld-elf/linkonce2
hppa64-hp-hpux11.23 +FAIL: ld-elf/linkoncerdiff
hppa64-hp-hpux11.23 +FAIL: ld-elf/nobits-1
hppa64-hp-hpux11.23 +FAIL: ld-elf/noload-1
hppa64-hp-hpux11.23 +FAIL: ld-elf/noload-3
hppa64-hp-hpux11.23 +FAIL: ld-elf/nosectionheader-1
hppa64-hp-hpux11.23 +FAIL: ld-elf/note-1
hppa64-hp-hpux11.23 +FAIL: ld-elf/note-2
hppa64-hp-hpux11.23 +FAIL: .note.GNU-stack ld -r SHT_NOTE + SHT_PROGBITS (positive)
hppa64-hp-hpux11.23 +FAIL: .note.GNU-stack ld -r SHT_NOTE + SHT_PROGBITS (negative)
hppa64-hp-hpux11.23 +FAIL: .note.GNU-stack ld -r SHT_PROGBITS + SHT_NOTE (positive)
hppa64-hp-hpux11.23 +FAIL: .note.GNU-stack ld -r SHT_PROGBITS + SHT_NOTE (negative)
hppa64-hp-hpux11.23 +FAIL: ld-elf/orphan-11
hppa64-hp-hpux11.23 +FAIL: ld-elf/orphan-12
hppa64-hp-hpux11.23 +FAIL: ld-elf/orphan-13
hppa64-hp-hpux11.23 +FAIL: Report warning for orphan sections
hppa64-hp-hpux11.23 +FAIL: Report error for orphan sections
hppa64-hp-hpux11.23 +FAIL: Discard orphan sections
hppa64-hp-hpux11.23 +FAIL: Place orphan sections
hppa64-hp-hpux11.23 +FAIL: ld-elf/orphan
hppa64-hp-hpux11.23 +FAIL: ld-elf/orphan2
hppa64-hp-hpux11.23 +FAIL: ld-elf/orphan3
hppa64-hp-hpux11.23 +FAIL: ld-elf/overlay
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr11304
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr12851
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr13839
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr14052
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr14156a
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr14156b
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr14156c
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr14926
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr17550a
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr17550b
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr17550c
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr17550d
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr18735
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr19005
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr20513a
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr20513b
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr20528a
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr20528b
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr21884
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr21904
hppa64-hp-hpux11.23 +FAIL: PR 22319 - required undefined symbols in output
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr22677
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr22836-1a
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr22836-1b
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr22836-2
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr23591
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr23658-1a
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr23658-1b
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr24511
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr24718-1
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr24819
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr25022
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr26256-1a
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr26256-1b
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr26256-2a
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr26256-2b
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr26256-3a
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr26256-3b
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr26907
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr26978a
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr26978b
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr26979a
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr26979b
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr27128a
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr27128c
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr27590a
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr27590b
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr27825-1
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr27825-2
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr29259
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr30791a
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr30791b
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr32787
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr33291
hppa64-hp-hpux11.23 +FAIL: ld-elf/pr349
hppa64-hp-hpux11.23 +FAIL: ld-elf/property-seal-1
hppa64-hp-hpux11.23 +FAIL: ld-elf/property-seal-2
hppa64-hp-hpux11.23 +FAIL: ld-elf/property-seal-3
hppa64-hp-hpux11.23 +FAIL: ld-elf/property-seal-4
hppa64-hp-hpux11.23 +FAIL: ld-elf/property-seal-5
hppa64-hp-hpux11.23 +FAIL: ld-elf/property-seal-6
hppa64-hp-hpux11.23 +FAIL: ld-elf/property-seal-7
hppa64-hp-hpux11.23 +FAIL: ld-elf/property-seal-8
hppa64-hp-hpux11.23 +FAIL: Discarded dynamic relocation section
hppa64-hp-hpux11.23 +FAIL: relocatable with script
hppa64-hp-hpux11.23 +FAIL: ld-elf/sizeofa
hppa64-hp-hpux11.23 +FAIL: ld-elf/sizeofc
hppa64-hp-hpux11.23 +FAIL: ld-elf/stab
hppa64-hp-hpux11.23 +FAIL: ld-elf/startofa
hppa64-hp-hpux11.23 +FAIL: ld-elf/startofc
hppa64-hp-hpux11.23 +FAIL: ld-elf/unknown
hppa64-hp-hpux11.23 +FAIL: ld-elf/var1
hppa64-hp-hpux11.23 +FAIL: ld-elf/warn1
hppa64-hp-hpux11.23 +FAIL: ld-elf/warn2
hppa64-hp-hpux11.23 +FAIL: ld-elf/warn3
hppa64-hp-hpux11.23 +FAIL: Generate empty import library
hppa64-hp-hpux11.23 +FAIL: Generate import library
hppa64-hp-hpux11.23 +FAIL: Generate undefweak-1.o
hppa64-hp-hpux11.23 +FAIL: ld link shared library
hppa64-hp-hpux11.23 +FAIL: Linkonce sections with assembler generated notes
hppa64-hp-hpux11.23 +FAIL: PROVIDE_HIDDEN test (auxiliary shared object)
hppa64-hp-hpux11.23 +FAIL: PROVIDE_HIDDEN test 1
hppa64-hp-hpux11.23 +FAIL: PROVIDE_HIDDEN test 2
hppa64-hp-hpux11.23 +FAIL: PROVIDE_HIDDEN test 3
hppa64-hp-hpux11.23 +FAIL: PROVIDE_HIDDEN test 4
hppa64-hp-hpux11.23 +FAIL: PROVIDE_HIDDEN test 5
hppa64-hp-hpux11.23 +FAIL: PROVIDE_HIDDEN test 6
hppa64-hp-hpux11.23 +FAIL: PROVIDE_HIDDEN test 7
hppa64-hp-hpux11.23 +FAIL: PROVIDE_HIDDEN test 8
hppa64-hp-hpux11.23 +FAIL: PROVIDE_HIDDEN test 9
hppa64-hp-hpux11.23 +FAIL: PROVIDE_HIDDEN test 10
hppa64-hp-hpux11.23 +FAIL: PROVIDE_HIDDEN test 11
hppa64-hp-hpux11.23 +FAIL: PROVIDE_HIDDEN test 12
hppa64-hp-hpux11.23 +FAIL: assignment of ELF sections to segments (same page)
hppa64-hp-hpux11.23 +FAIL: assignment of ELF sections to segments (adjacent pages)
hppa64-hp-hpux11.23 +FAIL: assignment of ELF sections to segments (disjoint pages)
hppa64-hp-hpux11.23 +FAIL: Build pr22471a.so
hppa64-hp-hpux11.23 +FAIL: Build pr22471b.so
hppa64-hp-hpux11.23 +FAIL: Build pr22649-1.so
hppa64-hp-hpux11.23 +FAIL: Build pr22471
hppa64-hp-hpux11.23 +FAIL: DT_TEXTREL in shared lib
hppa64-hp-hpux11.23 +FAIL: DT_TEXTREL map file warning
hppa64-hp-hpux11.23 +FAIL: Build shared library for pr14170
hppa64-hp-hpux11.23 +FAIL: PR ld/14170
hppa64-hp-hpux11.23 +FAIL: PR ld/21703 shared
hppa64-hp-hpux11.23 +FAIL: Build shared library for broken linker script test
hppa64-hp-hpux11.23 +FAIL: Link using broken linker script
hppa64-hp-hpux11.23 +FAIL: Build pr17068.so
hppa64-hp-hpux11.23 +FAIL: pr17068 link --as-needed lib in group
hppa64-hp-hpux11.23 +FAIL: -Bsymbolic-functions
hppa64-hp-hpux11.23 +FAIL: Build pr20995.so
hppa64-hp-hpux11.23 +FAIL: Build pr22374 shared library
hppa64-hp-hpux11.23 +FAIL: pr22374 function pointer initialization
hppa64-hp-hpux11.23 +FAIL: -l: test (preparation)
hppa64-hp-hpux11.23 +FAIL: -l: test
hppa64-hp-hpux11.23 +FAIL: pr26103
hppa64-hp-hpux11.23 +FAIL: ld-misc/defsym1
hppa64-hp-hpux11.23 +FAIL: --remap-inputs (simple)
hppa64-hp-hpux11.23 +FAIL: --remap-inputs (wildcard)
hppa64-hp-hpux11.23 +FAIL: --remap-inputs-file
hppa64-hp-hpux11.23 +FAIL: --remap-inputs-file (with map output)
hppa64-hp-hpux11.23 +FAIL: Object for --just-symbols test
hppa64-hp-hpux11.23 +FAIL: Executable for --just-symbols test
hppa64-hp-hpux11.23 +FAIL: Object with --just-symbols test
hppa64-hp-hpux11.23 +FAIL: Executable with --just-symbols test
hppa64-hp-hpux11.23 +FAIL: align1
hppa64-hp-hpux11.23 +FAIL: ld-scripts/align2a
hppa64-hp-hpux11.23 +FAIL: ld-scripts/align2b
hppa64-hp-hpux11.23 +FAIL: ld-scripts/align5
hppa64-hp-hpux11.23 +FAIL: ld-scripts/align2c
hppa64-hp-hpux11.23 +FAIL: ld-scripts/subalign
hppa64-hp-hpux11.23 +FAIL: ld-scripts/pr23571
hppa64-hp-hpux11.23 +FAIL: ALIGNOF
hppa64-hp-hpux11.23 +FAIL: ASSERT
hppa64-hp-hpux11.23 +FAIL: ld-scripts/assert2
hppa64-hp-hpux11.23 +FAIL: ld-scripts/data
hppa64-hp-hpux11.23 +FAIL: ld-scripts/fill
hppa64-hp-hpux11.23 +FAIL: ld-scripts/fill16
hppa64-hp-hpux11.23 +FAIL: ld-scripts/fill2
hppa64-hp-hpux11.23 +FAIL: ld-scripts/pr27100
hppa64-hp-hpux11.23 +FAIL: ld-scripts/default-script1
hppa64-hp-hpux11.23 +FAIL: ld-scripts/default-script2
hppa64-hp-hpux11.23 +FAIL: ld-scripts/default-script3
hppa64-hp-hpux11.23 +FAIL: ld-scripts/default-script4
hppa64-hp-hpux11.23 +FAIL: DEFINED (PRMS 5699)
hppa64-hp-hpux11.23 +FAIL: ld-scripts/defined2
hppa64-hp-hpux11.23 +FAIL: ld-scripts/defined3
hppa64-hp-hpux11.23 +FAIL: ld-scripts/defined4
hppa64-hp-hpux11.23 +FAIL: ld-scripts/defined5
hppa64-hp-hpux11.23 +FAIL: ld-scripts/defined6
hppa64-hp-hpux11.23 +FAIL: ld-scripts/pr24008
hppa64-hp-hpux11.23 +FAIL: dynamic sections
hppa64-hp-hpux11.23 +FAIL: ld-scripts/empty-address-1
hppa64-hp-hpux11.23 +FAIL: ld-scripts/empty-address-2a
hppa64-hp-hpux11.23 +FAIL: ld-scripts/empty-address-2b
hppa64-hp-hpux11.23 +FAIL: ld-scripts/empty-address-3a
hppa64-hp-hpux11.23 +FAIL: ld-scripts/empty-address-3b
hppa64-hp-hpux11.23 +FAIL: ld-scripts/empty-address-3c
hppa64-hp-hpux11.23 +FAIL: ld-scripts/empty-address-4
hppa64-hp-hpux11.23 +FAIL: ld-scripts/empty-aligned
hppa64-hp-hpux11.23 +FAIL: ld-scripts/exclude-file-1
hppa64-hp-hpux11.23 +FAIL: ld-scripts/exclude-file-2
hppa64-hp-hpux11.23 +FAIL: ld-scripts/exclude-file-3
hppa64-hp-hpux11.23 +FAIL: ld-scripts/exclude-file-4
hppa64-hp-hpux11.23 +FAIL: ld-scripts/exclude-file-5
hppa64-hp-hpux11.23 +FAIL: ld-scripts/exclude-file-6
hppa64-hp-hpux11.23 +FAIL: ld-scripts/exclude-file-7
hppa64-hp-hpux11.23 +FAIL: ld-scripts/expr1
hppa64-hp-hpux11.23 +FAIL: ld-scripts/expr2
hppa64-hp-hpux11.23 +FAIL: ld-scripts/sane1
hppa64-hp-hpux11.23 +FAIL: ld-scripts/assign-loc
hppa64-hp-hpux11.23 +FAIL: ld-scripts/pr14962
hppa64-hp-hpux11.23 +FAIL: ld-scripts/pr14962-2
hppa64-hp-hpux11.23 +FAIL: ld-scripts/pr18963
hppa64-hp-hpux11.23 +FAIL: ld-scripts/pr22267
hppa64-hp-hpux11.23 +FAIL: EXTERN
hppa64-hp-hpux11.23 +FAIL: include-1
hppa64-hp-hpux11.23 +FAIL: binary logarithm
hppa64-hp-hpux11.23 +FAIL: map addresses
hppa64-hp-hpux11.23 +FAIL: PHDRS headers 3a
hppa64-hp-hpux11.23 +FAIL: print-memory-usage-1
hppa64-hp-hpux11.23 +FAIL: print-memory-usage-2
hppa64-hp-hpux11.23 +FAIL: print-memory-usage-3
hppa64-hp-hpux11.23 +FAIL: ld-scripts/provide-1
hppa64-hp-hpux11.23 +FAIL: ld-scripts/provide-10
hppa64-hp-hpux11.23 +FAIL: ld-scripts/provide-11
hppa64-hp-hpux11.23 +FAIL: ld-scripts/provide-12
hppa64-hp-hpux11.23 +FAIL: ld-scripts/provide-2
hppa64-hp-hpux11.23 +FAIL: ld-scripts/provide-4
hppa64-hp-hpux11.23 +FAIL: ld-scripts/provide-5
hppa64-hp-hpux11.23 +FAIL: ld-scripts/provide-6
hppa64-hp-hpux11.23 +FAIL: ld-scripts/provide-7
hppa64-hp-hpux11.23 +FAIL: ld-scripts/provide-8
hppa64-hp-hpux11.23 +FAIL: ld-scripts/provide-9
hppa64-hp-hpux11.23 +FAIL: rgn-over1
hppa64-hp-hpux11.23 +FAIL: rgn-over1 (map check)
hppa64-hp-hpux11.23 +FAIL: rgn-over2
hppa64-hp-hpux11.23 +FAIL: rgn-over2 (map check)
hppa64-hp-hpux11.23 +FAIL: rgn-over3
hppa64-hp-hpux11.23 +FAIL: rgn-over3 (map check)
hppa64-hp-hpux11.23 +FAIL: rgn-over4
hppa64-hp-hpux11.23 +FAIL: rgn-over4 (map check)
hppa64-hp-hpux11.23 +FAIL: rgn-over5
hppa64-hp-hpux11.23 +FAIL: rgn-over5 (map check)
hppa64-hp-hpux11.23 +FAIL: rgn-over6
hppa64-hp-hpux11.23 +FAIL: rgn-over6 (map check)
hppa64-hp-hpux11.23 +FAIL: rgn-over7
hppa64-hp-hpux11.23 +FAIL: rgn-over7 (map check)
hppa64-hp-hpux11.23 +FAIL: script
hppa64-hp-hpux11.23 +FAIL: MRI script
hppa64-hp-hpux11.23 +FAIL: MEMORY
hppa64-hp-hpux11.23 +FAIL: MEMORY with symbols
hppa64-hp-hpux11.23 +FAIL: ld-scripts/asciz
hppa64-hp-hpux11.23 +FAIL: ld-scripts/pr20302
hppa64-hp-hpux11.23 +FAIL: ld-scripts/output-section-types
hppa64-hp-hpux11.23 +FAIL: ld-scripts/ld-version
hppa64-hp-hpux11.23 +FAIL: ld-scripts/ld-version-2
hppa64-hp-hpux11.23 +FAIL: SEGMENT_START expression not absolute (default)
hppa64-hp-hpux11.23 +FAIL: SEGMENT_START expression not absolute (overridden)
hppa64-hp-hpux11.23 +FAIL: section-flags-1
hppa64-hp-hpux11.23 +FAIL: section-flags-2
hppa64-hp-hpux11.23 +FAIL: ld-scripts/section-match-1
hppa64-hp-hpux11.23 +FAIL: Text Section Ordering (section-order-1a)
hppa64-hp-hpux11.23 +FAIL: Text Section Ordering (section-order-1b)
hppa64-hp-hpux11.23 +FAIL: Data Section Ordering (section-order-1c)
hppa64-hp-hpux11.23 +FAIL: Data Section Ordering (section-order-1d)
hppa64-hp-hpux11.23 +FAIL: SIZEOF
hppa64-hp-hpux11.23 +FAIL: ld-scripts/sort-file-reversed-1
hppa64-hp-hpux11.23 +FAIL: ld-scripts/sort-file-reversed-2
hppa64-hp-hpux11.23 +FAIL: ld-scripts/sort-file
hppa64-hp-hpux11.23 +FAIL: ld-scripts/sort-sections-reversed-1
hppa64-hp-hpux11.23 +FAIL: ld-scripts/sort-sections-reversed-2
hppa64-hp-hpux11.23 +FAIL: ld-scripts/sort-sections-reversed-3
hppa64-hp-hpux11.23 +FAIL: --sort-section alignment
hppa64-hp-hpux11.23 +FAIL: SORT_BY_ALIGNMENT
hppa64-hp-hpux11.23 +FAIL: SORT_BY_ALIGNMENT(SORT_BY_ALIGNMENT())
hppa64-hp-hpux11.23 +FAIL: SORT_BY_ALIGNMENT(SORT_BY_ALIGNMENT()) --sort-section alignment
hppa64-hp-hpux11.23 +FAIL: SORT_BY_ALIGNMENT(SORT_BY_ALIGNMENT()) --sort-section name
hppa64-hp-hpux11.23 +FAIL: SORT_BY_ALIGNMENT(SORT_BY_NAME())
hppa64-hp-hpux11.23 +FAIL: SORT_BY_ALIGNMENT(SORT_BY_NAME()) --sort-section name
hppa64-hp-hpux11.23 +FAIL: SORT_BY_ALIGNMENT(SORT_BY_NAME()) --sort-section alignment
hppa64-hp-hpux11.23 +FAIL: --sort-section name
hppa64-hp-hpux11.23 +FAIL: SORT_BY_NAME
hppa64-hp-hpux11.23 +FAIL: SORT_BY_NAME(SORT_BY_ALIGNMENT())
hppa64-hp-hpux11.23 +FAIL: SORT_BY_NAME(SORT_BY_ALIGNMENT()) --sort-section name
hppa64-hp-hpux11.23 +FAIL: SORT_BY_NAME(SORT_BY_ALIGNMENT()) --sort-section alignment
hppa64-hp-hpux11.23 +FAIL: SORT_BY_NAME(SORT_BY_NAME())
hppa64-hp-hpux11.23 +FAIL: SORT_BY_NAME(SORT_BY_NAME()) --sort-section name
hppa64-hp-hpux11.23 +FAIL: SORT_BY_NAME(SORT_BY_NAME()) --sort-section alignment
hppa64-hp-hpux11.23 +FAIL: no SORT_BY_NAME/SORT_BY_ALIGNMENT/SORT
hppa64-hp-hpux11.23 +FAIL: no SORT_BY_NAME/SORT_BY_ALIGNMENT/SORT (2)
hppa64-hp-hpux11.23 +FAIL: sysroot-prefix common plain -Lpath, quoted
hppa64-hp-hpux11.23 +FAIL: sysroot-prefix common plain -Lpath, unquoted
hppa64-hp-hpux11.23 +FAIL: sysroot-prefix common full-path, quoted
hppa64-hp-hpux11.23 +FAIL: sysroot-prefix common full-path, unquoted
hppa64-hp-hpux11.23 +FAIL: sysroot-prefix common plain =-prefixed with empty, quoted
hppa64-hp-hpux11.23 +FAIL: sysroot-prefix common plain =-prefixed with empty, unquoted
hppa64-hp-hpux11.23 +FAIL: sysroot-prefix common plain $SYSROOT-prefixed with empty, quoted
hppa64-hp-hpux11.23 +FAIL: sysroot-prefix common plain $SYSROOT-prefixed with empty, unquoted
hppa64-hp-hpux11.23 +FAIL: sysroot-prefix common plain =-prefixed -Lpath, quoted
hppa64-hp-hpux11.23 +FAIL: sysroot-prefix common plain =-prefixed -Lpath, unquoted
hppa64-hp-hpux11.23 +FAIL: sysroot-prefix common plain $SYSROOT-prefixed -Lpath, quoted
hppa64-hp-hpux11.23 +FAIL: sysroot-prefix common plain $SYSROOT-prefixed -Lpath, unquoted
hppa64-hp-hpux11.23 +FAIL: sysroot-prefix common full-path =-prefixed without, quoted
hppa64-hp-hpux11.23 +FAIL: sysroot-prefix common full-path =-prefixed without, unquoted
hppa64-hp-hpux11.23 +FAIL: sysroot-prefix common full-path $SYSROOT-prefixed without, quoted
hppa64-hp-hpux11.23 +FAIL: sysroot-prefix common full-path $SYSROOT-prefixed without, unquoted
hppa64-hp-hpux11.23 +FAIL: --entry foo archive
hppa64-hp-hpux11.23 +FAIL: --entry foo -u foo archive
hppa64-hp-hpux11.23 +FAIL: --entry foo
hppa64-hp-hpux11.23 +FAIL: --entry foo -u foo
hppa64-hp-hpux11.23 +FAIL: --entry 0x0
hppa64-hp-hpux11.23 +FAIL: undefined symbols in shared lib
hppa64-hp-hpux11.23 +FAIL: weak undefined data symbols
hppa64-hp-hpux11.23 +FAIL: weak undefined function symbols in shared lib
-- all from the missing /lib/pa20_64/milli.a library. Should there be a
dummy provided for the purpose of non-native testing, such as with the
`alpha-dec-vms' target; cf. ld/testsuite/config/default.exp?
Maciej
On 2026-03-30 9:28 p.m., Maciej W. Rozycki wrote:
> -- all from the missing /lib/pa20_64/milli.a library. Should there be a
> dummy provided for the purpose of non-native testing, such as with the
> `alpha-dec-vms' target; cf. ld/testsuite/config/default.exp?
Thanks, I'll take a look. I only tested on hpux11.11.
Dave
@@ -2,16 +2,16 @@ SCRIPT_NAME=elf64hppa
ELFSIZE=64
OUTPUT_FORMAT="elf64-hppa"
NO_REL_RELOCS=yes
-TEXT_START_ADDR=0x4000000000001000
+TEXT_START_ADDR=0x4000000000000000
DATA_ADDR=0x8000000100000000
TARGET_PAGE_SIZE=4096
MAXPAGESIZE="CONSTANT (MAXPAGESIZE)"
LIB_PATH="=/usr/lib/pa20_64:=/opt/langtools/lib/pa20_64"
# The HP dynamic linker actually requires you set the start of text and
-# data to some reasonable value. Of course nobody knows what reasoanble
+# data to some reasonable value. Of course nobody knows what reasonable
# really is, so we just use the same values that HP's linker uses.
-SHLIB_TEXT_START_ADDR=0x4000000000001000
+SHLIB_TEXT_START_ADDR=0x4000000000000000
SHLIB_DATA_ADDR=0x8000000100000000
ARCH=hppa
@@ -20,6 +20,7 @@ NOP=0x08000240
ENTRY="main"
TEMPLATE_NAME=elf
GENERATE_SHLIB_SCRIPT=yes
+EXTRA_EM_FILE=hppa64elf
# We really want multiple .stub sections, one for each input .text section,
# but for now this is good enough.
@@ -79,19 +80,21 @@ OTHER_SYMBOLS='
PROVIDE (__TLS_INIT_SIZE = 0);
PROVIDE (__TLS_INIT_START = 0);
PROVIDE (__TLS_INIT_A = 0);
- PROVIDE (__TLS_PREALLOC_DTV_A = 0);
- PROVIDE (__SYSTEM_ID_D = 0);
- PROVIDE (__TLS_SIZE_D = 0);
- PROVIDE (__FPU_REVISION = 0);
- PROVIDE (__FPU_MODEL = 0);
- PROVIDE (__CPU_REVISION = 0);
- PROVIDE (__CPU_KEYBITS_1 = 0);
- PROVIDE (__LOAD_INFO = 0);
- PROVIDE (__ARGC = 0);
- PROVIDE (__ARGV = 0);
- PROVIDE (__ENVP = 0);
- PROVIDE (__libdl_jmp_tbl = 0);
- PROVIDE (__systab = 0);'
+ PROVIDE (__TLS_PREALLOC_DTV_A = 0);'
+
+# These undefined symbols in libc are not provided by the HP linker.
+# PROVIDE (__SYSTEM_ID_D = 0);
+# PROVIDE (__TLS_SIZE_D = 0);
+# PROVIDE (__FPU_REVISION = 0);
+# PROVIDE (__FPU_MODEL = 0);
+# PROVIDE (__CPU_REVISION = 0);
+# PROVIDE (__CPU_KEYBITS_1 = 0);
+# PROVIDE (__LOAD_INFO = 0);
+# PROVIDE (__ARGC = 0);
+# PROVIDE (__ARGV = 0);
+# PROVIDE (__ENVP = 0);
+# PROVIDE (__libdl_jmp_tbl = 0);
+# PROVIDE (__systab = 0);
# HPs use .dlt where systems use .got. Sigh.
OTHER_GOT_RELOC_SECTIONS="
new file mode 100644
@@ -0,0 +1,56 @@
+# This shell script emits a C file. -*- C -*-
+# Copyright (C) 1991-2026 Free Software Foundation, Inc.
+#
+# This file is part of the GNU Binutils.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+# MA 02110-1301, USA.
+#
+
+# This file is sourced from elf.em, and defines extra hppa-elf
+# specific routines.
+#
+fragment <<EOF
+
+#include "ldctor.h"
+#include "elf64-hppa.h"
+
+/* Stop the linker merging .text sections on relocatable links,
+ add millicode library to the list of input files, and ignore
+ unresolved symbols in shared libraries. */
+
+static void
+hppa64elf_after_parse (void)
+{
+ /* Stop the linker merging .text sections on relocatable links. */
+ if (bfd_link_relocatable (&link_info))
+ lang_add_unique (".text");
+
+ /* We always need to link against milli.a on HP-UX. */
+ lang_add_input_file ("/lib/pa20_64/milli.a",
+ lang_input_file_is_file_enum,
+ NULL);
+
+ /* HP-UX shared libraries have some unresolved symbols. We need to
+ ignore unresolved symbols in shared libraries. */
+ link_info.unresolved_syms_in_shared_libs = RM_IGNORE;
+
+ ldelf_after_parse ();
+}
+EOF
+
+# Put these extra hppaelf routines in ld_${EMULATION_NAME}_emulation
+#
+LDEMUL_AFTER_PARSE=hppa64elf_after_parse
@@ -428,6 +428,15 @@ cat <<EOF
${CREATE_SHLIB+${RELOCATING+. = ${SHLIB_DATA_ADDR-${DATA_SEGMENT_ALIGN}};}}
${CREATE_PIE+${RELOCATING+. = ${SHLIB_DATA_ADDR-${DATA_SEGMENT_ALIGN}};}}
+ /* Put .data at start of segment. */
+ .data ${RELOCATING-0} :
+ {
+ ${RELOCATING+${DATA_START_SYMBOLS}}
+ *(.data${RELOCATING+ .data.* .gnu.linkonce.d.*})
+ ${CONSTRUCTING+SORT(CONSTRUCTORS)}
+ }
+ .data1 ${RELOCATING-0} : { *(.data1) }
+
/* Exception handling */
.eh_frame ${RELOCATING-0} : ONLY_IF_RW { KEEP (*(.eh_frame)) }
.gcc_except_table ${RELOCATING-0} : ONLY_IF_RW { *(.gcc_except_table${RELOCATING+ .gcc_except_table.*}) }
@@ -459,13 +468,6 @@ cat <<EOF
${DATA_PLT+${PLT_BEFORE_GOT-${PLT}}}
- .data ${RELOCATING-0} :
- {
- ${RELOCATING+${DATA_START_SYMBOLS}}
- *(.data${RELOCATING+ .data.* .gnu.linkonce.d.*})
- ${CONSTRUCTING+SORT(CONSTRUCTORS)}
- }
- .data1 ${RELOCATING-0} : { *(.data1) }
${WRITABLE_RODATA+${RODATA}}
${OTHER_READWRITE_SECTIONS}
${SMALL_DATA_CTOR+${RELOCATING+${CTOR}}}