aboutsummaryrefslogtreecommitdiff
path: root/gold/layout.cc
diff options
context:
space:
mode:
authorSriraman Tallam <tmsriram@google.com>2010-01-07 07:14:30 +0000
committerSriraman Tallam <tmsriram@google.com>2010-01-07 07:14:30 +0000
commitf1ec9ded5c740c22735843025e5d3a8ff4c4079e (patch)
tree107b73798abba65f1697fd2751cca3b6b31e9ef8 /gold/layout.cc
parentb9674e179b86530631391dd38988d2f5da4f40c0 (diff)
downloadgdb-f1ec9ded5c740c22735843025e5d3a8ff4c4079e.zip
gdb-f1ec9ded5c740c22735843025e5d3a8ff4c4079e.tar.gz
gdb-f1ec9ded5c740c22735843025e5d3a8ff4c4079e.tar.bz2
* gc.h (Garbage_collection::Cident_section_map): New typedef.
(Garbage_collection::cident_sections): New function. (Garbage_collection::add_cident_section): New function. (Garbage_collection::cident_sections_): New member. (gc_process_relocs): Add references to sections whose names are C identifiers. * gold.h (cident_section_start_prefix): New constant. (cident_section_stop_prefix): New constant. (is_cident): New function. * layout.cc (Layout::define_section_symbols): Replace string constants with the newly defined constants. * object.cc (Sized_relobj::do_layout): Track sections whose names are C identifiers. * testsuite/Makefile.am: Add gc_orphan_section_test. * testsuite/Makefile.in: Regenerate. * testsuite/gc_orphan_section_test.cc: New file. * testsuite/gc_orphan_section_test.sh: New file.
Diffstat (limited to 'gold/layout.cc')
-rw-r--r--gold/layout.cc15
1 files changed, 6 insertions, 9 deletions
diff --git a/gold/layout.cc b/gold/layout.cc
index f3deb9a..f427af5 100644
--- a/gold/layout.cc
+++ b/gold/layout.cc
@@ -1,6 +1,6 @@
// layout.cc -- lay out output file sections for gold
-// Copyright 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+// Copyright 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
@@ -1232,16 +1232,13 @@ Layout::define_section_symbols(Symbol_table* symtab)
++p)
{
const char* const name = (*p)->name();
- if (name[strspn(name,
- ("0123456789"
- "ABCDEFGHIJKLMNOPWRSTUVWXYZ"
- "abcdefghijklmnopqrstuvwxyz"
- "_"))]
- == '\0')
+ if (is_cident(name))
{
const std::string name_string(name);
- const std::string start_name("__start_" + name_string);
- const std::string stop_name("__stop_" + name_string);
+ const std::string start_name(cident_section_start_prefix
+ + name_string);
+ const std::string stop_name(cident_section_stop_prefix
+ + name_string);
symtab->define_in_output_data(start_name.c_str(),
NULL, // version