Index: third_party/binutils/plugin-dso-fix.patch |
diff --git a/third_party/binutils/plugin-dso-fix.patch b/third_party/binutils/plugin-dso-fix.patch |
deleted file mode 100644 |
index 558975686dce55a65cb43faca3bb2e8d5481d602..0000000000000000000000000000000000000000 |
--- a/third_party/binutils/plugin-dso-fix.patch |
+++ /dev/null |
@@ -1,97 +0,0 @@ |
-commit 3c537f7fdb11f02f7082749f3f21dfdd2c2025e8 |
-Author: Peter Collingbourne <pcc@google.com> |
-Date: Wed Feb 4 09:47:28 2015 -0800 |
- |
- Resolve forwarding symbols in plugins. |
- |
- 2015-02-04 Peter Collingbourne <pcc@google.com> |
- |
- * plugin.cc (Pluginobj::get_symbol_resolution_info): Resolve |
- forwarding symbols when computing symbol resolution info for plugins. |
- |
-diff --git a/gold/plugin.cc b/gold/plugin.cc |
-index bde8c78..68da8e3 100644 |
---- a/gold/plugin.cc |
-+++ b/gold/plugin.cc |
-@@ -914,7 +914,8 @@ is_visible_from_outside(Symbol* lsym) |
- // Get symbol resolution info. |
- |
- ld_plugin_status |
--Pluginobj::get_symbol_resolution_info(int nsyms, |
-+Pluginobj::get_symbol_resolution_info(Symbol_table* symtab, |
-+ int nsyms, |
- ld_plugin_symbol* syms, |
- int version) const |
- { |
-@@ -943,6 +944,8 @@ Pluginobj::get_symbol_resolution_info(int nsyms, |
- { |
- ld_plugin_symbol* isym = &syms[i]; |
- Symbol* lsym = this->symbols_[i]; |
-+ if (lsym->is_forwarder()) |
-+ lsym = symtab->resolve_forwards(lsym); |
- ld_plugin_symbol_resolution res = LDPR_UNKNOWN; |
- |
- if (lsym->is_undefined()) |
-@@ -1511,14 +1514,16 @@ static enum ld_plugin_status |
- get_symbols(const void* handle, int nsyms, ld_plugin_symbol* syms) |
- { |
- gold_assert(parameters->options().has_plugins()); |
-- Object* obj = parameters->options().plugins()->object( |
-+ Plugin_manager* plugins = parameters->options().plugins(); |
-+ Object* obj = plugins->object( |
- static_cast<unsigned int>(reinterpret_cast<intptr_t>(handle))); |
- if (obj == NULL) |
- return LDPS_ERR; |
- Pluginobj* plugin_obj = obj->pluginobj(); |
- if (plugin_obj == NULL) |
- return LDPS_ERR; |
-- return plugin_obj->get_symbol_resolution_info(nsyms, syms, 1); |
-+ Symbol_table* symtab = plugins->symtab(); |
-+ return plugin_obj->get_symbol_resolution_info(symtab, nsyms, syms, 1); |
- } |
- |
- // Version 2 of the above. The only difference is that this version |
-@@ -1528,14 +1533,16 @@ static enum ld_plugin_status |
- get_symbols_v2(const void* handle, int nsyms, ld_plugin_symbol* syms) |
- { |
- gold_assert(parameters->options().has_plugins()); |
-- Object* obj = parameters->options().plugins()->object( |
-+ Plugin_manager* plugins = parameters->options().plugins(); |
-+ Object* obj = plugins->object( |
- static_cast<unsigned int>(reinterpret_cast<intptr_t>(handle))); |
- if (obj == NULL) |
- return LDPS_ERR; |
- Pluginobj* plugin_obj = obj->pluginobj(); |
- if (plugin_obj == NULL) |
- return LDPS_ERR; |
-- return plugin_obj->get_symbol_resolution_info(nsyms, syms, 2); |
-+ Symbol_table* symtab = plugins->symtab(); |
-+ return plugin_obj->get_symbol_resolution_info(symtab, nsyms, syms, 2); |
- } |
- |
- // Add a new (real) input file generated by a plugin. |
-diff --git a/gold/plugin.h b/gold/plugin.h |
-index ef78b84..f926879 100644 |
---- a/gold/plugin.h |
-+++ b/gold/plugin.h |
-@@ -282,6 +282,10 @@ class Plugin_manager |
- input_objects() const |
- { return this->input_objects_; } |
- |
-+ Symbol_table* |
-+ symtab() |
-+ { return this->symtab_; } |
-+ |
- Layout* |
- layout() |
- { return this->layout_; } |
-@@ -396,7 +400,8 @@ class Pluginobj : public Object |
- |
- // Fill in the symbol resolution status for the given plugin symbols. |
- ld_plugin_status |
-- get_symbol_resolution_info(int nsyms, |
-+ get_symbol_resolution_info(Symbol_table* symtab, |
-+ int nsyms, |
- ld_plugin_symbol* syms, |
- int version) const; |
- |