4 ms·
Here's a set of C compiler flags that I find especially useful to prevent bugs from occurring: -Werror=implicit-function-declaration -Werror=implicit-fallthrou
by rhn_mk1 5y ago
Here's a set of C compiler flags that I find especially useful to prevent bugs from occurring:
-Werror=implicit-function-declaration
-Werror=implicit-fallthrough=3
-Werror=maybe-uninitialized
-Werror=missing-field-initializers
-Werror=incompatible-pointer-types
-Werror=int-conversion
-Werror=redundant-decls
-Werror=parentheses
-Wformat-nonliteral
-Wformat-security
-Wformat
-Winit-self
-Wmaybe-uninitialized
-Wold-style-definition
-Wredundant-decls
-Wstrict-prototypes
- mikewarot 5y agoI'll be trying that magic incantation shortly. [Edit] I tried it, and it didn't make anything worse. What I was hoping to find (and spend a few days looking) was for some set of flags I could give to a modern copy of gcc to hold it's nose and compile this code as-is, as a starting point. Git under Debian 3 seems to be a no-go. I'm tempted to just have two virtual machines that are never on at the same time mount a separate virtual disk that holds the Stoical source code and git repository. Make changes / test in Debian 3... when happy shut it down, fire up Debian 11 and do a commit and push to github. Shut it down, fire up Debian 3, repeat.
- rhn_mk1 5y agoNote that this may detect a lot of problems that are not necessarily fatal. It's just that enabling those warnings and sticking to it prevents errors from appearing once you earnestly start working with the code - like you will need to in order to modernize it.
- rhn_mk1 5y agoI'm not sure how much this helps, but better fire up your Debian 3 inside a virtual machine. Then you can copy files with scp and commit them to git or whatever other version control on your main host. And those flags should be used first on the Debian 3 machine, at least those which are supported there. In my experience, jumping straight to the new version and making it "hold its nose" only ever works if you already know what you're doing.
- pjungwir 5y agoWith vagrant, the guest's /vagrant directory is whatever host directory contains the Vagrantfile. Using that seems even easier than scp. You can also set up some other shared folder if you're less lazy than me.
- avar 5y agoWhat problems are you running into getting git on debian 3?
- mikewarot 5y agoI tried installing git... it turns out that in Debian 3 git is the Gnu Interactive Tool, not a source code management program ;-) So I downloaded the latest version of git source, using wget from https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9... Then I found I needed zlib, from https://www.zlib.net/zlib-1.2.12.tar.xz https://www.zlib.net/zlib-1.2.12.tar.xz And I also needed Tcl/Tk https://prdownloads.sourceforge.net/tcl/tcl8.6.12-src.tar.gz https://prdownloads.sourceforge.net/tcl/tcl8.6.12-src.tar.gz And I also needed autoconf http://ftp.gnu.org/gnu/autoconf/autoconf-2.71.tar.gz http://ftp.gnu.org/gnu/autoconf/autoconf-2.71.tar.gz Autoconf needed a newer version of m4 http://ftp.gnu.org/gnu/m4/m4-1.4.19.tar.gz http://ftp.gnu.org/gnu/m4/m4-1.4.19.tar.gz m4 couldn't install... I'm not sure why... so I gave up at that point. 8(
- all2 5y agoIf you use Docker/vagrant you should be able to do your editing/version control on the host machine and handle only compilation on the VM.
- hermitdev 5y agoYes! Was going to suggest much the same: crank up the warnings and treat them as errors!
- creativemonkeys 5y agoon small projects, with clang, I use "-Weverything -Werror" and then I start fixing the issues one by one. I also either disable anything I'm willing to live with using -Wno<warning> or I use '#pragma clang diagnostic ignored "-W<warning>"' if it's only relevant for specific portions of the code.