Add support for Metrowerks Codewarrior compiler

As IDA Pro is improving its game consoles reverse engineering capabilities, I would like to request the support of the historic Metrowerks CodeWarrior compiler and its ABI (for example C++ exceptions) for the hex-rays decompiler. IDA already has rudimentary support of MetroWerks symbols demangling so I think it makes sense to extend CodeWarrior support further. CodeWarrior toolchain was used for the following consoles:

  • GameCube (PowerPC 750CXe “Gekko”)
  • Wii (PowerPC 750CL “Broadway”)
  • Nintendo 64 (MIPS R4300i-based “Reality Coprocessor”)
  • PlayStation 1 / Net Yaroze (MIPS R3000A-compatible)
  • PlayStation 2 (MIPS R5900-based “Emotion Engine”)
  • Sega Dreamcast (Hitachi SH-4)

Also, it was the most popular choice on the market of classic Motorolla 68k and PowerPC Macs C/C++ toolchains. You can find plenty of documentation on its ABI, I will list some of it here:

  1. Macintosh C/C++ ABI: Standard Specification | PDF | C++ | Pointer (Computer Programming)
  2. GitHub - encounter/decomp-toolkit: A GameCube & Wii decompilation toolkit · GitHub
  3. GitHub - doldecomp/mweppc: A decompilation of the Metrowerks CodeWarrior toolchain. · GitHub