This is the mail archive of the
binutils@sourceware.cygnus.com
mailing list for the binutils project.
Re: patch for i386-pe section header [Re: section bug?]
- To: Ian Lance Taylor <ian@zembu.com>
- Subject: Re: patch for i386-pe section header [Re: section bug?]
- From: Mumit Khan <khan@xraylith.wisc.EDU>
- Date: Sat, 26 Jun 1999 21:13:10 -0500
- cc: ts1@cma.co.jp, binutils@sourceware.cygnus.com
Ian Lance Taylor <ian@zembu.com> writes:
>
> In the second new line, shouldn't that be
> flags |= IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_WRITE
> ?
>
> I would almost just check that in, but I thought I'd better check to
> see if I was missing something.
>
And I also forgot to diff the whole tree. Damn. Now it's tested on both
NT and W9x.
bfd/ChangeLog:
Sat Jun 26 21:09:44 1999 Mumit Khan <khan@xraylith.wisc.edu>
* peicode.h (coff_swap_scnhdr_out): Mark user-defined writable
sections as writable.
gas/ChangeLog:
Sat Jun 26 21:09:44 1999 Mumit Khan <khan@xraylith.wisc.edu>
* config/obj-coff.c (obj_coff_section): Mark writable sections
as data.
Index: bfd/peicode.h
===================================================================
RCS file: /cvs/binutils/binutils/bfd/peicode.h,v
retrieving revision 1.3
diff -u -3 -p -r1.3 peicode.h
--- bfd/peicode.h 1999/05/25 11:37:40 1.3
+++ bfd/peicode.h 1999/06/27 02:08:58
@@ -1235,7 +1235,11 @@ coff_swap_scnhdr_out (abfd, in, out)
else if (strcmp (scnhdr_int->s_name, ".rsrc") == 0)
flags |= IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_SHARED;
else
- flags |= IMAGE_SCN_MEM_READ;
+ {
+ flags |= IMAGE_SCN_MEM_READ;
+ if (! (flags & SEC_READONLY))
+ flags |= IMAGE_SCN_MEM_WRITE;
+ }
bfd_h_put_32(abfd, flags, (bfd_byte *) scnhdr_ext->s_flags);
}
Index: gas/config/obj-coff.c
===================================================================
RCS file: /cvs/binutils/binutils/gas/config/obj-coff.c,v
retrieving revision 1.5
diff -u -3 -p -r1.5 obj-coff.c
--- gas/config/obj-coff.c 1999/06/19 14:04:44 1.5
+++ gas/config/obj-coff.c 1999/06/27 02:08:59
@@ -1247,7 +1247,7 @@ obj_coff_section (ignore)
case 'b': flags |= SEC_ALLOC; flags &=~ SEC_LOAD; break;
case 'n': flags &=~ SEC_LOAD; break;
case 'd':
- case 'w': flags &=~ SEC_READONLY; break;
+ case 'w': flags |= SEC_DATA; flags &=~ SEC_READONLY; break;
case 'x': flags |= SEC_CODE; break;
case 'r': flags |= SEC_READONLY; break;
Regards,
Mumit