Welcome to our blog where we share some of our knowledge with the wider community.
Blog | December 10, 2020
FreeBSD Remote Process Plugin: Final Milestone Achieved
By Kamil Rytarowski, Michał Górny
Moritz Systems have been contracted by the FreeBSD Foundation to modernize the LLDB debugger’s support for FreeBSD. We are working on a new plugin utilizing the more modern client-server layout that is already used by Darwin, Linux, NetBSD and (unofficially) OpenBSD. The new plugin is going to gradually replace the legacy one.
This dragon image is owned by Apple Inc.
The Project Schedule was divided into three milestones, each taking approximately one month:
read more
Blog | November 26, 2020
Mastering UNIX pipes, Part 1
By Kamil Rytarowski
A pipe is a first-in-first-out interprocess communication channel. The pipe version as it is known today was invented by an American Computer Scientist Douglas McIlroy and incorporated into Version 3 AT&T UNIX in 1973 by Ken Thompson.
It was inspired by the observation that frequently the output of one application is used as an input for another. This concept can be reused to connect a chain of processes. This is frequently observed in UNIX shell constructs that utilize the | operator.
read more
Blog | November 19, 2020
Before the BSD Kernel starts: Part One on AMD64
By Maciej Grochowski
System initialization is one of the niche areas that few people look into. The exact details vary considerably between different platforms, firmwares, CPU architectures and operating systems, making it difficult to learn it all. Usually, if something is not working correctly during the early stages of system startup or if the OS does not boot, it rarely has anything to do with the code responsible for booting. Most of the time, it is due to other factors, such as the boot media or BIOS configuration.
read more
Blog | November 5, 2020
FreeBSD Remote Process Plugin is now the default in LLDB
By Michał Górny, Kamil Rytarowski
Moritz Systems have been contracted by the FreeBSD Foundation to modernize the LLDB debugger’s support for FreeBSD. We are working on a new plugin utilizing the more modern client-server layout that is already used by Darwin, Linux, NetBSD and (unofficially) OpenBSD. The new plugin is going to gradually replace the legacy one.
The Project Schedule is divided into three milestones, each taking approximately one month:
M1 Introduce new FreeBSD Remote Process Plugin for x86_64 with basic support and upstream to LLVM.
read more
Blog | October 29, 2020
How Debuggers Work: Getting and Setting x86 Registers, Part 2: XSAVE
By Michał Górny
In the previous part of this article, I have described the basic methods of getting and setting the baseline registers of 32-bit and 64-bit x86 CPUs. I have covered General Purpose Registers, baseline Floating-Point Registers and Debug Registers along with their ptrace(2) interface.
In the second part, I would like to discuss the XSAVE family of instructions. I will describe the different variants of this instruction as well as explain the differences between them and their limitations.
read more
Blog | October 22, 2020
How Debuggers Work: Getting and Setting x86 Registers, Part 1
By Michał Górny
In this article, I would like to shortly describe the methods used to dump and restore the different kinds of registers on 32-bit and 64-bit x86 CPUs. The first part will focus on General Purpose Registers, Debug Registers and Floating-Point Registers up to the XMM registers provided by the SSE extension. I will explain how their values can be obtained via the
read more
ptrace(2)
interface.