GNU/Linux >> Tutoriels Linux >  >> Linux

Dans un gestionnaire SIGILL, comment puis-je ignorer l'instruction incriminée ?

C'est très piraté et IMPORTABLE mais :

void sighandler (int signo, siginfo_t si, void *data) {
    ucontext_t *uc = (ucontext_t *)data;

    int instruction_length = /* the length of the "instruction" to skip */

    uc->uc_mcontext.gregs[REG_RIP] += instruction_length;
}

installer le sighandler comme ça :

struct sigaction sa, osa;
sa.sa_flags = SA_ONSTACK | SA_RESTART | SA_SIGINFO;
sa.sa_sigaction = sighandler;
sigaction(SIGILL, &sa, &osa);

Cela pourrait fonctionne si vous savez jusqu'où sauter (et c'est un processus Intel) :-)


Linux
  1. Comment puis-je trouver la version de Fedora que j'utilise ?

  2. Comment puis-je obtenir l'état du clavier sous Linux?

  3. Comment puis-je définir le 'backend' dans matplotlib en Python?

  4. Comment puis-je exécuter du code PHP à partir de la ligne de commande ?

  5. Comment puis-je compter le nombre de caractères dans une variable Bash

Comment puis-je fournir un mot de passe SSH à SVN sur la ligne de commande ?

Comment puis-je connaître le chemin absolu d'un processus en cours d'exécution ?

Comment puis-je modifier le $PATH sous Linux ?

Comment puis-je trouver le fichier le plus ancien dans une arborescence de répertoires

Comment pixelliser tout le texte d'un PDF ?

Comment puis-je surveiller la longueur de la file d'attente d'acceptation ?