diff options
author | Stephane Carrez <stcarrez@nerim.fr> | 2002-08-13 08:52:02 +0000 |
---|---|---|
committer | Stephane Carrez <stcarrez@nerim.fr> | 2002-08-13 08:52:02 +0000 |
commit | 261d6729f1e2d7439f21ad26e8d7bc2810d6372d (patch) | |
tree | 806408504172c1fe120e71c8d64b2e112bdbea1f /sim/m68hc11 | |
parent | 6ddc792a0f9666f0dfb886a676e306a23967d053 (diff) | |
download | gdb-261d6729f1e2d7439f21ad26e8d7bc2810d6372d.tar.gz |
* 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.
Diffstat (limited to 'sim/m68hc11')
-rw-r--r-- | sim/m68hc11/ChangeLog | 6 | ||||
-rw-r--r-- | sim/m68hc11/interp.c | 25 |
2 files changed, 30 insertions, 1 deletions
diff --git a/sim/m68hc11/ChangeLog b/sim/m68hc11/ChangeLog index d6c38630a54..fc85e602198 100644 --- a/sim/m68hc11/ChangeLog +++ b/sim/m68hc11/ChangeLog @@ -1,5 +1,11 @@ 2002-08-13 Marko Kohtala <marko.kohtala@luukku.com> + * 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 <marko.kohtala@luukku.com> + * interp.c (sim_hw_configure): Return 1 for success. (sim_prepare_for_program): Use the sim_hw_configure exit code to return SIM_RC_FAIL. 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); |