This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch]: Add MS __ImageBase symbol to 32-bit pe.em


Kai Tietz wrote:

> +#define MSIMAGEBASEOFF	2
> +  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),
> @@ -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 ("__ImageBase", val);
>

Shouldn't it be ___ImageBase (3 underscores) on i386 9x/NT
Windows, as opposed to x64, which I think I've read that it
is not underscored?  This file is also used for arm-wince,
which is not underscored.  (Although this __ImageBase thing
isn't as useful in Windows CE, because HMODULE == base address
isn't true there.)

You may use U take care of the differences between targets,
it's defined in the top of pe.em:

#define U(S) ${INITIAL_SYMBOL_CHAR} S

Where INITIAL_SYMBOL_CHAR is "_" in i386.

Like so:
+	    set_pe_name (U ("__ImageBase"), val);

Cheers,
Pedro Alves


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]