This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[commit] gdb_bytize some DWARF 2 stuff


These files were doing lots of byte buffer manipulations, using
mixtures of `char *' and `unsigned char *'.  This patch properly
gdb_bytizes things, eleminating quite a few warnings with GCC 4,x.
There are still two warnings left in dwarf2-frame.c, but those are
related to code in dwarf2read.c that I don't want to touch now.  This
patch is large enough as it is now.

Committed as obvious,

Mark

Index: ChangeLog
from  Mark Kettenis  <kettenis@openbsd.localdomain>

	* dwarf2expr.h: Tweak comment.
	(struct dwarf_expr_context): Use `gdb_byte *' in read_mem and
	get_frame_base function pointers.
	(read_uleb128, read_sleb128): Change return type and types of
	first two arguments to `gdb_byte *'.
	(dwarf2_read_address): Change types of first two arguments to
	`gdb_byte *'.
	* dwarf2expr.c: Tweak comment.
	(dwarf_expr_eval): Change type of second argument to `gdb_byte *'.
	(read_uleb128, read_sleb128): Change return type and types of
	first two arguments to `gdb_byte *'.
	(dwarf2_read_address): Change types of first two arguments to
	`gdb_byte *'.
	(execute_stack_op): Change types of last two arguments to
	`gdb_byte *'.  Use `gdb_byte *' for byte buffers.
	* dwarf2loc.h: Tweak comment.
	(struct dwarf2_locexpr_baton, struct dwarf2_loclist_baton): Use
	`gdb_byte *' for byte buffers.
	* dwarf2loc.c (find_location_expression): Change return type to
	`gdb_byte *'.  Use `gdb_byte *' for byte buffers.  Change length
	to `unsigned int'.
	(dwarf_expr_read_reg): Use `gdb_byte *' for byte buffer.  Remove
	bogus cast.
	(dwarf_expr_read_mem): Change type of second argument to
	`gdb_byte *'.
	(dwarf_expr_frame_base): Change type of second argument to
	`gdb_byte **'.
	(dwarf2_evaluate_loc_desc): Change type of third argument to
	`gdb_byte *'.
	(needs_frame_read_mem): Change type of second argument to
	`gdb_byte *'.
	(needs_frame_frame_base): Change type of second argument
	`gdb_byte **'.  Use gdb_byte for lit0.
	(dwarf2_tracepoint_var_ref): Change type of fourth argument to
	`gdb_byte *'.  Use `gdb_byte *' for byte buffer.
	(loclist_read_variable, loclist_tracepoint_var_ref): Use `gdb_byte
	*' for byte buffer.
	* dwarf2-frame.c (struct dwarf2_cie, struct dwarf2_fde)
	(struct dwarf2_frame_state): Use gdb_byte instead of `unsigned
	char'.
	(read_reg): Use `gdb_byte *' for byte buffers.  Remove redundant
	cast.
	(read_mem): Change second argument to `gdb_byte *'.
	(no_get_frame_base): Change second argument to `gdb_byte **'.
	(execute_stack_op): Change first argument to `gdb_byte *'.
	(execute_cfa_program): Change first two arguments to `gdb_byte *'.
	Use gdb_byte instead of `unsigned int'.  Use temprorary variable
	to store result of read_uleb128.
	(struct comp_unit): Use `gdb_byte *' for byte buffers.
	(read_1_byte, read_4_bytes, read_8_bytes): Change last argument to
	`gdb_byte *'.
	(read_unsigned_leb128, read_signed_leb128): Change second argument
	to `gdb_byte *'.  Use gdb_byte instead of `unsigned char'.
	(read_initial_length): Change second argument to `gdb_byte *'.
	Remove redundant casts.
	(read_encoded_value): Use gdb_byte instead of `unsigned char'.
	Remove bogus casts.
	(decode_frame_entry_1): Change return type and second argument to
	`gdb_byte *'.  Use `gdb_byte *' for byte buffers.  Use gdb_byte
	instead of `unsigned char'.
	(decode_frame_entry): Change return type and second argument to
	`gdb_byte *'.  Use `gdb_byte *' for byte buffers.
	(dwarf2_build_frame_info): Use `gdb_byte *' for byte buffers.

Index: dwarf2-frame.c
===================================================================
RCS file: /cvs/src/src/gdb/dwarf2-frame.c,v
retrieving revision 1.52
diff -u -p -r1.52 dwarf2-frame.c
--- dwarf2-frame.c 28 May 2005 16:44:28 -0000 1.52
+++ dwarf2-frame.c 12 Jul 2005 13:02:38 -0000
@@ -60,11 +60,11 @@ struct dwarf2_cie
   ULONGEST return_address_register;
 
   /* Instruction sequence to initialize a register set.  */
-  unsigned char *initial_instructions;
-  unsigned char *end;
+  gdb_byte *initial_instructions;
+  gdb_byte *end;
 
   /* Encoding of addresses.  */
-  unsigned char encoding;
+  gdb_byte encoding;
 
   /* True if a 'z' augmentation existed.  */
   unsigned char saw_z_augmentation;
@@ -86,8 +86,8 @@ struct dwarf2_fde
   CORE_ADDR address_range;
 
   /* Instruction sequence.  */
-  unsigned char *instructions;
-  unsigned char *end;
+  gdb_byte *instructions;
+  gdb_byte *end;
 
   struct dwarf2_fde *next;
 };
@@ -112,7 +112,7 @@ struct dwarf2_frame_state
 
   LONGEST cfa_offset;
   ULONGEST cfa_reg;
-  unsigned char *cfa_exp;
+  gdb_byte *cfa_exp;
   enum {
     CFA_UNSET,
     CFA_REG_OFFSET,
@@ -208,23 +208,23 @@ read_reg (void *baton, int reg)
   struct frame_info *next_frame = (struct frame_info *) baton;
   struct gdbarch *gdbarch = get_frame_arch (next_frame);
   int regnum;
-  char *buf;
+  gdb_byte *buf;
 
   regnum = DWARF2_REG_TO_REGNUM (reg);
 
-  buf = (char *) alloca (register_size (gdbarch, regnum));
+  buf = alloca (register_size (gdbarch, regnum));
   frame_unwind_register (next_frame, regnum, buf);
   return extract_typed_address (buf, builtin_type_void_data_ptr);
 }
 
 static void
-read_mem (void *baton, char *buf, CORE_ADDR addr, size_t len)
+read_mem (void *baton, gdb_byte *buf, CORE_ADDR addr, size_t len)
 {
   read_memory (addr, buf, len);
 }
 
 static void
-no_get_frame_base (void *baton, unsigned char **start, size_t *length)
+no_get_frame_base (void *baton, gdb_byte **start, size_t *length)
 {
   internal_error (__FILE__, __LINE__,
 		  _("Support for DW_OP_fbreg is unimplemented"));
@@ -238,7 +238,7 @@ no_get_tls_address (void *baton, CORE_AD
 }
 
 static CORE_ADDR
-execute_stack_op (unsigned char *exp, ULONGEST len,
+execute_stack_op (gdb_byte *exp, ULONGEST len,
 		  struct frame_info *next_frame, CORE_ADDR initial)
 {
   struct dwarf_expr_context *ctx;
@@ -265,7 +265,7 @@ execute_stack_op (unsigned char *exp, UL
 
 
 static void
-execute_cfa_program (unsigned char *insn_ptr, unsigned char *insn_end,
+execute_cfa_program (gdb_byte *insn_ptr, gdb_byte *insn_end,
 		     struct frame_info *next_frame,
 		     struct dwarf2_frame_state *fs)
 {
@@ -274,7 +274,7 @@ execute_cfa_program (unsigned char *insn
 
   while (insn_ptr < insn_end && fs->pc <= pc)
     {
-      unsigned char insn = *insn_ptr++;
+      gdb_byte insn = *insn_ptr++;
       ULONGEST utmp, reg;
       LONGEST offset;
 
@@ -399,7 +399,8 @@ bad CFI data; mismatched DW_CFA_restore_
 	      break;
 
 	    case DW_CFA_def_cfa_offset:
-	      insn_ptr = read_uleb128 (insn_ptr, insn_end, &fs->cfa_offset);
+	      insn_ptr = read_uleb128 (insn_ptr, insn_end, &utmp);
+	      fs->cfa_offset = utmp;
 	      /* cfa_how deliberately not set.  */
 	      break;
 
@@ -1020,7 +1021,7 @@ struct comp_unit
   struct dwarf2_cie *cie;
 
   /* Pointer to the .debug_frame section loaded into memory.  */
-  char *dwarf_frame_buffer;
+  gdb_byte *dwarf_frame_buffer;
 
   /* Length of the loaded .debug_frame section.  */
   unsigned long dwarf_frame_size;
@@ -1038,30 +1039,30 @@ struct comp_unit
 const struct objfile_data *dwarf2_frame_objfile_data;
 
 static unsigned int
-read_1_byte (bfd *bfd, char *buf)
+read_1_byte (bfd *abfd, gdb_byte *buf)
 {
-  return bfd_get_8 (abfd, (bfd_byte *) buf);
+  return bfd_get_8 (abfd, buf);
 }
 
 static unsigned int
-read_4_bytes (bfd *abfd, char *buf)
+read_4_bytes (bfd *abfd, gdb_byte *buf)
 {
-  return bfd_get_32 (abfd, (bfd_byte *) buf);
+  return bfd_get_32 (abfd, buf);
 }
 
 static ULONGEST
-read_8_bytes (bfd *abfd, char *buf)
+read_8_bytes (bfd *abfd, gdb_byte *buf)
 {
-  return bfd_get_64 (abfd, (bfd_byte *) buf);
+  return bfd_get_64 (abfd, buf);
 }
 
 static ULONGEST
-read_unsigned_leb128 (bfd *abfd, char *buf, unsigned int *bytes_read_ptr)
+read_unsigned_leb128 (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr)
 {
   ULONGEST result;
   unsigned int num_read;
   int shift;
-  unsigned char byte;
+  gdb_byte byte;
 
   result = 0;
   shift = 0;
@@ -1083,12 +1084,12 @@ read_unsigned_leb128 (bfd *abfd, char *b
 }
 
 static LONGEST
-read_signed_leb128 (bfd *abfd, char *buf, unsigned int *bytes_read_ptr)
+read_signed_leb128 (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr)
 {
   LONGEST result;
   int shift;
   unsigned int num_read;
-  unsigned char byte;
+  gdb_byte byte;
 
   result = 0;
   shift = 0;
@@ -1113,14 +1114,14 @@ read_signed_leb128 (bfd *abfd, char *buf
 }
 
 static ULONGEST
-read_initial_length (bfd *abfd, char *buf, unsigned int *bytes_read_ptr)
+read_initial_length (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr)
 {
   LONGEST result;
 
-  result = bfd_get_32 (abfd, (bfd_byte *) buf);
+  result = bfd_get_32 (abfd, buf);
   if (result == 0xffffffff)
     {
-      result = bfd_get_64 (abfd, (bfd_byte *) buf + 4);
+      result = bfd_get_64 (abfd, buf + 4);
       *bytes_read_ptr = 12;
     }
   else
@@ -1146,7 +1147,7 @@ read_initial_length (bfd *abfd, char *bu
    position in the FDE, ...).  Bit 7, indicates that the address
    should be dereferenced.  */
 
-static unsigned char
+static gdb_byte
 encoding_for_size (unsigned int size)
 {
   switch (size)
@@ -1163,7 +1164,7 @@ encoding_for_size (unsigned int size)
 }
 
 static unsigned int
-size_of_encoded_value (unsigned char encoding)
+size_of_encoded_value (gdb_byte encoding)
 {
   if (encoding == DW_EH_PE_omit)
     return 0;
@@ -1184,8 +1185,8 @@ size_of_encoded_value (unsigned char enc
 }
 
 static CORE_ADDR
-read_encoded_value (struct comp_unit *unit, unsigned char encoding,
-		    unsigned char *buf, unsigned int *bytes_read_ptr)
+read_encoded_value (struct comp_unit *unit, gdb_byte encoding,
+		    gdb_byte *buf, unsigned int *bytes_read_ptr)
 {
   int ptr_len = size_of_encoded_value (DW_EH_PE_absptr);
   ptrdiff_t offset;
@@ -1206,7 +1207,7 @@ read_encoded_value (struct comp_unit *un
       break;
     case DW_EH_PE_pcrel:
       base = bfd_get_section_vma (unit->bfd, unit->dwarf_frame_section);
-      base += ((char *) buf - unit->dwarf_frame_buffer);
+      base += (buf - unit->dwarf_frame_buffer);
       break;
     case DW_EH_PE_datarel:
       base = unit->dbase;
@@ -1224,7 +1225,7 @@ read_encoded_value (struct comp_unit *un
       break;
     case DW_EH_PE_aligned:
       base = 0;
-      offset = (char *) buf - unit->dwarf_frame_buffer;
+      offset = buf - unit->dwarf_frame_buffer;
       if ((offset % ptr_len) != 0)
 	{
 	  *bytes_read_ptr = ptr_len - (offset % ptr_len);
@@ -1243,7 +1244,7 @@ read_encoded_value (struct comp_unit *un
     case DW_EH_PE_uleb128:
       {
 	ULONGEST value;
-	unsigned char *end_buf = buf + (sizeof (value) + 1) * 8 / 7;
+	gdb_byte *end_buf = buf + (sizeof (value) + 1) * 8 / 7;
 	*bytes_read_ptr += read_uleb128 (buf, end_buf, &value) - buf;
 	return base + value;
       }
@@ -1259,7 +1260,7 @@ read_encoded_value (struct comp_unit *un
     case DW_EH_PE_sleb128:
       {
 	LONGEST value;
-	char *end_buf = buf + (sizeof (value) + 1) * 8 / 7;
+	gdb_byte *end_buf = buf + (sizeof (value) + 1) * 8 / 7;
 	*bytes_read_ptr += read_sleb128 (buf, end_buf, &value) - buf;
 	return base + value;
       }
@@ -1353,21 +1354,20 @@ add_fde (struct comp_unit *unit, struct 
 #define DW64_CIE_ID ~0
 #endif
 
-static char *decode_frame_entry (struct comp_unit *unit, char *start,
-				 int eh_frame_p);
+static gdb_byte *decode_frame_entry (struct comp_unit *unit, gdb_byte *start,
+				     int eh_frame_p);
 
 /* Decode the next CIE or FDE.  Return NULL if invalid input, otherwise
    the next byte to be processed.  */
-static char *
-decode_frame_entry_1 (struct comp_unit *unit, char *start, int eh_frame_p)
+static gdb_byte *
+decode_frame_entry_1 (struct comp_unit *unit, gdb_byte *start, int eh_frame_p)
 {
-  char *buf;
+  gdb_byte *buf, *end;
   LONGEST length;
   unsigned int bytes_read;
   int dwarf64_p;
   ULONGEST cie_id;
   ULONGEST cie_pointer;
-  char *end;
 
   buf = start;
   length = read_initial_length (unit->abfd, buf, &bytes_read);
@@ -1434,8 +1434,8 @@ decode_frame_entry_1 (struct comp_unit *
       buf += 1;
 
       /* Interpret the interesting bits of the augmentation.  */
-      augmentation = buf;
-      buf = augmentation + strlen (augmentation) + 1;
+      augmentation = (char *) buf;
+      buf += (strlen (augmentation) + 1);
 
       /* The GCC 2.x "eh" augmentation has a pointer immediately
          following the augmentation string, so it must be handled
@@ -1499,7 +1499,7 @@ decode_frame_entry_1 (struct comp_unit *
 	  else if (*augmentation == 'P')
 	    {
 	      /* Skip.  Avoid indirection since we throw away the result.  */
-	      unsigned char encoding = (*buf++) & ~DW_EH_PE_indirect;
+	      gdb_byte encoding = (*buf++) & ~DW_EH_PE_indirect;
 	      read_encoded_value (unit, encoding, buf, &bytes_read);
 	      buf += bytes_read;
 	      augmentation++;
@@ -1587,11 +1587,11 @@ decode_frame_entry_1 (struct comp_unit *
 }
 
 /* Read a CIE or FDE in BUF and decode it.  */
-static char *
-decode_frame_entry (struct comp_unit *unit, char *start, int eh_frame_p)
+static gdb_byte *
+decode_frame_entry (struct comp_unit *unit, gdb_byte *start, int eh_frame_p)
 {
   enum { NONE, ALIGN4, ALIGN8, FAIL } workaround = NONE;
-  char *ret;
+  gdb_byte *ret;
   const char *msg;
   ptrdiff_t start_offset;
 
@@ -1693,7 +1693,7 @@ void
 dwarf2_build_frame_info (struct objfile *objfile)
 {
   struct comp_unit unit;
-  char *frame_ptr;
+  gdb_byte *frame_ptr;
 
   /* Build a minimal decoding of the DWARF2 compilation unit.  */
   unit.abfd = objfile->obfd;
Index: dwarf2expr.c
===================================================================
RCS file: /cvs/src/src/gdb/dwarf2expr.c,v
retrieving revision 1.15
diff -u -p -r1.15 dwarf2expr.c
--- dwarf2expr.c 11 Feb 2005 18:13:49 -0000 1.15
+++ dwarf2expr.c 12 Jul 2005 13:02:38 -0000
@@ -1,5 +1,7 @@
-/* Dwarf2 Expression Evaluator
-   Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
+/* DWARF 2 Expression Evaluator.
+
+   Copyright 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+
    Contributed by Daniel Berlin (dan@dberlin.org)
 
    This file is part of GDB.
@@ -30,7 +32,7 @@
 /* Local prototypes.  */
 
 static void execute_stack_op (struct dwarf_expr_context *,
-			      unsigned char *, unsigned char *);
+			      gdb_byte *, gdb_byte *);
 
 /* Create a new context for the expression evaluator.  */
 
@@ -130,8 +132,7 @@ add_piece (struct dwarf_expr_context *ct
    CTX.  */
 
 void
-dwarf_expr_eval (struct dwarf_expr_context *ctx, unsigned char *addr,
-		 size_t len)
+dwarf_expr_eval (struct dwarf_expr_context *ctx, gdb_byte *addr, size_t len)
 {
   execute_stack_op (ctx, addr, addr + len);
 }
@@ -140,12 +141,12 @@ dwarf_expr_eval (struct dwarf_expr_conte
    by R, and return the new value of BUF.  Verify that it doesn't extend
    past BUF_END.  */
 
-unsigned char *
-read_uleb128 (unsigned char *buf, unsigned char *buf_end, ULONGEST * r)
+gdb_byte *
+read_uleb128 (gdb_byte *buf, gdb_byte *buf_end, ULONGEST * r)
 {
   unsigned shift = 0;
   ULONGEST result = 0;
-  unsigned char byte;
+  gdb_byte byte;
 
   while (1)
     {
@@ -166,12 +167,12 @@ read_uleb128 (unsigned char *buf, unsign
    by R, and return the new value of BUF.  Verify that it doesn't extend
    past BUF_END.  */
 
-unsigned char *
-read_sleb128 (unsigned char *buf, unsigned char *buf_end, LONGEST * r)
+gdb_byte *
+read_sleb128 (gdb_byte *buf, gdb_byte *buf_end, LONGEST * r)
 {
   unsigned shift = 0;
   LONGEST result = 0;
-  unsigned char byte;
+  gdb_byte byte;
 
   while (1)
     {
@@ -196,7 +197,7 @@ read_sleb128 (unsigned char *buf, unsign
    number of bytes read from BUF.  */
 
 CORE_ADDR
-dwarf2_read_address (unsigned char *buf, unsigned char *buf_end, int *bytes_read)
+dwarf2_read_address (gdb_byte *buf, gdb_byte *buf_end, int *bytes_read)
 {
   CORE_ADDR result;
 
@@ -252,8 +253,8 @@ signed_address_type (void)
    evaluate the expression between OP_PTR and OP_END.  */
 
 static void
-execute_stack_op (struct dwarf_expr_context *ctx, unsigned char *op_ptr,
-		  unsigned char *op_end)
+execute_stack_op (struct dwarf_expr_context *ctx,
+		  gdb_byte *op_ptr, gdb_byte *op_end)
 {
   ctx->in_reg = 0;
 
@@ -449,7 +450,7 @@ execute_stack_op (struct dwarf_expr_cont
 	  break;
 	case DW_OP_fbreg:
 	  {
-	    unsigned char *datastart;
+	    gdb_byte *datastart;
 	    size_t datalen;
 	    unsigned int before_stack_len;
 
@@ -519,7 +520,7 @@ execute_stack_op (struct dwarf_expr_cont
 	    {
 	    case DW_OP_deref:
 	      {
-		char *buf = alloca (TARGET_ADDR_BIT / TARGET_CHAR_BIT);
+		gdb_byte *buf = alloca (TARGET_ADDR_BIT / TARGET_CHAR_BIT);
 		int bytes_read;
 
 		(ctx->read_mem) (ctx->baton, buf, result,
@@ -533,7 +534,7 @@ execute_stack_op (struct dwarf_expr_cont
 
 	    case DW_OP_deref_size:
 	      {
-		char *buf = alloca (TARGET_ADDR_BIT / TARGET_CHAR_BIT);
+		gdb_byte *buf = alloca (TARGET_ADDR_BIT / TARGET_CHAR_BIT);
 		int bytes_read;
 
 		(ctx->read_mem) (ctx->baton, buf, result, *op_ptr++);
Index: dwarf2expr.h
===================================================================
RCS file: /cvs/src/src/gdb/dwarf2expr.h,v
retrieving revision 1.6
diff -u -p -r1.6 dwarf2expr.h
--- dwarf2expr.h 24 Aug 2004 21:01:49 -0000 1.6
+++ dwarf2expr.h 12 Jul 2005 13:02:38 -0000
@@ -1,6 +1,9 @@
-/* Dwarf2 Expression Evaluator
-   Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
-   Contributed by Daniel Berlin (dan@dberlin.org)
+/* DWARF 2 Expression Evaluator.
+
+   Copyright 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+
+   Contributed by Daniel Berlin <dan@dberlin.org>.
+
    This file is part of GDB.
 
    This program is free software; you can redistribute it and/or modify
@@ -40,14 +43,12 @@ struct dwarf_expr_context
   CORE_ADDR (*read_reg) (void *baton, int regnum);
 
   /* Read LENGTH bytes at ADDR into BUF.  */
-  void (*read_mem) (void *baton, char *buf, CORE_ADDR addr,
-		    size_t length);
+  void (*read_mem) (void *baton, gdb_byte *buf, CORE_ADDR addr, size_t length);
 
   /* Return the location expression for the frame base attribute, in
      START and LENGTH.  The result must be live until the current
      expression evaluation is complete.  */
-  void (*get_frame_base) (void *baton, unsigned char **start,
-			 size_t *length);
+  void (*get_frame_base) (void *baton, gdb_byte **start, size_t *length);
 
   /* Return the thread-local storage address for
      DW_OP_GNU_push_tls_address.  */
@@ -129,11 +130,9 @@ void dwarf_expr_eval (struct dwarf_expr_
 CORE_ADDR dwarf_expr_fetch (struct dwarf_expr_context *ctx, int n);
 
 
-unsigned char *read_uleb128 (unsigned char *buf, unsigned char *buf_end,
-			     ULONGEST * r);
-unsigned char *read_sleb128 (unsigned char *buf, unsigned char *buf_end,
-			     LONGEST * r);
-CORE_ADDR dwarf2_read_address (unsigned char *buf, unsigned char *buf_end,
+gdb_byte *read_uleb128 (gdb_byte *buf, gdb_byte *buf_end, ULONGEST * r);
+gdb_byte *read_sleb128 (gdb_byte *buf, gdb_byte *buf_end, LONGEST * r);
+CORE_ADDR dwarf2_read_address (gdb_byte *buf, gdb_byte *buf_end,
 			       int *bytes_read);
 
-#endif
+#endif /* dwarf2expr.h */
Index: dwarf2loc.c
===================================================================
RCS file: /cvs/src/src/gdb/dwarf2loc.c,v
retrieving revision 1.28
diff -u -p -r1.28 dwarf2loc.c
--- dwarf2loc.c 26 Apr 2005 14:57:20 -0000 1.28
+++ dwarf2loc.c 12 Jul 2005 13:02:39 -0000
@@ -52,13 +52,14 @@
    For now, only return the first matching location expression; there
    can be more than one in the list.  */
 
-static char *
+static gdb_byte *
 find_location_expression (struct dwarf2_loclist_baton *baton,
 			  size_t *locexpr_length, CORE_ADDR pc)
 {
   CORE_ADDR low, high;
-  char *loc_ptr, *buf_end;
-  unsigned int addr_size = TARGET_ADDR_BIT / TARGET_CHAR_BIT, length;
+  gdb_byte *loc_ptr, *buf_end;
+  int length;
+  unsigned int addr_size = TARGET_ADDR_BIT / TARGET_CHAR_BIT;
   CORE_ADDR base_mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
   /* Adjust base_address for relocatable objects.  */
   CORE_ADDR base_offset = ANOFFSET (baton->objfile->section_offsets,
@@ -122,12 +123,12 @@ dwarf_expr_read_reg (void *baton, int dw
   struct dwarf_expr_baton *debaton = (struct dwarf_expr_baton *) baton;
   CORE_ADDR result, save_addr;
   enum lval_type lval_type;
-  char *buf;
+  gdb_byte *buf;
   int optimized, regnum, realnum, regsize;
 
   regnum = DWARF2_REG_TO_REGNUM (dwarf_regnum);
   regsize = register_size (current_gdbarch, regnum);
-  buf = (char *) alloca (regsize);
+  buf = alloca (regsize);
 
   frame_register (debaton->frame, regnum, &optimized, &lval_type, &save_addr,
 		  &realnum, buf);
@@ -141,7 +142,7 @@ dwarf_expr_read_reg (void *baton, int dw
 /* Read memory at ADDR (length LEN) into BUF.  */
 
 static void
-dwarf_expr_read_mem (void *baton, char *buf, CORE_ADDR addr, size_t len)
+dwarf_expr_read_mem (void *baton, gdb_byte *buf, CORE_ADDR addr, size_t len)
 {
   read_memory (addr, buf, len);
 }
@@ -150,7 +151,7 @@ dwarf_expr_read_mem (void *baton, char *
    describing the frame base.  Return a pointer to it in START and
    its length in LENGTH.  */
 static void
-dwarf_expr_frame_base (void *baton, unsigned char **start, size_t * length)
+dwarf_expr_frame_base (void *baton, gdb_byte **start, size_t * length)
 {
   /* FIXME: cagney/2003-03-26: This code should be using
      get_frame_base_address(), and then implement a dwarf2 specific
@@ -273,7 +274,7 @@ dwarf_expr_tls_address (void *baton, COR
    of FRAME.  */
 static struct value *
 dwarf2_evaluate_loc_desc (struct symbol *var, struct frame_info *frame,
-			  unsigned char *data, unsigned short size,
+			  gdb_byte *data, unsigned short size,
 			  struct objfile *objfile)
 {
   struct gdbarch *arch = get_frame_arch (frame);
@@ -350,16 +351,16 @@ needs_frame_read_reg (void *baton, int r
 
 /* Reads from memory do not require a frame.  */
 static void
-needs_frame_read_mem (void *baton, char *buf, CORE_ADDR addr, size_t len)
+needs_frame_read_mem (void *baton, gdb_byte *buf, CORE_ADDR addr, size_t len)
 {
   memset (buf, 0, len);
 }
 
 /* Frame-relative accesses do require a frame.  */
 static void
-needs_frame_frame_base (void *baton, unsigned char **start, size_t * length)
+needs_frame_frame_base (void *baton, gdb_byte **start, size_t * length)
 {
-  static char lit0 = DW_OP_lit0;
+  static gdb_byte lit0 = DW_OP_lit0;
   struct needs_frame_baton *nf_baton = baton;
 
   *start = &lit0;
@@ -381,7 +382,7 @@ needs_frame_tls_address (void *baton, CO
    requires a frame to evaluate.  */
 
 static int
-dwarf2_loc_desc_needs_frame (unsigned char *data, unsigned short size)
+dwarf2_loc_desc_needs_frame (gdb_byte *data, unsigned short size)
 {
   struct needs_frame_baton baton;
   struct dwarf_expr_context *ctx;
@@ -417,8 +418,8 @@ dwarf2_loc_desc_needs_frame (unsigned ch
 }
 
 static void
-dwarf2_tracepoint_var_ref (struct symbol * symbol, struct agent_expr * ax,
-			   struct axs_value * value, unsigned char *data,
+dwarf2_tracepoint_var_ref (struct symbol *symbol, struct agent_expr *ax,
+			   struct axs_value *value, gdb_byte *data,
 			   int size)
 {
   if (size == 0)
@@ -445,7 +446,7 @@ dwarf2_tracepoint_var_ref (struct symbol
 	 as above.  */
       int frame_reg;
       LONGEST frame_offset;
-      unsigned char *buf_end;
+      gdb_byte *buf_end;
 
       buf_end = read_sleb128 (data + 1, data + size, &frame_offset);
       if (buf_end != data + size)
@@ -575,7 +576,7 @@ loclist_read_variable (struct symbol *sy
 {
   struct dwarf2_loclist_baton *dlbaton = SYMBOL_LOCATION_BATON (symbol);
   struct value *val;
-  unsigned char *data;
+  gdb_byte *data;
   size_t size;
 
   data = find_location_expression (dlbaton, &size,
@@ -622,7 +623,7 @@ loclist_tracepoint_var_ref (struct symbo
 			    struct axs_value * value)
 {
   struct dwarf2_loclist_baton *dlbaton = SYMBOL_LOCATION_BATON (symbol);
-  unsigned char *data;
+  gdb_byte *data;
   size_t size;
 
   data = find_location_expression (dlbaton, &size, ax->scope);
Index: dwarf2loc.h
===================================================================
RCS file: /cvs/src/src/gdb/dwarf2loc.h,v
retrieving revision 1.4
diff -u -p -r1.4 dwarf2loc.h
--- dwarf2loc.h 26 Jan 2004 20:36:31 -0000 1.4
+++ dwarf2loc.h 12 Jul 2005 13:02:39 -0000
@@ -1,5 +1,6 @@
-/* Dwarf2 location expression support for GDB.
-   Copyright 2003 Free Software Foundation, Inc.
+/* DWARF 2 location expression support for GDB.
+
+   Copyright 2003, 2005 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -35,7 +36,7 @@ struct symbol_ops;
 struct dwarf2_locexpr_baton
 {
   /* Pointer to the start of the location expression.  */
-  unsigned char *data;
+  gdb_byte *data;
 
   /* Length of the location expression.  */
   unsigned short size;
@@ -51,7 +52,7 @@ struct dwarf2_loclist_baton
   CORE_ADDR base_address;
 
   /* Pointer to the start of the location list.  */
-  unsigned char *data;
+  gdb_byte *data;
 
   /* Length of the location list.  */
   unsigned short size;
@@ -67,4 +68,4 @@ struct dwarf2_loclist_baton
 extern const struct symbol_ops dwarf2_locexpr_funcs;
 extern const struct symbol_ops dwarf2_loclist_funcs;
 
-#endif
+#endif /* dwarf2loc.h */


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]