<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - throw of a C string is causing an error when targeting wasm32"
   href="https://bugs.llvm.org/show_bug.cgi?id=45171">45171</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>throw of a C string is causing an error when targeting wasm32
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>lld
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>unspecified
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Linux
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>wasm
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>sliftist@gmail.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org, sbc@chromium.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Compiling with code that throws an exception yields an undefined symbol error:
    ~/clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-18.04/bin/clang ./test.cpp
--target=wasm32 -nostdlib -Wl,--no-entry -Wl,--export-all

Error:
    wasm-ld: error: /tmp/test-eac9ed.o: undefined symbol: typeinfo for char
const*
    clang-9: error: linker command failed with exit code 1 (use -v to see
invocation)

./test.cpp:
    extern "C" {
        void* __cxa_allocate_exception(unsigned int thrown_size) { return
nullptr; }
        void __cxa_throw(void* thrown_object, void* type, void(*dest)(void*)) {
}
    }

    void testThrow() {
        throw "test";
    }

I could not find instructions for how to define "typeinfo for char const*" in
the llvm document on exception handling
(<a href="https://llvm.org/docs/ExceptionHandling.html">https://llvm.org/docs/ExceptionHandling.html</a>), but there could just be an
undocumented (or maybe I just could not find the documentation) manner to allow
exception throwing of const char* in WebAssembly.</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>