and then it got changed to the current shape in r1.119, which left it looking
like this:
#if defined (TARGET_IS_i386pe) \
|| defined (TARGET_IS_armpe) \
|| defined (TARGET_IS_arm_epoc_pe) \
|| defined (TARGET_IS_arm_wince_pe)
if (!link_info.relocatable)
pe_dll_build_sections (output_bfd, &link_info);
else
pe_exe_build_sections (output_bfd, &link_info);
#else
if (link_info.shared)
pe_dll_build_sections (output_bfd, &link_info);
#endif
#endif /* DLL_SUPPORT */
That was the point at which i386pe targets began calling
pe_exe_build_sections for the first time. The purpose of the patch was to add
ARM support, so the changed behaviour of i386 targets is most likely inadvertent.