From afe002dd6619560c569ac0e080cbf220c826f989 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Wed, 31 Aug 2016 12:34:36 +0930 Subject: [PATCH] [GOLD] Add debug output for powerpc section grouping * debug.h (DEBUG_TARGET): New. (DEBUG_ALL): Add DEBUG_TARGET. (gold_debug): Delete FORMAT param. * powerpc.cc (Stub_control::can_add_to_stub_group): Print debug ourput. --- gold/ChangeLog | 7 +++++++ gold/debug.h | 8 +++++--- gold/powerpc.cc | 9 +++++++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/gold/ChangeLog b/gold/ChangeLog index 0ea09f9..2cf964d 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,10 @@ +2016-08-31 Alan Modra + + * debug.h (DEBUG_TARGET): New. + (DEBUG_ALL): Add DEBUG_TARGET. + (gold_debug): Delete FORMAT param. + * powerpc.cc (Stub_control::can_add_to_stub_group): Print debug ourput. + 2016-08-30 Alan Modra PR 20523 diff --git a/gold/debug.h b/gold/debug.h index e95408f..6fd72c2 100644 --- a/gold/debug.h +++ b/gold/debug.h @@ -39,10 +39,11 @@ const int DEBUG_FILES = 0x4; const int DEBUG_RELAXATION = 0x8; const int DEBUG_INCREMENTAL = 0x10; const int DEBUG_LOCATION = 0x20; +const int DEBUG_TARGET = 0x40; const int DEBUG_ALL = (DEBUG_TASK | DEBUG_SCRIPT | DEBUG_FILES | DEBUG_RELAXATION | DEBUG_INCREMENTAL - | DEBUG_LOCATION); + | DEBUG_LOCATION | DEBUG_TARGET); // Convert a debug string to the appropriate enum. inline int @@ -57,6 +58,7 @@ debug_string_to_enum(const char* arg) { "relaxation", DEBUG_RELAXATION }, { "incremental", DEBUG_INCREMENTAL }, { "location", DEBUG_LOCATION }, + { "target", DEBUG_TARGET }, { "all", DEBUG_ALL } }; @@ -70,11 +72,11 @@ debug_string_to_enum(const char* arg) // Print a debug message if TYPE is enabled. This is a macro so that // we only evaluate the arguments if necessary. -#define gold_debug(TYPE, FORMAT, ...) \ +#define gold_debug(TYPE, ...) \ do \ { \ if (is_debugging_enabled(TYPE)) \ - parameters->errors()->debug(FORMAT, __VA_ARGS__); \ + parameters->errors()->debug(__VA_ARGS__); \ } \ while (0) diff --git a/gold/powerpc.cc b/gold/powerpc.cc index d0dd672..1d5cd97 100644 --- a/gold/powerpc.cc +++ b/gold/powerpc.cc @@ -2522,6 +2522,13 @@ Stub_control::can_add_to_stub_group(Output_section* o, i->relobj()->name().c_str(), i->relobj()->section_name(i->shndx()).c_str()); + gold_debug(DEBUG_TARGET, "maybe add%s %s:%s size=%#llx total=%#llx", + has14 ? " 14bit" : "", + i->relobj()->name().c_str(), + i->relobj()->section_name(i->shndx()).c_str(), + (long long) this_size, + (long long) this->group_end_addr_ - start_addr); + this->has14_ = this->has14_ || has14; group_size = this->has14_ ? this->stub14_group_size_ : this->stub_group_size_; @@ -2579,6 +2586,8 @@ Stub_control::can_add_to_stub_group(Output_section* o, gold_unreachable(); } + gold_debug(DEBUG_TARGET, "nope, didn't fit\n"); + // The section fails to fit in the current group. Set up a few // things for the next group. owner_ and output_section_ will be // set later after we've retrieved those values for the current -- 2.7.4