Furquan Shaikh (furquan@google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/6774
-gerrit
commit e43e6cd46cd898a9d8b708e4d68335c5a46c8783 Author: Furquan Shaikh furquan@google.com Date: Tue Aug 26 14:59:36 2014 -0700
rmodtool: Allow rmodules with 0 relocations
Currently, rmodules with 0 relocations are not allowed. Fix this by skipping addition of .rmodules section on 0 relocs.
Change-Id: I7a39cf409a5f2bc808967d2b5334a15891c4748e Signed-off-by: Furquan Shaikh furquan@google.com --- util/cbfstool/rmodule.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/util/cbfstool/rmodule.c b/util/cbfstool/rmodule.c index 95aff54..168d71a 100644 --- a/util/cbfstool/rmodule.c +++ b/util/cbfstool/rmodule.c @@ -259,10 +259,8 @@ static int collect_relocations(struct rmod_context *ctx)
nrelocs = ctx->nrelocs; INFO("%d relocations to be emitted.\n", nrelocs); - if (!nrelocs) { - ERROR("No valid relocations in file.\n"); - return -1; - } + if (!nrelocs) + return 0;
/* Reset the counter for indexing into the array. */ ctx->nrelocs = 0; @@ -536,10 +534,13 @@ write_elf(const struct rmod_context *ctx, const struct buffer *in, goto out; addr += ctx->phdr->p_filesz;
- ret = add_section(ew, &relocs, ".relocs", addr, buffer_size(&relocs)); - if (ret < 0) - goto out; - addr += buffer_size(&relocs); + if (ctx->nrelocs) { + ret = add_section(ew, &relocs, ".relocs", addr, + buffer_size(&relocs)); + if (ret < 0) + goto out; + addr += buffer_size(&relocs); + }
if (total_size != addr) { ret = add_section(ew, NULL, ".empty", addr, total_size - addr);