diff options
author | Ronald G. Minnich <rminnich@google.com> | 2013-12-30 13:16:18 -0800 |
---|---|---|
committer | Ronald G. Minnich <rminnich@gmail.com> | 2014-02-02 20:18:55 +0100 |
commit | a8a133ded34d82a7baa9a439969eae780a501992 (patch) | |
tree | ef64f06102d378795ea3b84920e6fba9f4a424eb /util/cbfstool/common.c | |
parent | 25fc8d181fde674fb35ad56c841ffb3b4b0489e9 (diff) |
Add section header parsing and use it in the mk-payload step
This completes the improvements to the ELF file parsing code. We can
now parse section headers too, across all 4 combinations of word size
and endianness. I had hoped to completely remove the use of htonl
until I found it in cbfs_image.c. That's a battle for another day.
There's now a handy macro to create magic numbers in host byte order.
I'm using it for all the PAYLOAD_SEGMENT_* constants and maybe
we can use it for the others too, but this is sensitive code and
I'd rather change one thing at a time.
To maximize the ease of use for users, elf parsing is accomplished with
just one function:
int
elf_headers(const struct buffer *pinput,
Elf64_Ehdr *ehdr,
Elf64_Phdr **pphdr,
Elf64_Shdr **pshdr)
which requires the ehdr and pphdr pointers to be non-NULL, but allows
the pshdr to be NULL. If pshdr is NULL, the code will not try to read
in section headers.
To satisfy our powerful scripts, I had to remove the ^M from an unrelated
microcode file.
BUG=None
TEST=Build a peppy image (known to boot) with old and new versions and verify they are bit-for-bit the same. This was also fully tested across all chromebooks for building and booting and running chromeos.
BRANCH=None
Change-Id: I54dad887d922428b6175fdb6a9cdfadd8a6bb889
Signed-off-by: Ronald G. Minnich <rminnich@google.com>
Reviewed-on: https://chromium-review.googlesource.com/181272
Reviewed-by: Ronald Minnich <rminnich@chromium.org>
Commit-Queue: Ronald Minnich <rminnich@chromium.org>
Tested-by: Ronald Minnich <rminnich@chromium.org>
Signed-off-by: Ronald G. Minnich <rminnich@google.com>
Reviewed-on: http://review.coreboot.org/5098
Tested-by: build bot (Jenkins)
Reviewed-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
Diffstat (limited to 'util/cbfstool/common.c')
-rw-r--r-- | util/cbfstool/common.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/util/cbfstool/common.c b/util/cbfstool/common.c index 8f38a4a27d..356ba2f4db 100644 --- a/util/cbfstool/common.c +++ b/util/cbfstool/common.c @@ -23,9 +23,9 @@ #include <stdlib.h> #include <string.h> #include <libgen.h> +#include "elf.h" #include "common.h" #include "cbfs.h" -#include "elf.h" /* Utilities */ |