On Sun, 25 Jun 2023 14:27:57 -0500
Oskari Pirhonen <xxc3ncore...@gmail.com> wrote:

> Small set of wording and grammatical edits which did not make it in time
> for the original review of the chapter.

LGTM.

Reviewed-by: Glenn Washburn <developm...@efficientek.com>

Glenn

> 
> Signed-off-by: Oskari Pirhonen <xxc3ncore...@gmail.com>
> ---
> v2:
> - apply Glenn's suggestions
> 
> Interdiff against v1:
>   diff --git a/docs/grub-dev.texi b/docs/grub-dev.texi
>   index 05a19c26d..0834ca562 100644
>   --- a/docs/grub-dev.texi
>   +++ b/docs/grub-dev.texi
>   @@ -766,8 +766,8 @@ be loading the GRUB image into memory where every byte 
> is already set to 0.
>    This means that if a breakpoint is set before GRUB is loaded, GDB will save
>    the 0-byte(s) where the the special instruction will go. Then when the 
> firmware
>    loads the GRUB image and because it is unaware of the debugger, it will
>   -write the GRUB image to memory, overwriting anything that was there 
> previously.
>   -Notably in this case the instruction that implements the software 
> breakpoint.
>   +write the GRUB image to memory, overwriting anything that was there 
> previously ---
>   +notably in this case the instruction that implements the software 
> breakpoint.
>    This will be confusing for the person using GDB because GDB will show the
>    breakpoint as set, but the brekapoint will never be hit. Furthermore, GDB
>    then becomes confused, such that even deleting an recreating the breakpoint
>   @@ -783,8 +783,8 @@ the CPU. So they can always be set freely without 
> regard to whether GRUB has
>    been loaded or not. The reason that hardware breakpoints aren't always used
>    is because there are a limited number of them, usually around 4 on various
>    CPUs, and specifically exactly 4 for x86 CPUs. The @file{gdb_grub} script 
> goes
>   -out of its way to avoid using hardware breakpoints internally, and when 
> needed,
>   -uses them as briefly as possible, thus allowing the user to have a maximal
>   +out of its way to avoid using hardware breakpoints internally and uses 
> them as
>   +briefly as possible when needed, thus allowing the user to have a maximal
>    number at their disposal.
>    
>    @node OVMF debug log
> 
>  docs/grub-dev.texi | 37 ++++++++++++++++++-------------------
>  1 file changed, 18 insertions(+), 19 deletions(-)
> 
> diff --git a/docs/grub-dev.texi b/docs/grub-dev.texi
> index 72470b42c..0834ca562 100644
> --- a/docs/grub-dev.texi
> +++ b/docs/grub-dev.texi
> @@ -658,11 +658,11 @@ command must be used. We also need to load a binary 
> image, preferably with
>  symbols. This can be done using the GDB command @code{file kernel.exec}, if
>  GDB is started from the @file{grub-core} directory in the GRUB2 build
>  directory. GRUB2 developers have made this more simple by including a GDB
> -script which does much of the setup. This file at @file{grub-core/gdb_grub}
> -of the build directory and is also installed via @command{make install}.
> +script which does much of the setup. This file is at 
> @file{grub-core/gdb_grub}
> +in the build directory and is also installed via @command{make install}.
>  If not building GRUB, the distribution may have a package which installs
>  this GDB script along with debug symbol binaries, such as Debian's
> -@samp{grub-pc-dbg} package. The GDB scripts is intended to by used
> +@samp{grub-pc-dbg} package. The GDB script is intended to be used
>  like so, assuming:
>  
>  @example
> @@ -719,14 +719,13 @@ expected when breaking on functions, but, for instance, 
> global variables
>  will point to the wrong address in memory and thus give incorrect values
>  (which can be difficult to debug).
>  
> -The calculating of the correct offsets for sections when loading symbol
> -files are taken care of when loading the kernel symbols via the user-defined
> -GDB command @command{dynamic_load_kernel_exec_symbols}, which takes one
> -argument, the address where the text section is loaded, as determined by
> -one of the methods above. Alternatively, the command 
> @command{dynamic_load_symbols}
> -with the text section address as an agrument can be called to load the
> -kernel symbols and setup loading the module symbols as they are loaded at
> -runtime.
> +Calculating the correct offsets for sections is taken care of automatically
> +when loading the kernel symbols via the user-defined GDB command
> +@command{dynamic_load_kernel_exec_symbols}, which takes one argument, the
> +address where the text section is loaded as determined by one of the methods
> +above. Alternatively, the command @command{dynamic_load_symbols} with the 
> text
> +section address as an agrument can be called to load the kernel symbols and 
> set
> +up loading the module symbols as they are loaded at runtime.
>  
>  In the author's experience, when debugging with QEMU and OVMF, to have
>  debugging symbols loaded at the start of GRUB2 execution the GRUB2 EFI
> @@ -736,7 +735,7 @@ two subsections below. Generally speaking, the load 
> address does not change
>  between QEMU runs. There are exceptions to this, namely that different
>  GRUB2 EFI applications can be run at different addresses. Also, it has been
>  observed that after running the EFI application for the first time, the
> -second run will some times have a different load address, but subsequent
> +second run will sometimes have a different load address, but subsequent
>  runs of the same EFI application will have the same load address as the
>  second run. And it's a near certainty that if the GRUB EFI binary has 
> changed,
>  eg. been recompiled, the load address will also be different.
> @@ -752,7 +751,7 @@ gdb -x gdb_grub -ex 'dynamic_load_symbols @var{address of 
> .text section}'
>  @end example
>  
>  If you load the symbols in this manner and, after continuing execution, do
> -not see output showing the loading of modules symbol, then it is very likely
> +not see output showing the module symbols loading, then it is very likely
>  that the load address was incorrect.
>  
>  Another thing to be aware of is how the loading of the GRUB image by the
> @@ -767,7 +766,7 @@ be loading the GRUB image into memory where every byte is 
> already set to 0.
>  This means that if a breakpoint is set before GRUB is loaded, GDB will save
>  the 0-byte(s) where the the special instruction will go. Then when the 
> firmware
>  loads the GRUB image and because it is unaware of the debugger, it will
> -write the GRUB image to memory, overwriting anything that was there 
> previously,
> +write the GRUB image to memory, overwriting anything that was there 
> previously ---
>  notably in this case the instruction that implements the software breakpoint.
>  This will be confusing for the person using GDB because GDB will show the
>  breakpoint as set, but the brekapoint will never be hit. Furthermore, GDB
> @@ -783,10 +782,10 @@ implemented by having the breakpoint address in special 
> debug registers on
>  the CPU. So they can always be set freely without regard to whether GRUB has
>  been loaded or not. The reason that hardware breakpoints aren't always used
>  is because there are a limited number of them, usually around 4 on various
> -CPUs, and specifically exactly 4 for x86 CPUs. The @file{gdb_grub} script
> -goes out of its way to not use hardware breakpoints internally and when
> -needed use them as short a time as possible, thus allowing the user to have a
> -maximal number at their disposal.
> +CPUs, and specifically exactly 4 for x86 CPUs. The @file{gdb_grub} script 
> goes
> +out of its way to avoid using hardware breakpoints internally and uses them 
> as
> +briefly as possible when needed, thus allowing the user to have a maximal
> +number at their disposal.
>  
>  @node OVMF debug log
>  @subsection OVMF debug log
> @@ -797,7 +796,7 @@ here is one} which is not officially recommended). OVMF 
> will output debug
>  messages to a special serial device, which we must add to QEMU. The following
>  QEMU command will run the debug OVMF and write the debug messages to a
>  file named @file{debug.log}. It is assumed that @file{disk.img} is a disk
> -image or block device that is setup to boot GRUB2 EFI.
> +image or block device that is set up to boot GRUB2 EFI.
>  
>  @example
>  qemu-system-x86_64 -bios /path/to/debug/OVMF.fd \

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to