gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / gold / timer.cc
index d9b8874a59c3cff4c8538d8fc1449d68512abd62..d4adf51577558f1bda9430b787681b16234fc64b 100644 (file)
@@ -1,6 +1,6 @@
 // timer.cc -- helper class for time accounting
 
-// Copyright 2009, 2010 Free Software Foundation, Inc.
+// Copyright (C) 2009-2020 Free Software Foundation, Inc.
 // Written by Rafael Avila de Espindola <espindola@google.com>.
 
 // This file is part of gold.
@@ -22,6 +22,8 @@
 
 #include "gold.h"
 
+#include <unistd.h>
+
 #ifdef HAVE_TIMES
 #include <sys/times.h>
 #endif
@@ -49,6 +51,15 @@ Timer::start()
   this->get_time(&this->start_time_);
 }
 
+// Record the time used by pass N (0 <= N <= 2).
+void
+Timer::stamp(int n)
+{
+  gold_assert(n >= 0 && n <= 2);
+  TimeStats& thispass = this->pass_times_[n];
+  this->get_time(&thispass);
+}
+
 #if HAVE_SYSCONF && defined _SC_CLK_TCK
 # define TICKS_PER_SECOND sysconf (_SC_CLK_TCK) /* POSIX 1003.1-1996 */
 #else
@@ -106,4 +117,17 @@ Timer::get_elapsed_time()
   return delta;
 }
 
+// Return the stats for pass N (0 <= N <= 2).
+Timer::TimeStats
+Timer::get_pass_time(int n)
+{
+  gold_assert(n >= 0 && n <= 2);
+  TimeStats thispass = this->pass_times_[n];
+  TimeStats& lastpass = n > 0 ? this->pass_times_[n-1] : this->start_time_;
+  thispass.wall -= lastpass.wall;
+  thispass.user -= lastpass.user;
+  thispass.sys -= lastpass.sys;
+  return thispass;
+}
+
 }
This page took 0.023314 seconds and 4 git commands to generate.