GCC 7 cannot build v8 java script engine
Reported by
marxin.l...@gmail.com,
May 24 2016
|
||||||||
Issue description
UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36
Steps to reproduce the problem:
1. Build chromium with the GCC compiler 6.1+
What is the expected behavior?
What went wrong?
c++ -MMD -MF obj/v8/src/v8_base.accessors.o.d -DV8_DEPRECATION_WARNINGS -DCLD_VERSION=2 -D_FILE_OFFSET_BITS=64 -DDISABLE_NACL -DCHROMIUM_BUILD -DUI_COMPOSITOR_IMAGE_TRANSPORT -DUSE_AURA=1 -DUSE_ASH=1 -DUSE_PANGO=1 -DUSE_CAIRO=1 -DUSE_DEFAULT_RENDER_THEME=1 -DUSE_LIBJPEG_TURBO=1 -DUSE_X11=1 -DUSE_CLIPBOARD_AURAX11=1 -DENABLE_ONE_CLICK_SIGNIN -DENABLE_WEBRTC=1 -DENABLE_MEDIA_ROUTER=1 -DUSE_PROPRIETARY_CODECS -DENABLE_PEPPER_CDMS -DENABLE_CONFIGURATION_POLICY -DENABLE_NOTIFICATIONS -DENABLE_HIDPI=1 -DENABLE_TOPCHROME_MD=1 -DUSE_UDEV -DDONT_EMBED_BUILD_METADATA -DFIELDTRIAL_TESTING_ENABLED -DENABLE_TASK_MANAGER=1 -DENABLE_EXTENSIONS=1 -DENABLE_PDF=1 -DENABLE_PLUGINS=1 -DENABLE_SESSION_SERVICE=1 -DENABLE_THEMES=1 -DENABLE_AUTOFILL_DIALOG=1 -DENABLE_BACKGROUND=1 -DENABLE_PRINTING=1 -DENABLE_BASIC_PRINTING=1 -DENABLE_PRINT_PREVIEW=1 -DENABLE_SPELLCHECK=1 -DENABLE_CAPTIVE_PORTAL_DETECTION=1 -DENABLE_APP_LIST=1 -DENABLE_SETTINGS_APP=1 -DENABLE_SUPERVISED_USERS=1 -DENABLE_MDNS=1 -DENABLE_SERVICE_DISCOVERY=1 -DV8_USE_EXTERNAL_STARTUP_DATA -DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD -DSAFE_BROWSING_DB_LOCAL -DV8_TARGET_ARCH_X64 -DV8_I18N_SUPPORT -DV8_IMMINENT_DEPRECATION_WARNINGS -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE -DU_USING_ICU_NAMESPACE=0 -DU_ENABLE_DYLOAD=0 -DU_STATIC_IMPLEMENTATION -DUSE_LIBPCI=1 -DUSE_OPENSSL=1 -DUSE_GLIB=1 -DUSE_NSS_CERTS=1 -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DENABLE_HANDLE_ZAPPING -I../../v8 -Igen -I../../third_party/icu/source/i18n -I../../third_party/icu/source/common -fstack-protector --param=ssp-buffer-size=4 -pthread -fno-strict-aliasing -Wno-unused-parameter -Wno-missing-field-initializers -fvisibility=hidden -pipe -fPIC -Wno-unused-local-typedefs -Wno-format -Wno-unused-result -m64 -march=x86-64 -flto -ffat-lto-objects -m64 -O3 -fno-ident -fdata-sections -ffunction-sections -funwind-tables -fdata-sections -ffunction-sections -O3 -fno-exceptions -fno-rtti -fno-threadsafe-statics -fvisibility-inlines-hidden -Wno-deprecated -std=gnu++11 -Wno-narrowing -Wno-literal-suffix -c ../../v8/src/accessors.cc -o obj/v8/src/v8_base.accessors.o
In file included from ../../v8/src/heap/spaces.h:16:0,
from ../../v8/src/heap/heap.h:18,
from ../../v8/src/contexts.h:8,
from ../../v8/src/api.h:9,
from ../../v8/src/accessors.cc:7:
../../v8/src/objects.h: In member function ‘uint32_t v8::internal::HashTable<Derived, Shape, Key>::Hash(Key)’:
../../v8/src/objects.h:3126:46: error: invalid use of incomplete type ‘class v8::internal::Heap’
return Shape::SeededHash(key, GetHeap()->HashSeed());
^~
In file included from ../../v8/src/accessors.h:8:0,
from ../../v8/src/accessors.cc:5:
../../v8/include/v8.h:141:7: note: forward declaration of ‘class v8::internal::Heap’
class Heap;
^~~~
In file included from ../../v8/src/heap/spaces.h:16:0,
from ../../v8/src/heap/heap.h:18,
from ../../v8/src/contexts.h:8,
from ../../v8/src/api.h:9,
from ../../v8/src/accessors.cc:7:
../../v8/src/objects.h: In member function ‘uint32_t v8::internal::HashTable<Derived, Shape, Key>::HashForObject(Key, v8::internal::Object*)’:
../../v8/src/objects.h:3134:55: error: invalid use of incomplete type ‘class v8::internal::Heap’
return Shape::SeededHashForObject(key, GetHeap()->HashSeed(), object);
^~
In file included from ../../v8/src/accessors.h:8:0,
from ../../v8/src/accessors.cc:5:
../../v8/include/v8.h:141:7: note: forward declaration of ‘class v8::internal::Heap’
class Heap;
^~~~
ninja: build stopped: subcommand failed.
I reduced a smaller test-case and create an issue in GCC bugzilla:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71193
According to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71193#c1, the code is invalid and should be fixed in v8 code base.
Thanks,
Martin
Did this work before? N/A
Chrome version: 50.0.2661.94 Channel: n/a
OS Version:
Flash Version: Shockwave Flash 21.0 r0
,
May 25 2016
Yeah, I forgot to properly pick up the right component.
,
Aug 3 2016
,
Aug 5 2016
Just to clarify. This issue only happens with upcoming gcc-7, gcc-6 is fine. Here is Jason's comment from gcc bugzilla: »The standard quite clearly says that this code is ill-formed, no diagnostic required. 14.6/8: "If a hypothetical instantiation of a template immediately following its definition would be ill-formed due to a construct that does not depend on a template parameter, the program is ill-formed; no diagnostic is required. If the interpretation of such a construct in the hypothetical instantiation is different from the interpretation of the corresponding construct in any actual instantiation of the template, the program is ill-formed; no diagnostic is required. [ Note: This can happen in situations including the following: * a type used in a non-dependent name is incomplete at the point at which a template is defined but is complete at the point at which an instantiation is performed, ...."«
,
Aug 10 2016
This is not an infrastructure issue.
,
Aug 10 2016
Do we care about GCC 6?
,
Aug 10 2016
First of all gcc-6 is fine. And using ill-formed is a bad idea in general, regardless of the compiler.
,
Jun 6 2017
+marja@ for further V8 triage
,
Jun 6 2017
,
Jun 7 2018
This issue has been Available for over a year. If it's no longer important or seems unlikely to be fixed, please consider closing it out. If it is important, please re-triage the issue. Sorry for the inconvenience if the bug really should have been left as Available. For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
,
Jun 7 2018
I guess we can close this one due to its age. I've been building Chromium (and consequently V8) for multiple architectures with GCC 6, 7 and 8 without problems.
,
Jun 7 2018
|
||||||||
►
Sign in to add a comment |
||||||||
Comment 1 by hongchan@chromium.org
, May 24 2016