[PATCH 1/3] ld/ELF: Move -z dynamic-undefined-weak flag handling to elf.em

Jan Beulich jbeulich@suse.com
Fri Aug 22 08:12:10 GMT 2025


On 16.07.2025 18:03, Hakan Candar wrote:
> The -z [no]dynamic-undefined-weak flag was previously handled through
> emulparams scripts, only wired into select backends like x86 and PPC.
> 
> This patch moves its handling into elf.em so that it applies uniformly
> across all ELF backends, removing the need for per-target boilerplate.
> 
> This change does not alter behavior for targets that already used the
> flag, but enables proper support on targets that previously ignored or
> warned on it (e.g., AArch64, RISC-V, MIPS).
> 
> ld/
> 	* emultempl/elf.em: Add -z dynamic-undefined-weak flag handling.
> 	* emulparams/dynamic_undefined_weak.sh: Delete.
> 	* emulparams/elf32_x86_64.sh: Remove source line.
> 	* emulparams/elf32ppccommon.sh: Likewise.
> 	* emulparams/elf_i386.sh: Likewise.
> 	* emulparams/elf_i386_be.sh: Likewise.
> 	* emulparams/elf_i386_ldso.sh: Likewise.
> 	* emulparams/elf_i386_vxworks.sh: Likewise.
> 	* emulparams/elf_iamcu.sh: Likewise.
> 	* emulparams/elf_x86_64.sh: Likewise.
> 	* ld.texi: Clarify that '-z dynamic-undefined-weak' is now accepted
> 	for all ELF targets, though some backends may not fully support it.
> 	* lexsup.c (elf_shlib_list_options): Document '-z dynamic-undefined-weak'
> 	and '-z nodynamic-undefined-weak' options in help output.
> 	* NEWS: Mention the new, centralized behaviour.
> 
> ld/testsuite/
> 	* ld-undefined/weak-undef.exp: Enable validation of
> 	undefined symbol retention for AArch64, RISC-V, and MIPS by
> 	setting appropriate assembler flags.

How are these testsuite changes related to the purpose of the patch?

> --- a/ld/NEWS
> +++ b/ld/NEWS
> @@ -2,6 +2,13 @@
>  
>  Changes in 2.45:
>  
> +* The -z [no]dynamic-undefined-weak option is now handled centrally in the
> +  ELF emulation code and is accepted on all ELF targets.  This removes the
> +  need for per-target wiring.
> +
> +  Some backends may not yet fully respect this centralized
> +  logic due to backend-specific conditionals.
> +
>  * On s390 64-bit (s390x), generate SFrame stack trace information (.sframe)
>    for the linker generated .plt section.  Enabled by default.  Can be disabled
>    using linker option --no-ld-generated-unwind-info.

This needs to move out of the 2.45 section.

> --- a/ld/emultempl/elf.em
> +++ b/ld/emultempl/elf.em
> @@ -1115,6 +1115,13 @@ fragment <<EOF
>  	link_info.textrel_check = textrel_check_none;
>  EOF
>  
> +fragment <<EOF
> +      else if (strcmp (optarg, "dynamic-undefined-weak") == 0)
> +        link_info.dynamic_undefined_weak = true;
> +      else if (strcmp (optarg, "nodynamic-undefined-weak") == 0)
> +        link_info.dynamic_undefined_weak = false;
> +EOF

Make part of the previous "fragment" invocation?

Jan


More information about the Binutils mailing list