What a time to be alive - a human having to prove to an AI that he isn't
crazy :)

Jokes aside, your AI friend gave you generic textbook advice without
checking the actual linker dependency chain.

In `kernels/bvh/bvh.cpp`:
```cpp
#if !defined(__AVX__) || !defined(EMBREE_TARGET_SSE2) && 
!defined(EMBREE_TARGET_SSE42) || defined(__aarch64__)
  template class BVHN<4>;
#endif
```

When building with `-flto` or on builders where `__AVX__` is active
during compilation of `bvh.cpp`, that `#if` condition evaluates to
false. As a result, explicit instantiation of `template class BVHN<4>;`
is skipped.

However, `kernels/bvh/bvh_builder_subdiv.cpp` (compiled into the multi-
ISA `libembree_avx2.a`) still instantiates
`BVHNSubdivPatch1MBlurBuilderSAH<4>`, which directly calls
`BVHN<4>::preBuild`, `BVHN<4>::set`, and `BVHN<4>::postBuild`.

When linking `libembree4.so`, `ld` failed with 235 undefined reference
errors for `embree::BVHN<4>::*` symbols (visible in build log
#33012149).

Verified in PPA (build #33794027): stripping `-march=x86-64-v3` fixed
the SSE4.2 symbols, but the link still failed on `BVHN<4>` until
`always-instantiate-bvh4.patch` was added.

Including both changes in Debian will ensure clean builds under LTO and
future toolchain revisions, and will keep Debian and Ubuntu in sync.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2161642

Title:
  4.4.1+dfsg-2 FTBFS in stonking proposed on amd64v3

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/embree/+bug/2161642/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to