From fb319d8d1d764e846fd7a84e76d7104706ac344f Mon Sep 17 00:00:00 2001 From: Joern Rennecke Date: Tue, 8 Jul 2003 18:05:34 +0000 Subject: [PATCH] * emultempl/sh64elf.em (sh64_elf_${EMULATION_NAME}_after_allocation): Allow second call from ldemul_finish. --- ld/ChangeLog | 5 +++++ ld/emultempl/sh64elf.em | 9 ++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/ld/ChangeLog b/ld/ChangeLog index 27af4c8b0bd..7dc68c6835c 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,8 @@ +2003-07-08 J"orn Rennecke + + * emultempl/sh64elf.em (sh64_elf_${EMULATION_NAME}_after_allocation): + Allow second call from ldemul_finish. + 2003-07-04 J"orn Rennecke * emulparams/shelf32.sh (STACK_ADDR): Don't define. diff --git a/ld/emultempl/sh64elf.em b/ld/emultempl/sh64elf.em index 3c348fd2fa9..7f2b037df7f 100644 --- a/ld/emultempl/sh64elf.em +++ b/ld/emultempl/sh64elf.em @@ -375,7 +375,14 @@ sh64_elf_${EMULATION_NAME}_after_allocation (void) } } - BFD_ASSERT (cranges->contents == NULL); + /* ldemul_after_allocation may be called twice. First directly from + lang_process, and the second time when lang_process calls ldemul_finish, + which calls gld${EMULATION_NAME}_finish, e.g. gldshelf32_finish, which + is defined in emultempl/elf32.em and calls ldemul_after_allocation, + if bfd_elf${ELFSIZE}_discard_info returned true. */ + if (cranges->contents != NULL) + free (cranges->contents); + BFD_ASSERT (sh64_elf_section_data (cranges)->sh64_info != NULL); /* Make sure we have .cranges in memory even if there were only -- 2.30.2