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;
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)
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);
flagword flags = BSF_FUNCTION;
p += 8;
- name = p;
- while (p < e && *p != ',' && *p != ' ' && *p != '-')
- p++;
+ /* Do we have a quoted export? */
+ if (*p == '"')
+ {
+ p++;
+ name = p;
+ while (p < e && *p != '"')
+ ++p;
+ }
+ else
+ {
+ name = p;
+ while (p < e && *p != ',' && *p != ' ' && *p != '-')
+ p++;
+ }
c = xmalloc (p - name + 1);
memcpy (c, name, p - name);
c[p - name] = 0;
+ /* Advance over trailing quote. */
+ if (p < e && *p == '"')
+ ++p;
if (p < e && *p == ',') /* found type tag. */
{
char *tag_start = ++p;
/* Check if we generated PE+. */
create_for_pep = strcmp (mname, "i386:x86-64") == 0;
+ {
+ /* Check the default underscore */
+ int u = leading_underscore; /* Underscoring mode. -1 for use default. */
+ if (u == -1)
+ bfd_get_target_info (mtable[machine].how_bfd_target, NULL,
+ NULL, &u, NULL);
+ if (u != -1)
+ leading_underscore = (u != 0 ? TRUE : FALSE);
+ }
+
if (!dll_name && exp_name)
{
/* If we are inferring dll_name from exp_name,
dll_name = xmalloc (len);
strcpy (dll_name, exp_basename);
strcat (dll_name, ".dll");
+ dll_name_set_by_exp_name = 1;
}
if (as_name == NULL)