abort/0 is implemented using throw(abort), which is caught by the top level loop. If there is an active catch/3 (or block/3) call whose tag matches the atom abort, the control does not return to the top level loop but is caught by this catch-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]: