projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* auxv.c (procfs_xfer_auxv): Change type of the `object' argument
[deliverable/binutils-gdb.git]
/
gdb
/
source.c
diff --git
a/gdb/source.c
b/gdb/source.c
index fc5fe0b0f168b57e9112e1a10bb94362ecd019d4..e4766167b6dd8afc702286a6c8d555b87991d601 100644
(file)
--- a/
gdb/source.c
+++ b/
gdb/source.c
@@
-1,7
+1,7
@@
/* List lines of source files for GDB, the GNU debugger.
Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
/* List lines of source files for GDB, the GNU debugger.
Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
- 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008
- Free Software Foundation, Inc.
+ 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008
,
+
2009
Free Software Foundation, Inc.
This file is part of GDB.
This file is part of GDB.
@@
-250,7
+250,8
@@
select_source_symtab (struct symtab *s)
return;
}
return;
}
- /* All right; find the last file in the symtab list (ignoring .h's). */
+ /* Alright; find the last file in the symtab list (ignoring .h's
+ and namespace symtabs). */
current_source_line = 1;
current_source_line = 1;
@@
-260,14
+261,15
@@
select_source_symtab (struct symtab *s)
{
const char *name = s->filename;
int len = strlen (name);
{
const char *name = s->filename;
int len = strlen (name);
- if (!(len > 2 && strcmp(&name[len - 2], ".h") == 0))
+ if (!(len > 2 && (strcmp (&name[len - 2], ".h") == 0
+ || strcmp (name, "<<C++-namespaces>>") == 0)))
current_source_symtab = s;
}
}
if (current_source_symtab)
return;
current_source_symtab = s;
}
}
if (current_source_symtab)
return;
- /* How
about the partial symbol tables?
*/
+ /* How
about the partial symbol tables?
*/
for (ofp = object_files; ofp != NULL; ofp = ofp->next)
{
for (ofp = object_files; ofp != NULL; ofp = ofp->next)
{
@@
-275,7
+277,8
@@
select_source_symtab (struct symtab *s)
{
const char *name = ps->filename;
int len = strlen (name);
{
const char *name = ps->filename;
int len = strlen (name);
- if (!(len > 2 && strcmp (&name[len - 2], ".h") == 0))
+ if (!(len > 2 && (strcmp (&name[len - 2], ".h") == 0
+ || strcmp (name, "<<C++-namespaces>>") == 0)))
cs_pst = ps;
}
}
cs_pst = ps;
}
}
@@
-425,12
+428,9
@@
add_path (char *dirname, char **which_path, int parse_separators)
/* This will properly parse the space and tab separators
and any quotes that may exist. DIRNAME_SEPARATOR will
be dealt with later. */
/* This will properly parse the space and tab separators
and any quotes that may exist. DIRNAME_SEPARATOR will
be dealt with later. */
- argv = buildargv (dirname);
+ argv =
gdb_
buildargv (dirname);
make_cleanup_freeargv (argv);
make_cleanup_freeargv (argv);
- if (argv == NULL)
- nomem (0);
-
arg = argv[0];
}
else
arg = argv[0];
}
else
@@
-658,7
+658,8
@@
is_regular_file (const char *name)
}
/* Open a file named STRING, searching path PATH (dir names sep by some char)
}
/* Open a file named STRING, searching path PATH (dir names sep by some char)
- using mode MODE and protection bits PROT in the calls to open.
+ using mode MODE in the calls to open. You cannot use this function to
+ create files (O_CREAT).
OPTS specifies the function behaviour in specific cases.
OPTS specifies the function behaviour in specific cases.
@@
-685,8
+686,7
@@
is_regular_file (const char *name)
>>>> eg executable, non-directory */
int
openp (const char *path, int opts, const char *string,
>>>> eg executable, non-directory */
int
openp (const char *path, int opts, const char *string,
- int mode, int prot,
- char **filename_opened)
+ int mode, char **filename_opened)
{
int fd;
char *filename;
{
int fd;
char *filename;
@@
-695,6
+695,9
@@
openp (const char *path, int opts, const char *string,
int len;
int alloclen;
int len;
int alloclen;
+ /* The open syscall MODE parameter is not specified. */
+ gdb_assert ((mode & O_CREAT) == 0);
+
if (!path)
path = ".";
if (!path)
path = ".";
@@
-708,7
+711,7
@@
openp (const char *path, int opts, const char *string,
{
filename = alloca (strlen (string) + 1);
strcpy (filename, string);
{
filename = alloca (strlen (string) + 1);
strcpy (filename, string);
- fd = open (filename, mode
, prot
);
+ fd = open (filename, mode);
if (fd >= 0)
goto done;
}
if (fd >= 0)
goto done;
}
@@
-822,12
+825,12
@@
done:
Else, this functions returns 0, and FULL_PATHNAME is set to NULL. */
int
Else, this functions returns 0, and FULL_PATHNAME is set to NULL. */
int
-source_full_path_of (char *filename, char **full_pathname)
+source_full_path_of (c
onst c
har *filename, char **full_pathname)
{
int fd;
fd = openp (source_path, OPF_TRY_CWD_FIRST | OPF_SEARCH_IN_PATH, filename,
{
int fd;
fd = openp (source_path, OPF_TRY_CWD_FIRST | OPF_SEARCH_IN_PATH, filename,
- O_RDONLY,
0,
full_pathname);
+ O_RDONLY, full_pathname);
if (fd < 0)
{
*full_pathname = NULL;
if (fd < 0)
{
*full_pathname = NULL;
@@
-1017,13
+1020,13
@@
find_and_open_source (struct objfile *objfile,
}
}
}
}
- result = openp (path, OPF_SEARCH_IN_PATH, filename, OPEN_MODE,
0,
fullname);
+ result = openp (path, OPF_SEARCH_IN_PATH, filename, OPEN_MODE, fullname);
if (result < 0)
{
/* Didn't work. Try using just the basename. */
p = lbasename (filename);
if (p != filename)
if (result < 0)
{
/* Didn't work. Try using just the basename. */
p = lbasename (filename);
if (p != filename)
- result = openp (path, OPF_SEARCH_IN_PATH, p, OPEN_MODE,
0,
fullname);
+ result = openp (path, OPF_SEARCH_IN_PATH, p, OPEN_MODE, fullname);
}
return result;
}
return result;
@@
-1064,7
+1067,7
@@
symtab_to_fullname (struct symtab *s)
r = find_and_open_source (s->objfile, s->filename, s->dirname,
&s->fullname);
r = find_and_open_source (s->objfile, s->filename, s->dirname,
&s->fullname);
- if (r)
+ if (r
>= 0
)
{
close (r);
return s->fullname;
{
close (r);
return s->fullname;
@@
-1093,7
+1096,7
@@
psymtab_to_fullname (struct partial_symtab *ps)
r = find_and_open_source (ps->objfile, ps->filename, ps->dirname,
&ps->fullname);
r = find_and_open_source (ps->objfile, ps->filename, ps->dirname,
&ps->fullname);
- if (r
)
+ if (r
>= 0)
{
close (r);
return ps->fullname;
{
close (r);
return ps->fullname;
@@
-1251,6
+1254,7
@@
static int
get_filename_and_charpos (struct symtab *s, char **fullname)
{
int desc, linenums_changed = 0;
get_filename_and_charpos (struct symtab *s, char **fullname)
{
int desc, linenums_changed = 0;
+ struct cleanup *cleanups;
desc = open_source_file (s);
if (desc < 0)
desc = open_source_file (s);
if (desc < 0)
@@
-1259,13
+1263,14
@@
get_filename_and_charpos (struct symtab *s, char **fullname)
*fullname = NULL;
return 0;
}
*fullname = NULL;
return 0;
}
+ cleanups = make_cleanup_close (desc);
if (fullname)
*fullname = s->fullname;
if (s->line_charpos == 0)
linenums_changed = 1;
if (linenums_changed)
find_source_lines (s, desc);
if (fullname)
*fullname = s->fullname;
if (s->line_charpos == 0)
linenums_changed = 1;
if (linenums_changed)
find_source_lines (s, desc);
-
close (desc
);
+
do_cleanups (cleanups
);
return linenums_changed;
}
return linenums_changed;
}
@@
-1312,6
+1317,7
@@
print_source_lines_base (struct symtab *s, int line, int stopline, int noerror)
int desc;
FILE *stream;
int nlines = stopline - line;
int desc;
FILE *stream;
int nlines = stopline - line;
+ struct cleanup *cleanup;
/* Regardless of whether we can open the file, set current_source_symtab. */
current_source_symtab = s;
/* Regardless of whether we can open the file, set current_source_symtab. */
current_source_symtab = s;
@@
-1378,6
+1384,7
@@
print_source_lines_base (struct symtab *s, int line, int stopline, int noerror)
stream = fdopen (desc, FDOPEN_MODE);
clearerr (stream);
stream = fdopen (desc, FDOPEN_MODE);
clearerr (stream);
+ cleanup = make_cleanup_fclose (stream);
while (nlines-- > 0)
{
while (nlines-- > 0)
{
@@
-1417,7
+1424,7
@@
print_source_lines_base (struct symtab *s, int line, int stopline, int noerror)
while (c != '\n' && (c = fgetc (stream)) >= 0);
}
while (c != '\n' && (c = fgetc (stream)) >= 0);
}
-
fclose (stream
);
+
do_cleanups (cleanup
);
}
\f
/* Show source lines from the file of symtab S, starting with line
}
\f
/* Show source lines from the file of symtab S, starting with line
@@
-1508,7
+1515,7
@@
line_info (char *arg, int from_tty)
}
/* x/i should display this line's code. */
}
/* x/i should display this line's code. */
- set_next_address (start_pc);
+ set_next_address (
current_gdbarch,
start_pc);
/* Repeating "info line" should do the following line. */
last_line_listed = sal.line + 1;
/* Repeating "info line" should do the following line. */
last_line_listed = sal.line + 1;
@@
-1538,6
+1545,7
@@
forward_search_command (char *regex, int from_tty)
FILE *stream;
int line;
char *msg;
FILE *stream;
int line;
char *msg;
+ struct cleanup *cleanups;
line = last_line_listed + 1;
line = last_line_listed + 1;
@@
-1551,24
+1559,21
@@
forward_search_command (char *regex, int from_tty)
desc = open_source_file (current_source_symtab);
if (desc < 0)
perror_with_name (current_source_symtab->filename);
desc = open_source_file (current_source_symtab);
if (desc < 0)
perror_with_name (current_source_symtab->filename);
+ cleanups = make_cleanup_close (desc);
if (current_source_symtab->line_charpos == 0)
find_source_lines (current_source_symtab, desc);
if (line < 1 || line > current_source_symtab->nlines)
if (current_source_symtab->line_charpos == 0)
find_source_lines (current_source_symtab, desc);
if (line < 1 || line > current_source_symtab->nlines)
- {
- close (desc);
- error (_("Expression not found"));
- }
+ error (_("Expression not found"));
if (lseek (desc, current_source_symtab->line_charpos[line - 1], 0) < 0)
if (lseek (desc, current_source_symtab->line_charpos[line - 1], 0) < 0)
- {
- close (desc);
- perror_with_name (current_source_symtab->filename);
- }
+ perror_with_name (current_source_symtab->filename);
+ discard_cleanups (cleanups);
stream = fdopen (desc, FDOPEN_MODE);
clearerr (stream);
stream = fdopen (desc, FDOPEN_MODE);
clearerr (stream);
+ cleanups = make_cleanup_fclose (stream);
while (1)
{
static char *buf = NULL;
while (1)
{
static char *buf = NULL;
@@
-1610,9
+1615,7
@@
forward_search_command (char *regex, int from_tty)
/* Match! */
fclose (stream);
print_source_lines (current_source_symtab, line, line + 1, 0);
/* Match! */
fclose (stream);
print_source_lines (current_source_symtab, line, line + 1, 0);
- set_internalvar (lookup_internalvar ("_"),
- value_from_longest (builtin_type_int,
- (LONGEST) line));
+ set_internalvar_integer (lookup_internalvar ("_"), line);
current_source_line = max (line - lines_to_list / 2, 1);
return;
}
current_source_line = max (line - lines_to_list / 2, 1);
return;
}
@@
-1620,7
+1623,7
@@
forward_search_command (char *regex, int from_tty)
}
printf_filtered (_("Expression not found\n"));
}
printf_filtered (_("Expression not found\n"));
-
fclose (stream
);
+
do_cleanups (cleanups
);
}
static void
}
static void
@@
-1631,6
+1634,7
@@
reverse_search_command (char *regex, int from_tty)
FILE *stream;
int line;
char *msg;
FILE *stream;
int line;
char *msg;
+ struct cleanup *cleanups;
line = last_line_listed - 1;
line = last_line_listed - 1;
@@
-1644,24
+1648,21
@@
reverse_search_command (char *regex, int from_tty)
desc = open_source_file (current_source_symtab);
if (desc < 0)
perror_with_name (current_source_symtab->filename);
desc = open_source_file (current_source_symtab);
if (desc < 0)
perror_with_name (current_source_symtab->filename);
+ cleanups = make_cleanup_close (desc);
if (current_source_symtab->line_charpos == 0)
find_source_lines (current_source_symtab, desc);
if (line < 1 || line > current_source_symtab->nlines)
if (current_source_symtab->line_charpos == 0)
find_source_lines (current_source_symtab, desc);
if (line < 1 || line > current_source_symtab->nlines)
- {
- close (desc);
- error (_("Expression not found"));
- }
+ error (_("Expression not found"));
if (lseek (desc, current_source_symtab->line_charpos[line - 1], 0) < 0)
if (lseek (desc, current_source_symtab->line_charpos[line - 1], 0) < 0)
- {
- close (desc);
- perror_with_name (current_source_symtab->filename);
- }
+ perror_with_name (current_source_symtab->filename);
+ discard_cleanups (cleanups);
stream = fdopen (desc, FDOPEN_MODE);
clearerr (stream);
stream = fdopen (desc, FDOPEN_MODE);
clearerr (stream);
+ cleanups = make_cleanup_fclose (stream);
while (line > 1)
{
/* FIXME!!! We walk right off the end of buf if we get a long line!!! */
while (line > 1)
{
/* FIXME!!! We walk right off the end of buf if we get a long line!!! */
@@
-1692,9
+1693,7
@@
reverse_search_command (char *regex, int from_tty)
/* Match! */
fclose (stream);
print_source_lines (current_source_symtab, line, line + 1, 0);
/* Match! */
fclose (stream);
print_source_lines (current_source_symtab, line, line + 1, 0);
- set_internalvar (lookup_internalvar ("_"),
- value_from_longest (builtin_type_int,
- (LONGEST) line));
+ set_internalvar_integer (lookup_internalvar ("_"), line);
current_source_line = max (line - lines_to_list / 2, 1);
return;
}
current_source_line = max (line - lines_to_list / 2, 1);
return;
}
@@
-1707,7
+1706,7
@@
reverse_search_command (char *regex, int from_tty)
}
printf_filtered (_("Expression not found\n"));
}
printf_filtered (_("Expression not found\n"));
-
fclose (stream
);
+
do_cleanups (cleanups
);
return;
}
return;
}
@@
-1746,7
+1745,7
@@
find_substitute_path_rule (const char *from)
/* Add a new substitute-path rule at the end of the current list of rules.
The new rule will replace FROM into TO. */
/* Add a new substitute-path rule at the end of the current list of rules.
The new rule will replace FROM into TO. */
-
static
void
+void
add_substitute_path_rule (char *from, char *to)
{
struct substitute_path_rule *rule;
add_substitute_path_rule (char *from, char *to)
{
struct substitute_path_rule *rule;
@@
-1810,7
+1809,7
@@
show_substitute_path_command (char *args, int from_tty)
char **argv;
char *from = NULL;
char **argv;
char *from = NULL;
- argv = buildargv (args);
+ argv =
gdb_
buildargv (args);
make_cleanup_freeargv (argv);
/* We expect zero or one argument. */
make_cleanup_freeargv (argv);
/* We expect zero or one argument. */
@@
-1843,7
+1842,7
@@
static void
unset_substitute_path_command (char *args, int from_tty)
{
struct substitute_path_rule *rule = substitute_path_rules;
unset_substitute_path_command (char *args, int from_tty)
{
struct substitute_path_rule *rule = substitute_path_rules;
- char **argv = buildargv (args);
+ char **argv =
gdb_
buildargv (args);
char *from = NULL;
int rule_found = 0;
char *from = NULL;
int rule_found = 0;
@@
-1896,7
+1895,7
@@
set_substitute_path_command (char *args, int from_tty)
char **argv;
struct substitute_path_rule *rule;
char **argv;
struct substitute_path_rule *rule;
- argv = buildargv (args);
+ argv =
gdb_
buildargv (args);
make_cleanup_freeargv (argv);
if (argv == NULL || argv[0] == NULL || argv [1] == NULL)
make_cleanup_freeargv (argv);
if (argv == NULL || argv[0] == NULL || argv [1] == NULL)
This page took
0.027658 seconds
and
4
git commands to generate.