From ee51385839895013660b2fe5a86713e43f1627cf Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Thu, 20 May 2021 08:19:00 +0930 Subject: [PATCH] [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 1f1fb219fdc4f96fd967e6173e9090c4c4917e96) (cherry picked from commit 5d7f11f0e76ca290e3745c8836b92a5266cb84e2) (cherry picked from commit b97bd976233ee4d43c2fe18f6356e62779cbe82d) --- gold/gc.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gold/gc.h b/gold/gc.h index 2c20b44b6ed..4a1368f5abe 100644 --- a/gold/gc.h +++ b/gold/gc.h @@ -247,7 +247,7 @@ gc_process_relocs( if (is_ordinary) (*secvec).push_back(Section_id(src_obj, dst_indx)); else - (*secvec).push_back(Section_id(NULL, 0)); + (*secvec).push_back(Section_id(static_cast(NULL), 0)); // If the target of the relocation is an STT_SECTION symbol, // make a note of that by storing -1 in the symbol vector. if (lsym.get_st_type() == elfcpp::STT_SECTION) @@ -329,7 +329,7 @@ gc_process_relocs( if (is_ordinary && dst_obj != NULL) (*secvec).push_back(Section_id(dst_obj, dst_indx)); else - (*secvec).push_back(Section_id(NULL, 0)); + (*secvec).push_back(Section_id(static_cast(NULL), 0)); (*symvec).push_back(gsym); (*addendvec).push_back(std::make_pair( static_cast(symvalue),