/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set ts=8 sts=2 et sw=2 tw=80: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// Going though this assembly code turns on the trap flag, which will trigger // a first single-step exception. It is then up to the exception handler to // keep the trap flag enabled so that a new single step exception gets // triggered with the following instruction.
MFBT_API MOZ_NEVER_INLINE MOZ_NAKED void EnableTrapFlag() { asmvolatile( "pushfq;" "orw $0x100,(%rsp);" "popfq;" "retq;");
}
// This function does not do anything special, but when we reach its address // while single-stepping the exception handler will know that it is now time to // leave the trap flag turned off.
MFBT_API MOZ_NEVER_INLINE MOZ_NAKED void DisableTrapFlag() { asmvolatile("retq;");
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.