Essais et petits utilitaires

 
 
 
On peut trouver ici des bouts de code très simples pour tester certains comportements des compilos ou de systèmes, ou des petits utilitaires archi-basiques pour faire des opérations dont on a souvent besoin. Servez-vous si ça peut vous être utile : tout est disponible selon les termes de la GNU GPL.
Tout ceci n'a pas vocation de démonstration ou de tutorial ni de doc. Pour des petits exemples de codes très classiques dans différents langages, voir plutôt le PLEAC.

C
asm-register.c  IA32 Accéder aux registres via des variables globales avec gcc.
auto-extract.tgz  ELF32 Créer des exécutables auto-extractibles en utilisant quelques astuces classiques du format ELF avec objcopy. Exemple d'exécutable tout fait : demo-embed-linux-x86. Voir la discussion qui a suscité ce petit exercice : https://linuxfr.org/forums/19/8222.html.
cast_variad.c   Le cast vers les fonctions variadiques est l'équivalent de (void*) pour les fonctions (ie aucun warning).
ckpt.c   Sauvegarder l'état du programme courant à la demande (sous forme de fichiers core ). À utiliser avec des gdb le_programme ckpt.pid pour afficher le contenu de variable_globale par exemple ( p variable_globale sous gdb).
ctrl-parport.c  Linux Exemple de contrôle """bas niveau""" du port parallèle sous Linux. Largement perfectible. Discussion ayant donné lieu à ce petit exercice : https://linuxfr.org/forums/19/8431.html.
gcov_bb_to_xml.c   Convertit les donnees generees par gcc -fprofile-arcs -ftest-coverage (format gcov, cf http://gcc.gnu.org/onlinedocs/gcc-3.0/gcc_8.html) au format XML.
heap.c   Pour avoir une idée de la taille du tas allouée pour le processus courant.
list.h   Implantation de listes circulaires doublement chaînées sous forme de macros.
mmap-share.tgz   Pour faire des partages de mémoire entre processus par mmap() avant fork() (simple.c) et après fork() (writer.c et reader.c). Voir aussi la bibliothèque mm de Engelschall pour un remplacement de malloc() avec partage de mémoire entre processus ( mmap() ou IPC SysV).
prox.c   Un proxy TCP de base configurable. Le format du fichier de configuration est indiqué en début du source.
pthr_serv.c   Squelette de serveur multithreadé (pthread).
pwcrypt.c   htpasswd du pauvre (à compiler avec -lcrypt sur la plupart des systèmes).
rma-rta+cachelock.c   Rate Monotonic Analysis (RMA) et Response Time Analysis (RTA) simple sur des ensembles de tâches periodiques abstraites indépendantes (avec deadline=période) : on fournit le nombre de tâches, puis les tuples (Ci, Ti, ni) pour chaque tâche, et ça effectue les calculs. ni représente le nombre d'instructions qui peuvent passer de Icache-miss en Icache-hit quand on affecte tout le cache à la tâche i . Le format de fichier d'entrée est décrit en tête du source.
stack_backtrace.c  IA32/gcc Récupérer la chaîne d'appel d'une fonction (hyper basique). Ne marche évidemment pas si compilé avec -fomit-frame-pointer . Pour une version portable, voir bt.c de kos, et un exemple d'utilisation est la fonction __dbg_backtrace() de debug.c du même kos.
stack_overlap.c   Canal caché par la pile.
susv2-ctxt-linux.c  IA32/gcc Émulation de l'API makecontext/swapcontext (SUS v2) sous vieille glibc/IA32. Sans utiliser setjmp/longjmp (juste pour voir).
sv.c   Récupérer l'adresse / le PC d'un SEGV. Utilisable sous Linux/IA32 et Solaris.
term.c  (Solaris) Afficher la chaîne correspondant à une capability d'une entrée termcap donnée. Ne fonctionne bien que sous Solaris. À compiler avec -ltermcap .
variad.c   Sur certaines architectures, les union sont passees par références, même si elles tiennent dans un mot. La preuve avec un Bus error sur sparc64.


C++
c-cast-cpp.cc   Test et démo pour définir une série d'objetc C++ à partir de structure C. Validation de l'héritage simple, multiple, et de la surcharge à partir de structures C. Plusieurs méthodes testées, une seule valide dans tous les cas (trampolines C->C++).
virtual_ctor.cc   Une version des virtual constructors (cf Thinking in C++) reposant sur les templates. Permet, a partir d'un objet en bas d'une hierarchie d'heritage, d'utiliser cet objet en tant qu'ancetre, tout en pouvant lui demander de se recopier (ie faire le new pour le type descendant) sans avoir a redefinir de methodes virtual supplementaires (genre Copy...). Permet d'etre utilise comme un generateur d'objets a partir d'un flux (ie inverse du processus de serialisation).
wrap_cc.cc  gcc Wrapping de new/delete (versions scalaires). À compiler avec -Wl,--wrap=__builtin_new,--wrap=__builtin_delete,--wrap=malloc,--wrap=free . Inclut aussi le wrapping de malloc/free (inutilisé).


Perl / Bourne Shell / Makefile
allocine.sed   Un script GNU sed pour convertir les programmes des salles de ciné d'Allociné pré-traités par lynx -dump , en version texte propre.
cddb2m3u.sh   Convertir du cddb en m3u.
cygwin-mksnap.sh   Récupération du cygwin courant et constitution d'un répertoire prêt à être gravé sur CD, directement utilisable par la suite avec le setup.exe . Sur win2000, renommer le setup.exe en autre chose si vous n'avez pas les droits d'administration (sinon win2000 vous dira "pas les droits suffisants...").
debian-update.sh   Permet de se creer un CD avec les .debs necessaires pour un update d'une debian qui n'a pas un accès réseau terrible. Par exmple, sur ma debian (modem), je fais apt-get -s -u dist-upgrade | mail moi@reseau_rapide.com , puis je vais sur reseau_rapide.com , je lance ce script en lui passant en paramètre le mail que je me suis envoyé.
Un script de configuration ~/etc/debian.conf est nécessaire sur la machine de reseau_rapide.com .
extract.pl   Prend un source C/C++ (personnalisable par regexp à d'autres langages), et extrait les sections de la forme <KEEP(fichier_dest.txt)>...</KEEP(fichier_dest.txt)> (inclus dans des commentaires pour que le code reste compilable). Supporte les sections qui ne sont pas bien imbriquées. Voir le début du source pour des explications.
get_cinefil.sh   Récupère la page Cinéfil v1 d'une salle de ciné donnée via lynx -dump , et la transforme en version texte propre.
mail-resultats-tp.sh   Script pour envoyer un mail de bilan aux etudiants d'un TP constitues en binome. Voir debut du script pour une description plus complete.
mk-doc.glib   Makefile pour générer un bouquin (a2ps) à partir des fichiers HTML de la doc glib. Marche peut-être avec la doc gtk, ...
mkphotoalbum.tgz   Makefiles pour générer des HTML d'album photo (incluent les images au format thumb). Dans chaque répertoire de l'arborescence des photos se trouve un fichier mk . Par défaut, les images en entrée sont au format tif , et les images générées le sont au format jpg . Configurable dans le Makefile principal.
patch2html.pl   Transforme un patch recursif (diff -ruN, ou cvs diff -uN par exemple) fourni sur l'entrée standard, en HTML sur la sortie standard, avec des couleurs et tout. Largement inspiré de cvsweb.cgi (voir en-tête du script).
q.tgz   Scripts pour gérer une file d'attente en Shell (Bourne) sous Linux et Solaris. Contourne un certain nombre de limitations des 2 systèmes. Prend en compte les accès concurrents.
rmdefine.pl   Enlève les #(un)define WIN32 / #endif en tenant compte de l'imbrication. On peut naturellement remplacer WIN32 par n'importe quoi d'autre.
rmfolder.pl   Prend les bookmarks Netscape/Mozilla, et les recopie après avoir enlevé les sections marquées "a enlever" (regexp a personnaliser).
txt2fig.sh   Transforme un fichier texte en image fig (pour xfig) style verbatim. Utile quand les \begin{verbatim}/\end{verbatim} font n'importe quoi.
 
 
 

Page modifiée le Jeudi 5 Mai 2005 à 13h38 TU .