Fix handling of DW_OP_GNU_push_tls_address

Message ID 20240117122154.2880311-1-tromey@adacore.com
State New
Headers
Series Fix handling of DW_OP_GNU_push_tls_address |

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-arm success Testing passed
linaro-tcwg-bot/tcwg_gdb_check--master-aarch64 success Testing passed

Commit Message

Tom Tromey Jan. 17, 2024, 12:21 p.m. UTC
  In one spot, DW_OP_GNU_push_tls_address is handled differently from
DW_OP_form_tls_address.  However, I think they should always be
treated identically.
---
 gdb/dwarf2/loc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Kevin Buettner Jan. 19, 2024, 10:34 p.m. UTC | #1
On Wed, 17 Jan 2024 05:21:54 -0700
Tom Tromey <tromey@adacore.com> wrote:

> In one spot, DW_OP_GNU_push_tls_address is handled differently from
> DW_OP_form_tls_address.  However, I think they should always be
> treated identically.

I agree.

Approved-by: Kevin Buettner <kevinb@redhat.com>
  

Patch

diff --git a/gdb/dwarf2/loc.c b/gdb/dwarf2/loc.c
index 062bd12909f..6cc9cc62650 100644
--- a/gdb/dwarf2/loc.c
+++ b/gdb/dwarf2/loc.c
@@ -1955,12 +1955,12 @@  dwarf2_get_symbol_read_needs (gdb::array_view<const gdb_byte> expr,
 	case DW_OP_lt:
 	case DW_OP_gt:
 	case DW_OP_ne:
-	case DW_OP_GNU_push_tls_address:
 	case DW_OP_nop:
 	case DW_OP_GNU_uninit:
 	case DW_OP_push_object_address:
 	  break;
 
+	case DW_OP_GNU_push_tls_address:
 	case DW_OP_form_tls_address:
 	  if (symbol_needs <= SYMBOL_NEEDS_REGISTERS)
 	    symbol_needs = SYMBOL_NEEDS_REGISTERS;