Add __ImageBase symbol to pe.em and pep.em.
authorKai Tietz <kai.tietz@onevision.com>
Tue, 6 Nov 2007 12:28:57 +0000 (12:28 +0000)
committerKai Tietz <kai.tietz@onevision.com>
Tue, 6 Nov 2007 12:28:57 +0000 (12:28 +0000)
ld/ChangeLog
ld/emultempl/pe.em
ld/emultempl/pep.em

index 5fc553c..74eacab 100644 (file)
@@ -1,3 +1,11 @@
+2007-11-06  Kai Tietz  <kai.tietz@onevision.com>
+
+       * emultempl/pe.em: (init): Add __ImageBase symbol.
+       (MSIMAGEBASEOFF): New.
+       (set_pe_name): Keep __image_base and __ImageBase value synch.
+       (_set_symbols): Likewise.
+       * emultempl/pep.em: Likewise.
+
 2007-10-26  Alan Modra  <amodra@bigpond.net.au>
 
        PR 5215
index 503f79e..10887b0 100644 (file)
@@ -286,6 +286,8 @@ static definfo init[] =
   D(ImageBase,"__image_base__", NT_EXE_IMAGE_BASE),
 #define DLLOFF 1
   {&dll, sizeof(dll), 0, "__dll__", 0},
+#define MSIMAGEBASEOFF 2
+  D(ImageBase, U ("__ImageBase"), NT_EXE_IMAGE_BASE),
   D(SectionAlignment,"__section_alignment__", PE_DEF_SECTION_ALIGNMENT),
   D(FileAlignment,"__file_alignment__", PE_DEF_FILE_ALIGNMENT),
   D(MajorOperatingSystemVersion,"__major_os_version__", 4),
@@ -374,6 +376,8 @@ set_pe_name (char *name, long val)
        {
          init[i].value = val;
          init[i].inited = 1;
+         if (strcmp (name,"__image_base__") == 0)
+           set_pe_name (U ("__ImageBase"), val);
          return;
        }
     }
@@ -708,6 +712,7 @@ gld_${EMULATION_NAME}_set_symbols (void)
 #endif
       else
        init[IMAGEBASEOFF].value = NT_EXE_IMAGE_BASE;
+      init[MSIMAGEBASEOFF].value = init[IMAGEBASEOFF].value;
     }
 
   /* Don't do any symbol assignments if this is a relocatable link.  */
index 36b4f61..20523ed 100644 (file)
@@ -260,7 +260,7 @@ static definfo init[] =
 #define DLLOFF 1
   {&dll, sizeof(dll), 0, "__dll__", 0},
 #define MSIMAGEBASEOFF 2
-  D(ImageBase,"__ImageBase", NT_EXE_IMAGE_BASE),
+  D(ImageBase,"___ImageBase", NT_EXE_IMAGE_BASE),
   D(SectionAlignment,"__section_alignment__", PE_DEF_SECTION_ALIGNMENT),
   D(FileAlignment,"__file_alignment__", PE_DEF_FILE_ALIGNMENT),
   D(MajorOperatingSystemVersion,"__major_os_version__", 4),
@@ -343,7 +343,7 @@ set_pep_name (char *name, long val)
          init[i].value = val;
          init[i].inited = 1;
          if (strcmp (name,"__image_base__") == 0)
-           set_pep_name ("__ImageBase", val);
+           set_pep_name ("___ImageBase", val);
          return;
        }
     }