On 07/04/16 at 01:55pm, Tautschnig, Michael wrote: > bin2c is used to create a valid C file out of a binary file where two > symbols will be globally defined: <name> and <name>_size. <name> is > passed as the first parameter of the host binary. > > Building using goto-cc reported that the purgatory binary code (the only > current user of this utility) declares kexec_purgatory_size as 'size_t' > where bin2c generate <name>_size to be 'int' so in a 64-bit host where > sizeof(size_t) > sizeof(int) this type mismatch will always yield the > wrong value for big-endian architectures while for little-endian it will > be wrong if the object laid in memory directly after > kexec_purgatory_size contains non-zero value at the time of reading. > > This commit changes <name>_size to be size_t instead. > > Note: > > Another way to fix the problem is to change the type of > kexec_purgatory_size to be 'int' as there's this check in code: > (kexec_purgatory_size <= 0) > > Signed-off-by: Michael Tautschnig <tautschn@xxxxxxxxxx> > Cc: Michal Marek <mmarek@xxxxxxxx> > Cc: Vivek Goyal <vgoyal@xxxxxxxxxx> > --- > scripts/basic/bin2c.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/scripts/basic/bin2c.c b/scripts/basic/bin2c.c > index af187e6..c3d7eef 100644 > --- a/scripts/basic/bin2c.c > +++ b/scripts/basic/bin2c.c > @@ -29,7 +29,8 @@ int main(int argc, char *argv[]) > } while (ch != EOF); > > if (argc > 1) > - printf("\t;\n\nconst int %s_size = %d;\n", argv[1], total); > + printf("\t;\n\n#include <linux/types.h>\n\nconst size_t %s_size = %d;\n", > + argv[1], total); > > return 0; > } > -- > 2.7.3.AMZN > > _______________________________________________ > kexec mailing list > kexec@xxxxxxxxxxxxxxxxxxx > http://lists.infradead.org/mailman/listinfo/kexec Acked-by: Dave Young <dyoung@xxxxxxxxxx> Thanks Dave -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html