Post by Brian CatlinGoing from Ada (or any other high-level language) to an executable file,
involves a loss of information on a large scale. So, trying to go from the
executable back to the Ada source isn't possible.
Such a tool is called a "decompiler". It does not, of course, go back
to the original source code, but it can generate source code which is
equivalent. Given the symbol table (also used by debuggers), it can
generally use the correct names. You can think of a debugger generated
assembly listing as a sort of mini decompilation. Things like jump
vectors can be difficult, because they make it hard to distinguish data
and code.
I helped on a decompiler project in my very first programming job, some
time ago. The intent was to take existing executables, whose source had
been lost, or which were programmed in assembly for a particular machine,
decompile them, and then maintain and/or port the resulting source code.
It was do-able, but the results were less than stellar.
I don't know of any decompiler to Ada. The last time I googled for
"decompiler" there was some more recent info, including, IIRC, a PhD
thesis project.