X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=sim%2Fcommon%2Fsim-hload.c;h=376be0bc22f3b99fb3a63e0faa1eba03754c9df6;hb=3cabaf66d6ec7343bd3badc5c44c2ddd06221913;hp=c342245c09e9fe7feecadd80accb6ef072fa246e;hpb=fa803dc60f0bf01297674c41d001798e18ade4dc;p=deliverable%2Fbinutils-gdb.git diff --git a/sim/common/sim-hload.c b/sim/common/sim-hload.c index c342245c09..376be0bc22 100644 --- a/sim/common/sim-hload.c +++ b/sim/common/sim-hload.c @@ -1,22 +1,21 @@ /* Generic load for hardware simulator models. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997-2015 Free Software Foundation, Inc. Contributed by Cygnus Support. This file is part of GDB, the GNU debugger. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. +the Free Software Foundation; either version 3 of the License, or +(at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +You should have received a copy of the GNU General Public License +along with this program. If not, see . */ #include "sim-main.h" #include "bfd.h" @@ -28,21 +27,27 @@ with this program; if not, write to the Free Software Foundation, Inc., modeling a hardware platform. */ SIM_RC -sim_load (sd, prog_name, prog_bfd, from_tty) - SIM_DESC sd; - char *prog_name; - struct _bfd *prog_bfd; - int from_tty; +sim_load (SIM_DESC sd, const char *prog_name, struct bfd *prog_bfd, int from_tty) { bfd *result_bfd; + + SIM_ASSERT (STATE_MAGIC (sd) == SIM_MAGIC_NUMBER); if (sim_analyze_program (sd, prog_name, prog_bfd) != SIM_RC_OK) return SIM_RC_FAIL; SIM_ASSERT (STATE_PROG_BFD (sd) != NULL); + + /* NOTE: For historical reasons, older hardware simulators + incorrectly write the program sections at LMA interpreted as a + virtual address. This is still accommodated for backward + compatibility reasons. */ + result_bfd = sim_load_file (sd, STATE_MY_NAME (sd), STATE_CALLBACK (sd), - NULL, + prog_name, STATE_PROG_BFD (sd), - STATE_OPEN_KIND (sd) == SIM_OPEN_DEBUG); + STATE_OPEN_KIND (sd) == SIM_OPEN_DEBUG, + STATE_LOAD_AT_LMA_P (sd), + sim_write); if (result_bfd == NULL) { bfd_close (STATE_PROG_BFD (sd));