Dan, the patch very nearly did the trick, there's just one last unresolved 
external symbol. Ben.

     [exec] [5/686] LINK bytecode_builtins_list_generator.exe 
bytecode_builtins_list_generator.exe.pdb
     [exec] FAILED: bytecode_builtins_list_generator.exe 
bytecode_builtins_list_generator.exe.pdb
     [exec] 
C:/32cfab25/depot_tools/bootstrap-3_8_0b1_chromium_1_bin/python/bin/python.exe 
../../build/toolchain/win/tool_wrapper.py link-wrapper environment.x64 
False link.exe /nologo /OUT:./bytecode_builtins_list_generator.exe 
/PDB:./bytecode_builtins_list_generator.exe.pdb 
@./bytecode_builtins_list_generator.exe.rsp
     [exec] generate-bytecodes-builtins-list.obj : error LNK2019: 
unresolved external symbol "public: void __cdecl 
v8::internal::VirtualMemory::Reset(void)" 
(?Reset@VirtualMemory@internal@v8@@QEAAXXZ) referenced in function "public: 
__cdecl v8::internal::VirtualMemory::VirtualMemory(class 
v8::internal::VirtualMemory &&)" 
(??0VirtualMemory@internal@v8@@QEAA@$$QEAV012@@Z)
     [exec]
     [exec]
     [exec] bytecode-operands.obj : error LNK2001: unresolved external 
symbol "public: void __cdecl v8::internal::VirtualMemory::Reset(void)" 
(?Reset@VirtualMemory@internal@v8@@QEAAXXZ)
     [exec]
     [exec]
     [exec] bytecodes.obj : error LNK2001: unresolved external symbol 
"public: void __cdecl v8::internal::VirtualMemory::Reset(void)" 
(?Reset@VirtualMemory@internal@v8@@QEAAXXZ)
     [exec]
     [exec]
     [exec] ./bytecode_builtins_list_generator.exe : fatal error LNK1120: 1 
unresolved externals
     [exec]
     [exec]
     [exec] [6/686] ACTION //:run_torque(//build/toolchain/win:x64)



On Thursday, 14 November 2019 22:09:39 UTC+10:30, Dan Elphick wrote:
>
> So the problem is that utils.h includes include/v8.h. That declares things 
> like IsolateFromNeverReadOnlySpaceObject, which is appearing in the 
> preprocessor outputs as:
>
> __declspec(dllexport) internal::Isolate* 
> IsolateFromNeverReadOnlySpaceObject(Address obj);
>
> It's marked as export because it's passing  -DBUILDING_V8_SHARED to the 
> build command. Removing that is a little tricky, but the simpler way to fix 
> is to rework the includes to avoid including v8.h:
>
> Here's a patch:
>
> diff --git a/src/parsing/scanner.h b/src/parsing/scanner.h
> index d9216f222a..a7386050d6 100644
> --- a/src/parsing/scanner.h
> +++ b/src/parsing/scanner.h
> @@ -10,6 +10,7 @@
>  #include <algorithm>
>  #include <memory>
>  
> +#include "include/v8.h"
>  #include "src/base/logging.h"
>  #include "src/common/globals.h"
>  #include "src/common/message-template.h"
> diff --git a/src/runtime/runtime.h b/src/runtime/runtime.h
> index f5e56ac951..0e15898f73 100644
> --- a/src/runtime/runtime.h
> +++ b/src/runtime/runtime.h
> @@ -7,6 +7,7 @@
>  
>  #include <memory>
>  
> +#include "include/v8.h"
>  #include "src/base/platform/time.h"
>  #include "src/common/globals.h"
>  #include "src/objects/elements-kind.h"
> diff --git a/src/utils/utils.h b/src/utils/utils.h
> index 6f04ea63d3..8ba4e6bef7 100644
> --- a/src/utils/utils.h
> +++ b/src/utils/utils.h
> @@ -12,7 +12,6 @@
>  #include <string>
>  #include <type_traits>
>  
> -#include "include/v8.h"
>  #include "src/base/bits.h"
>  #include "src/base/compiler-specific.h"
>  #include "src/base/logging.h"
>
> Please try that and see if it works and I'll upload up to master.
>
>
> On Thu, 14 Nov 2019 at 11:06, Ben Ernst <boi...@gmail.com <javascript:>> 
> wrote:
>
>> Dan,
>>
>> Yes, torque builds OK.
>>
>> I have attached the preprocessed output, zipped up. I hope that this 
>> tells you something.
>>
>> I tried building the following versions of V8 (in addition to 7.8 I was 
>> building originally), they all have essentially the same problem.
>>
>> 7.9.317.22
>> 7.7.299.15
>> 7.2.502.28
>>
>> Thank you in advance for any ideas.
>> Ben
>>
>> On Thursday, 14 November 2019 20:47:56 UTC+10:30, Dan Elphick wrote:
>>>
>>> If instead of building everything, does torque build? e.g. ninja -C 
>>> <build-dir> torque. It looks like it does from the log but just want to 
>>> check. It seems odd that it can build that one but not the other simpler 
>>> executable.
>>>
>>> Below  is the command line for building bytecode-operands.obj from your 
>>> log. It specifies only the single .cc which doesn't include very much at 
>>> all so I don't see how it would get those symbols. You could try adding the 
>>> /P option to cl.exe (
>>> https://docs.microsoft.com/en-us/cpp/build/reference/p-preprocess-to-a-file?view=vs-2019
>>>  
>>> <https://www.google.com/url?q=https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fcpp%2Fbuild%2Freference%2Fp-preprocess-to-a-file%3Fview%3Dvs-2019&sa=D&sntz=1&usg=AFQjCNG-ELxt9CxA61sjMVK-8z8nrL4Efg>)
>>>  
>>> and see what the preprocessed output is.
>>>
>>> ninja -t msvc -e environment.x64
>>> --
>>> "C:\Program Files (x86)\Microsoft Visual 
>>> Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64/cl.exe"
>>> /nologo /showIncludes
>>> -DUSE_AURA=1 -D_HAS_EXCEPTIONS=0 -DCOMPONENT_BUILD -D__STD_C 
>>> -D_CRT_RAND_S -D_CRT_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_DEPRECATE
>>> -D_ATL_NO_OPENGL -D_WINDOWS -DCERT_CHAIN_PARA_HAS_EXTRA_FIELDS 
>>> -DPSAPI_VERSION=2 -DWIN32 -D_SECURE_ATL -D_USING_V110_SDK71_
>>> -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP -DWIN32_LEAN_AND_MEAN 
>>> -DNOMINMAX -D_UNICODE -DUNICODE -DNTDDI_VERSION=NTDDI_WIN10_RS2
>>> -D_WIN32_WINNT=0x0A00 -DWINVER=0x0A00 -DNDEBUG -DNVALGRIND 
>>> -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DV8_TYPED_ARRAY_MAX_SIZE_IN_HEAP=64
>>> -DENABLE_MINOR_MC -DV8_INTL_SUPPORT -DV8_USE_SNAPSHOT 
>>> -DV8_USE_EXTERNAL_STARTUP_DATA -DV8_CONCURRENT_MARKING
>>> -DV8_ENABLE_LAZY_SOURCE_POSITIONS -DV8_EMBEDDED_BUILTINS 
>>> -DV8_SHARED_RO_HEAP -DV8_WIN64_UNWINDING_INFO
>>> -DV8_ENABLE_REGEXP_INTERPRETER_THREADED_DISPATCH 
>>> -DV8_DEPRECATION_WARNINGS -DV8_IMMINENT_DEPRECATION_WARNINGS 
>>> -DV8_TARGET_ARCH_X64
>>> -DDISABLE_UNTRUSTED_CODE_MITIGATIONS -DBUILDING_V8_SHARED 
>>> -DV8_DEPRECATION_WARNINGS -DV8_IMMINENT_DEPRECATION_WARNINGS
>>> -DUSING_V8_BASE_SHARED
>>> -I../..  -I../..  -Igen -I../..  -Igen
>>> /Gy /FS
>>> /bigobj
>>> /utf-8
>>> /Zc:twoPhase /Zc:sizedDealloc-
>>> /wd4117
>>> /D__DATE__= /D__TIME__= /D__TIMESTAMP__=
>>> /W4 /wd4091 /wd4127 /wd4251 /wd4275 /wd4312 /wd4324 /wd4351 /wd4355 
>>> /wd4503 /wd4589 /wd4611 /wd4100 /wd4121 /wd4244 /wd4505 /wd4510
>>> /wd4512 /wd4610 /wd4838 /wd4995 /wd4996 /wd4456 /wd4457 /wd4458 /wd4459 
>>> /wd4200 /wd4201 /wd4204 /wd4221 /wd4245 /wd4267 /wd4305 /wd4389
>>> /wd4702 /wd4701 /wd4703 /wd4661 /wd4706 /wd4715
>>> /Zi /MD
>>> /wd4245 /wd4267 /wd4324 /wd4701 /wd4702 /wd4703 /wd4709 /wd4714 /wd4715 
>>> /wd4718 /wd4723 /wd4724 /wd4800
>>> /O2 /Ob2 /Oy- /Zc:inline /Gw /TP /wd4577 /GR-
>>> /c ../../src/interpreter/bytecode-operands.cc
>>> /Foobj/bytecode_builtins_list_generator/bytecode-operands.obj
>>> /Fd"obj/bytecode_builtins_list_generator_cc.pdb"
>>>
>>>
>>>
>>> On Wed, 13 Nov 2019 at 20:38, Ben Ernst <boi...@gmail.com> wrote:
>>>
>>>> Dan, 
>>>>
>>>> I've attached the output from a clean build with "-v" as you suggested. 
>>>> Thoroughly appreciate any advice. Quite desperate at this point.
>>>>
>>>> Marcelo,
>>>>
>>>> Thank you for the suggestion. Using "is_clang=true" succeeds, but 
>>>> results in a binary that is unusable. It cannot be imported into an MSVC 
>>>> project due to unresolved symbols. It looks like certain symbols clang 
>>>> doesn't think needs to be exported, but MSVC does expect them to be 
>>>> exported. My motivation for "use_custom_libcxx" is similar.
>>>>
>>>> Ben
>>>>
>>>> On Wednesday, 13 November 2019 22:27:39 UTC+10:30, Dan Elphick wrote:
>>>>>
>>>>> That's very odd. bytecode_builtins_list_generator is a very small 
>>>>> executable that depends on base and generates a header file. It should 
>>>>> not 
>>>>> be using any of the symbols in your log below and would usually be built 
>>>>> and linked before compiling the files containing those symbols.
>>>>>
>>>>> Could you do a clean build and give the output of running the build 
>>>>> with ninja -v (so it prints all build commands even if they succeed)? 
>>>>> Just 
>>>>> the lines involving the obj files in your log should be enough.
>>>>>
>>>>> Thanks,
>>>>> Dan
>>>>>
>>>>> On Wed, 13 Nov 2019 at 11:32, Ben Ernst <boi...@gmail.com> wrote:
>>>>>
>>>>>> My full gn args are as follows:
>>>>>>
>>>>>> is_debug = false
>>>>>> target_cpu = "x64"
>>>>>> treat_warnings_as_errors=false
>>>>>> is_component_build=true
>>>>>> v8_enable_i18n_support=false
>>>>>> v8_use_snapshot=true
>>>>>> use_custom_libcxx=false
>>>>>> is_clang=false
>>>>>>
>>>>>> But when I try to build V8 (n.b. on Windows) (n.b. V8 
>>>>>> version 7.8.279) I get the following errors (among many others):
>>>>>>
>>>>>>     [exec] [7/685] LINK bytecode_builtins_list_generator.exe 
>>>>>> bytecode_builtins_list_generator.exe.pdb
>>>>>>      [exec] FAILED: bytecode_builtins_list_generator.exe 
>>>>>> bytecode_builtins_list_generator.exe.pdb
>>>>>>      [exec] 
>>>>>> C:/6faf51f1/depot_tools/bootstrap-3_8_0b1_chromium_1_bin/python/bin/python.exe
>>>>>>  
>>>>>> ../../build/toolchain/win/tool_wrapper.py link-wrapper environment.x64 
>>>>>> False link.exe /nologo /OUT:./bytecode_builtins_list_generator.exe 
>>>>>> /PDB:./bytecode_builtins_list_generator.exe.pdb 
>>>>>> @./bytecode_builtins_list_generator.exe.rsp
>>>>>>      [exec] generate-bytecodes-builtins-list.obj : error LNK2019: 
>>>>>> unresolved external symbol "class v8::internal::Isolate * __cdecl 
>>>>>> v8::internal::IsolateFromNeverReadOnlySpaceObject(unsigned __int64)" 
>>>>>> (?IsolateFromNeverReadOnlySpaceObject@internal@v8@@YAPEAVIsolate@12@_K@Z)
>>>>>>  
>>>>>> referenced in function "public: class v8::Local<class v8::Value> __cdecl 
>>>>>> v8::Context::GetEmbedderData(int)" 
>>>>>> (?GetEmbedderData@Context@v8@@QEAA?AV?$Local@VValue@v8@@@2@H@Z)
>>>>>>      [exec] bytecode-operands.obj : error LNK2001: unresolved 
>>>>>> external symbol "class v8::internal::Isolate * __cdecl 
>>>>>> v8::internal::IsolateFromNeverReadOnlySpaceObject(unsigned __int64)" 
>>>>>> (?IsolateFromNeverReadOnlySpaceObject@internal@v8@@YAPEAVIsolate@12@_K@Z)
>>>>>>      [exec] bytecodes.obj : error LNK2001: unresolved external symbol 
>>>>>> "class v8::internal::Isolate * __cdecl 
>>>>>> v8::internal::IsolateFromNeverReadOnlySpaceObject(unsigned __int64)" 
>>>>>> (?IsolateFromNeverReadOnlySpaceObject@internal@v8@@YAPEAVIsolate@12@_K@Z)
>>>>>>      [exec] generate-bytecodes-builtins-list.obj : error LNK2019: 
>>>>>> unresolved external symbol "public: __cdecl 
>>>>>> v8::HandleScope::~HandleScope(void)" (??1HandleScope@v8@@QEAA@XZ) 
>>>>>> referenced in function "public: __cdecl 
>>>>>> v8::EscapableHandleScope::~EscapableHandleScope(void)" 
>>>>>> (??1EscapableHandleScope@v8@@QEAA@XZ)
>>>>>>
>>>>>>
>>>>>> What could I be doing wrong? Any suggestions appreciated.
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Wednesday, 6 November 2019 21:30:10 UTC+10:30, Ben Ernst wrote:
>>>>>>>
>>>>>>> Thanks Hans, I'm sure I tried that before, but I'll give that a shot 
>>>>>>> again. Ben.
>>>>>>>
>>>>>>> On Monday, 4 November 2019 17:46:08 UTC+10:30, Hans Maier wrote:
>>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> the libc provided together with v8 is incompatible with the 
>>>>>>>> msvc-libc.
>>>>>>>> I had to provide "use_custom_libcxx=false" to be able to link it 
>>>>>>>> with my own program.
>>>>>>>>
>>>>>>>>
>>>>>>>> Am Sonntag, 3. November 2019 12:43:57 UTC+1 schrieb Ben Ernst:
>>>>>>>>>
>>>>>>>>> Of note, the sample utilities "d8" and "v8_hello_world" build 
>>>>>>>>> fine, and they don't get this same linker error. I can't see anything 
>>>>>>>>> I'm 
>>>>>>>>> doing differently, however.
>>>>>>>>>
>>>>>>>>> On Sunday, 3 November 2019 22:08:27 UTC+10:30, Ben Ernst wrote:
>>>>>>>>>>
>>>>>>>>>> Thanks Jakob, is there by any chance a correpsonding buildbot for 
>>>>>>>>>> Windows and MSVC++? I get this linker error from it seems V8 7.2 
>>>>>>>>>> onwards, 
>>>>>>>>>> although I'm focussing on 7.8. The "monolith" build seems to be 
>>>>>>>>>> working 
>>>>>>>>>> though. I wonder if it's an MSVC++ peculiarity that is tripping me 
>>>>>>>>>> up?
>>>>>>>>>> Regards,
>>>>>>>>>> Ben
>>>>>>>>>>
>>>>>>>>>> On Saturday, 2 November 2019 02:17:38 UTC+10:30, Jakob Kummerow 
>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>> Yes, the component build is expected to work for every version, 
>>>>>>>>>>> and our buildbot thinks it does: 
>>>>>>>>>>> https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20-%20shared
>>>>>>>>>>>
>>>>>>>>>>> The component build is also the default in Debug mode, which 
>>>>>>>>>>> most V8 developers compile/use every day.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Fri, Nov 1, 2019 at 1:00 AM Ben Ernst <boi...@gmail.com> 
>>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Is the idea of a "component build", where you specify 
>>>>>>>>>>>> "is_component_build=true" in the arguments to GN, actually 
>>>>>>>>>>>> supposed to work 
>>>>>>>>>>>> at all in V8 (v7.8)?
>>>>>>>>>>>>
>>>>>>>>>>>> In particular, I am getting this unresolved external symbol:
>>>>>>>>>>>>
>>>>>>>>>>>> 1>ezv8_platform.obj : error LNK2019: unresolved external symbol 
>>>>>>>>>>>> "__declspec(dllimport) class std::unique_ptr<class 
>>>>>>>>>>>> v8::Platform,struct 
>>>>>>>>>>>> std::default_delete<class v8::Platform> > __cdecl 
>>>>>>>>>>>> v8::platform::NewDefaultPlatform(int,enum 
>>>>>>>>>>>> v8::platform::IdleTaskSupport,enum 
>>>>>>>>>>>> v8::platform::InProcessStackDumping,class std::unique_ptr<class 
>>>>>>>>>>>> v8::TracingController,struct std::default_delete<class 
>>>>>>>>>>>> v8::TracingController> >)" 
>>>>>>>>>>>> (__imp_?NewDefaultPlatform@platform@v8@@YA?AV?$unique_ptr@VPlatform@v8@@U?$default_delete@VPlatform@v8@@@std@@@std@@HW4IdleTaskSupport@12@W4InProcessStackDumping@12@V?$unique_ptr@VTracingController@v8@@U?$default_delete@VTracingController@v8@@@std@@@4@@Z)
>>>>>>>>>>>>  
>>>>>>>>>>>> referenced in function "public: __cdecl 
>>>>>>>>>>>> ezv8::Platform::Impl::Impl(void)" 
>>>>>>>>>>>> (??0Impl@Platform@ezv8@@QEAA@XZ)
>>>>>>>>>>>>
>>>>>>>>>>>> The function "NewDefaultPlatform" seems to be exported from 
>>>>>>>>>>>> v8_libplatform.
>>>>>>>>>>>>
>>>>>>>>>>>> V8_PLATFORM_EXPORT std::unique_ptr<v8::Platform> 
>>>>>>>>>>>> NewDefaultPlatform(
>>>>>>>>>>>>     int thread_pool_size = 0,
>>>>>>>>>>>>     IdleTaskSupport idle_task_support = 
>>>>>>>>>>>> IdleTaskSupport::kDisabled,
>>>>>>>>>>>>     InProcessStackDumping in_process_stack_dumping =
>>>>>>>>>>>>         InProcessStackDumping::kDisabled,
>>>>>>>>>>>>     std::unique_ptr<v8::TracingController> tracing_controller = 
>>>>>>>>>>>> {});
>>>>>>>>>>>>
>>>>>>>>>>>> But the destructor of the base class, v8::Platform is not 
>>>>>>>>>>>> exported.
>>>>>>>>>>>>
>>>>>>>>>>>> /**
>>>>>>>>>>>>  * V8 Platform abstraction layer.
>>>>>>>>>>>>  *
>>>>>>>>>>>>  * The embedder has to provide an implementation of this 
>>>>>>>>>>>> interface before
>>>>>>>>>>>>  * initializing the rest of V8.
>>>>>>>>>>>>  */
>>>>>>>>>>>> class Platform {
>>>>>>>>>>>>  public:
>>>>>>>>>>>>   virtual ~Platform() = default;
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> I think that's the cause of the error above, although I may 
>>>>>>>>>>>> have misinterpreted the error message.
>>>>>>>>>>>>
>>>>>>>>>>>> Am I barking up the wrong tree by trying to use the component 
>>>>>>>>>>>> build at all?
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks in advance for any advice.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> -- 
>>>>>> -- 
>>>>>> v8-users mailing list
>>>>>> v8-u...@googlegroups.com
>>>>>> http://groups.google.com/group/v8-users
>>>>>> --- 
>>>>>> You received this message because you are subscribed to the Google 
>>>>>> Groups "v8-users" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it, 
>>>>>> send an email to v8-u...@googlegroups.com.
>>>>>> To view this discussion on the web visit 
>>>>>> https://groups.google.com/d/msgid/v8-users/6d7d3682-8f5c-431a-85fe-b929d9834522%40googlegroups.com
>>>>>>  
>>>>>> <https://groups.google.com/d/msgid/v8-users/6d7d3682-8f5c-431a-85fe-b929d9834522%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>> .
>>>>>>
>>>>> -- 
>>>> -- 
>>>> v8-users mailing list
>>>> v8-u...@googlegroups.com
>>>> http://groups.google.com/group/v8-users
>>>> --- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "v8-users" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to v8-u...@googlegroups.com.
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/v8-users/d4243240-9bdb-4b9f-971f-b191ab2aeab5%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/v8-users/d4243240-9bdb-4b9f-971f-b191ab2aeab5%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>> -- 
>> -- 
>> v8-users mailing list
>> v8-u...@googlegroups.com <javascript:>
>> http://groups.google.com/group/v8-users
>> --- 
>> You received this message because you are subscribed to the Google Groups 
>> "v8-users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to v8-u...@googlegroups.com <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/v8-users/7a894267-c1c1-4b79-ac92-e1840b002d70%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/v8-users/7a894267-c1c1-4b79-ac92-e1840b002d70%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
-- 
v8-users mailing list
v8-users@googlegroups.com
http://groups.google.com/group/v8-users
--- 
You received this message because you are subscribed to the Google Groups 
"v8-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to v8-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/v8-users/c03232a5-9d93-422f-ab9a-676160a377dc%40googlegroups.com.

Reply via email to