[GOLD] PR27815, gold fails to build with latest GCC

...gold/gc.h:250:37: error: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second: [-Werror]
  250 |                 (*secvec).push_back(Section_id(NULL, 0));
      |                                     ^~~~~~~~~~~~~~~~~~~

	PR gold/27815
	* gc.h (gc_process_relocs): Use nullptr in Section_id constructor.

Don't use nullptr, it requires -std=c++11 on versions of gcc prior to
6.1.  It would be possible to arrange to pass -std=c++11 automatically
when required (top level configure does that for gcc builds) but that
seems overkill and since we're not up-to-date on the top level config
files would mean someone would need to sync those over.

	PR gold/27815
	* gc.h (gc_process_relocs): Use cast in Section_id constructor.

https://en.cppreference.com/w/cpp/types/NULL says NULL might be
defined as nullptr.
https://en.cppreference.com/w/cpp/language/reinterpret_cast says
reinterpret_cast can't be used on nullptr.

	PR gold/28106
	PR gold/27815
	* gc.h (gc_process_relocs): Use static_cast in Section_id constructor.

(cherry picked from commit 1f1fb219fd)
(cherry picked from commit 5d7f11f0e7)
(cherry picked from commit b97bd97623)
This commit is contained in:
Alan Modra 2021-05-20 08:19:00 +09:30
parent 74b1f14926
commit ee51385839

View File

@ -247,7 +247,7 @@ gc_process_relocs(
if (is_ordinary) if (is_ordinary)
(*secvec).push_back(Section_id(src_obj, dst_indx)); (*secvec).push_back(Section_id(src_obj, dst_indx));
else else
(*secvec).push_back(Section_id(NULL, 0)); (*secvec).push_back(Section_id(static_cast<Relobj*>(NULL), 0));
// If the target of the relocation is an STT_SECTION symbol, // If the target of the relocation is an STT_SECTION symbol,
// make a note of that by storing -1 in the symbol vector. // make a note of that by storing -1 in the symbol vector.
if (lsym.get_st_type() == elfcpp::STT_SECTION) if (lsym.get_st_type() == elfcpp::STT_SECTION)
@ -329,7 +329,7 @@ gc_process_relocs(
if (is_ordinary && dst_obj != NULL) if (is_ordinary && dst_obj != NULL)
(*secvec).push_back(Section_id(dst_obj, dst_indx)); (*secvec).push_back(Section_id(dst_obj, dst_indx));
else else
(*secvec).push_back(Section_id(NULL, 0)); (*secvec).push_back(Section_id(static_cast<Relobj*>(NULL), 0));
(*symvec).push_back(gsym); (*symvec).push_back(gsym);
(*addendvec).push_back(std::make_pair( (*addendvec).push_back(std::make_pair(
static_cast<long long>(symvalue), static_cast<long long>(symvalue),