darwin: Don't use sbrk

This patch gets rid of this warning on macOS:

    CXX    main.o
  /Users/simark/src/binutils-gdb/gdb/main.c:492:27: error: 'sbrk' is deprecated [-Werror,-Wdeprecated-declarations]
    lim_at_start = (char *) sbrk (0);
                            ^
  /usr/include/unistd.h:585:1: note: 'sbrk' has been explicitly marked deprecated here
  __deprecated __WATCHOS_PROHIBITED __TVOS_PROHIBITED
  ^
  /usr/include/sys/cdefs.h:176:37: note: expanded from macro '__deprecated'
  #define __deprecated    __attribute__((deprecated))
                                         ^

sbrk on macOS is not useful for our purposes, since sbrk(0) always
returns the same value.  From what I read, brk/sbrk on macOS is just an
emulation, it always returns a pointer in a 4MB section reserved for
that.

So instead of letting users use "maint set per-command space on" and
print silly results, I think we should just disable that feature for
this platform (as we do for platforms that don't have sbrk).

I defined a HAVE_USEFUL_SBRK macro and used that instead of HAVE_SBRK.

gdb/ChangeLog:

	* common/common-defs.h (HAVE_USEFUL_SBRK): Define.
	* main.c: Use HAVE_USEFUL_SBRK instead of HAVE_SBRK.
	* maint.c: Likewise.
	* top.c: Likewise.
This commit is contained in:
Simon Marchi 2018-07-04 12:40:25 -04:00 committed by Simon Marchi
parent 4e5b2f8961
commit 6242c6a690
5 changed files with 20 additions and 4 deletions

View File

@ -1,3 +1,10 @@
2018-07-04 Simon Marchi <simon.marchi@polymtl.ca>
* common/common-defs.h (HAVE_USEFUL_SBRK): Define.
* main.c: Use HAVE_USEFUL_SBRK instead of HAVE_SBRK.
* maint.c: Likewise.
* top.c: Likewise.
2018-07-04 Joel Brobecker <brobecker@adacore.com>
* NEWS: Create a new section for the next release branch.

View File

@ -105,4 +105,13 @@
/* String containing the current directory (what getwd would return). */
extern char *current_directory;
/* sbrk on macOS is not useful for our purposes, since sbrk(0) always
returns the same value. brk/sbrk on macOS is just an emulation
that always returns a pointer to a 4MB section reserved for
that. */
#if defined (HAVE_SBRK) && !__APPLE__
#define HAVE_USEFUL_SBRK 1
#endif
#endif /* COMMON_DEFS_H */

View File

@ -487,7 +487,7 @@ captured_main_1 (struct captured_main_args *context)
int save_auto_load;
struct objfile *objfile;
#ifdef HAVE_SBRK
#ifdef HAVE_USEFUL_SBRK
/* Set this before constructing scoped_command_stats. */
lim_at_start = (char *) sbrk (0);
#endif

View File

@ -828,7 +828,7 @@ scoped_command_stats::~scoped_command_stats ()
if (m_space_enabled && per_command_space)
{
#ifdef HAVE_SBRK
#ifdef HAVE_USEFUL_SBRK
char *lim = (char *) sbrk (0);
long space_now = lim - lim_at_start;
@ -866,7 +866,7 @@ scoped_command_stats::scoped_command_stats (bool msg_type)
{
if (!m_msg_type || per_command_space)
{
#ifdef HAVE_SBRK
#ifdef HAVE_USEFUL_SBRK
char *lim = (char *) sbrk (0);
m_start_space = lim - lim_at_start;
m_space_enabled = 1;

View File

@ -171,7 +171,7 @@ int remote_timeout = 2;
int remote_debug = 0;
/* Sbrk location on entry to main. Used for statistics only. */
#ifdef HAVE_SBRK
#ifdef HAVE_USEFUL_SBRK
char *lim_at_start;
#endif