| Index: binutils/gold/object.cc
|
| diff --git a/binutils/gold/object.cc b/binutils/gold/object.cc
|
| index e9826b08a206a60ea335435bf3724b1e06f88e7a..a824c769f18d32ca83a00cff2445a99d8b8a249a 100644
|
| --- a/binutils/gold/object.cc
|
| +++ b/binutils/gold/object.cc
|
| @@ -1,6 +1,6 @@
|
| // object.cc -- support for an object file for linking in gold
|
|
|
| -// Copyright 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
| +// Copyright 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
|
| // Written by Ian Lance Taylor <iant@google.com>.
|
|
|
| // This file is part of gold.
|
| @@ -2134,15 +2134,15 @@ Input_objects::add_object(Object* obj)
|
| void
|
| Input_objects::check_dynamic_dependencies() const
|
| {
|
| + bool issued_copy_dt_needed_error = false;
|
| for (Dynobj_list::const_iterator p = this->dynobj_list_.begin();
|
| p != this->dynobj_list_.end();
|
| ++p)
|
| {
|
| const Dynobj::Needed& needed((*p)->needed());
|
| bool found_all = true;
|
| - for (Dynobj::Needed::const_iterator pneeded = needed.begin();
|
| - pneeded != needed.end();
|
| - ++pneeded)
|
| + Dynobj::Needed::const_iterator pneeded;
|
| + for (pneeded = needed.begin(); pneeded != needed.end(); ++pneeded)
|
| {
|
| if (this->sonames_.find(*pneeded) == this->sonames_.end())
|
| {
|
| @@ -2151,6 +2151,25 @@ Input_objects::check_dynamic_dependencies() const
|
| }
|
| }
|
| (*p)->set_has_unknown_needed_entries(!found_all);
|
| +
|
| + // --copy-dt-needed-entries aka --add-needed is a GNU ld option
|
| + // --that gold does not support. However, they cause no trouble
|
| + // --unless there is a DT_NEEDED entry that we don't know about;
|
| + // --warn only in that case.
|
| + if (!found_all
|
| + && !issued_copy_dt_needed_error
|
| + && (parameters->options().copy_dt_needed_entries()
|
| + || parameters->options().add_needed()))
|
| + {
|
| + const char* optname;
|
| + if (parameters->options().copy_dt_needed_entries())
|
| + optname = "--copy-dt-needed-entries";
|
| + else
|
| + optname = "--add-needed";
|
| + gold_error(_("%s is not supported but is required for %s in %s"),
|
| + optname, (*pneeded).c_str(), (*p)->name().c_str());
|
| + issued_copy_dt_needed_error = true;
|
| + }
|
| }
|
| }
|
|
|
|
|