From e48f3741c357246c78aa367bbd56fe2684f7bf8d Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Tue, 11 Nov 2014 12:47:07 -0700 Subject: [PATCH 1/6] sandbox: Fix warnings due to 64-bit printf() strings Now that we have inttypes.h, use it in a few more places to avoid compiler warnings on sandbox when building on 64-bit machines. Signed-off-by: Simon Glass --- common/cmd_mem.c | 6 ++++-- common/fdt_support.c | 15 +++++++-------- disk/part_efi.c | 21 +++++++++++---------- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/common/cmd_mem.c b/common/cmd_mem.c index 0d50dcf..bcb3ee3 100644 --- a/common/cmd_mem.c +++ b/common/cmd_mem.c @@ -19,6 +19,7 @@ #include #endif #include +#include #include #include #include @@ -338,7 +339,8 @@ static int do_mem_cmp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) if (word1 != word2) { ulong offset = buf1 - base; #ifdef CONFIG_SYS_SUPPORT_64BIT_DATA - printf("%s at 0x%p (%#0*llx) != %s at 0x%p (%#0*llx)\n", + printf("%s at 0x%p (%#0*"PRIx64") != %s at 0x%p (%#0*" + PRIx64 ")\n", type, (void *)(addr1 + offset), size, word1, type, (void *)(addr2 + offset), size, word2); #else @@ -1146,7 +1148,7 @@ mod_mem(cmd_tbl_t *cmdtp, int incrflag, int flag, int argc, char * const argv[]) printf(" %08x", *((u32 *)ptr)); #ifdef CONFIG_SYS_SUPPORT_64BIT_DATA else if (size == 8) - printf(" %016llx", *((u64 *)ptr)); + printf(" %016" PRIx64, *((u64 *)ptr)); #endif else if (size == 2) printf(" %04x", *((u16 *)ptr)); diff --git a/common/fdt_support.c b/common/fdt_support.c index ea42c63..127e17c 100644 --- a/common/fdt_support.c +++ b/common/fdt_support.c @@ -8,6 +8,7 @@ */ #include +#include #include #include #include @@ -914,8 +915,6 @@ void fdt_del_node_and_alias(void *blob, const char *alias) fdt_delprop(blob, off, alias); } -#define PRu64 "%llx" - /* Max address size we deal with */ #define OF_MAX_ADDR_CELLS 4 #define OF_BAD_ADDR ((u64)-1) @@ -973,8 +972,8 @@ static u64 of_bus_default_map(fdt32_t *addr, const fdt32_t *range, s = of_read_number(range + na + pna, ns); da = of_read_number(addr, na); - debug("OF: default map, cp="PRu64", s="PRu64", da="PRu64"\n", - cp, s, da); + debug("OF: default map, cp=%" PRIu64 ", s=%" PRIu64 + ", da=%" PRIu64 "\n", cp, s, da); if (da < cp || da >= (cp + s)) return OF_BAD_ADDR; @@ -1052,7 +1051,7 @@ static int of_translate_one(void * blob, int parent, struct of_bus *bus, finish: of_dump_addr("OF: parent translation for:", addr, pna); - debug("OF: with offset: "PRu64"\n", offset); + debug("OF: with offset: %" PRIu64 "\n", offset); /* Translate it into parent bus space */ return pbus->translate(addr, offset, pna); @@ -1381,9 +1380,9 @@ int fdt_verify_alias_address(void *fdt, int anode, const char *alias, u64 addr) dt_addr = fdt_translate_address(fdt, node, reg); if (addr != dt_addr) { - printf("Warning: U-Boot configured device %s at address %llx,\n" - " but the device tree has it address %llx.\n", - alias, addr, dt_addr); + printf("Warning: U-Boot configured device %s at address %" + PRIx64 ",\n but the device tree has it address %" + PRIx64 ".\n", alias, addr, dt_addr); return 0; } diff --git a/disk/part_efi.c b/disk/part_efi.c index 612f092..efed58f 100644 --- a/disk/part_efi.c +++ b/disk/part_efi.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -553,28 +554,28 @@ static int is_gpt_valid(block_dev_desc_t *dev_desc, u64 lba, /* Check that the my_lba entry points to the LBA that contains the GPT */ if (le64_to_cpu(pgpt_head->my_lba) != lba) { - printf("GPT: my_lba incorrect: %llX != %llX\n", - le64_to_cpu(pgpt_head->my_lba), - lba); + printf("GPT: my_lba incorrect: %llX != %" PRIX64 "\n", + le64_to_cpu(pgpt_head->my_lba), + lba); return 0; } /* Check the first_usable_lba and last_usable_lba are within the disk. */ lastlba = (u64)dev_desc->lba; if (le64_to_cpu(pgpt_head->first_usable_lba) > lastlba) { - printf("GPT: first_usable_lba incorrect: %llX > %llX\n", - le64_to_cpu(pgpt_head->first_usable_lba), lastlba); + printf("GPT: first_usable_lba incorrect: %llX > %" PRIX64 "\n", + le64_to_cpu(pgpt_head->first_usable_lba), lastlba); return 0; } if (le64_to_cpu(pgpt_head->last_usable_lba) > lastlba) { - printf("GPT: last_usable_lba incorrect: %llX > %llX\n", - le64_to_cpu(pgpt_head->last_usable_lba), lastlba); + printf("GPT: last_usable_lba incorrect: %llX > %" PRIX64 "\n", + le64_to_cpu(pgpt_head->last_usable_lba), lastlba); return 0; } - debug("GPT: first_usable_lba: %llX last_usable_lba %llX last lba %llX\n", - le64_to_cpu(pgpt_head->first_usable_lba), - le64_to_cpu(pgpt_head->last_usable_lba), lastlba); + debug("GPT: first_usable_lba: %llX last_usable_lba %llX last lba %" + PRIX64 "\n", le64_to_cpu(pgpt_head->first_usable_lba), + le64_to_cpu(pgpt_head->last_usable_lba), lastlba); /* Read and allocate Partition Table Entries */ *pgpt_pte = alloc_read_gpt_entries(dev_desc, pgpt_head); From f80a8bbee8665defb32f26029325667704bb4776 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Tue, 11 Nov 2014 12:47:08 -0700 Subject: [PATCH 2/6] sandbox: Fix warnings in cpu.c and os.c This fixes the following two problems: cppcheck reports: [arch/sandbox/cpu/start.c:132]: (error) Uninitialized variable: err [arch/sandbox/cpu/os.c:371]: (error) Memory leak: fname Signed-off-by: Simon Glass Reported-by: Wolfgang Denk --- arch/sandbox/cpu/os.c | 1 + arch/sandbox/cpu/start.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/arch/sandbox/cpu/os.c b/arch/sandbox/cpu/os.c index 31c9344..4d5f805 100644 --- a/arch/sandbox/cpu/os.c +++ b/arch/sandbox/cpu/os.c @@ -367,6 +367,7 @@ int os_dirent_ls(const char *dirname, struct os_dirent_node **headp) done: closedir(dir); + free(fname); return ret; } diff --git a/arch/sandbox/cpu/start.c b/arch/sandbox/cpu/start.c index 0df7770..42353d8 100644 --- a/arch/sandbox/cpu/start.c +++ b/arch/sandbox/cpu/start.c @@ -130,7 +130,8 @@ static int sandbox_cmdline_cb_memory(struct sandbox_state *state, state->write_ram_buf = true; state->ram_buf_fname = arg; - if (os_read_ram_buf(arg)) { + err = os_read_ram_buf(arg); + if (err) { printf("Failed to read RAM buffer\n"); return err; } From ce267335c31e95d69d42abf886ce7f3df1b5b2a4 Mon Sep 17 00:00:00 2001 From: Tom Rini Date: Tue, 11 Nov 2014 16:58:44 -0500 Subject: [PATCH 3/6] buildman: Save *.img files too When saving binary files we likely want to keep any .img files that have been generated as well. Signed-off-by: Tom Rini Acked-by: Simon Glass --- tools/buildman/builderthread.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/buildman/builderthread.py b/tools/buildman/builderthread.py index a9cf68a..bc4541c 100644 --- a/tools/buildman/builderthread.py +++ b/tools/buildman/builderthread.py @@ -332,7 +332,7 @@ class BuilderThread(threading.Thread): # Now write the actual build output if keep_outputs: - patterns = ['u-boot', '*.bin', 'u-boot.dtb', '*.map', + patterns = ['u-boot', '*.bin', 'u-boot.dtb', '*.map', '*.img', 'include/autoconf.mk', 'spl/u-boot-spl', 'spl/u-boot-spl.bin'] for pattern in patterns: From 0b5b409acca23e9b08c84f5ad531e287601448a2 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Wed, 15 Oct 2014 02:27:00 -0600 Subject: [PATCH 4/6] patman: Use the full commit hash for 'git checkout' Even with the initial 8 characeters of the hash we will sometimes get a collision. Use the full hash. Signed-off-by: Simon Glass --- tools/buildman/control.py | 2 +- tools/patman/patchstream.py | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/tools/buildman/control.py b/tools/buildman/control.py index 8b8c826..96ba2d9 100644 --- a/tools/buildman/control.py +++ b/tools/buildman/control.py @@ -70,7 +70,7 @@ def ShowActions(series, why_selected, boards_selected, builder, options): if commits: for upto in range(0, len(series.commits), options.step): commit = series.commits[upto] - print ' ', col.Color(col.YELLOW, commit.hash, bright=False), + print ' ', col.Color(col.YELLOW, commit.hash[:8], bright=False), print commit.subject print for arg in why_selected: diff --git a/tools/patman/patchstream.py b/tools/patman/patchstream.py index d630157..da04883 100644 --- a/tools/patman/patchstream.py +++ b/tools/patman/patchstream.py @@ -248,8 +248,7 @@ class PatchStream: # Detect the start of a new commit elif commit_match: self.CloseCommit() - # TODO: We should store the whole hash, and just display a subset - self.commit = commit.Commit(commit_match.group(1)[:8]) + self.commit = commit.Commit(commit_match.group(1)) # Detect tags in the commit message elif tag_match: From f66153be193af3d4aa4d3630e7dcb41bfd6313b6 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Thu, 16 Oct 2014 01:05:55 -0600 Subject: [PATCH 5/6] buildman: Fix repeating board list with -l Ensure that we don't print duplicate board names when -l is used. Signed-off-by: Simon Glass Reported-by: Albert Aribaud --- tools/buildman/builder.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/buildman/builder.py b/tools/buildman/builder.py index 8155c16..7002034 100644 --- a/tools/buildman/builder.py +++ b/tools/buildman/builder.py @@ -918,7 +918,8 @@ class Builder: if self._list_error_boards: names = [] for board in line_boards[line]: - names.append(board.target) + if not board.target in names: + names.append(board.target) names_str = '(%s) ' % ','.join(names) else: names_str = '' From 1d8104fe8897c5fec3e03b4165bc67c57eeeaa72 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Thu, 16 Oct 2014 01:05:56 -0600 Subject: [PATCH 6/6] buildman: Don't default to -e when building current source We probably don't need to enable this option by default. It is useful to display only failure boards (not errors) and it is easy to add -e if it is required. Also update the docs. Signed-off-by: Simon Glass Reported-by: Albert Aribaud --- tools/buildman/README | 25 ++++++++++++------------- tools/buildman/control.py | 1 - 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/tools/buildman/README b/tools/buildman/README index 8ba19ec..bfb2f18 100644 --- a/tools/buildman/README +++ b/tools/buildman/README @@ -85,10 +85,10 @@ branch. Put all your commits in a branch, set the branch's upstream to a valid value, and all will be well. Otherwise buildman will perform random actions. Use -n to check what the random actions might be. -If you just want to build the current source tree, leave off the -b flag. -This will display results and errors as they happen. You can still look -at them later using -s. Note that buildman will assume that the source -has changed, and will build all specified boards in this case. +If you just want to build the current source tree, leave off the -b flag +and add -e. This will display results and errors as they happen. You can +still look at them later using -se. Note that buildman will assume that the +source has changed, and will build all specified boards in this case. Buildman is optimised for building many commits at once, for many boards. On multi-core machines, Buildman is fast because it uses most of the @@ -693,9 +693,9 @@ Quick Sanity Check ================== If you have made changes and want to do a quick sanity check of the -currently-checked-out source, run buildman without the -b flag. This will -build the selected boards and display build status and errors as it runs -(i.e. -v amd -e are enabled automatically). +currently checked-out source, run buildman without the -b flag. This will +build the selected boards and display build status as it runs (i.e. -v is +enabled automatically). Use -e to see errors/warnings as well. Other options @@ -752,7 +752,7 @@ an error and green indicating that a commit fixed an error. Use the -e flag to see the full errors and -l to see which boards caused which errors. If you really want to see build results as they happen, use -v when doing a -build (-e will be enabled automatically). +build (and -e to see the errors/warnings too). You don't need to stick around on that branch while buildman is running. It checks out its own copy of the source code, so you can change branches, @@ -816,11 +816,10 @@ TODO This has mostly be written in my spare time as a response to my difficulties in testing large series of patches. Apart from tidying up there is quite a -bit of scope for improvement. Things like better error diffs, easier access -to log files, error display while building. Also it would be nice it buildman -could 'hunt' for problems, perhaps by building a few boards for each arch, -or checking commits for changed files and building only boards which use -those files. +bit of scope for improvement. Things like better error diffs and easier +access to log files. Also it would be nice it buildman could 'hunt' for +problems, perhaps by building a few boards for each arch, or checking +commits for changed files and building only boards which use those files. Credits diff --git a/tools/buildman/control.py b/tools/buildman/control.py index 96ba2d9..2c3ba8b 100644 --- a/tools/buildman/control.py +++ b/tools/buildman/control.py @@ -188,7 +188,6 @@ def DoBuildman(options, args, toolchains=None, make_func=None, boards=None, else: series = None options.verbose = True - options.show_errors = True # By default we have one thread per CPU. But if there are not enough jobs # we can have fewer threads and use a high '-j' value for make.