aboutsummaryrefslogtreecommitdiff
path: root/bfd/evax-egsd.c
diff options
context:
space:
mode:
Diffstat (limited to 'bfd/evax-egsd.c')
-rw-r--r--bfd/evax-egsd.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/bfd/evax-egsd.c b/bfd/evax-egsd.c
index 8354b8b..cd12039 100644
--- a/bfd/evax-egsd.c
+++ b/bfd/evax-egsd.c
@@ -41,6 +41,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define EVAX_LINK_NAME "$LINK$"
#define EVAX_DATA_NAME "$DATA$"
#define EVAX_BSS_NAME "$BSS$"
+#define EVAX_READONLYADDR_NAME "$READONLY_ADDR$"
#define EVAX_READONLY_NAME "$READONLY$"
#define EVAX_LITERAL_NAME "$LITERAL$"
#define EVAX_COMMON_NAME "$COMMON$"
@@ -54,7 +55,7 @@ struct sec_flags_struct {
flagword flags_hassize; /* flags we set if the section has a size > 0 */
};
-/* just a dummy flag array since i don't understand it yet */
+/* These flags are deccrtl/vaxcrtl (openVMS 6.2) compatible */ */
static struct sec_flags_struct evax_section_flags[] = {
{ EVAX_ABS_NAME,
@@ -67,13 +68,18 @@ static struct sec_flags_struct evax_section_flags[] = {
(SEC_CODE),
(EGPS_S_V_PIC|EGPS_S_V_REL|EGPS_S_V_SHR|EGPS_S_V_EXE),
(SEC_IN_MEMORY|SEC_CODE|SEC_HAS_CONTENTS|SEC_ALLOC|SEC_LOAD) },
+ { EVAX_LITERAL_NAME,
+ (EGPS_S_V_PIC|EGPS_S_V_REL|EGPS_S_V_SHR|EGPS_S_V_RD|EGPS_S_V_NOMOD),
+ (SEC_DATA|SEC_READONLY),
+ (EGPS_S_V_PIC|EGPS_S_V_REL|EGPS_S_V_SHR|EGPS_S_V_RD),
+ (SEC_IN_MEMORY|SEC_DATA|SEC_HAS_CONTENTS|SEC_ALLOC|SEC_READONLY|SEC_LOAD) },
{ EVAX_LINK_NAME,
(EGPS_S_V_REL|EGPS_S_V_RD),
(SEC_DATA|SEC_READONLY),
(EGPS_S_V_REL|EGPS_S_V_RD),
(SEC_IN_MEMORY|SEC_DATA|SEC_HAS_CONTENTS|SEC_ALLOC|SEC_READONLY|SEC_LOAD) },
{ EVAX_DATA_NAME,
- (EGPS_S_V_REL|EGPS_S_V_RD|EGPS_S_V_WRT),
+ (EGPS_S_V_REL|EGPS_S_V_RD|EGPS_S_V_WRT|EGPS_S_V_NOMOD),
(SEC_DATA),
(EGPS_S_V_REL|EGPS_S_V_RD|EGPS_S_V_WRT),
(SEC_IN_MEMORY|SEC_DATA|SEC_HAS_CONTENTS|SEC_ALLOC|SEC_LOAD) },
@@ -82,16 +88,21 @@ static struct sec_flags_struct evax_section_flags[] = {
(SEC_NO_FLAGS),
(EGPS_S_V_REL|EGPS_S_V_RD|EGPS_S_V_WRT|EGPS_S_V_NOMOD),
(SEC_IN_MEMORY|SEC_HAS_CONTENTS|SEC_ALLOC|SEC_LOAD) },
- { EVAX_READONLY_NAME,
- (EGPS_S_V_PIC|EGPS_S_V_REL|EGPS_S_V_SHR|EGPS_S_V_RD),
+ { EVAX_READONLYADDR_NAME,
+ (EGPS_S_V_PIC|EGPS_S_V_REL|EGPS_S_V_RD),
(SEC_DATA|SEC_READONLY),
- (EGPS_S_V_PIC|EGPS_S_V_REL|EGPS_S_V_SHR|EGPS_S_V_RD),
+ (EGPS_S_V_PIC|EGPS_S_V_REL|EGPS_S_V_RD),
(SEC_IN_MEMORY|SEC_DATA|SEC_HAS_CONTENTS|SEC_ALLOC|SEC_READONLY|SEC_LOAD) },
- { EVAX_LITERAL_NAME,
- (EGPS_S_V_PIC|EGPS_S_V_REL|EGPS_S_V_SHR|EGPS_S_V_RD),
+ { EVAX_READONLY_NAME,
+ (EGPS_S_V_PIC|EGPS_S_V_REL|EGPS_S_V_SHR|EGPS_S_V_RD|EGPS_S_V_NOMOD),
(SEC_DATA|SEC_READONLY),
(EGPS_S_V_PIC|EGPS_S_V_REL|EGPS_S_V_SHR|EGPS_S_V_RD),
(SEC_IN_MEMORY|SEC_DATA|SEC_HAS_CONTENTS|SEC_ALLOC|SEC_READONLY|SEC_LOAD) },
+ { EVAX_LOCAL_NAME,
+ (EGPS_S_V_REL|EGPS_S_V_RD|EGPS_S_V_WRT),
+ (SEC_DATA),
+ (EGPS_S_V_REL|EGPS_S_V_RD|EGPS_S_V_WRT),
+ (SEC_IN_MEMORY|SEC_DATA|SEC_HAS_CONTENTS|SEC_ALLOC|SEC_LOAD) },
{ NULL,
(EGPS_S_V_REL|EGPS_S_V_RD|EGPS_S_V_WRT),
(SEC_DATA),