# WebAssembly, some symbols are available with @\_extern(c) others not

**URL:** <https://forums.swift.org/t/webassembly-some-symbols-are-available-with-extern-c-others-not/85573>\
**Category:** Swift for WebAssembly\
**Tags:** embedded, wasm\
**Created:** [March 25, 2026, 12:26pm UTC](https://forums.swift.org/t/webassembly-some-symbols-are-available-with-extern-c-others-not/85573 "2026-03-25T12:26:03Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![purpln](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/purpln/32/42536_2.png) [@purpln](https://forums.swift.org/u/purpln)\
**Post date:** [March 25, 2026, 12:26pm UTC](https://forums.swift.org/t/webassembly-some-symbols-are-available-with-extern-c-others-not/85573/1 "2026-03-25T12:26:03Z")

</div>

Got `undefined symbol: __builtin_wasm_tls_size` error on linking stage trying to compile:

```swift
@_extern(c, "__builtin_wasm_tls_size")
private func __builtin_wasm_tls_size() -> Int

```

If I create C wrapper and call it from Swift, everything complies and works successfully:

```c
extern unsigned long __builtin_wasm_tls_size();

unsigned long tls_size() {
    return __builtin_wasm_tls_size();
}

```

Meanwhile other symbols compiles inside Swift directly without touching C:

```swift
@_extern(c, "__wasm_init_tls")
private func __wasm_init_tls(_ memory: UnsafeMutableRawPointer?)

```

Who can explain what's going on and is it possible to get rid from C wrappers?

---

<div class="post-metadata">

**Author:** ![kateinoigakukun](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/kateinoigakukun/32/16706_2.png) [@kateinoigakukun](https://forums.swift.org/u/kateinoigakukun)\
**Post date:** [March 25, 2026, 12:29pm UTC](https://forums.swift.org/t/webassembly-some-symbols-are-available-with-extern-c-others-not/85573/2 "2026-03-25T12:29:37Z")

</div>

I think you need to use:

```swift
@_extern(c, "llvm.wasm.tls.size.i32")
private func __builtin_wasm_tls_size() -> Int32

```

---

<div class="post-metadata">

**Author:** ![purpln](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/purpln/32/42536_2.png) [@purpln](https://forums.swift.org/u/purpln)\
**Post date:** [March 25, 2026, 12:32pm UTC](https://forums.swift.org/t/webassembly-some-symbols-are-available-with-extern-c-others-not/85573/3 "2026-03-25T12:32:31Z")

</div>

Unfortunately that's leads to Swift compiler fatal error

`note: Cannot select: intrinsic <<INTERNAL ERROR: unparseable argument index in diagnostic text>>.wasm.tls.size`

Swift 6.3
