coreboot-kgpe-d16/util/cbfstool
Vadim Bendebury 458a12e52b cbfstool: allow user to explicitly specify header location
There potentially could be multiple CBFS instances present in the
firmware image. cbfstool should be able to operate on any of them, not
just the first one present.

To accomplish that, allow all CBFS commands to accept the -H parameter
(which specifies the exact CBFS header location in the image).

If this parameter is specified, the image is not searched for the CBFS
header, only the specified location is checked for validity, If the
location is valid, it is considered to be the CBFS header, if not -
the tool exits with an error status.

Note, that default behavior of the tool does not change.

BRANCH=storm
BUG=chrome-os-partner:34161, chromium:445938
TEST=run the following experiments:

  - examined an image with three CBFS instances, was able to print all
    of them.

  - built a rambi coreboot image and tried the following (cbfstool output abbreviated):

  $ ./util/cbfstool/cbfstool /build/rambi/firmware/coreboot.rom print
  coreboot.rom: 8192 kB, bootblocksize 2448, romsize 8388608, offset 0x700000
  alignment: 64 bytes, architecture: x86

  Name                           Offset     Type         Size
  cmos_layout.bin                0x700000   cmos_layout  1164
  ...
  (empty)                        0x7ec600   null         77848
  $ \od -tx4 -Ax /build/rambi/firmware/coreboot.rom | tail -2
  7ffff0 fff67de9 000000ff fff6dfe9 fffff650
  800000
  $ ./util/cbfstool/cbfstool /build/rambi/firmware/coreboot.rom print  -H 0x7ff650
  coreboot.rom: 8192 kB, bootblocksize 2448, romsize 8388608, offset 0x700000
  alignment: 64 bytes, architecture: x86

  Name                           Offset     Type         Size
  cmos_layout.bin                0x700000   cmos_layout  1164
  ...
  (empty)                        0x7ec600   null         77848
  $ ./util/cbfstool/cbfstool /build/rambi/firmware/coreboot.rom print  -H 0x7ff654
  E: /build/rambi/firmware/coreboot.rom does not have CBFS master header.
  E: Could not load ROM image '/build/rambi/firmware/coreboot.rom'.
  $

Change-Id: I64cbdc79096f3c7a113762b641305542af7bbd60
Signed-off-by: Patrick Georgi <pgeorgi@chromium.org>
Original-Commit-Id: 86b88222df6eed25bb176d653305e2e57e18b73a
Original-Change-Id: I486092e222c96c65868ae7d41a9e8976ffcc93c4
Original-Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/237485
Original-Reviewed-by: David Hendricks <dhendrix@chromium.org>
Original-Reviewed-by: Patrick Georgi <pgeorgi@chromium.org>
Original-Reviewed-by: Stefan Reinauer <reinauer@google.com>
Reviewed-on: http://review.coreboot.org/9741
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
2015-04-18 08:48:05 +02:00
..
lzma cbfstool: Clean up code 2015-03-04 19:53:20 +01:00
EXAMPLE
Makefile cbfstool: Clean up code 2015-03-04 19:53:20 +01:00
Makefile.inc build system: fix another cbfstool race 2014-07-15 14:27:04 +02:00
cbfs-mkpayload.c cbfstool: If compression fails, warn and use the uncompressed data. 2014-10-28 17:08:29 +01:00
cbfs-mkstage.c util/cbfstool/cbfs-mkstage.c: Fix build issue on 32-bit x86 2014-11-21 19:46:18 +01:00
cbfs-payload-linux.c cbfstool:linux_trampoline: config CS and DS segment descriptors 2014-09-04 23:34:32 +02:00
cbfs.h cbfstool: add filetypes for FSP, MRC, SPC and MRC_CACHE 2015-03-30 21:45:11 +02:00
cbfs_image.c cbfstool: allow user to explicitly specify header location 2015-04-18 08:48:05 +02:00
cbfs_image.h cbfstool: allow user to explicitly specify header location 2015-04-18 08:48:05 +02:00
cbfstool.c cbfstool: allow user to explicitly specify header location 2015-04-18 08:48:05 +02:00
coff.h
common.c cbfstool: add filetypes for FSP, MRC, SPC and MRC_CACHE 2015-03-30 21:45:11 +02:00
common.h CBFS: Automate ROM image layout and remove hardcoded offsets 2015-04-14 09:01:27 +02:00
compress.c cbfstool: Propogate compression errors back to the caller. 2014-09-25 20:26:04 +02:00
elf.h cbfstool: Add relocation codes for arm mode 2015-03-17 16:53:50 +01:00
elfheaders.c cbfstool: Remove arch check for different stages 2015-01-13 21:29:38 +01:00
elfparsing.h cbfstool: add ELF writing support 2014-03-18 18:59:25 +01:00
fit.c cbfstool: Fix update-fit command 2014-12-28 19:58:35 +01:00
fit.h
fv.h
linux.h cbfstool:linux_trampoline: config CS and DS segment descriptors 2014-09-04 23:34:32 +02:00
linux_trampoline.c cbfstool:linux_trampoline: config CS and DS segment descriptors 2014-09-04 23:34:32 +02:00
linux_trampoline.h cbfstool:linux_trampoline: config CS and DS segment descriptors 2014-09-04 23:34:32 +02:00
rmodtool.c util: add rmodtool for parsing ELF files to rmodules 2014-03-20 21:34:39 +01:00
rmodule.c ARM64 rmodule: Add new reloc type R_AARCH64_LDST8_ABS_LO12_NC 2015-03-21 08:41:42 +01:00
rmodule.h util: add rmodtool for parsing ELF files to rmodules 2014-03-20 21:34:39 +01:00
swab.h
xdr.c cbfstool: add bputs() to store a byte stream to a buffer 2014-03-11 19:43:17 +01:00