RSSAmplifier

Blog

Frederic Cambus

Personal site and technical blog of Frederic Cambus

cambus.netRSS feed ↗30 posts

Latest posts

Toolchains adventures - Q1 2024

This is the ninth post in my toolchains adventures series. Please check the previous posts in the toolchains category for more context about this journey. There was no Q4 2023 report as there wasn't really anything worthwhile to write about. I've been taking a break from Pkgsrc to only focus on OpenBSD at this point, for which I updated binutils to version 2.42 in the ports tree. During…

Speedbuilding LLVM/Clang in 3 minutes on Power10

This post is the Power10 counterpart of my " Speedbuilding LLVM/Clang in 5 minutes " and " Speedbuilding LLVM/Clang in 2 minutes on ARM " articles. The system I'm using for this experiment is an IBM POWER10 9043-MRX (E1050) server with a total of 24 cores and 192 threads , and 2 TB of RAM . The system is running AlmaLinux 9.3 with up-to-date packages and kernel. The full result of…

My FreeBSD years: 2000-2005

In the introduction of my " Why OpenBSD? " post, I mentioned that I came to the BSD world through FreeBSD. Rather than paraphrasing what I wrote back then, here is the relevant part: I’ve been using FreeBSD from 2000 to 2005 as my sole operating system at the time (both on servers and workstations), from 4.1 to the end of the 4.x series. I have fond memories of that period, and that’s probably the…

Toolchains adventures - Q3 2023

This is the eighth post in my toolchains adventures series. Please check the previous posts in the toolchains category for more context about this journey. There was no Q2 2023 report as there wasn't really anything worthwhile to write about. In Pkgsrc land, I updated binutils to the 2.41 version, and mold to the 2.0.0 , 2.1.0 , and 2.2.0 versions. It's worth noting that Mold…

Playing with Caml Light on DOS

OCaml has been on my radar for some years now, and I think it was MirageOS which sparked my interest in the language. Lately, I started reading more about OCaml and its ecosystem, and indulged myself in an historical detour. For more background information on Caml and the Caml Light implementation in particular, please refer to " A History of Caml ". Distribution archives for Caml Light are…

OpenBSD/arm64 on Hetzner Cloud

Hetzner introduced its Ampere Altra powered arm64-based cloud servers earlier this year, making it possible to easily run OpenBSD/arm64 on their platform. The only caveat for now is that the viogpu(4) driver is required, which was committed by jcs@ in April 2023 and thus only available in snapshots. It will first appear in OpenBSD 7.4. Here is the relevant excerpt from the manual page:…

On the importance of distfiles

I've been involved with the OpenBSD ports collection since 2015, and have accumulated some notes on the topic over the years. This is an attempt at doing a redacted version, mostly for my personal use. While some of these notes are specific to the OpenBSD Ports Collection, most of them will also apply to the others BSDs and Linux distributions. It will come at no surprise that distfiles are…

Spleen 2.0.0 released with full CP437 support

Spleen 2.0.0 has been released, with full support for CP437 (IBM PC) encoding in the 8x16, 16x32, and 32x64 versions. It required a large effort and represents 135 commits since Spleen 1.9.3 which resulted in almost 90 new characters in the previously mentioned sizes. A lot has happened since the 1.0.0 release back in September 2018: It became the default font for OpenBSD consoles in January 2019…

Fun with Kermit and ZMODEM over SSH

In my " Capturing text screens on modern operating systems " article published back in 2013, I mentioned finding a very promising program called Qodem . It has since reached maturity and version 1.0 was released in 2017. I have been enjoying it on a regular basis to reminisce about the glorious days of using Terminate and Minicom in the nineties, and even packaged it in both OpenBSD and NetBSD .…

Toolchains adventures - Q1 2023

This is the seventh post in my toolchains adventures series. Please check the previous posts in the toolchains category for more context about this journey. There was no Q4 2022 report as there wasn't really anything worthwhile to write about, only some usual Pkgsrc and OpenBSD toolchains related ports updates. In Pkgsrc land, I updated binutils to the 2.40 version, mold to the 1.9.0 , 1.10.0…

NetBSD ASCII flag for the bootloader

As mentioned in my " Customizing NetBSD boot banners " article, it's really easy to customize NetBSD boot banners using the boot.cfg configuration file. In a previous life, I used to draw ASCII art (mostly in the pre-2000 era) and more precisely a type of ASCII art referred as newschool ASCII in the artscene . By taking advantage of the extended character set (the 128 to 255 range) of the IBM…

Toolchains adventures - Q3 2022

This is the sixth post in my toolchains adventures series. Please check the previous posts in the toolchains category for more context about this journey. In Pkgsrc land, I updated binutils to the 2.39 version, mold to the 1.3.1 , 1.4.0 , 1.4.1 , and 1.4.2 versions, patchelf to the 0.15.0 one, and finally pax-utils to the 1.3.5 one. Regarding OpenBSD, we imported llvm-profdata into the base system…

Toolchains adventures - Q2 2022

This is the fifth post in my toolchains adventures series. Please check the previous posts in the toolchains category for more context about this journey. In Pkgsrc land, I updated mold to the 1.2 , 1.2.1 , and 1.3 versions, and pax-utils to the 1.3.4 one. I also added a z3 option to our llvm and clang packages to allow building them against the Z3 theorem prover . When both lang/llvm and…

Clang Static Analyzer and the Z3 constraint solver

As far as static analyzers are concerned, one of the most important point to consider is filtering out false positives as much as possible, in order for the reports to be actionable. This is an area on which Coverity did an excellent job, and likely a major reason why they got so popular within the open source community, despite being a closed-source product. LLVM has the LLVM_ENABLE_Z3_SOLVER…

Differences between base and ports LLVM in OpenBSD

LLVM was imported in the OpenBSD ports tree back in 2008, and happily lived there for a long while before being imported in the source tree at the g2k16 hackathon in 2016. I previously wrote about this in " The state of toolchains in OpenBSD " last year. As mentioned in my previous article, we do not use upstream build system to build LLVM in the base system, but hand-written BSD Makefiles.…

Assembly instructions distribution

In my article about running FreeBSD on the Vortex86DX CPU , I mentioned using objdump to disassemble kernels in order to check whether they were using CMOV instructions or not. One thing leading to another, I thought it would be fun to calculate the distribution of assembly instructions in ELF binaries . It turns out it can be done rather easily with a bit of Shell foo. For the purpose of this…

OpenBSD folklore and share/misc/airport

Back in 2016, I sent a diff to OpenBSD's tech@ mailing list which added missing airports and area codes for Poland. Theo kindly pointed out privately that there was a rule governing the update of this file, which was known among OpenBSD developers but never made it into a commit. So I ended up making one adding my home airport ( RZE ) to the list and specifying update rules: only add ones you…

Customizing NetBSD boot banners

I recently discovered that it's surprisingly easy to customize the NetBSD boot loader banner, simply by adding some directives in the boot.cfg configuration file. Here is the relevant part of the boot.cfg(5) manual page: banner The text from banner lines is displayed instead of the standard welcome text by the boot loader. Up to 12 lines can be defined. No special character sequences are…

File transfers via the parallel port on DOS using LapLink

I've already mentioned the HP t5570e and HP t510 thin clients a few times on this site, so they probably don't require any more introduction. I will however just stress that one of the nice thing they have going for them is that they still have serial and parallel ports. I've already put their parallel port to good use, as it allowed me to re-plug my Flash Advance Linker and also…

Toolchains adventures - Q1 2022

This is the fourth post in my toolchains adventures series. Please check the previous posts in the toolchains category for more context about this journey. In Pkgsrc land, I packaged and imported pax-utils , and updated mold to the 1.0.1 , 1.0.2 , 1.0.3 , 1.1 , and 1.1.1 versions. Since version 1.0.2, mold can now link NetBSD object files thanks to work done by pho@. I also committed upstream fix…

GBA nostalgia and the Flash Advance Linker

I got involved with Game Boy Advance development in 2001 shortly after the release of the device on the European market. At the time, the PC demoscene had already moved to producing those horrible hardware-accelerated 3D demos and it was time for me to move on. In my eyes, the GBA scene provided a refuge for the 2D and bitmapped graphics lovers, and so I spent some time playing with the device.…

FreeBSD on the Vortex86DX CPU

After trying NetBSD and OpenBSD on my DMP EBOX 3300A-H with a Vortex86DX CPU, I was curious to see how FreeBSD would fare on such constrained systems these days. For more information and background about the hardware, please refer to my previous article. Attempting to install FreeBSD 13.0 failed early when loading the kernel, and both supported releases from the FreeBSD 12 series (12.2 and 12.3)…

FreeBSD on the CubieBoard2

I have previously been running NetBSD/evbarm and OpenBSD/armv7 on my CubieBoard2, and wrote about it here and here . The Cubieboard2 is an ARMv7 device which was released in 2013 so it is quite ancient by now. However, a renewed interest in FreeBSD on my side prompted me to try running the system on this device. ARMv7 is a Tier 2 architecture on FreeBSD, so the system cannot be upgraded…

Toolchains adventures - Q4 2021

This is the third post in my toolchains adventures series. Please read the introduction and the Q3 2021 report if you want to get more context about this journey. The fourth quarter of 2021 started out in the best possible way, as I've been granted commit access to the LLVM project on October 1st. During the first part of October, I did commit a couple of micro-optimizations to several…

OpenBSD on the VIA Eden X2 powered HP t510 Thin Client

Back in 2017, I bought two used HP thin clients on a local auction site, the t5570e and the t510 , both of them powered by VIA x86-64 CPUs. In this article, I will focus on the t510, which is the more powerful of the two. The CPU in this machine is a VIA Eden X2 U4200 , which is a dual-core x86-64 CPU running at 1GHz released in 2011. For those interested about the status of those CPUs, I wrote an…

NetBSD, CTWM, and Spleen

Back in the fall of 2020, I was approached about adding Spleen to the NetBSD's xsrc repository. Needless to say, I wasn't difficult to convince, and imported Spleen 1.8.2 as font-spleen-misc . With this being done, nia@ added all the required glue to hook the fonts to the build, and then changed the default CTWM configuration to do automatic font scaling based on screen size , and make…

Toolchains adventures - Q3 2021

I've been keeping myself busy since I posted the " Diving into toolchains " article at the beginning of June, so here is an update detailing what I've been up to during the past couple of months. At the end of June, I went through the FSF copyright assignment process for both Binutils and GDB , which now allows me to contribute larger changes to these codebases. I thus updated the NetBSD…

OpenBSD on the Vortex86DX CPU

This is the OpenBSD counterpart of my article about running NetBSD on the Vortex86DX CPU , and its purpose is mostly to archive a dmesg entry and various benchmarks for this machine. I should note that with only 256MB of RAM, the machine is too constrained to do kernel and libraries relinking in a timely manner, due to swapping. For more information and background about the hardware, please refer…

Diving into toolchains

I've been wanting to learn more about compilers and toolchains in general for a while now. In June 2016, I asked about recommended readings on lexers and parsers on Twitter. However, I have to confess that I didn't go forward with reading the Dragon Book. Instead, I got involved as a developer in the OpenBSD and NetBSD projects, and witnessing the evolution of toolchains within those…

NetBSD on the Vortex86DX CPU

I'm not exactly sure how I first heard about the Vortex86 CPUs, I think it was either when seeing the demonstration video on KolibriOS project site showcasing the system running on a DMP EBOX machine, or when skimming NetBSD 's identcpu.c code. Or did the discovery of the machine prompted me to check if the CPU would be correctly probed by the NetBSD's kernel? For those interested,…