Undefined mozjs52 symbols with Clang
I'm updating gjs on OpenBSD with the following components:
- gjs 1.50.2
- spidermonkey 52.4.0
- clang 5.0.0
However I'm running into undefined symbols when linking:
.libs/libgjs.so.5.0: undefined reference to `void js::UnsafeTraceManuallyBarrieredEdge<jsid>(JSTracer*, jsid*, char const*)'
.libs/libgjs.so.5.0: undefined reference to `void JS::TraceEdge<JSObject*>(JSTracer*, JS::Heap<JSObject*>*, char const*)'
.libs/libgjs.so.5.0: undefined reference to `void js::UnsafeTraceManuallyBarrieredEdge<JSObject*>(JSTracer*, JSObject**, char const*)'
.libs/libgjs.so.5.0: undefined reference to `void js::UnsafeTraceManuallyBarrieredEdge<JS::Value>(JSTracer*, JS::Value*, char const*)'
When I look at what mozjs provides for JS::TraceEdge:
basalt:2011 bin % nm -g /usr/local/lib/libmozjs-52.so.0.0 |grep TraceEdge | c++filt
0068ec60 T JS::TraceEdge(JSTracer*, JS::TenuredHeap<JSObject*>*, char const*)
006a24f0 W void JS::TraceEdge<jsid>(JSTracer*, JS::Heap<jsid>*, char const*)
006a2300 W void JS::TraceEdge<JS::Value>(JSTracer*, JS::Heap<JS::Value>*, char const*)
006a1f40 W void JS::TraceEdge<JSFunction*>(JSTracer*, JS::Heap<JSFunction*>*, char const*)
006a1dd0 W void JS::TraceEdge<JSAtom*>(JSTracer*, JS::Heap<JSAtom*>*, char const*)
006a1fe0 W void JS::TraceEdge<JSScript*>(JSTracer*, JS::Heap<JSScript*>*, char const*)
006a2190 W void JS::TraceEdge<JSString*>(JSTracer*, JS::Heap<JSString*>*, char const*)
006a1c60 W void JS::TraceEdge<JS::Symbol*>(JSTracer*, JS::Heap<JS::Symbol*>*, char const*)
basalt:2012 bin %
Note there is no function matching the signature of the requested JS::TraceEdge<JSObject*>
. Is this an API change in mozjs that wasn't followed in gjs or is there something else amiss here?
I've attached the full build log and very much appreciate any help with this as it's currently blocking the update of GNOME 3.26 in OpenBSD.gjs-1.50.2.log
Edited by Philip Chimento