https://sourceware.org/bugzilla/show_bug.cgi?id=30359
--- Comment #8 from Nick Clifton <nickc at redhat dot com> ---
(In reply to Pali Rohár from comment #6)
Hi Pali,
> And then somehow put
>
> LONG (-1); LONG (-1);
>
> only if _LENGTH_OF_DATA_ is non-zero.
>
> This is also not possible by linker script language? Because it looks like
> very common thing...
I agree that it would be useful, but sadly conditional linkage is just not
supported by the linker script syntax.
> So I have feeling that generated DLL file is valid and this is bug in the
> binutils PE parser.
Yes, I am beginning to suspect this as well. :-(
> I played a bit with binutils code and found out that zero VMA in peicode.h
> is handled specially - as ignored.
If I remember correctly this is because no normal PE section has a VMA of zero.
Or rather the only sections that have a VMA of 0 are debugging sections and
other non-execution related sections. I am a little bit surprised that Windows
did not complain about the .rsrc section having a VMA of 0, but if it likes it
then I am not going to worry.
> - if (scnhdr_int->s_vaddr != 0)
> + if (scnhdr_int->s_size != 0)
> {
> scnhdr_int->s_vaddr += pe_data (abfd)->pe_opthdr.ImageBase;
This would be wrong, I think, as it would cause debugging sections to end up
with non-0 load addresses, which I am pretty sure is a bad thing.
Cheers
Nick
--
You are receiving this mail because:
You are on the CC list for the bug.