summaryrefslogtreecommitdiff
path: root/binutils/dlltool.c
diff options
context:
space:
mode:
authorKai Tietz <kai.tietz@onevision.com>2010-12-01 14:15:05 +0000
committerKai Tietz <kai.tietz@onevision.com>2010-12-01 14:15:05 +0000
commit37d49f28f46fe24d1d8f72d6fa07496f69e4ffd3 (patch)
tree3ab93a5f096c0509b307e81e2de1344bb5b039a0 /binutils/dlltool.c
parentde238bcc66bb23570191a189bdec39b4ad10f3e8 (diff)
downloadbinutils-redhat-37d49f28f46fe24d1d8f72d6fa07496f69e4ffd3.tar.gz
2010-12-01 Kai Tietz <kai.tietz@onevision.com>
PR binutils/11065 * dlltool.c (dll_name_set_by_exp_name): New variable. (def_name): Allow setting of dll_name by .def file. (def_library): Likewise. (main): Set dll_name_set_by_exp_name, if dll_name is set indirect by exp_name.
Diffstat (limited to 'binutils/dlltool.c')
-rw-r--r--binutils/dlltool.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/binutils/dlltool.c b/binutils/dlltool.c
index 8c72647fe1..80aac996fc 100644
--- a/binutils/dlltool.c
+++ b/binutils/dlltool.c
@@ -399,6 +399,7 @@ typedef struct identify_data_t
static char *head_label;
static char *imp_name_lab;
static char *dll_name;
+static int dll_name_set_by_exp_name;
static int add_indirect = 0;
static int add_underscore = 0;
static int add_stdcall_underscore = 0;
@@ -1089,6 +1090,11 @@ def_name (const char *name, int base)
if (d_is_dll)
non_fatal (_("Can't have LIBRARY and NAME"));
+ if (dll_name_set_by_exp_name && name && *name != 0)
+ {
+ dll_name = NULL;
+ dll_name_set_by_exp_name = 0;
+ }
/* If --dllname not provided, use the one in the DEF file.
FIXME: Is this appropriate for executables? */
if (!dll_name)
@@ -1105,6 +1111,12 @@ def_library (const char *name, int base)
if (d_is_exe)
non_fatal (_("Can't have LIBRARY and NAME"));
+ if (dll_name_set_by_exp_name && name && *name != 0)
+ {
+ dll_name = NULL;
+ dll_name_set_by_exp_name = 0;
+ }
+
/* If --dllname not provided, use the one in the DEF file. */
if (!dll_name)
set_dll_name_from_def (name, 1);
@@ -4177,6 +4189,7 @@ main (int ac, char **av)
dll_name = xmalloc (len);
strcpy (dll_name, exp_basename);
strcat (dll_name, ".dll");
+ dll_name_set_by_exp_name = 1;
}
if (as_name == NULL)