From: Martin Str|mberg Message-Id: <200001061424.PAA05714@father.ludd.luth.se> Subject: Re: The endless int31 hooking debugging continued To: eliz AT is DOT elta DOT co DOT il (Eli Zaretskii) Date: Thu, 6 Jan 100 15:24:58 +0100 (MET) Cc: djgpp AT delorie DOT com (DJGPP) In-Reply-To: from Eli Zaretskii at "Jan 6, 0 12:02:18 pm" X-Mailer: ELM [version 2.4ME+ PL15 (25)] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Reply-To: djgpp AT delorie DOT com Errors-To: dj-admin AT delorie DOT com X-Mailing-List: djgpp AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk According to Eli Zaretskii: > On Wed, 5 Jan 100, Martin Str|mberg wrote: > > I've > > tried pushing things to be able to restore them, but then I've got > > some _really_ strange crashes (Invalid opcode, Stack fault, EIP > > pointing into the middle of an instruction)! > > I don't think it's because of the pushing, but please show the code > which did that. I don't know because I tried everything I could so it hard to remember what it was I was trying when that happened. > Once again, I suggest to look at the function _i31_hook in dbgcom.c, > it shows several examples of code that hooks Int 31h and *works*. I've looked (although not extremely closely) and I thought I had tried similar things (perhaps it was the following that messed it up). > > /* Restore segments to valid DJGPP state. */ > > movw %cs:_my_ds, %ds > > movw _my_ds, %es > > movw _my_ds, %ss > > I don' think you can move values into segment registers directly, I > think you need to use AX as intermediary. Ah that might explain things. But how come gas gladly assemble it? And objdump gladly disassembles it? Shouldn't I get an illegal intruction fault if it's an illegal instruction (this is run on my 386SX)? All About Eve, MartinS