Category: Programming

  • CVS SSH

    Sorry for the long posting hiatus. I have enough readers now that it’s hard to write the usual random nonsense. I was recently reminded of an old problem using CVS over SSH, which was an interesting example of various different instances of reasonable behaviour adding up to a bug. It’s possible that this bug has…

  • Executable stack

    The gcc compiler implements an extension to C: nested functions. A trivial example: int f() { int i = 2; int g(int j) { return i + j; } return g(3); } The function f will return 5. Note in particular that the nested function g refers to the variable i defined in the enclosing…

  • DejaGNU

    Sorry for the long delay. Anyhow, I wrote that so that I could write this. DejaGNU is the test harness used by gcc, gdb, the GNU binutils, and probably other programs as well. Frankly, it’s a disaster. The documentation is weak, the implementation is complex and confusing, it’s slow, it does not support running tests…

  • Tcl

    Around 1997 I had did quite a bit of programming in the Tcl language, as part of an IDE project at Cygnus. The project failed, for several reasons, but here I’m going to write about Tcl. I don’t hear much about Tcl these days, although it was fairly popular in its day. Tcl is a…

  • Cross-compilation

    GCC fully supports cross-compilation: building a program on one machine in order to run it another. However, it’s quite painful to actually build a full cross-toolchain with compiler, tools, and libraries. Many people new to the process have the same reaction: it simply can’t be this hard. But it is. The basic problem is that…