aboutsummaryrefslogtreecommitdiffstats
path: root/tools/firmware-utils
diff options
context:
space:
mode:
authorJohn Crispin <john@openwrt.org>2015-07-24 09:11:24 +0000
committerJohn Crispin <john@openwrt.org>2015-07-24 09:11:24 +0000
commita77a9f520c64853f80d90933a0a61557d6261092 (patch)
tree845f6e85cacf839427aaaa467baa2d47490f9681 /tools/firmware-utils
parent38991bf90bb25d3a712fc441b3e42cb2429e50f5 (diff)
downloadupstream-a77a9f520c64853f80d90933a0a61557d6261092.tar.gz
upstream-a77a9f520c64853f80d90933a0a61557d6261092.tar.bz2
upstream-a77a9f520c64853f80d90933a0a61557d6261092.zip
firmware-utils mktplinkfw: print amount of exceeding bytes
This is very useful for trimming images towards 4 MiB flash size. Signed-off-by: Stephan Maka <stephan@spaceboyz.net> SVN-Revision: 46469
Diffstat (limited to 'tools/firmware-utils')
-rw-r--r--tools/firmware-utils/src/mktplinkfw.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/tools/firmware-utils/src/mktplinkfw.c b/tools/firmware-utils/src/mktplinkfw.c
index 99338d4d67..12420ad995 100644
--- a/tools/firmware-utils/src/mktplinkfw.c
+++ b/tools/firmware-utils/src/mktplinkfw.c
@@ -591,6 +591,7 @@ static int read_to_buf(struct file_info *fdata, char *buf)
static int check_options(void)
{
int ret;
+ int exceed_bytes;
if (inspect_info.file_name) {
ret = get_file_stat(&inspect_info);
@@ -664,10 +665,10 @@ static int check_options(void)
kernel_len = kernel_info.file_size;
if (combined) {
- if (kernel_info.file_size >
- fw_max_len - sizeof(struct fw_header)) {
+ exceed_bytes = kernel_info.file_size - (fw_max_len - sizeof(struct fw_header));
+ if (exceed_bytes > 0) {
if (!ignore_size) {
- ERR("kernel image is too big");
+ ERR("kernel image is too big by %i bytes", exceed_bytes);
return -1;
}
layout->fw_max_len = sizeof(struct fw_header) +
@@ -691,20 +692,20 @@ static int check_options(void)
DBG("kernel length aligned to %u", kernel_len);
- if (kernel_len + rootfs_info.file_size >
- fw_max_len - sizeof(struct fw_header)) {
- ERR("images are too big");
+ exceed_bytes = kernel_len + rootfs_info.file_size - (fw_max_len - sizeof(struct fw_header));
+ if (exceed_bytes > 0) {
+ ERR("images are too big by %i bytes", exceed_bytes);
return -1;
}
} else {
- if (kernel_info.file_size >
- rootfs_ofs - sizeof(struct fw_header)) {
+ exceed_bytes = kernel_info.file_size - (rootfs_ofs - sizeof(struct fw_header));
+ if (exceed_bytes > 0) {
ERR("kernel image is too big");
return -1;
}
- if (rootfs_info.file_size >
- (fw_max_len - rootfs_ofs)) {
+ exceed_bytes = rootfs_info.file_size - (fw_max_len - rootfs_ofs);
+ if (exceed_bytes > 0) {
ERR("rootfs image is too big");
return -1;
}