projects
/
platform
/
upstream
/
binutils.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Don't deprecate powerpc mftb insn
[platform/upstream/binutils.git]
/
ld
/
pe-dll.c
diff --git
a/ld/pe-dll.c
b/ld/pe-dll.c
index
31beac8
..
61d8fa5
100644
(file)
--- a/
ld/pe-dll.c
+++ b/
ld/pe-dll.c
@@
-1,6
+1,5
@@
/* Routines to help build PEI-format DLLs (Win32 etc)
/* Routines to help build PEI-format DLLs (Win32 etc)
- Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
- 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
+ Copyright (C) 1998-2014 Free Software Foundation, Inc.
Written by DJ Delorie <dj@cygnus.com>
This file is part of the GNU Binutils.
Written by DJ Delorie <dj@cygnus.com>
This file is part of the GNU Binutils.
@@
-236,6
+235,7
@@
static const autofilter_entry_type autofilter_symbollist_i386[] =
{ STRING_COMMA_LEN ("_impure_ptr") },
{ STRING_COMMA_LEN ("_fmode") },
{ STRING_COMMA_LEN ("environ") },
{ STRING_COMMA_LEN ("_impure_ptr") },
{ STRING_COMMA_LEN ("_fmode") },
{ STRING_COMMA_LEN ("environ") },
+ { STRING_COMMA_LEN ("__dso_handle") },
{ NULL, 0 }
};
{ NULL, 0 }
};
@@
-655,7
+655,7
@@
process_def_file_and_drectve (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info *
/* First, run around to all the objects looking for the .drectve
sections, and push those into the def file too. */
/* First, run around to all the objects looking for the .drectve
sections, and push those into the def file too. */
- for (b = info->input_bfds; b; b = b->link
_
next)
+ for (b = info->input_bfds; b; b = b->link
.
next)
{
s = bfd_get_section_by_name (b, ".drectve");
if (s)
{
s = bfd_get_section_by_name (b, ".drectve");
if (s)
@@
-701,7
+701,7
@@
process_def_file_and_drectve (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info *
if ((pe_dll_export_everything || pe_def_file->num_exports == 0)
&& !pe_dll_exclude_all_symbols)
{
if ((pe_dll_export_everything || pe_def_file->num_exports == 0)
&& !pe_dll_exclude_all_symbols)
{
- for (b = info->input_bfds; b; b = b->link
_
next)
+ for (b = info->input_bfds; b; b = b->link
.
next)
{
asymbol **symbols;
int nsyms;
{
asymbol **symbols;
int nsyms;
@@
-782,14
+782,17
@@
process_def_file_and_drectve (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info *
{
for (i = 0; i < NE; i++)
{
{
for (i = 0; i < NE; i++)
{
- if (strchr (pe_def_file->exports[i].name, '@'))
+ /* Check for fastcall/stdcall-decoration, but ignore
+ C++ mangled names. */
+ if (pe_def_file->exports[i].name[0] != '?'
+ && strchr (pe_def_file->exports[i].name, '@'))
{
/* This will preserve internal_name, which may have been
pointing to the same memory as name, or might not
have. */
int lead_at = (*pe_def_file->exports[i].name == '@');
char *tmp = xstrdup (pe_def_file->exports[i].name + lead_at);
{
/* This will preserve internal_name, which may have been
pointing to the same memory as name, or might not
have. */
int lead_at = (*pe_def_file->exports[i].name == '@');
char *tmp = xstrdup (pe_def_file->exports[i].name + lead_at);
- char *tmp_at = strchr (tmp, '@');
+ char *tmp_at = str
r
chr (tmp, '@');
if (tmp_at)
*tmp_at = 0;
if (tmp_at)
*tmp_at = 0;
@@
-1167,9
+1170,6
@@
fill_edata (bfd *abfd, struct bfd_link_info *info ATTRIBUTE_UNUSED)
unsigned char *enameptrs;
unsigned char *eordinals;
char *enamestr;
unsigned char *enameptrs;
unsigned char *eordinals;
char *enamestr;
- time_t now;
-
- time (&now);
edata_d = xmalloc (edata_sz);
edata_d = xmalloc (edata_sz);
@@
-1184,7
+1184,10
@@
fill_edata (bfd *abfd, struct bfd_link_info *info ATTRIBUTE_UNUSED)
+ edata_s->output_section->vma - image_base)
memset (edata_d, 0, edata_sz);
+ edata_s->output_section->vma - image_base)
memset (edata_d, 0, edata_sz);
- bfd_put_32 (abfd, now, edata_d + 4);
+
+ if (pe_data (abfd)->insert_timestamp)
+ H_PUT_32 (abfd, time (0), edata_d + 4);
+
if (pe_def_file->version_major != -1)
{
bfd_put_16 (abfd, pe_def_file->version_major, edata_d + 8);
if (pe_def_file->version_major != -1)
{
bfd_put_16 (abfd, pe_def_file->version_major, edata_d + 8);
@@
-1265,7
+1268,7
@@
pe_walk_relocs_of_symbol (struct bfd_link_info *info,
bfd *b;
asection *s;
bfd *b;
asection *s;
- for (b = info->input_bfds; b; b = b->link
_
next)
+ for (b = info->input_bfds; b; b = b->link
.
next)
{
asymbol **symbols;
{
asymbol **symbols;
@@
-1328,7
+1331,7
@@
generate_reloc (bfd *abfd, struct bfd_link_info *info)
struct bfd_section *s;
total_relocs = 0;
struct bfd_section *s;
total_relocs = 0;
- for (b = info->input_bfds; b; b = b->link
_
next)
+ for (b = info->input_bfds; b; b = b->link
.
next)
for (s = b->sections; s; s = s->next)
total_relocs += s->reloc_count;
for (s = b->sections; s; s = s->next)
total_relocs += s->reloc_count;
@@
-1336,7
+1339,7
@@
generate_reloc (bfd *abfd, struct bfd_link_info *info)
total_relocs = 0;
bi = 0;
total_relocs = 0;
bi = 0;
- for (bi = 0, b = info->input_bfds; b; bi++, b = b->link
_
next)
+ for (bi = 0, b = info->input_bfds; b; bi++, b = b->link
.
next)
{
arelent **relocs;
int relsize, nrelocs;
{
arelent **relocs;
int relsize, nrelocs;
@@
-2588,7
+2591,7
@@
pe_create_runtime_relocator_reference (bfd *parent)
BSF_NO_FLAGS, 0);
bfd_set_section_size (abfd, extern_rt_rel, PE_IDATA5_SIZE);
BSF_NO_FLAGS, 0);
bfd_set_section_size (abfd, extern_rt_rel, PE_IDATA5_SIZE);
- extern_rt_rel_d = x
malloc (
PE_IDATA5_SIZE);
+ extern_rt_rel_d = x
calloc (1,
PE_IDATA5_SIZE);
extern_rt_rel->contents = extern_rt_rel_d;
quick_reloc (abfd, 0, BFD_RELOC_RVA, 1);
extern_rt_rel->contents = extern_rt_rel_d;
quick_reloc (abfd, 0, BFD_RELOC_RVA, 1);
@@
-2724,7
+2727,7
@@
pe_dll_generate_implib (def_file *def, const char *impfilename, struct bfd_link_
ar_head = make_head (outarch);
/* Iterate the input BFDs, looking for exclude-modules-for-implib. */
ar_head = make_head (outarch);
/* Iterate the input BFDs, looking for exclude-modules-for-implib. */
- for (ibfd = info->input_bfds; ibfd; ibfd = ibfd->link
_
next)
+ for (ibfd = info->input_bfds; ibfd; ibfd = ibfd->link
.
next)
{
/* Iterate the exclude list. */
struct exclude_list_struct *ex;
{
/* Iterate the exclude list. */
struct exclude_list_struct *ex;
@@
-2844,7
+2847,7
@@
pe_find_cdecl_alias_match (struct bfd_link_info *linfo, char *name)
struct key_value *kv;
struct key_value key;
char *at, *lname = (char *) alloca (strlen (name) + 3);
struct key_value *kv;
struct key_value key;
char *at, *lname = (char *) alloca (strlen (name) + 3);
-
+
strcpy (lname, name);
at = strchr (lname + (lname[0] == '@'), '@');
strcpy (lname, name);
at = strchr (lname + (lname[0] == '@'), '@');
@@
-2925,7
+2928,7
@@
pe_find_cdecl_alias_match (struct bfd_link_info *linfo, char *name)
if (h->type == bfd_link_hash_undefined)
return h;
}
if (h->type == bfd_link_hash_undefined)
return h;
}
-
+
return NULL;
}
return NULL;
}