the kernel. They are not used atm, but having them in trunk allows them
to be easily used when needed. To set a breakpoint that triggers when
the variable foo is written to (the most common use case), one calls:
breakpoint_set(vir2phys((vir_bytes) &foo), 0,
BREAKPOINT_FLAG_MODE_GLOBAL |
BREAKPOINT_FLAG_RW_WRITE |
BREAKPOINT_FLAG_LEN_4);
It can later be disabled using:
breakpoint_set(vir2phys((vir_bytes) &foo), 0,
BREAKPOINT_FLAG_MODE_OFF);
There are some limitations:
- There are at most four breakpoints (hardware limit); the index of the
breakpoint (0-3) is specified as the second parameter of
breakpoint_set.
- The breakpoint exception in the kernel is not handled and causes a
panic; it would be reasonably easy to change this by inspecing DR6,
printing a message, disabling the breakpoint and continuing. However,
in my experience even just a panic can be very useful.
- Breakpoints can be set only in the part of the address space that is
in every page table. It is useful for the kernel, but to use this for
user processes would require saving and restoring the debug registers
as part of the context switch. Although the CPU provides support for
local breakpoints (I implemened this as BREAKPOINT_FLAG_LOCAL) they
only work if task switching is used.
-Convert the include directory over to using bsdmake
syntax
-Update/add mkfiles
-Modify install(1) so that it can create symlinks
-Update makefiles to use new install(1) options
-Rename /usr/include/ibm to /usr/include/i386
-Create /usr/include/machine symlink to arch header files
-Move vm_i386.h to its new home in the /usr/include/i386
-Update source files to #include the header files at their
new homes.
-Add new gnu-includes target for building GCC headers
- put asmconv in /usr/bin so it can be invoked without absolute path
- make it ignore .end in gnu output mode so that it can be invoked
without '|| true' in the gnu lib makefiles and it doesn't produce the
messy error message
- an asmconv based tool for conversion from GNU ia32 assembly to ACK assembly
- in contrast to asmconv it is a one way tool only
- as the GNU assembly in Minix does not prefix global C symbols with _ gas2ack
detects such symbols and prefixes them to be compliant with the ACK convention
- gas2ack preserves comments and unexpanded macros
- bunch of fixes to the asmconv GNU->ACK direction
- support of more instructions that ACK does not know but are in use in Minix
- it is meant as a temporary solution as long as ACK will be a supported
compiler for the core system
for each symbol, usually answering those "why is does my binary have
such a lot of BSS" questions.
- stop binpackage looking in /var/spool for package files.
- let makewhatis recognize .Sh as heading name
- setup, fsck, df: allow >4kB block sizes painlessly
- mkfs: new #-of-inodes heuristic that depends on kb, not
on blocks; i've run out of inodes on my /usr
- asmconv: don't silently truncate .aligns to 16 bytes
- ipc* commands for shared memory support