--- rpl/src/rpl.h 2011/09/20 15:45:53 1.131 +++ rpl/src/rpl.h 2011/09/21 09:09:22 1.132 @@ -162,6 +162,7 @@ # include "openssl/evp.h" # include "sqlite3.h" +# include "sigsegv.h" # define HAVE_INLINE # define GSL_RANGE_CHECK_OFF @@ -299,6 +300,13 @@ union semun }; #endif +#ifndef RTLD_LOCAL +# define RTLD_LOCAL 0 +#endif + +#ifndef SIGSTKSZ +# define SIGSTKSZ 65536 +#endif /* ================================================================================ @@ -403,7 +411,8 @@ typedef unsigned char t_8_bits; # endif # ifndef MAIN_RPL - extern jmp_buf contexte; + extern jmp_buf contexte_ecriture; + extern jmp_buf contexte_impression; extern jmp_buf contexte_initial; extern jmp_buf contexte_processus; extern jmp_buf contexte_thread; @@ -424,8 +433,11 @@ typedef unsigned char t_8_bits; * # endif semaphore_gestionnaires_signaux; + + extern volatile int routine_recursive; # else - jmp_buf contexte; + jmp_buf contexte_ecriture; + jmp_buf contexte_impression; jmp_buf contexte_initial; jmp_buf contexte_processus; jmp_buf contexte_thread; @@ -449,6 +461,8 @@ typedef unsigned char t_8_bits; * # endif semaphore_gestionnaires_signaux; + + volatile int routine_recursive; # endif #endif @@ -1820,20 +1834,6 @@ typedef struct processus pthread_t thread_fusible; pthread_t thread_surveille_par_fusible; -# if !defined(Cygwin) -# if !(OpenBSD) - stack_t pile_signal; -# else -# ifdef SA_ONSTACK -# undef SA_ONSTACK -# endif -# define SA_ONSTACK 0 -# endif -# else -# define SA_ONSTACK 0 -# define RTLD_LOCAL 0 -# endif - volatile int pointeur_signal_ecriture; volatile int pointeur_signal_lecture; volatile enum signaux_rpl signaux_en_queue[LONGUEUR_QUEUE_SIGNAUX]; @@ -2054,7 +2054,6 @@ typedef struct processus /* Traitement des erreurs */ - unsigned int compteur_violation_d_acces; unsigned int erreur_compilation; unsigned int erreur_execution; unsigned int erreur_systeme; @@ -2906,6 +2905,7 @@ void interruption2(int signal); void interruption3(int signal); void interruption4(int signal); void interruption5(int signal); +void interruption_depassement_pile(int urgence, stackoverflow_context_t scp); void inversion_matrice(struct_processus *s_etat_processus, struct_matrice *s_matrice); void lancement_daemon(struct_processus *s_etat_processus); @@ -3194,6 +3194,7 @@ ssize_t write_atomic(struct_processus *s */ int alsprintf(unsigned char **strp, const char *fmt, ...); +int interruption_violation_access(void *adresse_fautive, int gravite); int liste_variables(struct_processus *s_etat_processus, struct_tableau_variables *tableau, int position, struct_arbre_variables *l_element_courant);