Files
binutils-gdb/gdb/testsuite/gdb.base/gcore-memory-usage.c
Guinevere Larsen 18b66eb587 gdb/testsuite: add test for memory requirements of gcore
For a long time, Fedora has been carrying an out-of-tree patch with a
similar test to the one proposed in this patch, that ensures that the
memory requirements don't grow with the inferior's memory. It's been
so long that the context for why this test exists has been lost, but
it looked like it could be interesting for upstream.

The test runs twice, once with the inferior allocating 4Mb of memory,
and the other allocating 64Mb. My plan was to find the rate at which
things increase based on inferior size, and have that tested to ensure
we're not growing that requirement accidentally, but my testing
actually showed memory requirements going down as the inferior increases,
so instead I just hardcoded that we need less than 2Mb for the command,
and it can be tweaked later if necessary.

Approved-By: Tom Tromey <tom@tromey.com>
2025-03-05 17:37:28 -03:00

54 lines
1.6 KiB
C

/* This testcase is part of GDB, the GNU debugger.
Copyright 2025 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int spin = 1;
int
main (int argc, char **argv)
{
/* Small quality of life thing for people re-running tests
manually. */
if (argc < 2)
{
printf("Usage: %s [Megs]", argv[0]);
return 1;
}
/* Use argv to calculate how many megabytes to allocate.
Do this to see how much gcore memory usage increases
based on inferior dynamic memory. */
int megs = atoi (argv[1]);
char *p = malloc (megs * 1024 * 1024);
/* Setup an alarm, in case something goes wrong with testing. */
alarm (300);
/* Wait a long time so GDB can attach to this.
We need to have the second statement inside of the loop
to sidestep PR breakpoints/32744. */
while (spin)
sleep (1);/* TAG: BREAK HERE */
/* Let's be nice citizens :). */
free (p);
return 0;
}