2009-03-19 Kai Tietz <kai.tietz@onevision.com>
* bfd-in2.h: Regenerated. * coffcode.h (sec_to_styp_flags): For pe-coff add SEC_READONLY for debugging sections and map memory read/write dependent on SEC_COFF_NOREAD. (styp_to_sec_flags): Set SEC_COFF_NOREAD for sections without memory read flags set. * section.c: Add SEC_COFF_NOREAD to section flags.
This commit is contained in:
parent
b7cac25fd1
commit
156621f344
@ -1,3 +1,13 @@
|
||||
2009-03-19 Kai Tietz <kai.tietz@onevision.com>
|
||||
|
||||
* bfd-in2.h: Regenerated.
|
||||
* coffcode.h (sec_to_styp_flags): For pe-coff add SEC_READONLY
|
||||
for debugging sections and map memory read/write dependent on
|
||||
SEC_COFF_NOREAD.
|
||||
(styp_to_sec_flags): Set SEC_COFF_NOREAD for sections
|
||||
without memory read flags set.
|
||||
* section.c: Add SEC_COFF_NOREAD to section flags.
|
||||
|
||||
2009-03-19 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* elf32-hppa.c (final_link_relocate): Cast bfd_vma values to long
|
||||
|
@ -1304,6 +1304,10 @@ typedef struct bfd_section
|
||||
TMS320C54X only. */
|
||||
#define SEC_TIC54X_CLINK 0x20000000
|
||||
|
||||
/* Indicate that section has the no read flag set. This happens
|
||||
when memory read flag isn't set. */
|
||||
#define SEC_COFF_NOREAD 0x40000000
|
||||
|
||||
/* End of section flags. */
|
||||
|
||||
/* Some internal packed boolean fields. */
|
||||
|
@ -637,7 +637,7 @@ sec_to_styp_flags (const char *sec_name, flagword sec_flags)
|
||||
/* FIXME: There is no gas syntax to specify the debug section flag. */
|
||||
if (CONST_STRNEQ (sec_name, DOT_DEBUG)
|
||||
|| CONST_STRNEQ (sec_name, GNU_LINKONCE_WI))
|
||||
sec_flags = SEC_DEBUGGING;
|
||||
sec_flags = SEC_DEBUGGING | SEC_READONLY;
|
||||
|
||||
/* skip LOAD */
|
||||
/* READONLY later */
|
||||
@ -666,19 +666,14 @@ sec_to_styp_flags (const char *sec_name, flagword sec_flags)
|
||||
/* skip LINK_DUPLICATES */
|
||||
/* skip LINKER_CREATED */
|
||||
|
||||
if (sec_flags & (SEC_ALLOC | SEC_LOAD))
|
||||
{
|
||||
/* For now, the read/write bits are mapped onto SEC_READONLY, even
|
||||
though the semantics don't quite match. The bits from the input
|
||||
are retained in pei_section_data(abfd, section)->pe_flags. */
|
||||
styp_flags |= IMAGE_SCN_MEM_READ; /* Always readable. */
|
||||
if ((sec_flags & SEC_READONLY) == 0)
|
||||
styp_flags |= IMAGE_SCN_MEM_WRITE; /* Invert READONLY for write. */
|
||||
if (sec_flags & SEC_CODE)
|
||||
styp_flags |= IMAGE_SCN_MEM_EXECUTE; /* CODE->EXECUTE. */
|
||||
if (sec_flags & SEC_COFF_SHARED)
|
||||
styp_flags |= IMAGE_SCN_MEM_SHARED; /* Shared remains meaningful. */
|
||||
}
|
||||
if ((sec_flags & SEC_COFF_NOREAD) == 0)
|
||||
styp_flags |= IMAGE_SCN_MEM_READ; /* Invert NOREAD for read. */
|
||||
if ((sec_flags & SEC_READONLY) == 0)
|
||||
styp_flags |= IMAGE_SCN_MEM_WRITE; /* Invert READONLY for write. */
|
||||
if (sec_flags & SEC_CODE)
|
||||
styp_flags |= IMAGE_SCN_MEM_EXECUTE; /* CODE->EXECUTE. */
|
||||
if (sec_flags & SEC_COFF_SHARED)
|
||||
styp_flags |= IMAGE_SCN_MEM_SHARED; /* Shared remains meaningful. */
|
||||
|
||||
return styp_flags;
|
||||
}
|
||||
@ -1117,6 +1112,10 @@ styp_to_sec_flags (bfd *abfd,
|
||||
/* Assume read only unless IMAGE_SCN_MEM_WRITE is specified. */
|
||||
sec_flags = SEC_READONLY;
|
||||
|
||||
/* If section disallows read, then set the NOREAD flag. */
|
||||
if ((styp_flags & IMAGE_SCN_MEM_READ) == 0)
|
||||
sec_flags |= SEC_COFF_NOREAD;
|
||||
|
||||
/* Process each flag bit in styp_flags in turn. */
|
||||
while (styp_flags)
|
||||
{
|
||||
@ -1149,7 +1148,7 @@ styp_to_sec_flags (bfd *abfd,
|
||||
break;
|
||||
#endif
|
||||
case IMAGE_SCN_MEM_READ:
|
||||
/* Ignored, assume it always to be true. */
|
||||
sec_flags &= ~SEC_COFF_NOREAD;
|
||||
break;
|
||||
case IMAGE_SCN_TYPE_NO_PAD:
|
||||
/* Skip. */
|
||||
|
@ -343,6 +343,10 @@ CODE_FRAGMENT
|
||||
. TMS320C54X only. *}
|
||||
.#define SEC_TIC54X_CLINK 0x20000000
|
||||
.
|
||||
. {* Indicate that section has the no read flag set. This happens
|
||||
. when memory read flag isn't set. *}
|
||||
.#define SEC_COFF_NOREAD 0x40000000
|
||||
.
|
||||
. {* End of section flags. *}
|
||||
.
|
||||
. {* Some internal packed boolean fields. *}
|
||||
|
Loading…
x
Reference in New Issue
Block a user