Je viens de tomber sur un OS avec OpenBSD et je ne comprends pas
bien ce qui se passe.
Considérons le code suivant :
if ((s_etat_processus.pile_signal.ss_sp =
malloc(s_etat_processus.pile_signal.ss_size =
SIGSTKSZ)) == NULL)
{
// Gestion de l'erreur sans aucun intérêt ici
exit(EXIT_FAILURE);
}
s_etat_processus.pile_signal.ss_flags = 0;
if (sigaltstack(&s_etat_processus.pile_signal, NULL) != 0)
{
perror("");
exit(EXIT_FAILURE);
}
...
J'ai testé sous :
- Solaris 9 sparc : OK
- Solaris 10 sparc, i386 : OK
- Linux 2.6 (debian) i386, amd64, sparc64 : OK
- NetBSD 4.0 sparc : OK
- OpenBSD 4.3 i386 : KO !
Sous OpenBSD 4.3, perror() m'affiche un superbe "Invalid argument".
Je viens de lire, relire, rerelire, rererelire... la page de man de
sigaltstack (sous OpenBSD), je ne vois pas ce qui n'est pas bon et
en quoi j'ai écrit une conn^Wbêtise.
Une idée ?
Cordialement,
JKB
--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
J'ai l'impression que vous n'avez pas compilé avec le même compilateur que le programme qui ne fonctionne pas. Est-ce que ca passe toujours avec le GCC que vous aviez compilé ?
Si, c'est le même compilo. Il est dans le path de l'utilisateur _avant_ le gcc du système (pour que gfortran ne gueule pas lorsqu'il se trouve avec gcc-3.3).
OK. Le pire, c'est que vous aviez donné la sortie de gcc -v. Je ferai gaffe la prochaine fois.
Par contre, avez-vous essayer de remplacer l'appel a sigaltstack par un syscall() ? Quelque chose comme :
if (syscall(288, &s_processus.pile_system, NULL) != 0)
au lieu de
if (sysaltstack(&s_processus.pile_system, NULL) != 0)
Le 288 provient de http://www.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/sys/syscall.h?rev=1.101&content-type=text/plain
On a en effet : ... #define SYS_osigaltstack 53 ... #define SYS_sigaltstack 288
A priori, il existe deux appels systemes sous OpenBSD, celui suffixé par 'o' est probablement présente pour des raisons de compatibilité.
Tiens, en remplaçant sigaltstack par l'appel système 288, ça fonctionne. Mais ce n'est pas terrible sur le plan de la portabilité.
Bug dans OpenBSD ?
JKB
-- Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre masse corporelle, mais disperse à lui seul 25% de l'énergie que nous consommons tous les jours.
Le 20-06-2008, à propos de
Re: Portabilité Solaris/Linux/NetBSD/OpenBSD,
Bruno Ducrot écrivait dans fr.comp.os.unix :
On 2008-06-20, JKB wrote:
Le 20-06-2008, à propos de
Re: Portabilité Solaris/Linux/NetBSD/OpenBSD,
Bruno Ducrot écrivait dans fr.comp.os.unix :
J'ai l'impression que vous n'avez pas compilé avec le même compilateur
que le programme qui ne fonctionne pas. Est-ce que ca passe toujours
avec le GCC que vous aviez compilé ?
Si, c'est le même compilo. Il est dans le path de l'utilisateur
_avant_ le gcc du système (pour que gfortran ne gueule pas lorsqu'il
se trouve avec gcc-3.3).
OK. Le pire, c'est que vous aviez donné la sortie de gcc -v. Je ferai
gaffe la prochaine fois.
Par contre, avez-vous essayer de remplacer l'appel a sigaltstack par un
syscall() ? Quelque chose comme :
if (syscall(288, &s_processus.pile_system, NULL) != 0)
au lieu de
if (sysaltstack(&s_processus.pile_system, NULL) != 0)
Le 288 provient de
http://www.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/sys/syscall.h?rev=1.101&content-type=text/plain
On a en effet :
...
#define SYS_osigaltstack 53
...
#define SYS_sigaltstack 288
A priori, il existe deux appels systemes sous OpenBSD, celui suffixé par
'o' est probablement présente pour des raisons de compatibilité.
Tiens, en remplaçant sigaltstack par l'appel système 288, ça
fonctionne. Mais ce n'est pas terrible sur le plan de la
portabilité.
Bug dans OpenBSD ?
JKB
--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
J'ai l'impression que vous n'avez pas compilé avec le même compilateur que le programme qui ne fonctionne pas. Est-ce que ca passe toujours avec le GCC que vous aviez compilé ?
Si, c'est le même compilo. Il est dans le path de l'utilisateur _avant_ le gcc du système (pour que gfortran ne gueule pas lorsqu'il se trouve avec gcc-3.3).
OK. Le pire, c'est que vous aviez donné la sortie de gcc -v. Je ferai gaffe la prochaine fois.
Par contre, avez-vous essayer de remplacer l'appel a sigaltstack par un syscall() ? Quelque chose comme :
if (syscall(288, &s_processus.pile_system, NULL) != 0)
au lieu de
if (sysaltstack(&s_processus.pile_system, NULL) != 0)
Le 288 provient de http://www.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/sys/syscall.h?rev=1.101&content-type=text/plain
On a en effet : ... #define SYS_osigaltstack 53 ... #define SYS_sigaltstack 288
A priori, il existe deux appels systemes sous OpenBSD, celui suffixé par 'o' est probablement présente pour des raisons de compatibilité.
Tiens, en remplaçant sigaltstack par l'appel système 288, ça fonctionne. Mais ce n'est pas terrible sur le plan de la portabilité.
Bug dans OpenBSD ?
JKB
-- Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre masse corporelle, mais disperse à lui seul 25% de l'énergie que nous consommons tous les jours.
Eric Levenez
Le 20/06/08 15:34, dans , « JKB » a écrit :
Tiens, en remplaçant sigaltstack par l'appel système 288, ça fonctionne. Mais ce n'est pas terrible sur le plan de la portabilité.
Bug dans OpenBSD ?
Ça fait penser à un problème d'includes, pas à un bug. Mais comme tu n'as pas donné un programme compilable qui plante, on ne sait pas :-)
Compare la version après pré-processeur du programme qui plante et de celui qui ne plante pas. L'include ou la définition de sigaltstack doit être différent.
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Le 20/06/08 15:34, dans <slrng5nce6.51n.knatschke@rayleigh.systella.fr>,
« JKB » <knatschke@koenigsberg.fr> a écrit :
Tiens, en remplaçant sigaltstack par l'appel système 288, ça
fonctionne. Mais ce n'est pas terrible sur le plan de la
portabilité.
Bug dans OpenBSD ?
Ça fait penser à un problème d'includes, pas à un bug. Mais comme tu n'as
pas donné un programme compilable qui plante, on ne sait pas :-)
Compare la version après pré-processeur du programme qui plante et de celui
qui ne plante pas. L'include ou la définition de sigaltstack doit être
différent.
--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
Tiens, en remplaçant sigaltstack par l'appel système 288, ça fonctionne. Mais ce n'est pas terrible sur le plan de la portabilité.
Bug dans OpenBSD ?
Ça fait penser à un problème d'includes, pas à un bug. Mais comme tu n'as pas donné un programme compilable qui plante, on ne sait pas :-)
Compare la version après pré-processeur du programme qui plante et de celui qui ne plante pas. L'include ou la définition de sigaltstack doit être différent.
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
Bruno Ducrot
On 2008-06-20, JKB wrote:
Le 20-06-2008, à propos de Re: Portabilité Solaris/Linux/NetBSD/OpenBSD, Bruno Ducrot écrivait dans fr.comp.os.unix :
On 2008-06-20, JKB wrote:
Le 20-06-2008, à propos de Re: Portabilité Solaris/Linux/NetBSD/OpenBSD, Bruno Ducrot écrivait dans fr.comp.os.unix :
J'ai l'impression que vous n'avez pas compilé avec le même compilateur que le programme qui ne fonctionne pas. Est-ce que ca passe toujours avec le GCC que vous aviez compilé ?
Si, c'est le même compilo. Il est dans le path de l'utilisateur _avant_ le gcc du système (pour que gfortran ne gueule pas lorsqu'il se trouve avec gcc-3.3).
OK. Le pire, c'est que vous aviez donné la sortie de gcc -v. Je ferai gaffe la prochaine fois.
Par contre, avez-vous essayer de remplacer l'appel a sigaltstack par un syscall() ? Quelque chose comme :
if (syscall(288, &s_processus.pile_system, NULL) != 0)
au lieu de
if (sysaltstack(&s_processus.pile_system, NULL) != 0)
Le 288 provient de http://www.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/sys/syscall.h?rev=1.101&content-type=text/plain
On a en effet : ... #define SYS_osigaltstack 53 ... #define SYS_sigaltstack 288
A priori, il existe deux appels systemes sous OpenBSD, celui suffixé par 'o' est probablement présente pour des raisons de compatibilité.
Tiens, en remplaçant sigaltstack par l'appel système 288, ça fonctionne. Mais ce n'est pas terrible sur le plan de la portabilité.
C'est clair. Mais notez que c'était juste pour cerner plus finement le problème, et non quelque chose à mettre définitivement dans le code.
Bug dans OpenBSD ?
Je pencherais à priori sur un include foireux, qui, dans certaines circonstances, va effectuer un appel système autre que 288.
Peut-être que si l'on reproduit les includes correspondant à votre programme dans l'exemple minimal initial, alors l'on pourrait reproduire ce comportement.
Bon courage,
-- Bruno Ducrot
-- Which is worse: ignorance or apathy? -- Don't know. Don't care.
On 2008-06-20, JKB wrote:
Le 20-06-2008, à propos de
Re: Portabilité Solaris/Linux/NetBSD/OpenBSD,
Bruno Ducrot écrivait dans fr.comp.os.unix :
On 2008-06-20, JKB wrote:
Le 20-06-2008, à propos de
Re: Portabilité Solaris/Linux/NetBSD/OpenBSD,
Bruno Ducrot écrivait dans fr.comp.os.unix :
J'ai l'impression que vous n'avez pas compilé avec le même compilateur
que le programme qui ne fonctionne pas. Est-ce que ca passe toujours
avec le GCC que vous aviez compilé ?
Si, c'est le même compilo. Il est dans le path de l'utilisateur
_avant_ le gcc du système (pour que gfortran ne gueule pas lorsqu'il
se trouve avec gcc-3.3).
OK. Le pire, c'est que vous aviez donné la sortie de gcc -v. Je ferai
gaffe la prochaine fois.
Par contre, avez-vous essayer de remplacer l'appel a sigaltstack par un
syscall() ? Quelque chose comme :
if (syscall(288, &s_processus.pile_system, NULL) != 0)
au lieu de
if (sysaltstack(&s_processus.pile_system, NULL) != 0)
Le 288 provient de
http://www.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/sys/syscall.h?rev=1.101&content-type=text/plain
On a en effet :
...
#define SYS_osigaltstack 53
...
#define SYS_sigaltstack 288
A priori, il existe deux appels systemes sous OpenBSD, celui suffixé par
'o' est probablement présente pour des raisons de compatibilité.
Tiens, en remplaçant sigaltstack par l'appel système 288, ça
fonctionne. Mais ce n'est pas terrible sur le plan de la
portabilité.
C'est clair. Mais notez que c'était juste pour cerner plus finement le
problème, et non quelque chose à mettre définitivement dans le code.
Bug dans OpenBSD ?
Je pencherais à priori sur un include foireux, qui, dans certaines
circonstances, va effectuer un appel système autre que 288.
Peut-être que si l'on reproduit les includes correspondant à votre
programme dans l'exemple minimal initial, alors l'on pourrait
reproduire ce comportement.
Bon courage,
--
Bruno Ducrot
-- Which is worse: ignorance or apathy?
-- Don't know. Don't care.
J'ai l'impression que vous n'avez pas compilé avec le même compilateur que le programme qui ne fonctionne pas. Est-ce que ca passe toujours avec le GCC que vous aviez compilé ?
Si, c'est le même compilo. Il est dans le path de l'utilisateur _avant_ le gcc du système (pour que gfortran ne gueule pas lorsqu'il se trouve avec gcc-3.3).
OK. Le pire, c'est que vous aviez donné la sortie de gcc -v. Je ferai gaffe la prochaine fois.
Par contre, avez-vous essayer de remplacer l'appel a sigaltstack par un syscall() ? Quelque chose comme :
if (syscall(288, &s_processus.pile_system, NULL) != 0)
au lieu de
if (sysaltstack(&s_processus.pile_system, NULL) != 0)
Le 288 provient de http://www.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/sys/syscall.h?rev=1.101&content-type=text/plain
On a en effet : ... #define SYS_osigaltstack 53 ... #define SYS_sigaltstack 288
A priori, il existe deux appels systemes sous OpenBSD, celui suffixé par 'o' est probablement présente pour des raisons de compatibilité.
Tiens, en remplaçant sigaltstack par l'appel système 288, ça fonctionne. Mais ce n'est pas terrible sur le plan de la portabilité.
C'est clair. Mais notez que c'était juste pour cerner plus finement le problème, et non quelque chose à mettre définitivement dans le code.
Bug dans OpenBSD ?
Je pencherais à priori sur un include foireux, qui, dans certaines circonstances, va effectuer un appel système autre que 288.
Peut-être que si l'on reproduit les includes correspondant à votre programme dans l'exemple minimal initial, alors l'on pourrait reproduire ce comportement.
Bon courage,
-- Bruno Ducrot
-- Which is worse: ignorance or apathy? -- Don't know. Don't care.
JKB
Le 20-06-2008, à propos de Re: Portabilité Solaris/Linux/NetBSD/OpenBSD, Eric Levenez écrivait dans fr.comp.os.unix :
Le 20/06/08 15:34, dans , « JKB » a écrit :
Tiens, en remplaçant sigaltstack par l'appel système 288, ça fonctionne. Mais ce n'est pas terrible sur le plan de la portabilité.
Bug dans OpenBSD ?
Ça fait penser à un problème d'includes, pas à un bug. Mais comme tu n'as pas donné un programme compilable qui plante, on ne sait pas :-)
Je veux bien donner une version compilable, mais c'est du lourd ;-) Je vais mettre la version du soft en ligne dès que j'ai réglé un problème de compilation (je suis contraint à reprendre le Makefile généré par autoconf à la main à cause de l'utilitaire file qui ne se comporte pas de la même façon sous OpenBSD que sous les autres unix).
Compare la version après pré-processeur du programme qui plante et de celui qui ne plante pas. L'include ou la définition de sigaltstack doit être différent.
Programme qui plante : ... typedef struct sigaltstack { void *ss_sp; size_t ss_size; int ss_flags; } stack_t; ... int sigaltstack(const struct sigaltstack *, struct sigaltstack *); ... if (sigaltstack(&s_etat_processus.pile_signal, 0L) != 0) ...
Programme qui fonctionne : il n'y a plus de sigaltstack, mais un syscal...
JKB
-- Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre masse corporelle, mais disperse à lui seul 25% de l'énergie que nous consommons tous les jours.
Le 20-06-2008, à propos de
Re: Portabilité Solaris/Linux/NetBSD/OpenBSD,
Eric Levenez écrivait dans fr.comp.os.unix :
Le 20/06/08 15:34, dans <slrng5nce6.51n.knatschke@rayleigh.systella.fr>,
« JKB » <knatschke@koenigsberg.fr> a écrit :
Tiens, en remplaçant sigaltstack par l'appel système 288, ça
fonctionne. Mais ce n'est pas terrible sur le plan de la
portabilité.
Bug dans OpenBSD ?
Ça fait penser à un problème d'includes, pas à un bug. Mais comme tu n'as
pas donné un programme compilable qui plante, on ne sait pas :-)
Je veux bien donner une version compilable, mais c'est du lourd ;-)
Je vais mettre la version du soft en ligne dès que j'ai réglé un
problème de compilation (je suis contraint à reprendre le Makefile
généré par autoconf à la main à cause de l'utilitaire file qui ne se
comporte pas de la même façon sous OpenBSD que sous les autres
unix).
Compare la version après pré-processeur du programme qui plante et de celui
qui ne plante pas. L'include ou la définition de sigaltstack doit être
différent.
Programme qui plante :
...
typedef struct sigaltstack {
void *ss_sp;
size_t ss_size;
int ss_flags;
} stack_t;
...
int sigaltstack(const struct sigaltstack *, struct sigaltstack *);
...
if (sigaltstack(&s_etat_processus.pile_signal, 0L) != 0)
...
Programme qui fonctionne : il n'y a plus de sigaltstack, mais un
syscal...
JKB
--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Le 20-06-2008, à propos de Re: Portabilité Solaris/Linux/NetBSD/OpenBSD, Eric Levenez écrivait dans fr.comp.os.unix :
Le 20/06/08 15:34, dans , « JKB » a écrit :
Tiens, en remplaçant sigaltstack par l'appel système 288, ça fonctionne. Mais ce n'est pas terrible sur le plan de la portabilité.
Bug dans OpenBSD ?
Ça fait penser à un problème d'includes, pas à un bug. Mais comme tu n'as pas donné un programme compilable qui plante, on ne sait pas :-)
Je veux bien donner une version compilable, mais c'est du lourd ;-) Je vais mettre la version du soft en ligne dès que j'ai réglé un problème de compilation (je suis contraint à reprendre le Makefile généré par autoconf à la main à cause de l'utilitaire file qui ne se comporte pas de la même façon sous OpenBSD que sous les autres unix).
Compare la version après pré-processeur du programme qui plante et de celui qui ne plante pas. L'include ou la définition de sigaltstack doit être différent.
Programme qui plante : ... typedef struct sigaltstack { void *ss_sp; size_t ss_size; int ss_flags; } stack_t; ... int sigaltstack(const struct sigaltstack *, struct sigaltstack *); ... if (sigaltstack(&s_etat_processus.pile_signal, 0L) != 0) ...
Programme qui fonctionne : il n'y a plus de sigaltstack, mais un syscal...
JKB
-- Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre masse corporelle, mais disperse à lui seul 25% de l'énergie que nous consommons tous les jours.
JKB
Le 20-06-2008, à propos de Re: Portabilité Solaris/Linux/NetBSD/OpenBSD, Bruno Ducrot écrivait dans fr.comp.os.unix :
Je pencherais à priori sur un include foireux, qui, dans certaines circonstances, va effectuer un appel système autre que 288.
Peut-être que si l'on reproduit les includes correspondant à votre programme dans l'exemple minimal initial, alors l'on pourrait reproduire ce comportement.
#ifndef RPLARGS # include <sys/resource.h> # include <sys/select.h> # include <sys/socket.h> # include <sys/stat.h> # include <sys/time.h> # include <sys/timeb.h> # include <sys/types.h> # include <sys/un.h> # include <sys/wait.h>
# include <arpa/inet.h> # include <netinet/in.h> # include <netdb.h> # include <iconv.h>
# include <dlfcn.h> # include <fcntl.h> # include <pthread.h> # include <pwd.h> # include <setjmp.h> # include <signal.h> # include <termios.h> # include <time.h> # include <unistd.h>
# include "history.h" # include "readline.h" # include "termcap.h"
# include "gsl/gsl_cdf.h" # include "gsl/gsl_errno.h" # include "gsl/gsl_fft_complex.h" # include "gsl/gsl_randist.h" # include "gsl/gsl_rng.h" # include "gsl/gsl_sf.h" #endif
# include <sys/resource.h> # include <sys/select.h> # include <sys/socket.h> # include <sys/stat.h> # include <sys/time.h> # include <sys/timeb.h> # include <sys/types.h> # include <sys/un.h> # include <sys/wait.h>
# include <arpa/inet.h> # include <netinet/in.h> # include <netdb.h> # include <iconv.h>
# include <dlfcn.h> # include <fcntl.h> # include <pthread.h> # include <pwd.h> # include <setjmp.h> # include <signal.h> # include <termios.h> # include <time.h> # include <unistd.h>
Le 20-06-2008, à propos de
Re: Portabilité Solaris/Linux/NetBSD/OpenBSD,
Bruno Ducrot écrivait dans fr.comp.os.unix :
Je pencherais à priori sur un include foireux, qui, dans certaines
circonstances, va effectuer un appel système autre que 288.
Peut-être que si l'on reproduit les includes correspondant à votre
programme dans l'exemple minimal initial, alors l'on pourrait
reproduire ce comportement.
#ifndef RPLARGS
# include <sys/resource.h>
# include <sys/select.h>
# include <sys/socket.h>
# include <sys/stat.h>
# include <sys/time.h>
# include <sys/timeb.h>
# include <sys/types.h>
# include <sys/un.h>
# include <sys/wait.h>
# include <arpa/inet.h>
# include <netinet/in.h>
# include <netdb.h>
# include <iconv.h>
# include <dlfcn.h>
# include <fcntl.h>
# include <pthread.h>
# include <pwd.h>
# include <setjmp.h>
# include <signal.h>
# include <termios.h>
# include <time.h>
# include <unistd.h>
# include "history.h"
# include "readline.h"
# include "termcap.h"
# include "gsl/gsl_cdf.h"
# include "gsl/gsl_errno.h"
# include "gsl/gsl_fft_complex.h"
# include "gsl/gsl_randist.h"
# include "gsl/gsl_rng.h"
# include "gsl/gsl_sf.h"
#endif
# include <sys/resource.h>
# include <sys/select.h>
# include <sys/socket.h>
# include <sys/stat.h>
# include <sys/time.h>
# include <sys/timeb.h>
# include <sys/types.h>
# include <sys/un.h>
# include <sys/wait.h>
# include <arpa/inet.h>
# include <netinet/in.h>
# include <netdb.h>
# include <iconv.h>
# include <dlfcn.h>
# include <fcntl.h>
# include <pthread.h>
# include <pwd.h>
# include <setjmp.h>
# include <signal.h>
# include <termios.h>
# include <time.h>
# include <unistd.h>
Le 20-06-2008, à propos de Re: Portabilité Solaris/Linux/NetBSD/OpenBSD, Bruno Ducrot écrivait dans fr.comp.os.unix :
Je pencherais à priori sur un include foireux, qui, dans certaines circonstances, va effectuer un appel système autre que 288.
Peut-être que si l'on reproduit les includes correspondant à votre programme dans l'exemple minimal initial, alors l'on pourrait reproduire ce comportement.
#ifndef RPLARGS # include <sys/resource.h> # include <sys/select.h> # include <sys/socket.h> # include <sys/stat.h> # include <sys/time.h> # include <sys/timeb.h> # include <sys/types.h> # include <sys/un.h> # include <sys/wait.h>
# include <arpa/inet.h> # include <netinet/in.h> # include <netdb.h> # include <iconv.h>
# include <dlfcn.h> # include <fcntl.h> # include <pthread.h> # include <pwd.h> # include <setjmp.h> # include <signal.h> # include <termios.h> # include <time.h> # include <unistd.h>
# include "history.h" # include "readline.h" # include "termcap.h"
# include "gsl/gsl_cdf.h" # include "gsl/gsl_errno.h" # include "gsl/gsl_fft_complex.h" # include "gsl/gsl_randist.h" # include "gsl/gsl_rng.h" # include "gsl/gsl_sf.h" #endif
# include <sys/resource.h> # include <sys/select.h> # include <sys/socket.h> # include <sys/stat.h> # include <sys/time.h> # include <sys/timeb.h> # include <sys/types.h> # include <sys/un.h> # include <sys/wait.h>
# include <arpa/inet.h> # include <netinet/in.h> # include <netdb.h> # include <iconv.h>
# include <dlfcn.h> # include <fcntl.h> # include <pthread.h> # include <pwd.h> # include <setjmp.h> # include <signal.h> # include <termios.h> # include <time.h> # include <unistd.h>
Regarde la version pré-processeur, tu verras ce qui cloche.
-- Éric Lévénez -- <http://www.levenez.com/> Unix is not only an OS, it's a way of life.
JKB
Le 20-06-2008, à propos de Re: Portabilité Solaris/Linux/NetBSD/OpenBSD, Eric Levenez écrivait dans fr.comp.os.unix :
Le 20/06/08 17:56, dans , « JKB » a écrit :
Je ne comprends plus...
Regarde la version pré-processeur, tu verras ce qui cloche.
C'est bien ce que j'ai fait et je ne vois pas ce qui cloche...
JKB
-- Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre masse corporelle, mais disperse à lui seul 25% de l'énergie que nous consommons tous les jours.
Le 20-06-2008, à propos de
Re: Portabilité Solaris/Linux/NetBSD/OpenBSD,
Eric Levenez écrivait dans fr.comp.os.unix :
Le 20/06/08 17:56, dans <slrng5nkq1.51n.knatschke@rayleigh.systella.fr>,
« JKB » <knatschke@koenigsberg.fr> a écrit :
Je ne comprends plus...
Regarde la version pré-processeur, tu verras ce qui cloche.
C'est bien ce que j'ai fait et je ne vois pas ce qui cloche...
JKB
--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Le 20-06-2008, à propos de Re: Portabilité Solaris/Linux/NetBSD/OpenBSD, Eric Levenez écrivait dans fr.comp.os.unix :
Le 20/06/08 17:56, dans , « JKB » a écrit :
Je ne comprends plus...
Regarde la version pré-processeur, tu verras ce qui cloche.
C'est bien ce que j'ai fait et je ne vois pas ce qui cloche...
JKB
-- Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre masse corporelle, mais disperse à lui seul 25% de l'énergie que nous consommons tous les jours.
JKB
Le 20-06-2008, à propos de Re: Portabilité Solaris/Linux/NetBSD/OpenBSD, JKB écrivait dans fr.comp.os.unix :
Le 20-06-2008, à propos de Re: Portabilité Solaris/Linux/NetBSD/OpenBSD, Eric Levenez écrivait dans fr.comp.os.unix :
Le 20/06/08 17:56, dans , « JKB » a écrit :
Je ne comprends plus...
Regarde la version pré-processeur, tu verras ce qui cloche.
C'est bien ce que j'ai fait et je ne vois pas ce qui cloche...
Bon, je viens de comparer les sorties du préprocesseur données par gcc-3.3.5 (origine OpenBSD) et gcc-4.3.1 (directement de GNU, compilé par mes soins). Les sorties sont les mêmes.
Je penche donc de plus en plus sur un effet de bord de l'appel système lui-même. Je ne vois pas pourquoi l'exemple minimal fonctionne alors que le programme complet plante. Je vais signaler le problème directement chez OpenBSD...
Pour ceux qui veulent jeter un coup d'oeil, le programme complet est téléchargeable là : http://www.rpl2.net/download/rpl-4.0.0.prerelease.7.tar.bz2 et se compile sous OpenBSD par : ./configure --disable-encoding-autodetection --enable-final-encoding=UTF-8 make && make install
Cordialement,
JKB
-- Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre masse corporelle, mais disperse à lui seul 25% de l'énergie que nous consommons tous les jours.
Le 20-06-2008, à propos de
Re: Portabilité Solaris/Linux/NetBSD/OpenBSD,
JKB écrivait dans fr.comp.os.unix :
Le 20-06-2008, à propos de
Re: Portabilité Solaris/Linux/NetBSD/OpenBSD,
Eric Levenez écrivait dans fr.comp.os.unix :
Le 20/06/08 17:56, dans <slrng5nkq1.51n.knatschke@rayleigh.systella.fr>,
« JKB » <knatschke@koenigsberg.fr> a écrit :
Je ne comprends plus...
Regarde la version pré-processeur, tu verras ce qui cloche.
C'est bien ce que j'ai fait et je ne vois pas ce qui cloche...
Bon, je viens de comparer les sorties du préprocesseur données par
gcc-3.3.5 (origine OpenBSD) et gcc-4.3.1 (directement de GNU,
compilé par mes soins). Les sorties sont les mêmes.
Je penche donc de plus en plus sur un effet de bord de l'appel
système lui-même. Je ne vois pas pourquoi l'exemple minimal
fonctionne alors que le programme complet plante. Je vais signaler
le problème directement chez OpenBSD...
Pour ceux qui veulent jeter un coup d'oeil, le programme complet est
téléchargeable là :
http://www.rpl2.net/download/rpl-4.0.0.prerelease.7.tar.bz2
et se compile sous OpenBSD par :
./configure --disable-encoding-autodetection --enable-final-encoding=UTF-8
make && make install
Cordialement,
JKB
--
Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre
masse corporelle, mais disperse à lui seul 25% de l'énergie que nous
consommons tous les jours.
Le 20-06-2008, à propos de Re: Portabilité Solaris/Linux/NetBSD/OpenBSD, JKB écrivait dans fr.comp.os.unix :
Le 20-06-2008, à propos de Re: Portabilité Solaris/Linux/NetBSD/OpenBSD, Eric Levenez écrivait dans fr.comp.os.unix :
Le 20/06/08 17:56, dans , « JKB » a écrit :
Je ne comprends plus...
Regarde la version pré-processeur, tu verras ce qui cloche.
C'est bien ce que j'ai fait et je ne vois pas ce qui cloche...
Bon, je viens de comparer les sorties du préprocesseur données par gcc-3.3.5 (origine OpenBSD) et gcc-4.3.1 (directement de GNU, compilé par mes soins). Les sorties sont les mêmes.
Je penche donc de plus en plus sur un effet de bord de l'appel système lui-même. Je ne vois pas pourquoi l'exemple minimal fonctionne alors que le programme complet plante. Je vais signaler le problème directement chez OpenBSD...
Pour ceux qui veulent jeter un coup d'oeil, le programme complet est téléchargeable là : http://www.rpl2.net/download/rpl-4.0.0.prerelease.7.tar.bz2 et se compile sous OpenBSD par : ./configure --disable-encoding-autodetection --enable-final-encoding=UTF-8 make && make install
Cordialement,
JKB
-- Le cerveau, c'est un véritable scandale écologique. Il représente 2% de notre masse corporelle, mais disperse à lui seul 25% de l'énergie que nous consommons tous les jours.