From 895a4a56562094b41ebd790ea66993c5f250566a Mon Sep 17 00:00:00 2001 From: jD91mZM2 Date: Thu, 16 Jul 2020 16:33:25 +0200 Subject: [PATCH] Deprecate int 0x80 Mainly because I think the code could be cleaner if we can remove support entirely :) --- src/arch/x86_64/interrupt/syscall.rs | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/arch/x86_64/interrupt/syscall.rs b/src/arch/x86_64/interrupt/syscall.rs index fc08614..d7f64a8 100644 --- a/src/arch/x86_64/interrupt/syscall.rs +++ b/src/arch/x86_64/interrupt/syscall.rs @@ -1,7 +1,10 @@ -use crate::arch::interrupt::InterruptStack; -use crate::arch::gdt; -use crate::syscall::flag::{PTRACE_FLAG_IGNORE, PTRACE_STOP_PRE_SYSCALL, PTRACE_STOP_POST_SYSCALL}; -use crate::{ptrace, syscall}; +use crate::{ + arch::{gdt, interrupt::InterruptStack}, + context, + ptrace, + syscall, + syscall::flag::{PTRACE_FLAG_IGNORE, PTRACE_STOP_PRE_SYSCALL, PTRACE_STOP_POST_SYSCALL}, +}; use x86::msr; pub unsafe fn init() { @@ -87,6 +90,18 @@ function!(syscall_instruction => { interrupt_stack!(syscall, |stack| { with_interrupt_stack!(|stack| { + { + let contexts = context::contexts(); + let context = contexts.current(); + if let Some(current) = context { + let current = current.read(); + let name = current.name.lock(); + println!("Warning: Context {} used deprecated `int 0x80` construct", core::str::from_utf8(&name).unwrap_or("(invalid utf8)")); + } else { + println!("Warning: Unknown context used deprecated `int 0x80` construct"); + } + } + // Set a restore point for clone let rbp; asm!("" : "={rbp}"(rbp) : : : "intel", "volatile");