From: Stephane Carrez Date: Tue, 13 Aug 2002 08:52:02 +0000 (+0000) Subject: * interp.c (sim_prepare_for_program): Look up the image for the X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=31c7c532ab465f25e697ac2c1f992f143822cc3e;p=binutils-gdb.git * interp.c (sim_prepare_for_program): Look up the image for the reset vector and set cpu_use_elf_start to 1 if not found. (sim_open): Do not set cpu_use_elf_start. --- diff --git a/sim/m68hc11/ChangeLog b/sim/m68hc11/ChangeLog index d6c38630a54..fc85e602198 100644 --- a/sim/m68hc11/ChangeLog +++ b/sim/m68hc11/ChangeLog @@ -1,3 +1,9 @@ +2002-08-13 Marko Kohtala + + * interp.c (sim_prepare_for_program): Look up the image for the + reset vector and set cpu_use_elf_start to 1 if not found. + (sim_open): Do not set cpu_use_elf_start. + 2002-08-13 Marko Kohtala * interp.c (sim_hw_configure): Return 1 for success. diff --git a/sim/m68hc11/interp.c b/sim/m68hc11/interp.c index 8889da6cc7d..74674ce2969 100644 --- a/sim/m68hc11/interp.c +++ b/sim/m68hc11/interp.c @@ -306,7 +306,31 @@ sim_prepare_for_program (SIM_DESC sd, struct _bfd* abfd) if (abfd != NULL) { + asection *s; cpu->cpu_elf_start = bfd_get_start_address (abfd); + /* See if any section sets the reset address */ + cpu->cpu_use_elf_start = 1; + for (s = abfd->sections; s && cpu->cpu_use_elf_start; s = s->next) + { + if (s->flags & SEC_LOAD) + { + bfd_size_type size; + + size = bfd_get_section_size_before_reloc (s); + if (size > 0) + { + bfd_vma lma; + + if (STATE_LOAD_AT_LMA_P (sd)) + lma = bfd_section_lma (abfd, s); + else + lma = bfd_section_vma (abfd, s); + + if (lma <= 0xFFFE && lma+size >= 0x10000) + cpu->cpu_use_elf_start = 0; + } + } + } } /* reset all state information */ @@ -333,7 +357,6 @@ sim_open (SIM_OPEN_KIND kind, host_callback *callback, cpu_initialize (sd, cpu); - cpu->cpu_use_elf_start = 1; if (sim_pre_argv_init (sd, argv[0]) != SIM_RC_OK) { free_state (sd);