mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-06 15:38:45 +08:00
* emultempl/ppc64elf.em (ppc_before_allocation): New function.
(LDEMUL_BEFORE_ALLOCATION): Define. (gld${EMULATION_NAME}_finish): Run discard_info for relocatable linking. * emultemp/hppaelf.em ((gld${EMULATION_NAME}_finish): Likewise.
This commit is contained in:
10
ld/ChangeLog
10
ld/ChangeLog
@ -1,3 +1,11 @@
|
|||||||
|
2002-11-12 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
|
* emultempl/ppc64elf.em (ppc_before_allocation): New function.
|
||||||
|
(LDEMUL_BEFORE_ALLOCATION): Define.
|
||||||
|
(gld${EMULATION_NAME}_finish): Run discard_info for relocatable
|
||||||
|
linking.
|
||||||
|
* emultemp/hppaelf.em ((gld${EMULATION_NAME}_finish): Likewise.
|
||||||
|
|
||||||
2002-11-11 Christopher Faylor <cgf@redhat.com>
|
2002-11-11 Christopher Faylor <cgf@redhat.com>
|
||||||
|
|
||||||
* configure.tgt (LIB_PATH): Default to searching w32api directory under
|
* configure.tgt (LIB_PATH): Default to searching w32api directory under
|
||||||
@ -27,7 +35,7 @@
|
|||||||
* emultempl/pe.em (pe_fixup_stdcalls): Don't fixup fastcall
|
* emultempl/pe.em (pe_fixup_stdcalls): Don't fixup fastcall
|
||||||
symbols to cdecl names or vise-versa.
|
symbols to cdecl names or vise-versa.
|
||||||
|
|
||||||
2002-10-13 Eric Kohl <ekohl@rz-online.de>
|
2002-10-13 Eric Kohl <ekohl@rz-online.de>
|
||||||
|
|
||||||
* pe-dll.c (process_def_file): Handle fastcall symbols when
|
* pe-dll.c (process_def_file): Handle fastcall symbols when
|
||||||
generating undecorated aliases. Don't prefix decorated fastcall
|
generating undecorated aliases. Don't prefix decorated fastcall
|
||||||
|
@ -263,13 +263,6 @@ build_section_lists (statement)
|
|||||||
static void
|
static void
|
||||||
gld${EMULATION_NAME}_finish ()
|
gld${EMULATION_NAME}_finish ()
|
||||||
{
|
{
|
||||||
int ret;
|
|
||||||
|
|
||||||
/* If generating a relocatable output file, then we don't
|
|
||||||
have to examine the relocs. */
|
|
||||||
if (link_info.relocateable)
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* bfd_elf32_discard_info just plays with debugging sections,
|
/* bfd_elf32_discard_info just plays with debugging sections,
|
||||||
ie. doesn't affect any code, so we can delay resizing the
|
ie. doesn't affect any code, so we can delay resizing the
|
||||||
sections. It's likely we'll resize everything in the process of
|
sections. It's likely we'll resize everything in the process of
|
||||||
@ -277,46 +270,55 @@ gld${EMULATION_NAME}_finish ()
|
|||||||
if (bfd_elf${ELFSIZE}_discard_info (output_bfd, &link_info))
|
if (bfd_elf${ELFSIZE}_discard_info (output_bfd, &link_info))
|
||||||
need_laying_out = 1;
|
need_laying_out = 1;
|
||||||
|
|
||||||
ret = elf32_hppa_setup_section_lists (output_bfd, &link_info);
|
/* If generating a relocatable output file, then we don't
|
||||||
if (ret != 0)
|
have to examine the relocs. */
|
||||||
|
if (! link_info.relocateable)
|
||||||
{
|
{
|
||||||
if (ret < 0)
|
int ret = elf32_hppa_setup_section_lists (output_bfd, &link_info);
|
||||||
{
|
|
||||||
einfo ("%X%P: can not size stub section: %E\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
lang_for_each_statement (build_section_lists);
|
if (ret != 0)
|
||||||
|
|
||||||
/* Call into the BFD backend to do the real work. */
|
|
||||||
if (! elf32_hppa_size_stubs (output_bfd,
|
|
||||||
stub_file->the_bfd,
|
|
||||||
&link_info,
|
|
||||||
multi_subspace,
|
|
||||||
group_size,
|
|
||||||
&hppaelf_add_stub_section,
|
|
||||||
&hppaelf_layout_sections_again))
|
|
||||||
{
|
{
|
||||||
einfo ("%X%P: can not size stub section: %E\n");
|
if (ret < 0)
|
||||||
return;
|
{
|
||||||
|
einfo ("%X%P: can not size stub section: %E\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
lang_for_each_statement (build_section_lists);
|
||||||
|
|
||||||
|
/* Call into the BFD backend to do the real work. */
|
||||||
|
if (! elf32_hppa_size_stubs (output_bfd,
|
||||||
|
stub_file->the_bfd,
|
||||||
|
&link_info,
|
||||||
|
multi_subspace,
|
||||||
|
group_size,
|
||||||
|
&hppaelf_add_stub_section,
|
||||||
|
&hppaelf_layout_sections_again))
|
||||||
|
{
|
||||||
|
einfo ("%X%P: can not size stub section: %E\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (need_laying_out)
|
if (need_laying_out)
|
||||||
hppaelf_layout_sections_again ();
|
hppaelf_layout_sections_again ();
|
||||||
|
|
||||||
/* Set the global data pointer. */
|
if (! link_info.relocateable)
|
||||||
if (! elf32_hppa_set_gp (output_bfd, &link_info))
|
|
||||||
{
|
{
|
||||||
einfo ("%X%P: can not set gp\n");
|
/* Set the global data pointer. */
|
||||||
return;
|
if (! elf32_hppa_set_gp (output_bfd, &link_info))
|
||||||
}
|
{
|
||||||
|
einfo ("%X%P: can not set gp\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* Now build the linker stubs. */
|
/* Now build the linker stubs. */
|
||||||
if (stub_file->the_bfd->sections != NULL)
|
if (stub_file->the_bfd->sections != NULL)
|
||||||
{
|
{
|
||||||
if (! elf32_hppa_build_stubs (&link_info))
|
if (! elf32_hppa_build_stubs (&link_info))
|
||||||
einfo ("%X%P: can not build stubs: %E\n");
|
einfo ("%X%P: can not build stubs: %E\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,6 +43,7 @@ static int dotsyms = 1;
|
|||||||
|
|
||||||
static void ppc_create_output_section_statements PARAMS ((void));
|
static void ppc_create_output_section_statements PARAMS ((void));
|
||||||
static void ppc_after_open PARAMS ((void));
|
static void ppc_after_open PARAMS ((void));
|
||||||
|
static void ppc_before_allocation PARAMS ((void));
|
||||||
static asection *ppc_add_stub_section PARAMS ((const char *, asection *));
|
static asection *ppc_add_stub_section PARAMS ((const char *, asection *));
|
||||||
static void ppc_layout_sections_again PARAMS ((void));
|
static void ppc_layout_sections_again PARAMS ((void));
|
||||||
static void gld${EMULATION_NAME}_after_allocation PARAMS ((void));
|
static void gld${EMULATION_NAME}_after_allocation PARAMS ((void));
|
||||||
@ -84,6 +85,18 @@ ppc_after_open ()
|
|||||||
gld${EMULATION_NAME}_after_open ();
|
gld${EMULATION_NAME}_after_open ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
ppc_before_allocation ()
|
||||||
|
{
|
||||||
|
if (!ppc64_elf_edit_opd (output_bfd, &link_info))
|
||||||
|
{
|
||||||
|
einfo ("%X%P: can not edit opd %E\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
gld${EMULATION_NAME}_before_allocation ();
|
||||||
|
}
|
||||||
|
|
||||||
struct hook_stub_info
|
struct hook_stub_info
|
||||||
{
|
{
|
||||||
lang_statement_list_type add;
|
lang_statement_list_type add;
|
||||||
@ -265,18 +278,11 @@ build_section_lists (statement)
|
|||||||
static void
|
static void
|
||||||
gld${EMULATION_NAME}_finish ()
|
gld${EMULATION_NAME}_finish ()
|
||||||
{
|
{
|
||||||
int ret;
|
|
||||||
|
|
||||||
/* e_entry on PowerPC64 points to the function descriptor for
|
/* e_entry on PowerPC64 points to the function descriptor for
|
||||||
_start. If _start is missing, default to the first function
|
_start. If _start is missing, default to the first function
|
||||||
descriptor in the .opd section. */
|
descriptor in the .opd section. */
|
||||||
entry_section = ".opd";
|
entry_section = ".opd";
|
||||||
|
|
||||||
/* If generating a relocatable output file, then we don't have any
|
|
||||||
stubs. */
|
|
||||||
if (link_info.relocateable)
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* bfd_elf64_discard_info just plays with debugging sections,
|
/* bfd_elf64_discard_info just plays with debugging sections,
|
||||||
ie. doesn't affect any code, so we can delay resizing the
|
ie. doesn't affect any code, so we can delay resizing the
|
||||||
sections. It's likely we'll resize everything in the process of
|
sections. It's likely we'll resize everything in the process of
|
||||||
@ -284,27 +290,32 @@ gld${EMULATION_NAME}_finish ()
|
|||||||
if (bfd_elf${ELFSIZE}_discard_info (output_bfd, &link_info))
|
if (bfd_elf${ELFSIZE}_discard_info (output_bfd, &link_info))
|
||||||
need_laying_out = 1;
|
need_laying_out = 1;
|
||||||
|
|
||||||
ret = ppc64_elf_setup_section_lists (output_bfd, &link_info);
|
/* If generating a relocatable output file, then we don't have any
|
||||||
if (ret != 0)
|
stubs. */
|
||||||
|
if (!link_info.relocateable)
|
||||||
{
|
{
|
||||||
if (ret < 0)
|
int ret = ppc64_elf_setup_section_lists (output_bfd, &link_info);
|
||||||
|
if (ret != 0)
|
||||||
{
|
{
|
||||||
einfo ("%X%P: can not size stub section: %E\n");
|
if (ret < 0)
|
||||||
return;
|
{
|
||||||
}
|
einfo ("%X%P: can not size stub section: %E\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
lang_for_each_statement (build_section_lists);
|
lang_for_each_statement (build_section_lists);
|
||||||
|
|
||||||
/* Call into the BFD backend to do the real work. */
|
/* Call into the BFD backend to do the real work. */
|
||||||
if (!ppc64_elf_size_stubs (output_bfd,
|
if (!ppc64_elf_size_stubs (output_bfd,
|
||||||
stub_file->the_bfd,
|
stub_file->the_bfd,
|
||||||
&link_info,
|
&link_info,
|
||||||
group_size,
|
group_size,
|
||||||
&ppc_add_stub_section,
|
&ppc_add_stub_section,
|
||||||
&ppc_layout_sections_again))
|
&ppc_layout_sections_again))
|
||||||
{
|
{
|
||||||
einfo ("%X%P: can not size stub section: %E\n");
|
einfo ("%X%P: can not size stub section: %E\n");
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -486,6 +497,7 @@ PARSE_AND_LIST_ARGS_CASES='
|
|||||||
# Put these extra ppc64elf routines in ld_${EMULATION_NAME}_emulation
|
# Put these extra ppc64elf routines in ld_${EMULATION_NAME}_emulation
|
||||||
#
|
#
|
||||||
LDEMUL_AFTER_OPEN=ppc_after_open
|
LDEMUL_AFTER_OPEN=ppc_after_open
|
||||||
|
LDEMUL_BEFORE_ALLOCATION=ppc_before_allocation
|
||||||
LDEMUL_AFTER_ALLOCATION=gld${EMULATION_NAME}_after_allocation
|
LDEMUL_AFTER_ALLOCATION=gld${EMULATION_NAME}_after_allocation
|
||||||
LDEMUL_FINISH=gld${EMULATION_NAME}_finish
|
LDEMUL_FINISH=gld${EMULATION_NAME}_finish
|
||||||
LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS=ppc_create_output_section_statements
|
LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS=ppc_create_output_section_statements
|
||||||
|
Reference in New Issue
Block a user