Summary: | gold fails to build with latest GCC | ||
---|---|---|---|
Product: | binutils | Reporter: | Matheus Castanho <msc> |
Component: | gold | Assignee: | Alan Modra <amodra> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | ccoutant, ian |
Priority: | P2 | ||
Version: | 2.37 | ||
Target Milestone: | --- | ||
Host: | Target: | ||
Build: | Last reconfirmed: |
Description
Matheus Castanho
2021-05-03 17:58:22 UTC
I haven't had the chance to build a new-enough GCC to test, but it looks like the proper fix is to use nullptr instead of NULL. Does that sound right? That would require that I raise the minimum version of GCC that can build gold from 4.1.3 to at least 4.6. I'm not sure if anyone needs to build with such an old version, but if so, maybe I could just use a static cast here. Yes, that sounds right. I tested that and it's enough to get past the error with upstream GCC. I didn't have the chance to test with the oldest supported GCC though. (In reply to Cary Coutant from comment #1) > I haven't had the chance to build a new-enough GCC to test, but it looks > like the proper fix is to use nullptr instead of NULL. Does that sound > right? That would require that I raise the minimum version of GCC that can > build gold from 4.1.3 to at least 4.6. I'm not sure if anyone needs to build > with such an old version, but if so, maybe I could just use a static cast > here. For GCC 12 or newer, use nullptr. Otherwise, use NULL. The master branch has been updated by Alan Modra <amodra@sourceware.org>: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=1f1fb219fdc4f96fd967e6173e9090c4c4917e96 commit 1f1fb219fdc4f96fd967e6173e9090c4c4917e96 Author: Alan Modra <amodra@gmail.com> Date: Thu May 20 08:19:00 2021 +0930 [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. Fixed Oh oh, maybe I let myself be talked into the nullptr solution when I shouldn't have. The original patch I posted using a cast works everywhere. nullptr, although cleaner, requires c++11, doesn't it? So all versions of gcc prior to 6.1 will need -std=c++11 to be passed to the compiler. The master branch has been updated by Alan Modra <amodra@sourceware.org>: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=5d7f11f0e76ca290e3745c8836b92a5266cb84e2 commit 5d7f11f0e76ca290e3745c8836b92a5266cb84e2 Author: Alan Modra <amodra@gmail.com> Date: Tue May 25 15:06:49 2021 +0930 [GOLD] PR27815, gold fails to build with latest GCC 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. I've gone back to the original patch I posted. The master branch has been updated by Alan Modra <amodra@sourceware.org>: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=b97bd976233ee4d43c2fe18f6356e62779cbe82d commit b97bd976233ee4d43c2fe18f6356e62779cbe82d Author: Alan Modra <amodra@gmail.com> Date: Tue Jul 20 18:46:57 2021 +0930 PR28106, build of 2.37 fails on FreeBSD and Clang 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. The binutils-2_37-branch branch has been updated by Alan Modra <amodra@sourceware.org>: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=10b4dbbf281397e2827820c715c39559c7f7a29d commit 10b4dbbf281397e2827820c715c39559c7f7a29d Author: Alan Modra <amodra@gmail.com> Date: Tue Jul 20 18:46:57 2021 +0930 PR28106, build of 2.37 fails on FreeBSD and Clang 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 b97bd976233ee4d43c2fe18f6356e62779cbe82d) The binutils-2_36-branch branch has been updated by Alan Modra <amodra@sourceware.org>: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=ee51385839895013660b2fe5a86713e43f1627cf commit ee51385839895013660b2fe5a86713e43f1627cf Author: Alan Modra <amodra@gmail.com> Date: Thu May 20 08:19:00 2021 +0930 [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) |