Hey,

we recently started to support component builds for almost all binaries.
With this, it might happen that debug bots fail to link because they can't
find certain symbols.

Here is what to do:

If the symbol is supposed to be visible to embedders, e.g., it's in
include/v8.h, then add the V8_EXPORT macro.

If the symbol is used by tests only, e.g., it's in src/, add the
V8_EXPORT_PRIVATE (defined in src/globals.h) macro (or if it's in src/base/
V8_BASE_EXPORT defined in src/base/base-export.h or in src/libplatform
V8_PLATFORM_EXPORT defined in include/libplatform/libplatform-export.h)

Annotate classes like this:

class V8_EXPORT Foo {
};

or individual methods or functions like this

V8_EXPORT bool DoStuff();

For the public API (V8_EXPORT) we generally export everything. For test
only stuff, we might wish to not export some base classes. In that
situation, you have to annotate the base classes with NON_EXPORTED_BASE
defined in src/base/compiler-specific.h like this:

class V8_EXPORT_PRIVATE Foo : public NON_EXPORTED_BASE(Bar) {
};

If you annotated everything, but e.g. a symbol from src/base is still not
found, it might be that the executable does not depend on v8_libbase (in
this example) - you'll have to add the dependency in the BUILD.gn (and
corresponding gyp file) then - but this should be rare, only if you add new
binaries.

best
-jochen

-- 
-- 
v8-dev mailing list
v8-dev@googlegroups.com
http://groups.google.com/group/v8-dev
--- 
You received this message because you are subscribed to the Google Groups 
"v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to v8-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to