So, I'm still working on reverse-engineering an 1996 game. I have cleared a lot of roadblocks, but one thing that continues to annoy me is exception handling and RTTI metadata.

There is a function extern void _ExceptInit(void *); that is declared from BC5/SOURCE/RTL/SOURCE/THREADS/WIN32/THREAD.C, but its implementation is nowhere to be found - all in the entire BC5 source that contains ExceptInit are a bunch of pre-compiled .OBJ files (NOXX.OBJ / XXV.OBJ) that have no corresponding source attached. They are dis-assemblable in Ghidra and contain labels, I grant Borland that, but there are obviously no comments on how exactly that entire mechanism works.

Same goes for RTTI metadata that lives inside compiled binaries. The "Borland Open Architecture Handbook" aka bc4boa.zip doesn't contain information about either, too (probably because it's too old?), and the Borland books also don't go into detail on implementation.

Any idea where I could go on to search?

  • 2
    You've got the .OBJ files? Dig in! What are you waiting for? Commented Aug 1, 2021 at 18:41
  • The ASM files for the startup code contained a boatload of comments on how exactly the stuff works and what it does, I had hoped for a similar load of information on exceptions and RTTI since that ain't documented anywhere
    – Skynet
    Commented Aug 2, 2021 at 11:51

1 Answer 1


Try to find Borland C++ Builder runtime sources, IIRC it included EH and RTTI details, albeit updated for Win32. Long time ago I made scripts for parsing and labeling those structures (see bcc.idc); they probably won’t work as is for DOS code but could be useful for reference.

EDIT: see struct tpid (RTTI) and struct ERRbc (EH) in XX.H

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.