Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(477)

Side by Side Diff: third_party/binutils/plugin-dso-fix.patch

Issue 1950343004: Update third_party/binutils to 2.26, add ICF fix (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/binutils/long-plt.patch ('k') | third_party/binutils/unlock-thin.patch » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 commit 3c537f7fdb11f02f7082749f3f21dfdd2c2025e8
2 Author: Peter Collingbourne <pcc@google.com>
3 Date: Wed Feb 4 09:47:28 2015 -0800
4
5 Resolve forwarding symbols in plugins.
6
7 2015-02-04 Peter Collingbourne <pcc@google.com>
8
9 * plugin.cc (Pluginobj::get_symbol_resolution_info): Resolve
10 forwarding symbols when computing symbol resolution info for plugins.
11
12 diff --git a/gold/plugin.cc b/gold/plugin.cc
13 index bde8c78..68da8e3 100644
14 --- a/gold/plugin.cc
15 +++ b/gold/plugin.cc
16 @@ -914,7 +914,8 @@ is_visible_from_outside(Symbol* lsym)
17 // Get symbol resolution info.
18
19 ld_plugin_status
20 -Pluginobj::get_symbol_resolution_info(int nsyms,
21 +Pluginobj::get_symbol_resolution_info(Symbol_table* symtab,
22 + int nsyms,
23 ld_plugin_symbol* syms,
24 int version) const
25 {
26 @@ -943,6 +944,8 @@ Pluginobj::get_symbol_resolution_info(int nsyms,
27 {
28 ld_plugin_symbol* isym = &syms[i];
29 Symbol* lsym = this->symbols_[i];
30 + if (lsym->is_forwarder())
31 + lsym = symtab->resolve_forwards(lsym);
32 ld_plugin_symbol_resolution res = LDPR_UNKNOWN;
33
34 if (lsym->is_undefined())
35 @@ -1511,14 +1514,16 @@ static enum ld_plugin_status
36 get_symbols(const void* handle, int nsyms, ld_plugin_symbol* syms)
37 {
38 gold_assert(parameters->options().has_plugins());
39 - Object* obj = parameters->options().plugins()->object(
40 + Plugin_manager* plugins = parameters->options().plugins();
41 + Object* obj = plugins->object(
42 static_cast<unsigned int>(reinterpret_cast<intptr_t>(handle)));
43 if (obj == NULL)
44 return LDPS_ERR;
45 Pluginobj* plugin_obj = obj->pluginobj();
46 if (plugin_obj == NULL)
47 return LDPS_ERR;
48 - return plugin_obj->get_symbol_resolution_info(nsyms, syms, 1);
49 + Symbol_table* symtab = plugins->symtab();
50 + return plugin_obj->get_symbol_resolution_info(symtab, nsyms, syms, 1);
51 }
52
53 // Version 2 of the above. The only difference is that this version
54 @@ -1528,14 +1533,16 @@ static enum ld_plugin_status
55 get_symbols_v2(const void* handle, int nsyms, ld_plugin_symbol* syms)
56 {
57 gold_assert(parameters->options().has_plugins());
58 - Object* obj = parameters->options().plugins()->object(
59 + Plugin_manager* plugins = parameters->options().plugins();
60 + Object* obj = plugins->object(
61 static_cast<unsigned int>(reinterpret_cast<intptr_t>(handle)));
62 if (obj == NULL)
63 return LDPS_ERR;
64 Pluginobj* plugin_obj = obj->pluginobj();
65 if (plugin_obj == NULL)
66 return LDPS_ERR;
67 - return plugin_obj->get_symbol_resolution_info(nsyms, syms, 2);
68 + Symbol_table* symtab = plugins->symtab();
69 + return plugin_obj->get_symbol_resolution_info(symtab, nsyms, syms, 2);
70 }
71
72 // Add a new (real) input file generated by a plugin.
73 diff --git a/gold/plugin.h b/gold/plugin.h
74 index ef78b84..f926879 100644
75 --- a/gold/plugin.h
76 +++ b/gold/plugin.h
77 @@ -282,6 +282,10 @@ class Plugin_manager
78 input_objects() const
79 { return this->input_objects_; }
80
81 + Symbol_table*
82 + symtab()
83 + { return this->symtab_; }
84 +
85 Layout*
86 layout()
87 { return this->layout_; }
88 @@ -396,7 +400,8 @@ class Pluginobj : public Object
89
90 // Fill in the symbol resolution status for the given plugin symbols.
91 ld_plugin_status
92 - get_symbol_resolution_info(int nsyms,
93 + get_symbol_resolution_info(Symbol_table* symtab,
94 + int nsyms,
95 ld_plugin_symbol* syms,
96 int version) const;
97
OLDNEW
« no previous file with comments | « third_party/binutils/long-plt.patch ('k') | third_party/binutils/unlock-thin.patch » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698