Moritz Systems have been contracted by the FreeBSD Foundation to continue our work on modernizing the LLDB debugger’s support for FreeBSD. The primary goal of our contract is to bring support for full multiprocess debugging into LLDB. The Project Schedule is divided into three milestones, each taking approximately one and a half months: Support for the non-stop variant of GDB Remote Serial Protocol in lldb-server and gdb-remote plugin in LLDB client.| www.moritz.systems
Moritz Systems have been contracted by the FreeBSD Foundation to continue our work on modernizing the LLDB debugger’s support for FreeBSD. The primary goal of our contract is to bring support for full multiprocess debugging into LLDB. The Project Schedule is divided into three milestones, each taking approximately one and a half months: Support for the non-stop variant of GDB Remote Serial Protocol in lldb-server and gdb-remote plugin in LLDB client.| www.moritz.systems
The Moritz Systems team has started a new contract on Multiprocess support for LLDB.| www.moritz.systems
Moritz Systems have been contracted by the FreeBSD Foundation to modernize the LLDB debugger’s support for FreeBSD. We are writing 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 LLVM project provides a modern, modular, permissively licensed compiler infrastructure. A toolchain including Clang compiler, LLD linker and LLDB debugger is being d...| www.moritz.systems
When engineers were designing completely autonomously operated Paris Métro line 14, they had to ensure the safety of tens of millions passengers each year, its 22 stations across Paris as well as smooth running of trains. How to approach development of software that allows for the automation of public transit? The French team decided to use formal verification – learn what it means!| www.moritz.systems
Continuing from our previous article, let us take an example of how to write a TLA+ proof for a real-world specification of a distributed system. For this exercise we will go through the Voucher Trading System process as specified by the RFC3506 hosted by IETF. The distributed and concurrent systems require a consensus protocol to achieve overall system reliability and immunity to failures of nodes. We decided to select for this VTS network a simple Two-phase commit protocol.| www.moritz.systems
Fuzzing is a software testing method that involves passing malformed data as input to the program and monitoring it for misbehavior. Today, fuzzing is one of the most effective ways to find software security problems. In 2014, Michał Zalewski presented American Fuzzy Lop, the first coverage guided fuzzer. This started the modern world of fuzzing solutions and techniques on the market.| www.moritz.systems
Generally, during fuzz testing (regardless of the tool used to perform it: American Fuzzy Lop, libFuzzer, or any other), we have to remember to keep the number of iterations per second high. This means that a good fuzzer is a fast fuzzer. This is mostly facilitated by minimizing the structures and operations needed to prepare the context. We do not reinitialize the mechanisms of the fuzzed library for every iteration.| www.moritz.systems
The Moritz Systems team has started a new contract on improving the LLDB support for FreeBSD. The LLDB project builds on libraries provided by LLVM and Clang to provide a great modern debugger. It uses the Clang ASTs and expression parser, LLVM JIT, LLVM disassembler, etc so that it provides an experience that “just works”. It is also blazing fast and more permissively licensed than GDB, the GNU Debugger.| www.moritz.systems
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 ptrace(2) interface.| www.moritz.systems
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.| www.moritz.systems
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 suppo...| www.moritz.systems
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 config...| www.moritz.systems
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.| www.moritz.systems
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:| www.moritz.systems
The Moritz Systems team has started a new contract on LLDB FreeBSD CPU target support and userland debugging improvements.| www.moritz.systems
Moritz Systems have started a new contract with the FreeBSD Foundation to continue our work on modernizing the LLDB debugger’s support for FreeBSD. Throughout the previous contract we have introduced a FreeBSD Remote Process Plugin utilizing the mode modern client-server layout of LLDB. We have managed to achieve the feature parity with the original FreeBSD plugin on the x86 architecture. However, as of today other architectures still use the original.| www.moritz.systems
Moritz Systems have been contracted by the FreeBSD Foundation to continue our work on modernizing the LLDB debugger’s support for FreeBSD. The complete Project Schedule is divided into four milestones, each taking approximately one month: M1 Switch all the non-x86 CPUs to the LLDB FreeBSD Remote-Process-Plugin. M2 Iteration over regression tests on ARM64 and fixing known bugs, marking the non-trivial ones for future work. Remove the old local-only Process-Plugin.| www.moritz.systems
Moritz Systems have been contracted by the FreeBSD Foundation to continue our work on modernizing the LLDB debugger’s support for FreeBSD. The complete Project Schedule is divided into four milestones, each taking approximately one month: M1 Switch all the non-x86 CPUs to the LLDB FreeBSD Remote-Process-Plugin. M2 Iteration over regression tests on ARM64 and fixing known bugs, marking the non-trivial ones for future work. Remove the old local-only Process-Plugin.| www.moritz.systems
Moritz Systems have been contracted by the FreeBSD Foundation to continue our work on modernizing the LLDB debugger’s support for FreeBSD. The complete Project Schedule is divided into four milestones, each taking approximately one month: M1 Switch all the non-x86 CPUs to the LLDB FreeBSD Remote-Process-Plugin. M2 Iteration over regression tests on ARM64 and fixing known bugs, marking the non-trivial ones for future work. Remove the old local-only Process-Plugin.| www.moritz.systems
The Moritz Systems team has started a new contract on FreeBSD KGDB support in LLDB.| www.moritz.systems
Moritz Systems have been contracted by the FreeBSD Foundation to continue our work on modernizing the LLDB debugger’s support for FreeBSD. The primary goal of our contract is to bring kernel debugging into LLDB. The complete Project Schedule is divided into six milestones, each taking approximately one month: Improve LLDB compatibility with the GDB protocol: fix LLDB implementation errors, implement missing packets, except registers. Improve LLDB compatibility with the GDB protocol: support...| www.moritz.systems
Moritz Systems have been contracted by the FreeBSD Foundation to continue our work on modernizing the LLDB debugger’s support for FreeBSD. The primary goal of our contract is to bring kernel debugging into LLDB. The complete Project Schedule is divided into six milestones, each taking approximately one month: Improve LLDB compatibility with the GDB protocol: fix LLDB implementation errors, implement missing packets, except registers. Improve LLDB compatibility with the GDB protocol: support...| www.moritz.systems
Moritz Systems have been contracted by the FreeBSD Foundation to continue our work on modernizing the LLDB debugger’s support for FreeBSD. The primary goal of our contract is to bring kernel debugging into LLDB. The complete Project Schedule is divided into six milestones, each taking approximately one month: Improve LLDB compatibility with the GDB protocol: fix LLDB implementation errors, implement missing packets, except registers. Improve LLDB compatibility with the GDB protocol: support...| www.moritz.systems
Moritz Systems have been contracted by the FreeBSD Foundation to continue our work on modernizing the LLDB debugger’s support for FreeBSD. The primary goal of our contract is to bring kernel debugging into LLDB. The complete Project Schedule is divided into six milestones, each taking approximately one month: Improve LLDB compatibility with the GDB protocol: fix LLDB implementation errors, implement missing packets, except registers. Improve LLDB compatibility with the GDB protocol: support...| www.moritz.systems
Moritz Systems have been contracted by the FreeBSD Foundation to continue our work on modernizing the LLDB debugger’s support for FreeBSD. The primary goal of our contract is to bring kernel debugging into LLDB. The complete Project Schedule is divided into six milestones, each taking approximately one month: Improve LLDB compatibility with the GDB protocol: fix LLDB implementation errors, implement missing packets, except registers. Improve LLDB compatibility with the GDB protocol: support...| www.moritz.systems
Moritz Systems have been contracted by the FreeBSD Foundation to continue our work on modernizing the LLDB debugger’s support for FreeBSD. The primary goal of our contract is to bring kernel debugging into LLDB. The complete Project Schedule is divided into six milestones, each taking approximately one month: Improve LLDB compatibility with the GDB protocol: fix LLDB implementation errors, implement missing packets, except registers. Improve LLDB compatibility with the GDB protocol: support...| www.moritz.systems