From cae87fb1ef395a1732d3e73a57207aff91320fbf Mon Sep 17 00:00:00 2001 From: Furquan Shaikh Date: Tue, 26 Aug 2014 14:47:48 -0700 Subject: [PATCH] UPSTREAM: elfheaders: fix 64-bit ELF writing The sh_flags for a 64-bit section header entry are 64-bit in size. Correct this. BUG=chrome-os-partner:31615 BRANCH=None TEST=Compiles successfully and the elf.rmod created is verified using readelf and objdump Change-Id: I3fd2c19116c375f7321ae83d70e8f20509c6f4c1 Author: Aaron Durbin Signed-off-by: Furquan Shaikh Reviewed-on: https://chromium-review.googlesource.com/214323 Tested-by: Furquan Shaikh Reviewed-by: Aaron Durbin Commit-Queue: Aaron Durbin --- util/cbfstool/elfheaders.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/util/cbfstool/elfheaders.c b/util/cbfstool/elfheaders.c index 2fedf42637..54a4861d89 100644 --- a/util/cbfstool/elfheaders.c +++ b/util/cbfstool/elfheaders.c @@ -769,8 +769,8 @@ static void shdr_write(struct elf_writer *ew, size_t n, struct buffer *m) xdr->put32(m, shdr->sh_name); xdr->put32(m, shdr->sh_type); - xdr->put32(m, shdr->sh_flags); if (bit64) { + xdr->put64(m, shdr->sh_flags); xdr->put64(m, shdr->sh_addr); xdr->put64(m, shdr->sh_offset); xdr->put64(m, shdr->sh_size); @@ -779,6 +779,7 @@ static void shdr_write(struct elf_writer *ew, size_t n, struct buffer *m) xdr->put64(m, shdr->sh_addralign); xdr->put64(m, shdr->sh_entsize); } else { + xdr->put32(m, shdr->sh_flags); xdr->put32(m, shdr->sh_addr); xdr->put32(m, shdr->sh_offset); xdr->put32(m, shdr->sh_size);