Identify the missing symbol

A Linux loader can find a library but still fail to resolve an export it needs. That differs from “cannot open shared object file,” where locating or loading a dependency failed. Preserve the complete first error line: the executable, library path and symbol are useful evidence. A short encoded symbol is often called a NID in project discussions; keep its exact spelling and case.

Do not treat every startup failure as the same bug. A different title, missing symbol or runtime revision may require a different implementation. Successful conversion only establishes that output was produced, not that every runtime dependency is available.

Reported example: MAIDEN and KeOZ19X8-Ug

Issue #9062 reports MAIDEN (PPSA01859), Linux v0.1.3 host libraries and a missing KeOZ19X8-Ug symbol associated with libc _Cosh. PR #9071 proposes an implementation. At our 21 October review it remained open, not merged; this site has not reproduced the game. A math test passing would not establish gameplay compatibility.

1. Compare converter and library versions

Record the relinker tag or commit, host-library archive, operating system, title ID and title version. A current converter paired with an older libs directory is a different environment. Compare against the matched release downloads. Keep a historical setup separate instead of overwriting it with a new archive.

Host libraries implement interfaces on your PC; guest modules belong to the title. Renaming a guest file into the host libs directory does not implement a missing export. Avoid downloading individual replacement libraries from unrelated replies.

2. Inspect the host-library exports

On Linux, the following read-only checks show dynamic symbols for the actual host library named by your loader. Replace the path with that trusted local file; these commands do not load or run the game.

readelf --dyn-syms --wide './libs/libc.prx'
nm -D --defined-only './libs/libc.prx'

Search the output for the exact missing symbol. An absent export is useful evidence, but a matching export does not prove the process selected that file. Check your documented runtime layout and search path as well. These tools must be available in your environment. Our ELF header checker reads only 64 bytes; it cannot inspect dynamic imports or resolve NIDs.

3. Separate a proposed patch from a confirmed result

Check whether a linked PR is open, merged or closed, and whether the release you use contains it. Record the exact tested revision before trying a contributor build. A merged implementation still needs a title-specific retest. Preserve the original error and compare the next first failure rather than declaring the whole game fixed.

For a useful upstream report, include the minimal error, versions, platform and export check. Remove private local paths before sharing logs. Continue with the Linux runtime guide, or return to all error checks.

Sources

Prepare your next step.

Use the local tools alongside the upstream documentation.

Open tools ↗