Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: <Ezra.Sitorus@arm.com>
To: <gdb-patches@sourceware.org>
Cc: <luis.machado.foss@gmail.com>, <thiago.bauermann@linaro.org>,
	Ezra Sitorus <ezra.sitorus@arm.com>
Subject: [PATCH v3 6/6] gdb/doc: Document AArch64 FPMR support
Date: Tue, 21 Oct 2025 16:03:00 +0100	[thread overview]
Message-ID: <20251021150300.59860-7-Ezra.Sitorus@arm.com> (raw)
In-Reply-To: <20251021150300.59860-1-Ezra.Sitorus@arm.com>

From: Ezra Sitorus <ezra.sitorus@arm.com>

Add NEWS entry and document new feature in gdb.texinfo.

---
Changes from v1->v3:
* This is new in v3.

Ezra

 gdb/NEWS            | 104 ++++++++++++++++++++++----------------------
 gdb/doc/gdb.texinfo |  71 ++++++++++++++++++++++++++++++
 2 files changed, 124 insertions(+), 51 deletions(-)

diff --git a/gdb/NEWS b/gdb/NEWS
index 01bd1524c7a..75e979b4e9f 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -14,6 +14,8 @@
   this flag is used gdbserver will not escape special shell characters
   within the inferior arguments.
 
+* Support for Floating Point Mode Register (FPMR) in AArch64.
+
 * New targets
 
 GNU/Linux/MicroBlaze (gdbserver) microblazeel-*linux*
@@ -1380,7 +1382,7 @@ AMDGPU amdgcn-*-*
 * New features in the GDB remote stub, GDBserver
 
   ** GDBserver is now supported on LoongArch GNU/Linux.
-  
+
   ** GDBserver is now supported on CSKY GNU/Linux.
 
 * LoongArch floating-point support
@@ -2274,7 +2276,7 @@ pipe -d DELIM COMMAND DELIM SHELL_COMMAND
 
 define-prefix COMMAND
   Define or mark a command as a user-defined prefix command.
-  
+
 with SETTING [VALUE] [-- COMMAND]
 w SETTING [VALUE] [-- COMMAND]
   Temporarily set SETTING, run COMMAND, and restore SETTING.
@@ -3384,7 +3386,7 @@ show disassembler-options
        0x40057b <main(int, char**)+25>:
         callq  0x400536 <Func1(int, char const*)>
 
-* Fortran: Support structures with fields of dynamic types and 
+* Fortran: Support structures with fields of dynamic types and
   arrays of dynamic types.
 
 * The symbol dumping maintenance commands have new syntax.
@@ -3996,7 +3998,7 @@ vforkdone stop reason
   an exec or exit, allowing the vfork parent to resume execution.
 
 fork-events and vfork-events features in qSupported
-  The qSupported packet allows GDB to request support for fork and 
+  The qSupported packet allows GDB to request support for fork and
   vfork events using new 'gdbfeatures' fork-events and vfork-events,
   and the qSupported response can contain the corresponding
   'stubfeatures'.  Set and show commands can be used to display
@@ -4065,7 +4067,7 @@ Itanium running HP-UX         ia64-*-hpux*
   ** You can now add attributes to gdb.Objfile and gdb.Progspace objects.
   ** New function gdb.lookup_objfile.
 
-  New events which are triggered when GDB modifies the state of the 
+  New events which are triggered when GDB modifies the state of the
   inferior.
 
   ** gdb.events.inferior_call_pre: Function call is about to be made.
@@ -4732,7 +4734,7 @@ Tilera TILE-Gx GNU/Linux	tilegx*-*-linux
 
 * New commands (for set/show, see "New options" below)
 
-catch signal 
+catch signal
   Catch signals.  This is similar to "handle", but allows commands and
   conditions to be attached.
 
@@ -4816,14 +4818,14 @@ show debug notification
      "=memory-changed".
   ** The data-disassemble command response will include a "fullname" field
      containing the absolute file name when source has been requested.
-  ** New optional parameter COUNT added to the "-data-write-memory-bytes" 
+  ** New optional parameter COUNT added to the "-data-write-memory-bytes"
      command, to allow pattern filling of memory areas.
   ** New commands "-catch-load"/"-catch-unload" added for intercepting
      library load/unload events.
   ** The response to breakpoint commands and breakpoint async records
      includes an "installed" field containing a boolean state about each
      non-pending tracepoint location is whether installed on target or not.
-  ** Output of the "-trace-status" command includes a "trace-file" field 
+  ** Output of the "-trace-status" command includes a "trace-file" field
      containing the name of the trace file being examined.  This field is
      optional, and only present when examining a trace file.
   ** The "fullname" field is now always present along with the "file" field,
@@ -4880,8 +4882,8 @@ qXfer:btrace:read
   in <http://sourceware.org/systemtap/>.
 
 * GDB now supports reversible debugging on ARM, it allows you to
-  debug basic ARM and THUMB instructions, and provides 
-  record/replay support.  
+  debug basic ARM and THUMB instructions, and provides
+  record/replay support.
 
 * The option "symbol-reloading" has been deleted as it is no longer used.
 
@@ -5193,7 +5195,7 @@ QProgramSignals:
      replaced it.  Additionally, the default for "print-stack" is
      now "message", which just prints the error message without
      the stack trace.
-   
+
   ** A prompt substitution hook (prompt_hook) is now available to the
      Python API.
 
@@ -5220,7 +5222,7 @@ QProgramSignals:
 
   ** A new class "gdb.FinishBreakpoint" is provided to catch the return
      of a function.  This class is based on the "finish" command
-     available in the CLI. 
+     available in the CLI.
 
   ** Type objects for struct and union types now allow access to
      the fields using standard Python dictionary (mapping) methods.
@@ -5397,7 +5399,7 @@ show trace-stop-notes
 * New remote packets
 
 QTEnable
-  
+
   Dynamically enable a tracepoint in a started trace experiment.
 
 QTDisable
@@ -5484,7 +5486,7 @@ Renesas RL78				rl78-*-elf
 
   ** Breakpoints can now be sub-classed in Python, and in particular
      you may implement a 'stop' function that is executed each time
-     the inferior reaches that breakpoint.   
+     the inferior reaches that breakpoint.
 
   ** New function gdb.lookup_global_symbol looks up a global symbol.
 
@@ -5639,8 +5641,8 @@ Analog Devices, Inc. Blackfin Processor	bfin-*
   arguments even if the namespace has not been imported.
   For example:
     namespace A
-      { 
-        class B { }; 
+      {
+        class B { };
         void foo (B) { }
       }
     ...
@@ -6040,7 +6042,7 @@ source
 * New commands (for set/show, see "New options" below)
 
 record save [<FILENAME>]
-  Save a file (in core file format) containing the process record 
+  Save a file (in core file format) containing the process record
   execution log for replay debugging at a later time.
 
 record restore <FILENAME>
@@ -6312,7 +6314,7 @@ qXfer:siginfo:write
 
 * GDB now supports multiple function calling conventions according to the
 DWARF-2 DW_AT_calling_convention function attribute.
-  
+
 * The SH target utilizes the aforementioned change to distinguish between gcc
 and Renesas calling convention.  It also adds the new CLI commands
 `set/show sh calling-convention'.
@@ -6568,7 +6570,7 @@ show multiple-symbols
   The value of this variable can be changed to adjust the debugger behavior
   when an expression or a breakpoint location contains an ambiguous symbol
   name (an overloaded function name, for instance).
-  
+
 set breakpoint always-inserted
 show breakpoint always-inserted
   Keep breakpoints always inserted in the target, as opposed to inserting
@@ -6811,7 +6813,7 @@ vRun
 
 *** Changes in GDB 6.7
 
-* Resolved 101 resource leaks, null pointer dereferences, etc. in gdb, 
+* Resolved 101 resource leaks, null pointer dereferences, etc. in gdb,
 bfd, libiberty and opcodes, as revealed by static analysis donated by
 Coverity, Inc. (http://scan.coverity.com).
 
@@ -6823,7 +6825,7 @@ symbol definition in the current shared library if it was built using the
 recognize the -tui command-line option and print a message that the TUI
 is not supported.
 
-* The GDB remote stub, gdbserver, now has lower overhead for high 
+* The GDB remote stub, gdbserver, now has lower overhead for high
 frequency signals (e.g. SIGALRM) via the QPassSignals packet.
 
 * GDB for MIPS targets now autodetects whether a remote target provides
@@ -6861,7 +6863,7 @@ has been rewritten to use the standard GDB remote protocol.
 layout.  It also supports a TextSeg= and DataSeg= response when only
 segment base addresses (rather than offsets) are available.
 
-* The /i format now outputs any trailing branch delay slot instructions 
+* The /i format now outputs any trailing branch delay slot instructions
 immediately following the last instruction within the count specified.
 
 * The GDB remote protocol "T" stop reply packet now supports a
@@ -7008,7 +7010,7 @@ target ocd
 
 DWARF 1 support
 
-	A debug information format.  The predecessor to DWARF 2 and 
+	A debug information format.  The predecessor to DWARF 2 and
 	DWARF 3, which are still supported.
 
 Support for the HP aCC compiler on HP-UX/PA-RISC
@@ -7127,7 +7129,7 @@ The following commands are presently only implemented for native GNU/Linux:
 
 checkpoint			Save a snapshot of the program state.
 
-restart	<n>			Return the program state to a 
+restart	<n>			Return the program state to a
 				previously saved state.
 
 info checkpoints		List currently saved checkpoints.
@@ -7272,8 +7274,8 @@ continued, we're looking forward to our first translation.
 
 * Ada
 
-Initial support for debugging programs compiled with the GNAT 
-implementation of the Ada programming language has been integrated 
+Initial support for debugging programs compiled with the GNAT
+implementation of the Ada programming language has been integrated
 into GDB.  In this release, support is limited to expression evaluation.
 
 * New native configurations
@@ -7740,7 +7742,7 @@ Fujitsu SPARClite 			sparclite-fujitsu-none  or  sparclite
 
 * REMOVED configurations and files
 
-V850EA ISA				
+V850EA ISA
 Motorola Delta 88000 running Sys V		m88k-motorola-sysv  or  delta88
 IBM AIX PS/2					i[3456]86-*-aix
 i386 running Mach 3.0				i[3456]86-*-mach3*
@@ -7775,7 +7777,7 @@ shared libs like mad''.
 
 * ``gdbserver'' now supports multi-threaded applications on some targets
 
-Support for debugging multi-threaded applications which use  
+Support for debugging multi-threaded applications which use
 the GNU/Linux LinuxThreads package has been added for
 arm*-*-linux*-gnu*, i[3456]86-*-linux*-gnu*, mips*-*-linux*-gnu*,
 powerpc*-*-linux*-gnu*, and sh*-*-linux*-gnu*.
@@ -7890,11 +7892,11 @@ gdb/439: gdb/291: On some ELF object files, gdb was reporting:
 dwarf2read.c:1072: gdb-internal-error: sect_index_text not initialize
 Fix, by Fred Fish, imported from mainline.
 
-Dwarf2 .debug_frame & .eh_frame handler improved in many ways. 
+Dwarf2 .debug_frame & .eh_frame handler improved in many ways.
 Surprisingly enough, it works now.
 By Michal Ludvig, imported from mainline.
 
-i386 hardware watchpoint support: 
+i386 hardware watchpoint support:
 avoid misses on second run for some targets.
 By Pierre Muller, imported from mainline.
 
@@ -7918,18 +7920,18 @@ hosts.  Argument is core file name (defaults to core.<pid>).
 
 * New command line option
 
-GDB now accepts --pid or -p followed by a process id.  
+GDB now accepts --pid or -p followed by a process id.
 
 * Change in command line behavior -- corefiles vs. process ids.
 
-There is a subtle behavior in the way in which GDB handles 
+There is a subtle behavior in the way in which GDB handles
 command line arguments.  The first non-flag argument is always
 a program to debug, but the second non-flag argument may either
 be a corefile or a process id.  Previously, GDB would attempt to
 open the second argument as a corefile, and if that failed, would
 issue a superfluous error message and then attempt to attach it as
-a process.  Now, if the second argument begins with a non-digit, 
-it will be treated as a corefile.  If it begins with a digit, 
+a process.  Now, if the second argument begins with a non-digit,
+it will be treated as a corefile.  If it begins with a digit,
 GDB will attempt to attach it as a process, and if no such process
 is found, will then attempt to open it as a corefile.
 
@@ -7989,7 +7991,7 @@ for the inferior from gdb's command line.
 
 There is a new `operate-and-get-next' function bound to `C-o'.
 
-*** Changes in GDB 5.1.1 
+*** Changes in GDB 5.1.1
 
 Fix compile problem on DJGPP.
 
@@ -8021,7 +8023,7 @@ UltraSparc running GNU/Linux			sparc64-*-linux*
 
 * OBSOLETE configurations and files
 
-x86 FreeBSD before 2.2				i[3456]86*-freebsd{1,2.[01]}*, 
+x86 FreeBSD before 2.2				i[3456]86*-freebsd{1,2.[01]}*,
 Harris/CXUX m88k				m88*-harris-cxux*
 Most ns32k hosts and targets			ns32k-*-mach3* ns32k-umax-*
 						ns32k-utek-sysv* ns32k-utek-*
@@ -8902,7 +8904,7 @@ There is a new hardware breakpoint for the watch command for sparclite
 targets.  See gdb/sparclite/hw_breakpoint.note.
 
 Hardware watchpoints are also now supported under GNU/Linux.
- 
+
 * Annotations
 
 Annotations have been added.  These are for use with graphical interfaces,
@@ -8983,7 +8985,7 @@ for details).
 
 * Improvements in C++ mangling/demangling.
 
-This release has much better g++ debugging, specifically in name 
+This release has much better g++ debugging, specifically in name
 mangling/demangling, virtual function calls, print virtual table,
 call methods, ...etc.
 
@@ -9045,7 +9047,7 @@ Z8000 simulator		  		z8k-zilog-none 	  or z8ksim
 IDT MIPS board over serial line		mips-idt-ecoff
 
 Cross-debugging to GO32 targets is supported.  It requires a custom
-version of the i386-stub.c module which is integrated with the 
+version of the i386-stub.c module which is integrated with the
 GO32 memory extender.
 
  * New remote protocols
@@ -9666,7 +9668,7 @@ encapulation, but the details have not been worked out yet.
  *  Improved configuration
 
 Only one copy of `configure' exists now, and it is not self-modifying.
-Porting BFD is simpler.  
+Porting BFD is simpler.
 
  *  Stepping improved
 
@@ -9768,7 +9770,7 @@ stub on the target system.
 
 New CPUs supported include the AMD 29000 and Intel 960.
 
-GDB now reads object files and symbol tables via a ``binary file'' 
+GDB now reads object files and symbol tables via a ``binary file''
 library, which allows a single copy of GDB to debug programs of multiple
 object file types such as a.out and coff.
 
@@ -9794,27 +9796,27 @@ confirm on/off:  Enables warning questions for operations that are
 		 hard to recover from, e.g. rerunning the program while
 		 it is already running.  Default is ON.
 
-editing on/off:  Enables EMACS style command line editing 
-                 of input.  Previous lines can be recalled with 
+editing on/off:  Enables EMACS style command line editing
+                 of input.  Previous lines can be recalled with
 		 control-P, the current line can be edited with control-B,
 		 you can search for commands with control-R, etc.
 		 Default is ON.
 
-history filename NAME:  NAME is where the gdb command history 
+history filename NAME:  NAME is where the gdb command history
 			will be stored.  The default is .gdb_history,
 			or the value of the environment variable
 			GDBHISTFILE.
 
-history size N:  The size, in commands, of the command history.  The 
+history size N:  The size, in commands, of the command history.  The
 		 default is 256, or the value of the environment variable
 		 HISTSIZE.
 
 history save on/off: If this value is set to ON, the history file will
-		      be saved after exiting gdb.  If set to OFF, the 
+		      be saved after exiting gdb.  If set to OFF, the
 		      file will not be saved.  The default is OFF.
 
-history expansion on/off: If this value is set to ON, then csh-like 
-			  history expansion will be performed  on 
+history expansion on/off: If this value is set to ON, then csh-like
+			  history expansion will be performed  on
 			  command line input.  The default is OFF.
 
 radix N:  Sets the default radix for input and output.  It can be set
@@ -9839,7 +9841,7 @@ print address on/off:  Print memory addresses in various command displays,
 		      more ``symbolic'' if you turn this off; it looks more
 		      ``machine level'' with it on.  Default is ON.
 
-print array on/off:  Prettyprint arrays.  New convenient format!  Default 
+print array on/off:  Prettyprint arrays.  New convenient format!  Default
                     is OFF.
 
 print demangle on/off:   Print C++ symbols in "source" form if on,
@@ -9870,7 +9872,7 @@ from dynamically linked programs), gdb reads the symbols from each
 shared library when you type the ``sharedlibrary'' command.
 It can be abbreviated ``share''.
 
-sharedlibrary REGEXP:  Load shared object library symbols for files 
+sharedlibrary REGEXP:  Load shared object library symbols for files
                        matching a unix regular expression.  No argument
 		       indicates to load symbols for all shared libraries.
 
@@ -9938,7 +9940,7 @@ find your source file in the current directory, type "dir .".
 For normal use, type ``./configure host''.  See README or gdb.texinfo
 for more details.
 
-GDB now handles cross debugging.  If you are remotely debugging between 
+GDB now handles cross debugging.  If you are remotely debugging between
 two different machines, type ``./configure host -target=targ''.
 Host is the machine where GDB will run; targ is the machine
 where the program that you are debugging will run.
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index 676143be416..0ec1b92d7c3 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -27080,6 +27080,26 @@ Program received signal SIGSEGV, Segmentation fault
 Guarded Control Stack error.
 @end smallexample
 
+@subsubsection AArch64 Floating Point Mode Register
+@cindex Floating Point Mode Register, AArch64
+@cindex FPMR, AArch64
+
+When @value{GDBN} is debugging the AArch64 architecture and the Floating Point
+Mode Register (FPMR) is available, then @value{GDBN} will make the @code{fpmr}
+available. This register determines the behaviour of FP8 instructions.
+
+To aid debugging, @value{GDBN} interprets the mode or value of each field in
+@code{fpmr}.
+
+@smallexample
+p $fpmr
+$1 = [ F8S1=E5M2 F8S2=E5M2 F8D=E5M2 OSM=Inf OSC=Inf/NaN LSCALE=0 NSCALE=0 LSCALE2=0 ]
+@end smallexample
+
+For more information about FPMR, please refer to the official
+@uref{https://developer.arm.com/documentation/ddi0601/latest,ignored,
+architecture registers documentation}.
+
 @node x86
 @subsection x86
 
@@ -49770,6 +49790,57 @@ documentation} in the Linux kernel.
 Extra registers are allowed in these features, but they will not affect
 @value{GDBN}.
 
+@subsubsection AArch64 FPMR feature
+
+The @samp{org.gnu.gdb.aarch64.fpmr} optional feature was introduced so
+@value{GDBN} could detect support for the Floating Point Mode Register
+extension.  If present, this feature must have the following register:
+
+@itemize @minus
+@item
+@samp{fpmr}, the tag control register.  It is represented as if it were a 64-bit
+register with a custom flags type.
+@end itemize
+
+The custom flags type allows @value{GDBN} to print a human-friendly
+representation of the contents of @code{fpmr} should contain:
+
+@itemize @minus
+
+@item
+@code{F8S1}, which is either @code{E5M2} or @code{E4M3}
+
+@item
+@code{F8S2}, which is either @code{E5M2} or @code{E4M3}
+
+@item
+@code{F8D}, which is either @code{E5M2} or @code{E4M3}
+
+@item
+@code{OSM}, which is either @code{Inf} or @code{MaxNormal}
+
+@item
+@code{OSC}, which is either @code{Inf/NaN} or @code{MaxNormal}
+
+@item
+@code{LSCALE}, which is a 7-bit unsigned value
+
+@item
+@code{NSCALE}, which is actually an 8-bit signed value but represented as an
+8-bit unsigned value
+
+@item
+@code{LSCALE2}, which is a 6-bit unsigned value
+
+@end itemize
+
+Extra registers are allowed in this feature, but they will not affect
+@value{GDBN}.
+
+For more information about FPMR, please refer to the official
+@uref{https://developer.arm.com/documentation/ddi0601/latest,ignored,
+architecture registers documentation}.
+
 @node Alpha Features
 @subsection Alpha Features
 @cindex target descriptions, Alpha Features
-- 
2.45.2


  parent reply	other threads:[~2025-10-21 15:04 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-21 15:02 [PATCH v3 0/6] gdb/aarch64: Support for FPMR Ezra.Sitorus
2025-10-21 15:02 ` [PATCH v3 1/6] gdb/aarch64: Enable FPMR for AArch64 in gdb on Linux Ezra.Sitorus
2025-10-27 22:32   ` Luis
2025-10-21 15:02 ` [PATCH v3 2/6] gdbserver/aarch64: Enable FPMR for AArch64 in gdbserver " Ezra.Sitorus
2025-10-27 22:26   ` Luis
2025-10-21 15:02 ` [PATCH v3 3/6] gdb/aarch64: signal frame support for fpmr Ezra.Sitorus
2025-10-27 22:25   ` Luis
2025-10-21 15:02 ` [PATCH v3 4/6] gdb/aarch64: core file support for FPMR Ezra.Sitorus
2025-10-27 22:23   ` Luis
2025-10-21 15:02 ` [PATCH v3 5/6] gdb/aarch64: Tests " Ezra.Sitorus
2025-10-27 22:19   ` Luis
2025-10-21 15:03 ` Ezra.Sitorus [this message]
2025-10-21 15:35   ` [PATCH v3 6/6] gdb/doc: Document AArch64 FPMR support Eli Zaretskii
2025-10-22  9:25     ` Ezra Sitorus
2025-10-22 11:53       ` Eli Zaretskii
2025-10-27 22:08   ` Luis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20251021150300.59860-7-Ezra.Sitorus@arm.com \
    --to=ezra.sitorus@arm.com \
    --cc=gdb-patches@sourceware.org \
    --cc=luis.machado.foss@gmail.com \
    --cc=thiago.bauermann@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox