aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2002-02-10 10:55:23 +0000
committerAlan Modra <amodra@gmail.com>2002-02-10 10:55:23 +0000
commit1e281515063f796a7ff5c9596222a85084dd7284 (patch)
treede02d9c92d35fb99533ae5c618e8ee25b95c431c
parent4a69ea0b0e80d97ae0534f4fa412e240e7a9473f (diff)
downloadgdb-1e281515063f796a7ff5c9596222a85084dd7284.zip
gdb-1e281515063f796a7ff5c9596222a85084dd7284.tar.gz
gdb-1e281515063f796a7ff5c9596222a85084dd7284.tar.bz2
* ldlang.c (entry_section): New initialised variable.
(lang_finish): Use it. * ldlang.h (entry_section): Declare. * emultempl/ppc64elf.em (gld${EMULATION_NAME}_finish): Set entry_section to ".opd".
-rw-r--r--ld/ChangeLog8
-rw-r--r--ld/emultempl/ppc64elf.em5
-rw-r--r--ld/ldlang.c3
-rw-r--r--ld/ldlang.h1
4 files changed, 16 insertions, 1 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index a4fa7cc..4d0f866 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,11 @@
+2002-02-10 Alan Modra <amodra@bigpond.net.au>
+
+ * ldlang.c (entry_section): New initialised variable.
+ (lang_finish): Use it.
+ * ldlang.h (entry_section): Declare.
+ * emultempl/ppc64elf.em (gld${EMULATION_NAME}_finish): Set
+ entry_section to ".opd".
+
2002-02-09 Chris Demetriou <cgd@broadcom.com>
* ld.texinfo (Options): Add back in -nostdlib documentation,
diff --git a/ld/emultempl/ppc64elf.em b/ld/emultempl/ppc64elf.em
index 7e52434..27b20ce 100644
--- a/ld/emultempl/ppc64elf.em
+++ b/ld/emultempl/ppc64elf.em
@@ -47,6 +47,11 @@ gld${EMULATION_NAME}_after_allocation ()
static void
gld${EMULATION_NAME}_finish ()
{
+ /* e_entry on PowerPC64 points to the function descriptor for
+ _start. If _start is missing, default to the first function
+ descriptor in the .opd section. */
+ entry_section = ".opd";
+
/* If generating a relocatable output file, then we don't have any
stubs. */
if (link_info.relocateable)
diff --git a/ld/ldlang.c b/ld/ldlang.c
index 456bc7f..bc705ad 100644
--- a/ld/ldlang.c
+++ b/ld/ldlang.c
@@ -178,6 +178,7 @@ lang_statement_list_type lang_output_section_statement;
lang_statement_list_type *stat_ptr = &statement_list;
lang_statement_list_type file_chain = { NULL, NULL };
const char *entry_symbol = NULL;
+const char *entry_section = ".text";
boolean entry_from_cmdline;
boolean lang_has_input_file = false;
boolean had_output_filename = false;
@@ -3465,7 +3466,7 @@ lang_finish ()
/* Can't find the entry symbol, and it's not a number. Use
the first address in the text section. */
- ts = bfd_get_section_by_name (output_bfd, ".text");
+ ts = bfd_get_section_by_name (output_bfd, entry_section);
if (ts != (asection *) NULL)
{
if (warn)
diff --git a/ld/ldlang.h b/ld/ldlang.h
index 7641992..5e50c5c 100644
--- a/ld/ldlang.h
+++ b/ld/ldlang.h
@@ -356,6 +356,7 @@ extern lang_statement_list_type *stat_ptr;
extern boolean delete_output_file_on_failure;
extern const char *entry_symbol;
+extern const char *entry_section;
extern boolean entry_from_cmdline;
extern lang_statement_list_type file_chain;