diff --git a/ld/ChangeLog b/ld/ChangeLog index 456a283546..44b124dea3 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,14 @@ +2000-07-10 H.J. Lu + + * emultempl/pe.em (pe_enable_stdcall_fixup): Protect with + DLL_SUPPORT. + (strhash): Likewise. + (compute_dll_image_base): Likewise. + (pe_undef_found_sym): Likewise. + (pe_undef_cdecl_match): Likewise. + (gld_${EMULATION_NAME}_open_dynamic_archive): Mark the + argument "arch" with ATTRIBUTE_UNUSED. + 2000-07-10 Alan Modra * configure.tgt: Remove extraneous hppa*-*-linux-gnu*. @@ -57,14 +68,14 @@ 2000-07-07 Charles Wilson - * ld/emultempl/pe.em: institute the following search order for + * emultempl/pe.em: institute the following search order for dynamic libraries on pei386: libfoo.dll.a, foo.dll.a (import libs), libfoo.dll, foo.dll (link direct to dll). Fall back to static lib (libfoo.a) if none of the above are found. 2000-07-07 Mumit Khan - * ld/emultempl/pe.em (pe_enable_auto_image_base): New variable. + * emultempl/pe.em (pe_enable_auto_image_base): New variable. (longopts): New --{enable,disable}-auto-image-base options. (gld_${EMULATION_NAME}_list_options): Document. (gld_${EMULATION_NAME}_parse): Handle. diff --git a/ld/emultempl/pe.em b/ld/emultempl/pe.em index 92af07e7b9..ee213ae1a2 100644 --- a/ld/emultempl/pe.em +++ b/ld/emultempl/pe.em @@ -114,8 +114,8 @@ static int support_old_code = 0; static char * thumb_entry_symbol = NULL; static lang_assignment_statement_type *image_base_statement = 0; -static int pe_enable_stdcall_fixup = -1; /* 0=disable 1=enable */ #ifdef DLL_SUPPORT +static int pe_enable_stdcall_fixup = -1; /* 0=disable 1=enable */ static char *pe_out_def_filename = NULL; static char *pe_implib_filename = NULL; static int pe_enable_auto_image_base = 0; @@ -560,6 +560,7 @@ gld_${EMULATION_NAME}_parse_args(argc, argv) } +#ifdef DLL_SUPPORT static unsigned long strhash (const char *str) { @@ -590,6 +591,7 @@ compute_dll_image_base (const char *ofile) unsigned long hash = strhash (ofile); return 0x60000000 | ((hash << 16) & 0x0FFC0000); } +#endif /* Assign values to the special symbols before the linker script is read. */ @@ -607,8 +609,12 @@ gld_${EMULATION_NAME}_set_symbols () if (link_info.relocateable) init[IMAGEBASEOFF].value = 0; else if (init[DLLOFF].value || link_info.shared) +#ifdef DLL_SUPPORT init[IMAGEBASEOFF].value = (pe_enable_auto_image_base) ? compute_dll_image_base (output_filename) : NT_DLL_IMAGE_BASE; +#else + init[IMAGEBASEOFF].value = NT_DLL_IMAGE_BASE; +#endif else init[IMAGEBASEOFF].value = NT_EXE_IMAGE_BASE; } @@ -673,6 +679,7 @@ gld_${EMULATION_NAME}_after_parse () ldlang_add_undef (entry_symbol); } +#ifdef DLL_SUPPORT static struct bfd_link_hash_entry *pe_undef_found_sym; static boolean @@ -691,7 +698,6 @@ pe_undef_cdecl_match (h, string) return true; } -#ifdef DLL_SUPPORT static void pe_fixup_stdcalls () { @@ -1355,7 +1361,7 @@ gld_${EMULATION_NAME}_place_orphan (file, s) static boolean gld_${EMULATION_NAME}_open_dynamic_archive (arch, search, entry) - const char * arch; + const char * arch ATTRIBUTE_UNUSED; search_dirs_type * search; lang_input_statement_type * entry; {