aboutsummaryrefslogtreecommitdiff
path: root/gold/gc.h
diff options
context:
space:
mode:
Diffstat (limited to 'gold/gc.h')
-rw-r--r--gold/gc.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/gold/gc.h b/gold/gc.h
index 7c79c23..78ead41 100644
--- a/gold/gc.h
+++ b/gold/gc.h
@@ -247,7 +247,12 @@ gc_process_relocs(
(*secvec).push_back(Section_id(src_obj, dst_indx));
else
(*secvec).push_back(Section_id(NULL, 0));
- (*symvec).push_back(NULL);
+ // If the target of the relocation is an STT_SECTION symbol,
+ // make a note of that by storing -1 in the symbol vector.
+ if (lsym.get_st_type() == elfcpp::STT_SECTION)
+ (*symvec).push_back(reinterpret_cast<Symbol*>(-1));
+ else
+ (*symvec).push_back(NULL);
(*addendvec).push_back(std::make_pair(
static_cast<long long>(symvalue),
static_cast<long long>(addend)));