blob: 9ff11679d9736f42d530a787d4e8166a18828ea3 [file] [log] [blame] [edit]
# Copyright 2024 Googl4 LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
BUFFER_OVERFLOW_DIR := $(OUT)/cheriot/sencha/buffer_overflow
BUFFER_OVERFLOW := $(BUFFER_OVERFLOW_DIR)/release/cheriot/cheriot/release/buffer_overflow-firmware
BUFFER_OVERFLOW_SRC_DIR := ${ROOTDIR}/hw/matcha/sw/device/cheriot/buffer_overflow
cheriot-buffer_overflow: __sail-buffer_overflow
${MAKE} \
__CHERIOT_ELF="@${BUFFER_OVERFLOW}" \
__cheriot-simulate
cheriot-buffer_overflow+cli: __sail-buffer_overflow
${MAKE} \
__CHERIOT_ELF="@${BUFFER_OVERFLOW}" \
__cheriot-simulate+cli
# Generates the buffer overflow firmware for sail
__sail-buffer_overflow:
${MAKE} CHERIOT_BOARD=sail __buffer_overflow
.PHONY:: cheriot-buffer_overflow cheriot-buffer_overflow+cli
.PHONY:: __sail-buffer_overflow
BUFFER_OVERFLOW_FLASH_RELEASE=$(CHERIOT_OUT_RELEASE)/buffer_overflow_flash.tar
# XXX symlink cheriot fw to "kernel" to satisfy elfloader
$(BUFFER_OVERFLOW_FLASH_RELEASE): $(MATCHA_BUNDLE_RELEASE) | $(TMP_RELEASE)
cp -f $(MATCHA_BUNDLE_RELEASE) $(TMP_RELEASE)/matcha-tock-bundle
${C_PREFIX}strip $(TMP_RELEASE)/matcha-tock-bundle
${C_PREFIX}objcopy -O binary -g $(TMP_RELEASE)/matcha-tock-bundle $(TMP_RELEASE)/matcha-tock-bundle.bin
ln -sf $(BUFFER_OVERFLOW) $(TMP_RELEASE)/kernel
tar -C $(TMP_RELEASE) -cvhf $@ matcha-tock-bundle.bin kernel
buffer_overflow_flash_release: __sencha-buffer_overflow $(BUFFER_OVERFLOW_FLASH_RELEASE)
## Runs the buffer overflow demo in renode on sencha
sencha-buffer_overflow: buffer_overflow_flash_release
${MAKE} \
__SENCHA_TAR="@${BUFFER_OVERFLOW_FLASH_RELEASE}" \
__SENCHA_CHERIOT_ELF="@${TMP_RELEASE}/kernel" \
__sencha-simulate
## Version of the `sencha-buffer_overflow` target that also enables the simulator command
## line interface on port 4567. To access the simulator use something like
## telnet localhost 4567. Note renode will block until the cli is connected.
sencha-buffer_overflow+cli: buffer_overflow_flash_release
${MAKE} \
__SENCHA_TAR="@${BUFFER_OVERFLOW_FLASH_RELEASE}" \
__SENCHA_CHERIOT_ELF="@${TMP_RELEASE}/kernel" \
__sencha-simulate+cli
# Generates the buffer overflow firmware for sencha
__sencha-buffer_overflow:
${MAKE} CHERIOT_BOARD=sencha __buffer_overflow
# Helper that requires CHERIOT_BOARD be supplied on the cmd line
__buffer_overflow:
${MAKE} \
CHERIOT_OUT_DIR=${BUFFER_OVERFLOW_DIR} \
CHERIOT_FIRMWARE_SRC_DIR=${BUFFER_OVERFLOW_SRC_DIR} \
CHERIOT_FIRMWARE_RELEASE=$(BUFFER_OVERFLOW) \
$(BUFFER_OVERFLOW)
## Cleans all build artifacts for the buffer_overflow demo
buffer_overflow-clean:
rm -rf ${BUFFER_OVERFLOW_DIR}
.PHONY:: sencha-buffer_overflow sencha-buffer_overflow+cli
.PHONY:: buffer_overflow_flash_release
.PHONY:: buffer_overflow-clean
.PHONY:: __sencha-buffer_overflow __buffer_overflow