mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-10-14 03:15:06 +08:00
Fix multiple problems with DLL generation.
ld * pe-dll.c (make_head): Prefix the symbol name with the dll name. (make_tail, make_one, make_singleton_name_thunk): Likewise. (make_import_fixup_entry, make_runtime_pseudo_reloc): Likewise. (pe_create_runtime_relocator_reference): Likewise. (pe_dll_generate_implib): Set dll_symname_len. (pe_process_import_defs): Likewise. binutils * dlltool.c (main): If a prefix has not been provided, attempt to use a deterministic one based upon the dll name.
This commit is contained in:

committed by
Nick Clifton

parent
d02f2788c3
commit
c4a8df19ba
@ -1,3 +1,8 @@
|
||||
2022-01-11 Martin Storsjö <martin@martin.st>
|
||||
|
||||
* dlltool.c (main): If a prefix has not been provided, attempt to
|
||||
use a deterministic one based upon the dll name.
|
||||
|
||||
2022-01-07 Pavel Mayorov <pmayorov@cloudlinux.com>
|
||||
|
||||
PR 28718
|
||||
|
@ -348,7 +348,7 @@ typedef struct iheadt
|
||||
static iheadtype *import_list = NULL;
|
||||
static char *as_name = NULL;
|
||||
static char * as_flags = "";
|
||||
static char *tmp_prefix;
|
||||
static char *tmp_prefix = NULL;
|
||||
static int no_idata4;
|
||||
static int no_idata5;
|
||||
static char *exp_name;
|
||||
@ -3930,8 +3930,22 @@ main (int ac, char **av)
|
||||
}
|
||||
}
|
||||
|
||||
if (!tmp_prefix)
|
||||
tmp_prefix = prefix_encode ("d", getpid ());
|
||||
if (tmp_prefix == NULL)
|
||||
{
|
||||
/* If possible use a deterministic prefix. */
|
||||
if (dll_name)
|
||||
{
|
||||
tmp_prefix = xmalloc (strlen (dll_name) + 2);
|
||||
sprintf (tmp_prefix, "%s_", dll_name);
|
||||
for (i = 0; tmp_prefix[i]; i++)
|
||||
if (!ISALNUM (tmp_prefix[i]))
|
||||
tmp_prefix[i] = '_';
|
||||
}
|
||||
else
|
||||
{
|
||||
tmp_prefix = prefix_encode ("d", getpid ());
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; mtable[i].type; i++)
|
||||
if (strcmp (mtable[i].type, mname) == 0)
|
||||
|
Reference in New Issue
Block a user