From: Alan Modra Date: Sun, 10 Feb 2002 10:55:23 +0000 (+0000) Subject: * ldlang.c (entry_section): New initialised variable. X-Git-Tag: gdb_5_2-2002-03-03-branchpoint~363 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1e281515063f796a7ff5c9596222a85084dd7284;p=external%2Fbinutils.git * 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". --- 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 + + * 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 * 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;