Add some new DW_IDX_* constants

Message ID 20231209205653.3930232-1-tom@tromey.com
State New
Headers
Series Add some new DW_IDX_* constants |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_gdb_build--master-aarch64 success Testing passed
linaro-tcwg-bot/tcwg_gdb_build--master-arm success Testing passed
linaro-tcwg-bot/tcwg_gdb_check--master-aarch64 success Testing passed
linaro-tcwg-bot/tcwg_gdb_check--master-arm warning Patch is already merged

Commit Message

Tom Tromey Dec. 9, 2023, 8:56 p.m. UTC
  I've reimplemented the .debug_names code in GDB -- it was quite far
from being correct, and the new implementation is much closer to what
is specified by DWARF.

However, the new writer in GDB needs to emit some symbol properties,
so that the reader can be fully functional.  This patch adds a few new
DW_IDX_* constants, and tries to document the existing extensions as
well.  (My patch series add more documentation of these to the GDB
manual as well.)
---
 include/dwarf2.def | 9 +++++++++
 1 file changed, 9 insertions(+)
  

Comments

Jakub Jelinek Dec. 9, 2023, 10:03 p.m. UTC | #1
On Sat, Dec 09, 2023 at 01:56:53PM -0700, Tom Tromey wrote:
> I've reimplemented the .debug_names code in GDB -- it was quite far
> from being correct, and the new implementation is much closer to what
> is specified by DWARF.
> 
> However, the new writer in GDB needs to emit some symbol properties,
> so that the reader can be fully functional.  This patch adds a few new
> DW_IDX_* constants, and tries to document the existing extensions as
> well.  (My patch series add more documentation of these to the GDB
> manual as well.)

LGTM for GCC (but it needs a ChangeLog entry).

> diff --git a/include/dwarf2.def b/include/dwarf2.def
> index 7ab3ee611fd4..75b75d901884 100644
> --- a/include/dwarf2.def
> +++ b/include/dwarf2.def
> @@ -802,8 +802,17 @@ DW_IDX (DW_IDX_parent, 4)
>  DW_IDX (DW_IDX_type_hash, 5)
>  DW_IDX_DUP (DW_IDX_lo_user, 0x2000)
>  DW_IDX (DW_IDX_hi_user, 0x3fff)
> +/* Internal linkage.  A flag.  */
>  DW_IDX (DW_IDX_GNU_internal, 0x2000)
> +/* External linkage.  A flag.  Note that gdb no longer generates this;
> +   the default is to assume external linkage.  */
>  DW_IDX (DW_IDX_GNU_external, 0x2001)
> +/* This entry is the program's entry point.  A flag.  */
> +DW_IDX (DW_IDX_GNU_main, 0x2002)
> +/* Language for this entry.  A DW_LANG_* value.  */
> +DW_IDX (DW_IDX_GNU_language, 0x2003)
> +/* This entry is a linkage name.  A flag.  */
> +DW_IDX (DW_IDX_GNU_linkage_name, 0x2004)
>  DW_END_IDX
>  
>  /* DWARF5 Unit type header encodings  */
> -- 
> 2.43.0

	Jakub
  
Tom Tromey Dec. 10, 2023, 8:59 p.m. UTC | #2
>>>>> "Jakub" == Jakub Jelinek <jakub@redhat.com> writes:

Jakub> LGTM for GCC (but it needs a ChangeLog entry).

Oops, yeah -- I am out of the habit of writing those.
I'll add one before I push this.

Tom
  

Patch

diff --git a/include/dwarf2.def b/include/dwarf2.def
index 7ab3ee611fd4..75b75d901884 100644
--- a/include/dwarf2.def
+++ b/include/dwarf2.def
@@ -802,8 +802,17 @@  DW_IDX (DW_IDX_parent, 4)
 DW_IDX (DW_IDX_type_hash, 5)
 DW_IDX_DUP (DW_IDX_lo_user, 0x2000)
 DW_IDX (DW_IDX_hi_user, 0x3fff)
+/* Internal linkage.  A flag.  */
 DW_IDX (DW_IDX_GNU_internal, 0x2000)
+/* External linkage.  A flag.  Note that gdb no longer generates this;
+   the default is to assume external linkage.  */
 DW_IDX (DW_IDX_GNU_external, 0x2001)
+/* This entry is the program's entry point.  A flag.  */
+DW_IDX (DW_IDX_GNU_main, 0x2002)
+/* Language for this entry.  A DW_LANG_* value.  */
+DW_IDX (DW_IDX_GNU_language, 0x2003)
+/* This entry is a linkage name.  A flag.  */
+DW_IDX (DW_IDX_GNU_linkage_name, 0x2004)
 DW_END_IDX
 
 /* DWARF5 Unit type header encodings  */