openwrt/tools
Thibaut VARÈNE 050fb3b55c tools/firmware-utils: mktplinkfw* fix rootfs offset
With '-a' specified on the command line, the current code:
- computes an aligned _kernel length_ instead of an aligned _rootfs
  offset_.
- does not update the rootfs offset after computing the new kernel
  length, and instead retains the layout default.

When the kernel length exceeds the available space left with this
fixed offset, the resulting image header contains invalid data, with
the recorded rootfs offset overlapping the kernel area.

This patch ensures that rootfs offset is correctly computed and
reflected in the final image.

Furthermore, the build_fw() function special cases the rootfs_align
option because of the above invalid logic. This is also fixed and
the computed (or command-line provided, or layout-provided) rootfs_ofs
value is used in all cases.

There seems to be no valid reason to extend the kernel length beyond
the actual length of the kernel itself (OFW images don't do it) so this
part of the existing behavior is dropped.

Example image before the patch:
Kernel data offset     : 0x00000200 /      512 bytes
Kernel data length     : 0x00158438 /  1410104 bytes
Kernel load address    : 0x00000080
Kernel entry point     : 0x00000080
Rootfs data offset     : 0x00140000 /  1310720 bytes
Rootfs data length     : 0x001e4f7e /  1986430 bytes

Example image after the patch:
Kernel data offset     : 0x00000200 /      512 bytes
Kernel data length     : 0x001583fe /  1410046 bytes
Kernel load address    : 0x00000080
Kernel entry point     : 0x00000080
Rootfs data offset     : 0x00158600 /  1410560 bytes
Rootfs data length     : 0x001e4e22 /  1986082 bytes

Tested-by: Mathias Kresin <dev@kresin.me>
Tested-by: Stefan Lippers-Hollmann <s.l-h@gmx.de>
Tested-by: Daniel Engberg <daniel.engberg.lists@pyret.net>
Tested-by: Henryk Heisig <hyniu@o2.pl>
Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
2017-11-08 23:18:22 +01:00
..
autoconf treewide: clean up download hashes 2016-12-16 22:39:22 +01:00
automake automake: Update to version 1.15.1 2017-07-04 22:56:55 +02:00
b43-tools b43-tools: fix tarball hash 2016-12-22 17:02:42 +01:00
bc treewide: clean up download hashes 2016-12-16 22:39:22 +01:00
bison tools: patch various gnu tools for macOS 10.13 2017-08-23 18:56:33 +02:00
ccache ccache: update to 3.3.4 2017-03-12 15:06:50 +01:00
cmake cmake: fix build error with Xcode 9 on macOS 12 2017-10-05 21:14:44 +02:00
coreutils tools: patch various gnu tools for macOS 10.13 2017-08-23 18:56:33 +02:00
dosfstools tools/dosfstools: Update to 4.1 2017-03-20 08:24:05 +01:00
e2fsprogs tools/e2fsprogs: Update to 1.43.6 2017-09-16 22:22:44 +02:00
elftosb treewide: clean up download hashes 2016-12-16 22:39:22 +01:00
expat tools/expat: Update to 2.2.4 2017-09-16 22:22:44 +02:00
findutils tools/findutils: include sysmacros.h explicitly 2017-10-27 11:19:38 +02:00
firmware-utils tools/firmware-utils: mktplinkfw* fix rootfs offset 2017-11-08 23:18:22 +01:00
flex tools: flex: fix segfault with glibc 2.26+ 2017-09-24 16:28:28 +02:00
flock tools: flock: add NFSv4 compatibility 2016-08-11 10:50:10 +02:00
genext2fs treewide: clean up download hashes 2016-12-16 22:39:22 +01:00
gengetopt treewide: clean up download hashes 2016-12-16 22:39:22 +01:00
gmp tools: gmp: Update to 6.1.2 2017-01-03 14:24:33 +01:00
include tools: host/include/getline.h: Remove 2017-04-26 10:29:39 +02:00
isl tools/isl: update to 0.18 2017-05-25 19:01:07 +02:00
kernel2minor tools: update kernel2minor to 0.24 version 2017-01-25 07:54:06 +01:00
libelf treewide: clean up download hashes 2016-12-16 22:39:22 +01:00
libressl tools/libressl: update to 2.5.4 2017-05-25 19:01:07 +02:00
libtool treewide: clean up download hashes 2016-12-16 22:39:22 +01:00
lzma treewide: clean up download hashes 2016-12-16 22:39:22 +01:00
lzma-old treewide: clean up download hashes 2016-12-16 22:39:22 +01:00
m4 tools: patch various gnu tools for macOS 10.13 2017-08-23 18:56:33 +02:00
make-ext4fs treewide: clean up and unify PKG_VERSION for git based downloads 2016-12-22 16:42:21 +01:00
missing-macros tools: remove a bunch of unused automake macros 2015-03-17 10:11:00 +00:00
mkimage tools/mkimage: fix musl build 2017-08-23 15:12:15 +02:00
mklibs treewide: clean up download hashes 2016-12-16 22:39:22 +01:00
mm-macros tools/mm-macros: Update to 0.9.11 2017-09-30 22:43:59 +02:00
mpc treewide: clean up download hashes 2016-12-16 22:39:22 +01:00
mpfr tools/mpfr: Update to 3.1.6 2017-09-30 22:43:38 +02:00
mtd-utils tools/mtd-utils: include sysmacros.h explicitly 2017-10-27 11:19:38 +02:00
mtools treewide: clean up download hashes 2016-12-16 22:39:22 +01:00
padjffs2 tools: padjffs2: add option to output padding data to stdout 2016-07-11 13:26:33 +02:00
patch tools: patch various gnu tools for macOS 10.13 2017-08-23 18:56:33 +02:00
patch-image tools: patch-image: fix file descriptor leak. 2017-02-15 07:45:24 +01:00
patchelf treewide: clean up download hashes 2016-12-16 22:39:22 +01:00
pkg-config tools/pkg-config: Update to 0.29.2 2017-08-09 23:20:56 +02:00
qemu qemu: rename internal crypto/aes symbols 2017-01-30 18:37:51 +01:00
quilt treewide: clean up download hashes 2016-12-16 22:39:22 +01:00
scons treewide: clean up download hashes 2016-12-16 22:39:22 +01:00
sdimage treewide: clean up and unify PKG_VERSION for git based downloads 2016-12-22 16:42:21 +01:00
sed tools/sed: Update to 4.4 2017-03-20 08:15:27 +01:00
sparse tools/sparse: Update to snapshot 2017-03-31 2017-05-29 10:00:43 +02:00
squashfs tools/squashfs: include sysmacros.h explicitly 2017-10-27 11:19:38 +02:00
squashfs4 tools/squashfs4: include sysmacros.h explicitly 2017-10-27 11:19:38 +02:00
sstrip tools: remove static linking support 2015-02-06 00:00:43 +00:00
tar tools: patch various gnu tools for macOS 10.13 2017-08-23 18:56:33 +02:00
upslug2 treewide: clean up download hashes 2016-12-16 22:39:22 +01:00
wrt350nv2-builder tools: remove static linking support 2015-02-06 00:00:43 +00:00
xz xz: Update to 5.2.3 2017-01-03 14:24:32 +01:00
Makefile tools/upx: Remove from repo 2017-03-20 08:26:35 +01:00