aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
Diffstat (limited to 'ld')
-rw-r--r--ld/ChangeLog8
-rw-r--r--ld/emultempl/pep.em17
-rw-r--r--ld/pe-dll.c9
3 files changed, 20 insertions, 14 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 11d618c..69c65d5 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,11 @@
+2007-08-06 Kai Tietz <kai.tietz@onevision.com>
+
+ * emultempl/pep.em: (pep_enable_stdcall_fixup): Set to value 1.
+ (gld_xxx_recognized_file): Use pep_bfd_is_dll for detection of
+ shared objects.
+ * pe-dll.c: (autofilter_symbollist_i386): Define set for amd64
+ mingw target.
+
2007-08-01 Nick Clifton <nickc@redhat.com>
* po/ga.po: Updated Irish translation.
diff --git a/ld/emultempl/pep.em b/ld/emultempl/pep.em
index 6a21bc7..a78435b 100644
--- a/ld/emultempl/pep.em
+++ b/ld/emultempl/pep.em
@@ -106,7 +106,7 @@ static int support_old_code = 0;
static lang_assignment_statement_type *image_base_statement = 0;
#ifdef DLL_SUPPORT
-static int pep_enable_stdcall_fixup = -1; /* 0=disable 1=enable. */
+static int pep_enable_stdcall_fixup = 1; /* 0=disable 1=enable (default). */
static char * pep_out_def_filename = NULL;
static char * pep_implib_filename = NULL;
static int pep_enable_auto_image_base = 0;
@@ -1305,19 +1305,8 @@ gld_${EMULATION_NAME}_recognized_file (lang_input_statement_type *entry ATTRIBUT
#ifdef TARGET_IS_i386pep
pep_dll_id_target ("pei-x86-64");
#endif
- if (bfd_get_format (entry->the_bfd) == bfd_object)
- {
- char fbuf[LD_PATHMAX + 1];
- const char *ext;
-
- if (REALPATH (entry->filename, fbuf) == NULL)
- strncpy (fbuf, entry->filename, sizeof (fbuf));
-
- ext = fbuf + strlen (fbuf) - 4;
-
- if (strcmp (ext, ".dll") == 0 || strcmp (ext, ".DLL") == 0)
- return pep_implied_import_dll (fbuf);
- }
+ if (pep_bfd_is_dll (entry->the_bfd))
+ return pep_implied_import_dll (entry->filename);
#endif
return FALSE;
}
diff --git a/ld/pe-dll.c b/ld/pe-dll.c
index 16850b6..cdbfa70 100644
--- a/ld/pe-dll.c
+++ b/ld/pe-dll.c
@@ -203,6 +203,14 @@ static const autofilter_entry_type autofilter_symbollist_i386[] =
{ STRING_COMMA_LEN (".text") },
/* Entry point symbols, and entry hooks. */
{ STRING_COMMA_LEN ("cygwin_crt0") },
+#ifdef pe_use_x86_64
+ { STRING_COMMA_LEN ("DllMain") },
+ { STRING_COMMA_LEN ("DllEntryPoint") },
+ { STRING_COMMA_LEN ("DllMainCRTStartup") },
+ { STRING_COMMA_LEN ("_cygwin_dll_entry") },
+ { STRING_COMMA_LEN ("_cygwin_crt0_common") },
+ { STRING_COMMA_LEN ("_cygwin_noncygwin_dll_entry") },
+#else
{ STRING_COMMA_LEN ("DllMain@12") },
{ STRING_COMMA_LEN ("DllEntryPoint@0") },
{ STRING_COMMA_LEN ("DllMainCRTStartup@12") },
@@ -210,6 +218,7 @@ static const autofilter_entry_type autofilter_symbollist_i386[] =
{ STRING_COMMA_LEN ("_cygwin_crt0_common@8") },
{ STRING_COMMA_LEN ("_cygwin_noncygwin_dll_entry@12") },
{ STRING_COMMA_LEN ("cygwin_attach_dll") },
+#endif
{ STRING_COMMA_LEN ("cygwin_premain0") },
{ STRING_COMMA_LEN ("cygwin_premain1") },
{ STRING_COMMA_LEN ("cygwin_premain2") },