[committed] hppa64: Improve compatibility with HP ld on HP-UX

Message ID abb3tT94yL-4ypZB@mx3210.local
State New
Headers
Series [committed] hppa64: Improve compatibility with HP ld on HP-UX |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_binutils_build--master-aarch64 fail Patch failed to apply
linaro-tcwg-bot/tcwg_binutils_build--master-arm fail Patch failed to apply

Commit Message

John David Anglin March 15, 2026, 6:17 p.m. UTC
  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

Maciej W. Rozycki March 31, 2026, 1:28 a.m. UTC | #1
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
  
John David Anglin March 31, 2026, 12:56 p.m. UTC | #2
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
  

Patch

diff --git a/ld/emulparams/elf64hppa.sh b/ld/emulparams/elf64hppa.sh
index 5afe0e2714a..9f185ee491f 100644
--- a/ld/emulparams/elf64hppa.sh
+++ b/ld/emulparams/elf64hppa.sh
@@ -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="
diff --git a/ld/emultempl/hppa64elf.em b/ld/emultempl/hppa64elf.em
new file mode 100644
index 00000000000..1aa00944604
--- /dev/null
+++ b/ld/emultempl/hppa64elf.em
@@ -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
diff --git a/ld/scripttempl/elf64hppa.sc b/ld/scripttempl/elf64hppa.sc
index d742675fb8c..d093f88b8fb 100644
--- a/ld/scripttempl/elf64hppa.sc
+++ b/ld/scripttempl/elf64hppa.sc
@@ -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}}}