abort/0 is implemented using exit_block(abort) which is caught by the top level loop. If there is an active block/3 call whose tag matches the atom abort, the control does not return to the top level loop but is caught by this block. If there is neither a top level loop (eg the -e option has been used) nor any block to catch the abort, then ECLiPSe will either return to the host program (in case of an embedded ECLiPSe) or the ECLiPSe process will exit (in case of a standalone ECLiPSe).
[eclipse]: abort. Aborting execution.... [eclipse]: