ohos: Fix x86_64-unknown-linux-ohos (#33029)

* ohos: Fix compilation for x86_64

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>

* ohos: Use the SDK compiler-wrapper

When compiling for x86_64-unknown-linux-ohos without the compiler
wrapper, for some reason mozjs_sys will be refercing a wrong mangled symbol
resulting in the following error when loading the .so at runtime:

```
_ZNSt3__111this_thread9sleep_forERKNS_6chrono8durationIxNS_5ratioILl1ELl1000000000EEEEE: symbol not found
```

This problem does not occur when compiling for aarch64 or when using the compiler wrapper.
In this case the correct symbol
`_ZNSt4__n111this_thread9sleep_forERKNS_6chrono8durationIxNS_5ratioILl1ELl1000000000EEEEE`
is referenced.
It's unclear why manually passing the flags via CFLAGS / CXXFLAGS does not work.

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>

---------

Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
This commit is contained in:
Jonathan Schwender 2024-08-14 09:30:04 +08:00 committed by GitHub
parent 478d95d245
commit 3aef023368
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 10 additions and 7 deletions

View file

@ -28,6 +28,6 @@ lazy_static = { workspace = true }
[target.'cfg(target_os = "macos")'.dependencies]
mach2 = "0.4"
[target.'cfg(all(target_os = "linux", not(any(target_arch = "arm", target_arch = "aarch64"))))'.dependencies]
[target.'cfg(all(target_os = "linux", not(any(target_arch = "arm", target_arch = "aarch64", target_env = "ohos"))))'.dependencies]
nix = { version = "0.29", features = ["signal"] }
unwind-sys = "0.1.4"

View file

@ -98,12 +98,15 @@ impl BackgroundHangMonitorRegister for HangMonitorRegister {
let sampler = crate::sampler_mac::MacOsSampler::new_boxed();
#[cfg(all(
target_os = "linux",
not(any(target_arch = "arm", target_arch = "aarch64"))
not(any(target_arch = "arm", target_arch = "aarch64", target_env = "ohos")),
))]
let sampler = crate::sampler_linux::LinuxSampler::new_boxed();
#[cfg(any(
target_os = "android",
all(target_os = "linux", any(target_arch = "arm", target_arch = "aarch64"))
all(
target_os = "linux",
any(target_arch = "arm", target_arch = "aarch64", target_env = "ohos")
)
))]
let sampler = crate::sampler::DummySampler::new_boxed();

View file

@ -8,7 +8,7 @@ pub mod background_hang_monitor;
mod sampler;
#[cfg(all(
target_os = "linux",
not(any(target_arch = "arm", target_arch = "aarch64"))
not(any(target_arch = "arm", target_arch = "aarch64", target_env = "ohos"))
))]
mod sampler_linux;
#[cfg(target_os = "macos")]