target: armv8: Avoid semihosting segfault on halt
[fw/openocd] / src / target / target_request.c
index 0b9233ad245abf4788ec517dfcb7232d030718d1..6ca204b508dd71e04a1be7abcb545d12597dbb5c 100644 (file)
@@ -19,9 +19,7 @@
  *   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.             *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>. *
  ***************************************************************************/
 
 #ifdef HAVE_CONFIG_H
@@ -122,6 +120,8 @@ int target_request(struct target *target, uint32_t request)
 {
        target_req_cmd_t target_req_cmd = request & 0xff;
 
+       assert(target->type->target_request_data);
+
        /* Record that we got a target message for back-off algorithm */
        got_message = true;
 
@@ -256,6 +256,11 @@ COMMAND_HANDLER(handle_target_request_debugmsgs_command)
 
        int receiving = 0;
 
+       if (target->type->target_request_data == NULL) {
+               LOG_ERROR("Target %s does not support target requests", target_name(target));
+               return ERROR_OK;
+       }
+
        /* see if reciever is already registered */
        if (find_debug_msg_receiver(CMD_CTX, target) != NULL)
                receiving = 1;