Re: [PATCH v2] PE/COFF: auto-promote oversized objects to bigobj

Jan Beulich <[email protected]>
Newsgroups gmane.comp.gnu.binutils
Message-ID <[email protected]>
On 23.06.2026 23:39, Oleg Tolmatcev wrote:
> @@ -3154,6 +3158,16 @@ coff_compute_section_file_positions (bfd * abfd)
>  
>    if (target_index >= bfd_coff_max_nscns (abfd))
>      {
> +#ifdef COFF_WITH_PE_BIGOBJ
> +      if (abfd->xvec != &TARGET_SYM_BIG)
> +	{
> +	  /* Regular PE/COFF uses 16-bit section numbers in symbols.
> +	     Promote oversized objects to the matching bigobj target
> +	     before any headers or symbols are finalized.  */
> +	  abfd->xvec = &TARGET_SYM_BIG;
> +	  return coff_compute_section_file_positions (abfd);
> +	}
> +#endif
>        bfd_set_error (bfd_error_file_too_big);
>        _bfd_error_handler
>  	/* xgettext:c-format */

It occurs to me only now that this new behavior affects not only COFF
objects, but also PE binaries. For the former the defaulting is imo okay
(as previously indicated), as you'll notice when linking that the linker
can't deal with the objects (and a newer linker needs using, or section
count needs bringing down). For the latter, however, an executable may
be produced which you have no way of knowing that it won't work with
certain loaders (because all you can ever test with is a limited set of
loaders). IOW I think the conditional may want to be

#if defined(COFF_WITH_PE_BIGOBJ) && !defined(COFF_IMAGE_WITH_PE)

Thoughts? I can certainly make that adjustment while committing, as
long as we can come to an agreement.

Jan
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.