aboutsummaryrefslogtreecommitdiff
path: root/gold
diff options
context:
space:
mode:
authorCary Coutant <ccoutant@google.com>2015-02-02 11:47:58 -0800
committerCary Coutant <ccoutant@google.com>2015-02-03 20:03:41 -0800
commit8265ef950202a4bf0d3444802ad5d7087b4b185d (patch)
tree32afb08f5da779e88b50937762158262b1e13839 /gold
parentb10c5c5012c3accfefa3f3847d3eb83a788bdbbf (diff)
downloadfsf-binutils-gdb-8265ef950202a4bf0d3444802ad5d7087b4b185d.zip
fsf-binutils-gdb-8265ef950202a4bf0d3444802ad5d7087b4b185d.tar.gz
fsf-binutils-gdb-8265ef950202a4bf0d3444802ad5d7087b4b185d.tar.bz2
Add extra debugging output for files and descriptors.
gold/ * descriptors.cc (Descriptors::open): Set artificially-low limit for file descriptors when debugging enabled. Add debug output. (Descriptors::release): Add debug output. (Descriptors::close_some_descriptor): Likewise. (Descriptors::close_all): Likewise. * fileread.cc (File_read::lock): Likewise. (File_read::unlock): Likewise.
Diffstat (limited to 'gold')
-rw-r--r--gold/descriptors.cc17
-rw-r--r--gold/fileread.cc2
2 files changed, 19 insertions, 0 deletions
diff --git a/gold/descriptors.cc b/gold/descriptors.cc
index 04916c6..c55d45b 100644
--- a/gold/descriptors.cc
+++ b/gold/descriptors.cc
@@ -28,6 +28,7 @@
#include <fcntl.h>
#include <unistd.h>
+#include "debug.h"
#include "parameters.h"
#include "options.h"
#include "gold-threads.h"
@@ -81,6 +82,9 @@ Descriptors::open(int descriptor, const char* name, int flags, int mode)
gold_assert(lock_initialized || descriptor < 0);
+ if (is_debugging_enabled(DEBUG_FILES))
+ this->limit_ = 8;
+
if (descriptor >= 0)
{
Hold_lock hl(*this->lock_);
@@ -99,6 +103,8 @@ Descriptors::open(int descriptor, const char* name, int flags, int mode)
pod->stack_next = -1;
pod->is_on_stack = false;
}
+ gold_debug(DEBUG_FILES, "Reused existing descriptor %d for \"%s\"",
+ descriptor, name);
return descriptor;
}
}
@@ -128,6 +134,8 @@ Descriptors::open(int descriptor, const char* name, int flags, int mode)
errno = ENOENT;
}
+ gold_debug(DEBUG_FILES, "Opened new descriptor %d for \"%s\"",
+ new_descriptor, name);
return new_descriptor;
}
@@ -162,6 +170,8 @@ Descriptors::open(int descriptor, const char* name, int flags, int mode)
if (this->current_ >= this->limit_)
this->close_some_descriptor();
+ gold_debug(DEBUG_FILES, "Opened new descriptor %d for \"%s\"",
+ new_descriptor, name);
return new_descriptor;
}
}
@@ -209,6 +219,9 @@ Descriptors::release(int descriptor, bool permanent)
pod->is_on_stack = true;
}
}
+
+ gold_debug(DEBUG_FILES, "Released descriptor %d for \"%s\"",
+ descriptor, pod->name);
}
// Close some descriptor. The lock is held when this is called. We
@@ -233,6 +246,8 @@ Descriptors::close_some_descriptor()
if (::close(i) < 0)
gold_warning(_("while closing %s: %s"), pod->name, strerror(errno));
--this->current_;
+ gold_debug(DEBUG_FILES, "Closed descriptor %d for \"%s\"",
+ i, pod->name);
pod->name = NULL;
if (last < 0)
this->stack_top_ = pod->stack_next;
@@ -265,6 +280,8 @@ Descriptors::close_all()
{
if (::close(i) < 0)
gold_warning(_("while closing %s: %s"), pod->name, strerror(errno));
+ gold_debug(DEBUG_FILES, "Closed descriptor %d for \"%s\" (close_all)",
+ static_cast<int>(i), pod->name);
pod->name = NULL;
pod->stack_next = -1;
pod->is_on_stack = false;
diff --git a/gold/fileread.cc b/gold/fileread.cc
index cf70981..0bd8320 100644
--- a/gold/fileread.cc
+++ b/gold/fileread.cc
@@ -293,6 +293,7 @@ void
File_read::lock(const Task* task)
{
gold_assert(this->released_);
+ gold_debug(DEBUG_FILES, "Locking file \"%s\"", this->name_.c_str());
this->token_.add_writer(task);
this->released_ = false;
}
@@ -302,6 +303,7 @@ File_read::lock(const Task* task)
void
File_read::unlock(const Task* task)
{
+ gold_debug(DEBUG_FILES, "Unlocking file \"%s\"", this->name_.c_str());
this->release();
this->token_.remove_writer(task);
}