src/net/third_party/quic/core/frames/quic_frame.h: Fails to build with GCC
Reported by
shawnana...@gmail.com,
Sep 10
|
|||||||
Issue descriptionUserAgent: Mozilla/5.0 (X11; Fedora; Linux ppc64le; rv:61.0) Gecko/20100101 Firefox/61.0 Steps to reproduce the problem: 1. Build chromium with GCC 8.1.1 2. 3. What is the expected behavior? What went wrong? The changes made to quic_frame.h by commit 929883afba6805987954c3628a66ae5de9ea9a32 (https://chromium.googlesource.com/chromium/src/+/929883afba6805987954c3628a66ae5de9ea9a32%5E%21/#F50) break building on gcc. The error is as follows: [18/13118] CXX obj/components/autofill/core/browser/browser/password_requirements_spec_fetcher_impl.o FAILED: obj/components/autofill/core/browser/browser/password_requirements_spec_fetcher_impl.o g++ -MMD -MF obj/components/autofill/core/browser/browser/password_requirements_spec_fetcher_impl.o.d -DV8_DEPRECATION_WARNINGS -DUSE_UDEV -DUSE_AURA=1 -DUSE_GLIB=1 -DUSE_NSS_CERTS=1 -DUSE_X11=1 -DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD -DSAFE_BROWSING_DB_LOCAL -DCHROMIUM_BUILD -DFIELDTRIAL_TESTING_ENABLED -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -DCOMPONENT_BUILD -DCR_LIBCXX_REVISION=332543 -DCR_LIBCXXABI_REVISION=331450 -D_DEBUG -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DWTF_USE_DYNAMIC_ANNOTATIONS=1 -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_32 -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_26 -DWEBP_EXTERN=extern -DTOOLKIT_VIEWS=1 -DGL_GLEXT_PROTOTYPES -DUSE_GLX -DUSE_EGL -DVK_NO_PROTOTYPES -DGOOGLE_PROTOBUF_NO_RTTI -DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER -DHAVE_PTHREAD -DPROTOBUF_USE_DLLS -DBORINGSSL_SHARED_LIBRARY -DSK_IGNORE_LINEONLY_AA_CONVEX_PATH_OPTS -DSK_HAS_PNG_LIBRARY -DSK_HAS_WEBP_LIBRARY -DSK_HAS_JPEG_LIBRARY -DSK_VULKAN_HEADER=\"../../skia/config/SkVulkanConfig.h\" -DSK_VULKAN=1 -DSKIA_DLL -DGR_GL_IGNORE_ES3_MSAA=0 -DSKCMS_API=__attribute__\(\(visibility\(\"default\"\)\)\) -DSK_SUPPORT_GPU=1 -DSK_GPU_WORKAROUNDS_HEADER=\"gpu/config/gpu_driver_bug_workaround_autogen.h\" -DVK_NO_PROTOTYPES -DI18N_ADDRESS_VALIDATION_DATA_URL=\"https://chromium-i18n.appspot.com/ssl-aggregate-address/\" -DU_USING_ICU_NAMESPACE=0 -DU_ENABLE_DYLOAD=0 -DUSE_CHROMIUM_ICU=1 -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE -DUCHAR_TYPE=uint16_t -DLEVELDB_PLATFORM_CHROMIUM=1 -DWEBRTC_NON_STATIC_TRACE_EVENT_HANDLERS=0 -DWEBRTC_CHROMIUM_BUILD -DWEBRTC_POSIX -DWEBRTC_LINUX -DABSL_ALLOCATOR_NOTHROW=1 -DNO_MAIN_THREAD_WRAPPING -DI18N_PHONENUMBERS_USE_ICU_REGEXP=1 -DI18N_PHONENUMBERS_USE_ALTERNATE_FORMATS=1 -DI18N_PHONENUMBERS_NO_THREAD_SAFETY=1 -I../.. -Igen -I../../third_party/libwebp/src -I../../third_party/libyuv/include -I../../third_party/khronos -I../../gpu -I../../third_party/vulkan/include -I../../third_party/protobuf/src -Igen/protoc_out -I../../third_party/protobuf/src -I../../third_party/boringssl/src/include -I../../skia/config -I../../skia/ext -I../../third_party/skia/include/c -I../../third_party/skia/include/config -I../../third_party/skia/include/core -I../../third_party/skia/include/effects -I../../third_party/skia/include/encode -I../../third_party/skia/include/gpu -I../../third_party/skia/include/images -I../../third_party/skia/include/lazy -I../../third_party/skia/include/pathops -I../../third_party/skia/include/pdf -I../../third_party/skia/include/pipe -I../../third_party/skia/include/ports -I../../third_party/skia/include/utils -I../../third_party/vulkan/include -I../../third_party/skia/third_party/vulkanmemoryallocator -I../../third_party/skia/src/gpu -I../../third_party/skia/src/sksl -I../../third_party/skia/modules/skottie/include -I../../third_party/vulkan/include -I../../third_party/libaddressinput/src/cpp/include -I../../third_party/ced/src -I../../third_party/icu/source/common -I../../third_party/icu/source/i18n -I../../third_party/leveldatabase -I../../third_party/leveldatabase/src -I../../third_party/leveldatabase/src/include -I../../third_party/webrtc_overrides -I../../third_party/webrtc -I../../third_party/abseil-cpp -I../../third_party/cacheinvalidation/overrides -I../../third_party/cacheinvalidation/src -I../../third_party/libphonenumber/dist/cpp/src -Igen/third_party/libphonenumber -I../../third_party/re2/src -fno-strict-aliasing --param=ssp-buffer-size=4 -fstack-protector -Wno-builtin-macro-redefined -D__DATE__= -D__TIME__= -D__TIMESTAMP__= -funwind-tables -fPIC -pipe -pthread -m64 -Wall -Wno-unused-local-typedefs -Wno-maybe-uninitialized -Wno-deprecated-declarations -fno-delete-null-pointer-checks -Wno-comments -Wno-missing-field-initializers -Wno-unused-parameter -O0 -fno-omit-frame-pointer -g2 -fno-builtin-abs -fvisibility=hidden -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/nss3 -I/usr/include/nspr4 -std=gnu++14 -Wno-narrowing -fno-exceptions -fno-rtti -nostdinc++ -isystem../../buildtools/third_party/libc++/trunk/include -isystem../../buildtools/third_party/libc++abi/trunk/include -fvisibility-inlines-hidden -c ../../components/autofill/core/browser/password_requirements_spec_fetcher_impl.cc -o obj/components/autofill/core/browser/browser/password_requirements_spec_fetcher_impl.o In file included from ../../net/third_party/quic/core/quic_packets.h:18, from ../../net/base/net_error_details.h:10, from ../../net/url_request/url_request.h:27, from ../../services/network/public/cpp/resource_request.h:17, from ../../components/autofill/core/browser/password_requirements_spec_fetcher_impl.cc:19: ../../net/third_party/quic/core/frames/quic_frame.h:73:7: error: member ‘quic::QuicFrame::<unnamed union>::<unnamed struct>::<unnamed union> quic::QuicFrame::<unnamed union>::<unnamed struct>::<anonymous>’ with constructor not allowed in anonymous aggregate union { Reverting the file to its state in commit 7b4f22bd25461cb32236c07699b029c7411ba494 allows the build to continue. Did this work before? N/A Chrome version: 70.0.3538.9 Channel: dev OS Version: Fedora Flash Version:
,
Sep 11
,
Sep 12
I didn't think Chrome supported building with gcc?
,
Sep 17
Assining to zhongyi@ as per C#0 identified commit https://chromium.googlesource.com/chromium/src/+/7b4f22bd25461cb32236c07699b029c7411ba494.
,
Sep 17
> I didn't think Chrome supported building with gcc? It supports GCC on a "best-effort" basis: things may break since no bots are testing it, but patches are welcome and people generally try to help when the build breaks. As for this specific issue, the problem's likely https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77314: the innermost union in |QuicFrame| has members such as |padding_frame| that have user-provided constructors. Adding a name to that struct between the two unions fixes the build, but that has the obvious consequence that it's no longer an anonymous struct.
,
Sep 17
wub@chromium.org: mind taking a look to see if we can fix this? The change was introduced in https://chromium-review.googlesource.com/c/chromium/src/+/1185978.
,
Oct 3
This is fixed in https://chromium.googlesource.com/chromium/src/+/828a57a60771f438521b6bff848ac43401df3d3d
,
Oct 4
Thank you! |
|||||||
►
Sign in to add a comment |
|||||||
Comment 1 by dtapu...@chromium.org
, Sep 10