1999-09-11 Donn Terry <donn@interix.com>

* peicode.h (coff_swap_scnhdr_in): If COFF_IMAGE_WITH_PE, the
	get the overflow of the s_nlnno field from the s_nreloc field.
	* peigen.c (_bfd_pei_swap_scnhdr_out): If doing a final link, swap
	the s_nlnno overflow of the .text section into the s_nreloc
	field.
This commit is contained in:
Ian Lance Taylor 1999-09-12 00:30:27 +00:00
parent 5933bdc9a1
commit cb43721da5
3 changed files with 60 additions and 19 deletions

View file

@ -215,8 +215,20 @@ coff_swap_scnhdr_in (abfd, ext, in)
GET_SCNHDR_LNNOPTR (abfd, (bfd_byte *) scnhdr_ext->s_lnnoptr);
scnhdr_int->s_flags = bfd_h_get_32(abfd, (bfd_byte *) scnhdr_ext->s_flags);
scnhdr_int->s_nreloc = bfd_h_get_16(abfd, (bfd_byte *) scnhdr_ext->s_nreloc);
scnhdr_int->s_nlnno = bfd_h_get_16(abfd, (bfd_byte *) scnhdr_ext->s_nlnno);
/* MS handles overflow of line numbers by carrying into the reloc
field (it appears). Since it's supposed to be zero for PE
*IMAGE* format, that's safe. This is still a bit iffy. */
#ifdef COFF_IMAGE_WITH_PE
scnhdr_int->s_nlnno =
(bfd_h_get_16 (abfd, (bfd_byte *) scnhdr_ext->s_nlnno)
+ (bfd_h_get_16 (abfd, (bfd_byte *) scnhdr_ext->s_nreloc) << 16));
scnhdr_int->s_nreloc = 0;
#else
scnhdr_int->s_nreloc = bfd_h_get_16 (abfd,
(bfd_byte *) scnhdr_ext->s_nreloc);
scnhdr_int->s_nlnno = bfd_h_get_16 (abfd,
(bfd_byte *) scnhdr_ext->s_nlnno);
#endif
if (scnhdr_int->s_vaddr != 0)
{