arm-wince-pe support resurrection
Nick Clifton
nickc@redhat.com
Thu Dec 4 18:11:00 GMT 2003
Hi Dmitry,
With regards to this patch:
-------------------------------------------------------------------------------
2003-11-18 Dmitry Semyonov <Dmitry.Semyonov@oktet.ru>
* bfd/peXXigen.c (_bfd_XXi_swap_scnhdr_out): Set flags for some special
sections (.text, .rdata, .data, .bss) as described in
"MS PE & COFF Specification".
diff -rNc3p binutils-031114/bfd/peXXigen.c /home/sdv/cross/binutils-031114/bfd/peXXigen.c
*** binutils-031114/bfd/peXXigen.c Fri Nov 14 21:46:53 2003
--- /home/sdv/cross/binutils-031114/bfd/peXXigen.c Fri Nov 14 22:11:43 2003
*************** _bfd_XXi_swap_scnhdr_out (abfd, in, out)
*** 959,964 ****
--- 959,993 ----
{
int flags = scnhdr_int->s_flags;
+
+ if (strcmp (scnhdr_int->s_name, ".text") == 0)
+ {
+ /* Executable code */
+ flags &= ~IMAGE_SCN_MEM_WRITE;
+ flags |= IMAGE_SCN_CNT_CODE | IMAGE_SCN_MEM_EXECUTE |
+ IMAGE_SCN_MEM_READ;
+ }
+ else if (strcmp (scnhdr_int->s_name, ".rdata") == 0)
+ {
+ /* Read-only initialized data */
+ flags &= ~IMAGE_SCN_MEM_WRITE;
+ flags |= IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ;
+ }
+ else if (strcmp (scnhdr_int->s_name, ".data") == 0)
+ {
+ /* Initialized data */
+ flags |= IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_READ |
+ IMAGE_SCN_MEM_WRITE;
+ }
+ else if (strcmp (scnhdr_int->s_name, ".bss") == 0)
+ {
+ /* Uninitialized data */
+ flags |= IMAGE_SCN_CNT_UNINITIALIZED_DATA | IMAGE_SCN_MEM_READ |
+ IMAGE_SCN_MEM_WRITE;
+ }
+
+ /* FIXME: Still not all reserved sections and their characteristics
+ * are covered here. */
H_PUT_32 (abfd, flags, scnhdr_ext->s_flags);
}
-------------------------------------------------------------------------------
I am not sure that this is the right place to be doing this. So you
have an example of how, without this patch applied, the linker is
producing section with incorrect flag bits set ?
Cheers
Nick
More information about the Binutils
mailing list