[PATCH v2 01/13] ld/PE: adjust .reloc and .edata section flags
Alan Modra
amodra@gmail.com
Sat Aug 30 04:45:02 GMT 2025
On Fri, Aug 29, 2025 at 01:55:54PM +0200, Jan Beulich wrote:
> Both really want to be SEC_DATA, even if _bfd_XXi_swap_scnhdr_out()
> makes sure that IMAGE_SCN_CNT_INITIALIZED_DATA is set in the final
> section header. Otoh, .reloc - being IMAGE_SCN_MEM_DISCARDABLE at least
> by default - shouldn't have SEC_ALLOC set.
>
> In an early form of the patch I also dropped SEC_ALLOC for .reloc. While
> I've undone that, I think the then necessary testsuite adjustments still
> want retaining:
>
> 1) I can't explain why the removal of _both_ SEC_ALLOC and SEC_LOAD for
> .reloc causes ld-scripts/provide-8 to XPASS on PE targets. Placing a
> symbol outside of the image isn't well-defined in PE anyway though, so
> convert the xfail-s to notarget-s.
>
> 2) The ld-pe/pe-aarch64 fragility is now dealt with in a separate patch.
> ---
> #skip may be better than #notarget, except that binutils-common.exp
> demands that it only be used "in groups", which isn't the case here.
> ---
> v2: ld-pe/pe-aarch64 testcase adjustment split out.
>
> --- a/ld/pe-dll.c
> +++ b/ld/pe-dll.c
> @@ -1081,6 +1081,7 @@ build_filler_bfd (bool include_edata)
> edata_s = bfd_make_section_old_way (filler_bfd, ".edata");
> if (edata_s == NULL
> || !bfd_set_section_flags (edata_s, (SEC_HAS_CONTENTS
> + | SEC_DATA
> | SEC_ALLOC
> | SEC_LOAD
> | SEC_KEEP
> @@ -1095,7 +1096,7 @@ build_filler_bfd (bool include_edata)
> reloc_s = bfd_make_section_old_way (filler_bfd, ".reloc");
> if (reloc_s == NULL
> || !bfd_set_section_flags (reloc_s, (SEC_HAS_CONTENTS
> - | SEC_ALLOC
> + | SEC_DATA
> | SEC_LOAD
> | SEC_KEEP
> | SEC_IN_MEMORY)))
> --- a/ld/testsuite/ld-scripts/provide-8.d
> +++ b/ld/testsuite/ld-scripts/provide-8.d
> @@ -1,7 +1,8 @@
> #source: provide-5.s
> #ld: -T provide-8.t
> #nm: -B
> -#xfail: mmix-*-* *-*-pe spu-*-* *-*-mingw* *-*-cygwin
> +#xfail: mmix-*-* spu-*-*
> +#notarget: *-*-pe *-*-mingw* *-*-cygwin
Can I ask for a comment here? Your "Placing a symbol.." above would
do nicely.
>
> #...
> 0+4000 D __FOO
--
Alan Modra
More information about the Binutils
mailing list