I made almost no progress on port itself, but made some progress about debugging firefox. So I shares it.
By hacking Debugger Kit a bit, now I can debug the firefox’s huge libxul.so built with DWARF3 with symbols.
The cause why the Debugger (Kit) failed to symbolicate libxul.so was 0-length CIE.
The CIE(Common Information Entry) lives in .debug_frame section that is defined with fields starting with the length, a CIE ID, a version and augmented follows in this order.
But the length field specifies the length of the CIE struct, and 0-length is not forbidden, so this data may be valid.
The current implementation of the Debugger kit treats this invalid data and ignores whole debug information of the binary.
Just ignoring the section worked for me.
There may be a discussion how this case should be handled, though.
Will file this problem to Trac.