Merci pour le lien.
En fouillant encore un peu, j'ai trouvé un forum où ils conseillaient d'installer les headers de sa version du noyau :
sudo apt-get install linux-headers-4.9.0-6-common
Et d'utiliser la commande suivante :
echo -n "#include <sys/syscall.h>\nSYS_read" | gcc -E -
Elle m'a retournée une liste :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| # 1 "<stdin>"
# 1 "<built-in>"
# 1 "<command-line>"
# 31 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 32 "<command-line>" 2
# 1 "<stdin>"
<stdin>:1:25: warning: extra tokens at end of #include directive
# 1 "/usr/include/x86_64-linux-gnu/sys/syscall.h" 1 3 4
# 24 "/usr/include/x86_64-linux-gnu/sys/syscall.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/asm/unistd.h" 1 3 4
# 12 "/usr/include/x86_64-linux-gnu/asm/unistd.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/asm/unistd_64.h" 1 3 4
# 13 "/usr/include/x86_64-linux-gnu/asm/unistd.h" 2 3 4
# 25 "/usr/include/x86_64-linux-gnu/sys/syscall.h" 2 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/syscall.h" 1 3 4
# 32 "/usr/include/x86_64-linux-gnu/sys/syscall.h" 2 3 4
# 1 "<stdin>" 2 |
Et en fouillant dans ces dossiers, "/usr/include/x86_64-linux-gnu/asm/" pour être précis, j'ai trouvé deux fichiers plutôt contradictoires. Les fichiers "unistd_32.h" et "unistd_64.h". Le premier, je suppose, correpond aux machines fonctionnant en 32 bits, et le second aux 64. Chacune a une numérotation différente pour las appels système.
Cependant, je suis sur une machine 64 bits, comme l'indique "/proc/cpuinfo" :
1 2
| clflush size : 64
cache_alignment : 64 |
Et le code assembleur reprenant les numéros des appels système 32 bits fonctionne. Je suppose donc que le second fichier, pour les machines 64 bits ne fonctionne pas chez moi.
La question étant :
Pourquoi ?
Partager