* doc/binutils.texi: Fix typos.
[deliverable/binutils-gdb.git] / gdb / dwarf2cfi.c
index ddb42ab65f5402839b5687c4bd5e374545321d69..75c3c4daf8efc07a0d1c92846da8ede5d1ed8254 100644 (file)
@@ -180,24 +180,24 @@ static void fde_chunks_need_space ();
 static void unwind_tmp_obstack_init ();
 static void unwind_tmp_obstack_free ();
 
-static unsigned int read_1u (bfd * abfd, char **p);
-static int read_1s (bfd * abfd, char **p);
-static unsigned int read_2u (bfd * abfd, char **p);
-static int read_2s (bfd * abfd, char **p);
-static unsigned int read_4u (bfd * abfd, char **p);
-static int read_4s (bfd * abfd, char **p);
-static ULONGEST read_8u (bfd * abfd, char **p);
-static LONGEST read_8s (bfd * abfd, char **p);
-
-static ULONGEST read_uleb128 (bfd * abfd, char **p);
-static LONGEST read_sleb128 (bfd * abfd, char **p);
-static CORE_ADDR read_pointer (bfd * abfd, char **p);
-static CORE_ADDR read_encoded_pointer (bfd * abfd, char **p,
+static unsigned int read_1u (bfd *abfd, char **p);
+static int read_1s (bfd *abfd, char **p);
+static unsigned int read_2u (bfd *abfd, char **p);
+static int read_2s (bfd *abfd, char **p);
+static unsigned int read_4u (bfd *abfd, char **p);
+static int read_4s (bfd *abfd, char **p);
+static ULONGEST read_8u (bfd *abfd, char **p);
+static LONGEST read_8s (bfd *abfd, char **p);
+
+static ULONGEST read_uleb128 (bfd *abfd, char **p);
+static LONGEST read_sleb128 (bfd *abfd, char **p);
+static CORE_ADDR read_pointer (bfd *abfd, char **p);
+static CORE_ADDR read_encoded_pointer (bfd *abfd, char **p,
                                       unsigned char encoding);
 static enum ptr_encoding pointer_encoding (unsigned char encoding);
 
-static LONGEST read_initial_length (bfd * abfd, char *buf, int *bytes_read);
-static ULONGEST read_length (bfd * abfd, char *buf, int *bytes_read,
+static LONGEST read_initial_length (bfd *abfd, char *buf, int *bytes_read);
+static ULONGEST read_length (bfd *abfd, char *buf, int *bytes_read,
                             int dwarf64);
 
 static int is_cie (ULONGEST cie_id, int dwarf64);
@@ -304,26 +304,17 @@ context_cpy (struct context *dst, struct context *src)
   int regs_size = sizeof (struct context_reg) * NUM_REGS;
   struct context_reg *dreg;
 
-  /* Structure dst contains a pointer to an array of
-   * registers of a given frame as well as src does. This
-   * array was already allocated before dst was passed to
-   * context_cpy but the pointer to it was overriden by
-   * '*dst = *src' and the array was lost. This led to the
-   * situation, that we've had a copy of src placed in dst,
-   * but both of them pointed to the same regs array and
-   * thus we've sometimes blindly rewritten it.  Now we save
-   * the pointer before copying src to dst, return it back
-   * after that and copy the registers into their new place
-   * finally.   ---   mludvig@suse.cz  */
+  /* Since `struct context' contains a pointer to an array with
+     register values, make sure we end up with a copy of that array,
+     and not with a copy of the pointer to that array.  */
   dreg = dst->reg;
   *dst = *src;
   dst->reg = dreg;
-
   memcpy (dst->reg, src->reg, regs_size);
 }
 
 static unsigned int
-read_1u (bfd * abfd, char **p)
+read_1u (bfd *abfd, char **p)
 {
   unsigned ret;
 
@@ -333,7 +324,7 @@ read_1u (bfd * abfd, char **p)
 }
 
 static int
-read_1s (bfd * abfd, char **p)
+read_1s (bfd *abfd, char **p)
 {
   int ret;
 
@@ -343,7 +334,7 @@ read_1s (bfd * abfd, char **p)
 }
 
 static unsigned int
-read_2u (bfd * abfd, char **p)
+read_2u (bfd *abfd, char **p)
 {
   unsigned ret;
 
@@ -353,7 +344,7 @@ read_2u (bfd * abfd, char **p)
 }
 
 static int
-read_2s (bfd * abfd, char **p)
+read_2s (bfd *abfd, char **p)
 {
   int ret;
 
@@ -363,7 +354,7 @@ read_2s (bfd * abfd, char **p)
 }
 
 static unsigned int
-read_4u (bfd * abfd, char **p)
+read_4u (bfd *abfd, char **p)
 {
   unsigned int ret;
 
@@ -373,7 +364,7 @@ read_4u (bfd * abfd, char **p)
 }
 
 static int
-read_4s (bfd * abfd, char **p)
+read_4s (bfd *abfd, char **p)
 {
   int ret;
 
@@ -383,7 +374,7 @@ read_4s (bfd * abfd, char **p)
 }
 
 static ULONGEST
-read_8u (bfd * abfd, char **p)
+read_8u (bfd *abfd, char **p)
 {
   ULONGEST ret;
 
@@ -393,7 +384,7 @@ read_8u (bfd * abfd, char **p)
 }
 
 static LONGEST
-read_8s (bfd * abfd, char **p)
+read_8s (bfd *abfd, char **p)
 {
   LONGEST ret;
 
@@ -403,7 +394,7 @@ read_8s (bfd * abfd, char **p)
 }
 
 static ULONGEST
-read_uleb128 (bfd * abfd, char **p)
+read_uleb128 (bfd *abfd, char **p)
 {
   ULONGEST ret;
   int i, shift;
@@ -427,7 +418,7 @@ read_uleb128 (bfd * abfd, char **p)
 }
 
 static LONGEST
-read_sleb128 (bfd * abfd, char **p)
+read_sleb128 (bfd *abfd, char **p)
 {
   LONGEST ret;
   int i, shift, size, num_read;
@@ -457,7 +448,7 @@ read_sleb128 (bfd * abfd, char **p)
 }
 
 static CORE_ADDR
-read_pointer (bfd * abfd, char **p)
+read_pointer (bfd *abfd, char **p)
 {
   switch (TARGET_ADDR_BIT / TARGET_CHAR_BIT)
     {
@@ -470,11 +461,11 @@ read_pointer (bfd * abfd, char **p)
     }
 }
 
-/* This functions only reads appropriate amount of data from *p 
- * and returns the resulting value. Calling function must handle
* different encoding possibilities itself!  */
+/* Read the appropriate amount of data from *P and return the
+   resulting value based on ENCODING, which the calling function must
  provide.  */
 static CORE_ADDR
-read_encoded_pointer (bfd * abfd, char **p, unsigned char encoding)
+read_encoded_pointer (bfd *abfd, char **p, unsigned char encoding)
 {
   CORE_ADDR ret;
 
@@ -519,10 +510,10 @@ read_encoded_pointer (bfd * abfd, char **p, unsigned char encoding)
   return ret;
 }
 
-/* Variable 'encoding' carries 3 different flags:
* - encoding & 0x0f : size of the address (handled in read_encoded_pointer())
* - encoding & 0x70 : type (absolute, relative, ...)
* - encoding & 0x80 : indirect flag (DW_EH_PE_indirect == 0x80).  */
+/* The variable 'encoding' carries three different flags:
  - encoding & 0x0f : size of the address (handled in read_encoded_pointer())
  - encoding & 0x70 : type (absolute, relative, ...)
  - encoding & 0x80 : indirect flag (DW_EH_PE_indirect == 0x80).  */
 enum ptr_encoding
 pointer_encoding (unsigned char encoding)
 {
@@ -547,7 +538,7 @@ pointer_encoding (unsigned char encoding)
 }
 
 static LONGEST
-read_initial_length (bfd * abfd, char *buf, int *bytes_read)
+read_initial_length (bfd *abfd, char *buf, int *bytes_read)
 {
   LONGEST ret = 0;
 
@@ -567,7 +558,7 @@ read_initial_length (bfd * abfd, char *buf, int *bytes_read)
 }
 
 static ULONGEST
-read_length (bfd * abfd, char *buf, int *bytes_read, int dwarf64)
+read_length (bfd *abfd, char *buf, int *bytes_read, int dwarf64)
 {
   if (dwarf64)
     {
@@ -833,14 +824,14 @@ get_reg (char *reg, struct context *context, int regnum)
   switch (context->reg[regnum].how)
     {
     case REG_CTX_UNSAVED:
-      read_register_gen (regnum, reg);
+      deprecated_read_register_gen (regnum, reg);
       break;
     case REG_CTX_SAVED_OFFSET:
       target_read_memory (context->cfa + context->reg[regnum].loc.offset,
                          reg, REGISTER_RAW_SIZE (regnum));
       break;
     case REG_CTX_SAVED_REG:
-      read_register_gen (context->reg[regnum].loc.reg, reg);
+      deprecated_read_register_gen (context->reg[regnum].loc.reg, reg);
       break;
     case REG_CTX_SAVED_ADDR:
       target_read_memory (context->reg[regnum].loc.addr,
@@ -1697,7 +1688,7 @@ cfi_write_fp (CORE_ADDR val)
   if (fs->cfa_how == CFA_REG_OFFSET)
     {
       val -= fs->cfa_offset;
-      write_register_gen (fs->cfa_reg, (char *) &val);
+      deprecated_write_register_gen (fs->cfa_reg, (char *) &val);
     }
   else
     warning ("Can't write fp.");
@@ -1716,8 +1707,8 @@ cfi_pop_frame (struct frame_info *fi)
   for (regnum = 0; regnum < NUM_REGS; regnum++)
     {
       get_reg (regbuf, UNWIND_CONTEXT (fi), regnum);
-      write_register_bytes (REGISTER_BYTE (regnum), regbuf,
-                           REGISTER_RAW_SIZE (regnum));
+      deprecated_write_register_bytes (REGISTER_BYTE (regnum), regbuf,
+                                      REGISTER_RAW_SIZE (regnum));
     }
   write_register (PC_REGNUM, UNWIND_CONTEXT (fi)->ra);
 
@@ -1755,13 +1746,19 @@ cfi_frame_chain (struct frame_info *fi)
 }
 
 /* Sets the pc of the frame.  */
-void
+CORE_ADDR
 cfi_init_frame_pc (int fromleaf, struct frame_info *fi)
 {
-  if (fi->next)
-    get_reg ((char *) &(fi->pc), UNWIND_CONTEXT (fi->next), PC_REGNUM);
+  if (get_next_frame (fi))
+    {
+      CORE_ADDR pc;
+      /* FIXME: cagney/2002-12-04: This is straight wrong.  It's
+         assuming that the PC is CORE_ADDR (a host quantity) in size.  */
+      get_reg ((void *)&pc, UNWIND_CONTEXT (get_next_frame (fi)), PC_REGNUM);
+      return pc;
+    }
   else
-    fi->pc = read_pc ();
+    return read_pc ();
 }
 
 /* Initialize unwind context informations of the frame.  */
@@ -1828,7 +1825,7 @@ cfi_get_saved_register (char *raw_buffer,
 
   if (!frame->next)
     {
-      read_register_gen (regnum, raw_buffer);
+      deprecated_read_register_gen (regnum, raw_buffer);
       if (lval != NULL)
        *lval = lval_register;
       if (addrp != NULL)
@@ -1840,7 +1837,7 @@ cfi_get_saved_register (char *raw_buffer,
       switch (UNWIND_CONTEXT (frame)->reg[regnum].how)
        {
        case REG_CTX_UNSAVED:
-         read_register_gen (regnum, raw_buffer);
+         deprecated_read_register_gen (regnum, raw_buffer);
          if (lval != NULL)
            *lval = not_lval;
          if (optimized != NULL)
@@ -1858,8 +1855,8 @@ cfi_get_saved_register (char *raw_buffer,
              UNWIND_CONTEXT (frame)->reg[regnum].loc.offset;
          break;
        case REG_CTX_SAVED_REG:
-         read_register_gen (UNWIND_CONTEXT (frame)->reg[regnum].loc.reg,
-                            raw_buffer);
+         deprecated_read_register_gen (UNWIND_CONTEXT (frame)->reg[regnum].loc.reg,
+                                       raw_buffer);
          if (lval != NULL)
            *lval = lval_register;
          if (addrp != NULL)
This page took 0.027756 seconds and 4 git commands to generate.