2005-02-15 Andrew Cagney <cagney@gnu.org>
[deliverable/binutils-gdb.git] / gdb / utils.c
index 55ee7ec0d047286d771301cd4c6c13c3aa2d55f4..c66496f0157d373af88b0af10a2047a6c29f216f 100644 (file)
 
 #include "readline/readline.h"
 
-#ifdef NEED_DECLARATION_MALLOC
+#if !HAVE_DECL_MALLOC
 extern PTR malloc ();          /* OK: PTR */
 #endif
-#ifdef NEED_DECLARATION_REALLOC
+#if !HAVE_DECL_REALLOC
 extern PTR realloc ();         /* OK: PTR */
 #endif
-#ifdef NEED_DECLARATION_FREE
+#if !HAVE_DECL_FREE
 extern void free ();
 #endif
-/* Actually, we'll never have the decl, since we don't define _GNU_SOURCE.  */
-#if defined(HAVE_CANONICALIZE_FILE_NAME) \
-    && defined(NEED_DECLARATION_CANONICALIZE_FILE_NAME)
-extern char *canonicalize_file_name (const char *);
-#endif
 
 /* readline defines this.  */
 #undef savestring
@@ -416,7 +411,7 @@ free_current_contents (void *ptr)
   void **location = ptr;
   if (location == NULL)
     internal_error (__FILE__, __LINE__,
-                   "free_current_contents: NULL pointer");
+                   _("free_current_contents: NULL pointer"));
   if (*location != NULL)
     {
       xfree (*location);
@@ -647,7 +642,7 @@ error_stream (struct ui_file *stream)
   long len;
   char *message = ui_file_xstrdup (stream, &len);
   make_cleanup (xfree, message);
-  error ("%s", message);
+  error (("%s"), message);
 }
 
 /* Print a message reporting an internal error/warning. Ask the user
@@ -721,7 +716,7 @@ further debugging may prove unreliable.", file, line, problem->name, msg);
       /* Default (yes/batch case) is to quit GDB.  When in batch mode
          this lessens the likelhood of GDB going into an infinate
          loop.  */
-      quit_p = query ("%s\nQuit this debugging session? ", reason);
+      quit_p = query (_("%s\nQuit this debugging session? "), reason);
       break;
     case AUTO_BOOLEAN_TRUE:
       quit_p = 1;
@@ -730,7 +725,7 @@ further debugging may prove unreliable.", file, line, problem->name, msg);
       quit_p = 0;
       break;
     default:
-      internal_error (__FILE__, __LINE__, "bad switch");
+      internal_error (__FILE__, __LINE__, _("bad switch"));
     }
 
   switch (problem->should_dump_core)
@@ -739,7 +734,7 @@ further debugging may prove unreliable.", file, line, problem->name, msg);
       /* Default (yes/batch case) is to dump core.  This leaves a GDB
          `dropping' so that it is easier to see that something went
          wrong in GDB.  */
-      dump_core_p = query ("%s\nCreate a core file of GDB? ", reason);
+      dump_core_p = query (_("%s\nCreate a core file of GDB? "), reason);
       break;
       break;
     case AUTO_BOOLEAN_TRUE:
@@ -749,7 +744,7 @@ further debugging may prove unreliable.", file, line, problem->name, msg);
       dump_core_p = 0;
       break;
     default:
-      internal_error (__FILE__, __LINE__, "bad switch");
+      internal_error (__FILE__, __LINE__, _("bad switch"));
     }
 
   if (quit_p)
@@ -851,7 +846,7 @@ perror_with_name (const char *string)
   bfd_set_error (bfd_error_no_error);
   errno = 0;
 
-  error ("%s.", combined);
+  error (_("%s."), combined);
 }
 
 /* Print the system error message for ERRCODE, and also mention STRING
@@ -917,12 +912,12 @@ nomem (long size)
   if (size > 0)
     {
       internal_error (__FILE__, __LINE__,
-                     "virtual memory exhausted: can't allocate %ld bytes.",
+                     _("virtual memory exhausted: can't allocate %ld bytes."),
                      size);
     }
   else
     {
-      internal_error (__FILE__, __LINE__, "virtual memory exhausted.");
+      internal_error (__FILE__, __LINE__, _("virtual memory exhausted."));
     }
 }
 
@@ -952,6 +947,12 @@ xmalloc (size_t size)
   return (val);
 }
 
+void *
+xzalloc (size_t size)
+{
+  return xcalloc (1, size);
+}
+
 PTR                            /* OK: PTR */
 xrealloc (PTR ptr, size_t size)        /* OK: PTR */
 {
@@ -1041,7 +1042,7 @@ xstrvprintf (const char *format, va_list ap)
      should never happen, but just to be sure.  */
   if (status < 0)
     internal_error (__FILE__, __LINE__,
-                   "vasprintf call failed (errno %d)", errno);
+                   _("vasprintf call failed (errno %d)"), errno);
   return ret;
 }
 
@@ -1129,15 +1130,15 @@ query (const char *ctlstr, ...)
       gdb_flush (gdb_stdout);
 
       if (annotation_level > 1)
-       printf_filtered ("\n\032\032pre-query\n");
+       printf_filtered (("\n\032\032pre-query\n"));
 
       va_start (args, ctlstr);
       vfprintf_filtered (gdb_stdout, ctlstr, args);
       va_end (args);
-      printf_filtered ("(y or n) ");
+      printf_filtered (_("(y or n) "));
 
       if (annotation_level > 1)
-       printf_filtered ("\n\032\032query\n");
+       printf_filtered (("\n\032\032query\n"));
 
       wrap_here ("");
       gdb_flush (gdb_stdout);
@@ -1170,11 +1171,11 @@ query (const char *ctlstr, ...)
          retval = 0;
          break;
        }
-      printf_filtered ("Please answer y or n.\n");
+      printf_filtered (_("Please answer y or n.\n"));
     }
 
   if (annotation_level > 1)
-    printf_filtered ("\n\032\032post-query\n");
+    printf_filtered (("\n\032\032post-query\n"));
   return retval;
 }
 \f
@@ -1231,13 +1232,13 @@ defaulted_query (const char *ctlstr, const char defchar, va_list args)
       gdb_flush (gdb_stdout);
 
       if (annotation_level > 1)
-       printf_filtered ("\n\032\032pre-query\n");
+       printf_filtered (("\n\032\032pre-query\n"));
 
       vfprintf_filtered (gdb_stdout, ctlstr, args);
-      printf_filtered ("(%s or %s) ", y_string, n_string);
+      printf_filtered (_("(%s or %s) "), y_string, n_string);
 
       if (annotation_level > 1)
-       printf_filtered ("\n\032\032query\n");
+       printf_filtered (("\n\032\032query\n"));
 
       wrap_here ("");
       gdb_flush (gdb_stdout);
@@ -1276,12 +1277,12 @@ defaulted_query (const char *ctlstr, const char defchar, va_list args)
          break;
        }
       /* Invalid entries are not defaulted and require another selection.  */
-      printf_filtered ("Please answer %s or %s.\n",
+      printf_filtered (_("Please answer %s or %s.\n"),
                       y_string, n_string);
     }
 
   if (annotation_level > 1)
-    printf_filtered ("\n\032\032post-query\n");
+    printf_filtered (("\n\032\032post-query\n"));
   return retval;
 }
 \f
@@ -1331,7 +1332,7 @@ no_control_char_error (const char *start, const char *end)
   memcpy (copy, start, len);
   copy[len] = '\0';
 
-  error ("There is no control character `\\%s' in the `%s' character set.",
+  error (_("There is no control character `\\%s' in the `%s' character set."),
         copy, target_charset ());
 }
 
@@ -1379,8 +1380,8 @@ parse_escape (char **string_ptr)
              c = 0177;
 
              if (!host_char_to_target (c, &target_char))
-               error ("There is no character corresponding to `Delete' "
-                      "in the target character set `%s'.", host_charset ());
+               error (_("There is no character corresponding to `Delete' "
+                      "in the target character set `%s'."), host_charset ());
 
              return target_char;
            }
@@ -1665,7 +1666,7 @@ prompt_for_continue (void)
   char cont_prompt[120];
 
   if (annotation_level > 1)
-    printf_unfiltered ("\n\032\032pre-prompt-for-continue\n");
+    printf_unfiltered (("\n\032\032pre-prompt-for-continue\n"));
 
   strcpy (cont_prompt,
          "---Type <return> to continue, or q <return> to quit---");
@@ -1691,7 +1692,7 @@ prompt_for_continue (void)
   ignore = gdb_readline_wrapper (cont_prompt);
 
   if (annotation_level > 1)
-    printf_unfiltered ("\n\032\032post-prompt-for-continue\n");
+    printf_unfiltered (("\n\032\032post-prompt-for-continue\n"));
 
   if (ignore)
     {
@@ -1746,7 +1747,7 @@ wrap_here (char *indent)
 {
   /* This should have been allocated, but be paranoid anyway. */
   if (!wrap_buffer)
-    internal_error (__FILE__, __LINE__, "failed internal consistency check");
+    internal_error (__FILE__, __LINE__, _("failed internal consistency check"));
 
   if (wrap_buffer[0])
     {
@@ -2472,9 +2473,9 @@ initialize_utils (void)
   if (xdb_commands)
     {
       add_com ("am", class_support, pagination_on_command,
-              "Enable pagination");
+              _("Enable pagination"));
       add_com ("sm", class_support, pagination_off_command,
-              "Disable pagination");
+              _("Disable pagination"));
     }
 
   deprecated_add_show_from_set
@@ -2527,6 +2528,25 @@ paddr_nz (CORE_ADDR addr)
   return phex_nz (addr, TARGET_ADDR_BIT / 8);
 }
 
+const char *
+paddress (CORE_ADDR addr)
+{
+  /* Truncate address to the size of a target address, avoiding shifts
+     larger or equal than the width of a CORE_ADDR.  The local
+     variable ADDR_BIT stops the compiler reporting a shift overflow
+     when it won't occur. */
+  /* NOTE: This assumes that the significant address information is
+     kept in the least significant bits of ADDR - the upper bits were
+     either zero or sign extended.  Should ADDRESS_TO_POINTER() or
+     some ADDRESS_TO_PRINTABLE() be used to do the conversion?  */
+
+  int addr_bit = TARGET_ADDR_BIT;
+
+  if (addr_bit < (sizeof (CORE_ADDR) * HOST_CHAR_BIT))
+    addr &= ((CORE_ADDR) 1 << addr_bit) - 1;
+  return hex_string (addr);
+}
+
 static void
 decimal2str (char *paddr_str, char *sign, ULONGEST addr, int width)
 {
@@ -2559,7 +2579,7 @@ decimal2str (char *paddr_str, char *sign, ULONGEST addr, int width)
       break;
     default:
       internal_error (__FILE__, __LINE__,
-                     "failed internal consistency check");
+                     _("failed internal consistency check"));
     }
 }
 
@@ -2596,7 +2616,7 @@ octal2str (char *paddr_str, ULONGEST addr, int width)
       break;
     default:
       internal_error (__FILE__, __LINE__,
-                     "failed internal consistency check");
+                     _("failed internal consistency check"));
     }
 }
 
@@ -2706,7 +2726,7 @@ hex_string_custom (LONGEST num, int width)
     width = hex_len;
   if (width + 2 >= CELLSIZE)
     internal_error (__FILE__, __LINE__,
-                   "hex_string_custom: insufficient space to store result");
+                   _("hex_string_custom: insufficient space to store result"));
 
   strcpy (result_end - width - 2, "0x");
   memset (result_end - width, '0', width);
@@ -2758,7 +2778,7 @@ int_string (LONGEST val, int radix, int is_signed, int width,
       }
     default:
       internal_error (__FILE__, __LINE__,
-                     "failed internal consistency check");
+                     _("failed internal consistency check"));
     }
 }      
 
@@ -2797,7 +2817,7 @@ string_to_core_addr (const char *my_string)
          else if (isxdigit (my_string[i]))
            addr = (tolower (my_string[i]) - 'a' + 0xa) + (addr * 16);
          else
-           internal_error (__FILE__, __LINE__, "invalid hex");
+           internal_error (__FILE__, __LINE__, _("invalid hex"));
        }
     }
   else
@@ -2809,7 +2829,7 @@ string_to_core_addr (const char *my_string)
          if (isdigit (my_string[i]))
            addr = (my_string[i] - '0') + (addr * 10);
          else
-           internal_error (__FILE__, __LINE__, "invalid decimal");
+           internal_error (__FILE__, __LINE__, _("invalid decimal"));
        }
     }
   return addr;
This page took 0.029659 seconds and 4 git commands to generate.