From: Richard Henderson Date: Mon, 2 Jun 2003 16:02:59 +0000 (+0000) Subject: * top.h (lim_at_start): Declare. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6dd77b815f4252948dae6b0a7e467789b09c6bbb;p=binutils-gdb.git * top.h (lim_at_start): Declare. * main.c (captured_main): Set it. * top.c (lim_at_start): Define. (command_loop): Use it instead of &environ. * event-top.c (command_handler): Likewise. * gdb.base/selftest.exp: Next over lim_at_start initialization. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index a83c493c043..68cb29db1e3 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2003-06-02 Richard Henderson + + * top.h (lim_at_start): Declare. + * main.c (captured_main): Set it. + * top.c (lim_at_start): Define. + (command_loop): Use it instead of &environ. + * event-top.c (command_handler): Likewise. + 2003-06-01 Jason Thorpe * mipsnbsd-tdep.c: Update copyright years. diff --git a/gdb/event-top.c b/gdb/event-top.c index ceef7b9c9eb..5ab324df758 100644 --- a/gdb/event-top.c +++ b/gdb/event-top.c @@ -492,10 +492,8 @@ command_handler (char *command) if (display_space) { #ifdef HAVE_SBRK - extern char **environ; char *lim = (char *) sbrk (0); - - space_at_cmd_start = (long) (lim - (char *) &environ); + space_at_cmd_start = lim - lim_at_start; #endif } @@ -538,9 +536,8 @@ command_handler (char *command) if (display_space) { #ifdef HAVE_SBRK - extern char **environ; char *lim = (char *) sbrk (0); - long space_now = lim - (char *) &environ; + long space_now = lim - lim_at_start; long space_diff = space_now - space_at_cmd_start; printf_unfiltered ("Space used: %ld (%c%ld for this command)\n", @@ -577,9 +574,8 @@ command_line_handler_continuation (struct continuation_arg *arg) if (display_space) { #ifdef HAVE_SBRK - extern char **environ; char *lim = (char *) sbrk (0); - long space_now = lim - (char *) &environ; + long space_now = lim - lim_at_start; long space_diff = space_now - space_at_cmd_start; printf_unfiltered ("Space used: %ld (%c%ld for this command)\n", diff --git a/gdb/main.c b/gdb/main.c index fd25750b94e..240aa00acfd 100644 --- a/gdb/main.c +++ b/gdb/main.c @@ -168,6 +168,10 @@ captured_main (void *data) /* This needs to happen before the first use of malloc. */ init_malloc (NULL); +#ifdef HAVE_SBRK + lim_at_start = (char *) sbrk (0); +#endif + #if defined (ALIGN_STACK_ON_STARTUP) i = (int) &count & 0x3; if (i != 0) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index b4f4994f2ab..6fd08ae86b2 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2003-06-02 Richard Henderson + + * gdb.base/selftest.exp: Next over lim_at_start initialization. + 2003-06-02 Richard Henderson * gdb.base/dump.exp [alpha*-*-*]: Add -taso linker switch. diff --git a/gdb/testsuite/gdb.base/selftest.exp b/gdb/testsuite/gdb.base/selftest.exp index 5d9419ed298..a899e360111 100644 --- a/gdb/testsuite/gdb.base/selftest.exp +++ b/gdb/testsuite/gdb.base/selftest.exp @@ -115,6 +115,10 @@ proc do_steps_and_nexts {} { set description "next over init_malloc and everything it calls" set command "next" } + -re ".*lim_at_start.*$gdb_prompt $" { + set description "next over lim_at_start initialization" + set command "next" + } -re ".*count . 0x3.*$gdb_prompt $" { set description "next over conditional stack alignment code 1" set command "next" diff --git a/gdb/top.c b/gdb/top.c index fea71dfd87f..24410c4f53a 100644 --- a/gdb/top.c +++ b/gdb/top.c @@ -171,6 +171,11 @@ int target_executing = 0; /* Level of control structure. */ static int control_level; +/* Sbrk location on entry to main. Used for statistics only. */ +#ifdef HAVE_SBRK +char *lim_at_start; +#endif + /* Signal to catch ^Z typed while reading a command: SIGTSTP or SIGCONT. */ #ifndef STOP_SIGNAL @@ -782,10 +787,8 @@ command_loop (void) if (display_space) { #ifdef HAVE_SBRK - extern char **environ; char *lim = (char *) sbrk (0); - - space_at_cmd_start = (long) (lim - (char *) &environ); + space_at_cmd_start = lim - lim_at_start; #endif } @@ -805,9 +808,8 @@ command_loop (void) if (display_space) { #ifdef HAVE_SBRK - extern char **environ; char *lim = (char *) sbrk (0); - long space_now = lim - (char *) &environ; + long space_now = lim - lim_at_start; long space_diff = space_now - space_at_cmd_start; printf_unfiltered ("Space used: %ld (%c%ld for this command)\n", diff --git a/gdb/top.h b/gdb/top.h index ca0b3d13dc6..b103040325e 100644 --- a/gdb/top.h +++ b/gdb/top.h @@ -70,5 +70,6 @@ extern char *source_error; extern char *source_pre_error; extern int history_expansion_p; extern int server_command; +extern char *lim_at_start; #endif