Files
binutils-gdb/gdb/testsuite/gdb.reverse/time-reverse.c
Tom de Vries da67644ef5 [gdb/testsuite] Record less in gdb.reverse/time-reverse.exp
While stepping through gdb.reverse/time-reverse.exp I realized that we're
recording the instructions for resolving the PLT entries for functions time
and syscall, while that's not really the focus of the test-case.

Limit the scope of the test, by calling the functions once before starting
to record.

Also call "info record" after recording to make it clear how many
instructions were recorded.

On x86_64-linux, before this patch (but with info record added), we have:
...
$ grep "Log contains" gdb.log
Log contains 750 instructions.
Log contains 1218 instructions.
...
and with this patch we have:
...
$ grep "Log contains" gdb.log
Log contains 24 instructions.
Log contains 19 instructions.
...

Tested on x86_64-linux.

Approved-By: Guinevere Larsen <guinevere@redhat.com>
2025-01-24 16:37:36 +01:00

61 lines
1.4 KiB
C

/* This testcase is part of GDB, the GNU debugger.
Copyright 2008-2024 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/>. */
#define _GNU_SOURCE
#include <time.h>
#include <sys/syscall.h>
#include <unistd.h>
#ifdef USE_SYSCALL
# define my_time(TLOC) syscall (SYS_time, TLOC)
#else
# define my_time(TLOC) time (TLOC)
#endif
void
marker1 (void)
{
}
void
marker2 (void)
{
}
time_t time_global = -1;
int
main (void)
{
/* Call once before recording to resolve the PLT, if any. This reduces the
amount of instructions that is recorded. */
my_time (&time_global);
/* Reset back to initial value. */
time_global = -1;
/* Start recording here. */
marker1 ();
my_time (&time_global);
/* Stop recording here. */
marker2 ();
return 0;
}