~ubuntu-branches/ubuntu/karmic/insight/karmic

« back to all changes in this revision

Viewing changes to gdb/utils.c

  • Committer: Bazaar Package Importer
  • Author(s): Masayuki Hatta (mhatta)
  • Date: 2007-12-04 22:37:09 UTC
  • mfrom: (1.2.5 upstream)
  • Revision ID: james.westby@ubuntu.com-20071204223709-jxj396d1ox92s8ox
Tags: 6.7.1.dfsg.1-1
* New upstream release.
* This typo has been fixed in the upstream - closes: #314037.
* Removed non-free documents (GFDL'd with Invariant Sections, etc.).

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/* General utility routines for GDB, the GNU debugger.
2
2
 
3
 
   Copyright (C) 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4
 
   1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
 
3
   Copyright (C) 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
 
4
   1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
5
5
   Free Software Foundation, Inc.
6
6
 
7
7
   This file is part of GDB.
8
8
 
9
9
   This program is free software; you can redistribute it and/or modify
10
10
   it under the terms of the GNU General Public License as published by
11
 
   the Free Software Foundation; either version 2 of the License, or
 
11
   the Free Software Foundation; either version 3 of the License, or
12
12
   (at your option) any later version.
13
13
 
14
14
   This program is distributed in the hope that it will be useful,
17
17
   GNU General Public License for more details.
18
18
 
19
19
   You should have received a copy of the GNU General Public License
20
 
   along with this program; if not, write to the Free Software
21
 
   Foundation, Inc., 51 Franklin Street, Fifth Floor,
22
 
   Boston, MA 02110-1301, USA.  */
 
20
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
23
21
 
24
22
#include "defs.h"
25
23
#include "gdb_assert.h"
906
904
#endif
907
905
}
908
906
 
909
 
/* Control C comes here */
910
 
void
911
 
request_quit (int signo)
912
 
{
913
 
  quit_flag = 1;
914
 
  /* Restore the signal handler.  Harmless with BSD-style signals,
915
 
     needed for System V-style signals.  */
916
 
  signal (signo, request_quit);
917
 
 
918
 
  if (immediate_quit)
919
 
    quit ();
920
 
}
921
907
 
922
908
/* Called when a memory allocation fails, with the number of bytes of
923
909
   memory requested in SIZE. */
1645
1631
    rows = INT_MAX;
1646
1632
 
1647
1633
  if (cols <= 0)
1648
 
    rl_get_screen_size (NULL, &cols);
 
1634
    cols = INT_MAX;
1649
1635
 
1650
1636
  /* Update Readline's idea of the terminal size.  */
1651
1637
  rl_set_screen_size (rows, cols);
2452
2438
  return match;
2453
2439
}
2454
2440
 
2455
 
 
2456
 
static void pagination_on_command (char *arg, int from_tty);
2457
2441
static void
2458
2442
pagination_on_command (char *arg, int from_tty)
2459
2443
{
2460
2444
  pagination_enabled = 1;
2461
2445
}
2462
2446
 
2463
 
static void pagination_on_command (char *arg, int from_tty);
2464
2447
static void
2465
2448
pagination_off_command (char *arg, int from_tty)
2466
2449
{
2550
2533
int
2551
2534
strlen_paddr (void)
2552
2535
{
2553
 
  return (TARGET_ADDR_BIT / 8 * 2);
 
2536
  return (gdbarch_addr_bit (current_gdbarch) / 8 * 2);
2554
2537
}
2555
2538
 
2556
2539
char *
2557
2540
paddr (CORE_ADDR addr)
2558
2541
{
2559
 
  return phex (addr, TARGET_ADDR_BIT / 8);
 
2542
  return phex (addr, gdbarch_addr_bit (current_gdbarch) / 8);
2560
2543
}
2561
2544
 
2562
2545
char *
2563
2546
paddr_nz (CORE_ADDR addr)
2564
2547
{
2565
 
  return phex_nz (addr, TARGET_ADDR_BIT / 8);
 
2548
  return phex_nz (addr, gdbarch_addr_bit (current_gdbarch) / 8);
2566
2549
}
2567
2550
 
2568
2551
const char *
2574
2557
     when it won't occur. */
2575
2558
  /* NOTE: This assumes that the significant address information is
2576
2559
     kept in the least significant bits of ADDR - the upper bits were
2577
 
     either zero or sign extended.  Should ADDRESS_TO_POINTER() or
 
2560
     either zero or sign extended.  Should gdbarch_address_to_pointer or
2578
2561
     some ADDRESS_TO_PRINTABLE() be used to do the conversion?  */
2579
2562
 
2580
 
  int addr_bit = TARGET_ADDR_BIT;
 
2563
  int addr_bit = gdbarch_addr_bit (current_gdbarch);
2581
2564
 
2582
2565
  if (addr_bit < (sizeof (CORE_ADDR) * HOST_CHAR_BIT))
2583
2566
    addr &= ((CORE_ADDR) 1 << addr_bit) - 1;
2857
2840
  CORE_ADDR addr = 0;
2858
2841
  if (my_string[0] == '0' && tolower (my_string[1]) == 'x')
2859
2842
    {
2860
 
      /* Assume that it is in decimal.  */
 
2843
      /* Assume that it is in hex.  */
2861
2844
      int i;
2862
2845
      for (i = 2; my_string[i] != '\0'; i++)
2863
2846
        {
3210
3193
  else
3211
3194
    return result;
3212
3195
}
 
3196
 
 
3197
/* Simple, portable version of dirname that does not modify its
 
3198
   argument.  */
 
3199
 
 
3200
char *
 
3201
ldirname (const char *filename)
 
3202
{
 
3203
  const char *base = lbasename (filename);
 
3204
  char *dirname;
 
3205
 
 
3206
  while (base > filename && IS_DIR_SEPARATOR (base[-1]))
 
3207
    --base;
 
3208
 
 
3209
  if (base == filename)
 
3210
    return NULL;
 
3211
 
 
3212
  dirname = xmalloc (base - filename + 2);
 
3213
  memcpy (dirname, filename, base - filename);
 
3214
 
 
3215
  /* On DOS based file systems, convert "d:foo" to "d:.", so that we
 
3216
     create "d:./bar" later instead of the (different) "d:/bar".  */
 
3217
  if (base - filename == 2 && IS_ABSOLUTE_PATH (base)
 
3218
      && !IS_DIR_SEPARATOR (filename[0]))
 
3219
    dirname[base++ - filename] = '.';
 
3220
 
 
3221
  dirname[base - filename] = '\0';
 
3222
  return dirname;
 
3223
}