29 Jan, 2018

1 commit

  • When printing '%pD' with a value of NULL we want to output
    ''. But this requires copying to buf. Leave this
    to string16.

    A unit test is supplied which relies on EFI support in the sandbox.

    The development for EFI support in the sandbox is currently in branch
    u-boot-dm/efi-working. The branch lacks commit 6ea8b580f06b ("efi_loader:
    correct DeviceNodeToText for media types"). Ater rebasing the aforementioned
    branch on U-Boot v2018.01 and adding 256060e4257a2 and this patch the test
    is executed successfully.

    Fixes: 256060e4257a2 (vsprintf.c: add EFI device path printing)
    Signed-off-by: Heinrich Schuchardt
    Signed-off-by: Alexander Graf

    Heinrich Schuchardt
     

23 Jan, 2018

1 commit

  • For debugging efi_loader we need the capability to print EFI
    device paths. With this patch we can write:

    debug("device path: %pD", dp);

    A possible output would be

    device path: /MemoryMapped(0x0,0x3ff93a82,0x3ff93a82)

    This enhancement is not available when building without EFI support
    and neither in the SPL nor in the API example.

    A test is provided. It can be executed in the sandbox with command
    ut_print.

    The development for EFI support in the sandbox is currently in
    branch u-boot-dm/efi-working. The branch currently lacks
    commit 6ea8b580f06b ("efi_loader: correct DeviceNodeToText
    for media types"). Ater rebasing the aforementioned branch on
    U-Boot v2018.01 the test is executed successfully.

    Without EFI support in the sandbox the test is simply skipped.

    Suggested-by: Rob Clark
    Signed-off-by: Heinrich Schuchardt
    Reviewed-by: Simon Glass
    Signed-off-by: Alexander Graf

    Heinrich Schuchardt
     

13 Sep, 2017

2 commits

  • This works (roughly) the same way as linux's, but we currently always
    print lower-case (ie. we just keep %pUB and %pUL for compat with linux),
    mostly just because that is what uuid_bin_to_str() supports.

    %pUb: 01020304-0506-0708-090a-0b0c0d0e0f10
    %pUl: 04030201-0605-0807-090a-0b0c0d0e0f10

    It will be used by a later efi_loader paths for efi variables and for
    device-path-to-text protocol, and also quite useful for debug prints
    of protocol GUIDs.

    Signed-off-by: Rob Clark
    Tested-by: Heinrich Schuchardt
    Reviewed-by: Simon Glass

    Rob Clark
     
  • This is convenient for efi_loader which deals a lot with UTF-16. Only
    enabled with CC_SHORT_WCHAR, leaving room to add a UTF-32 version when
    CC_SHORT_WCHAR is not enabled.

    Signed-off-by: Rob Clark
    Reviewed-by: Simon Glass
    Reviewed-by: Simon Glass

    Rob Clark
     

19 Jan, 2016

1 commit

  • Enabling this function always removes some class of string saftey issues.
    The size change here in general is about 400 bytes and this seems a reasonable
    trade-off.

    Cc: Peng Fan
    Cc: Peter Robinson
    Cc: Fabio Estevam
    Cc: Adrian Alonso
    Cc: Stefano Babic
    Cc: Hans de Goede
    Signed-off-by: Tom Rini

    Tom Rini
     

14 Dec, 2015

2 commits


23 Nov, 2015

1 commit

  • This patch adds a small printf() version that supports all basic formats.
    Its intented to be used in U-Boot SPL versions on platforms with very
    limited internal RAM sizes.

    To enable it, just define CONFIG_USE_TINY_PRINTF in your defconfig. This
    will result in the SPL using this tiny function and the main U-Boot
    still using the full-blown printf() function.

    This code was copied from:
    http://www.sparetimelabs.com/printfrevisited
    With mostly only coding style related changes so that its checkpatch
    clean.

    The size reduction is about 2.5KiB. Here a comparison for the db-mv784mp-gp
    (Marvell AXP) SPL:

    Without this patch:
    58963 18536 1928 79427 13643 ./spl/u-boot-spl

    With this patch:
    56542 18536 1956 77034 12cea ./spl/u-boot-spl

    Note:
    To make it possible to compile tiny-printf.c instead of vsprintf.c when
    CONFIG_USE_TINY_PRINTF is defined, the functions printf() and vprintf() are
    moved from common/console.c into vsprintf.c in this patch.

    Signed-off-by: Stefan Roese
    Cc: Simon Glass
    Cc: Hans de Goede
    Cc: Tom Rini
    Cc: Albert Aribaud

    Stefan Roese
     

22 Jul, 2015

1 commit


30 Jun, 2015

1 commit

  • Move common functions from cmd_nand.c (for calculating offset
    and size from cmdline paramter) to common place, so they could
    used from other commands which use mtd partitions.

    For onenand the arg_off_size() is left in common/cmd_onenand.c.
    It should use now the common arg_off() function, but as I could
    not test onenand I let it there ...

    Signed-off-by: Heiko Schocher
    Acked-by: Scott Wood
    Reviewed-by: Jagannadh Teki

    Heiko Schocher
     

23 Apr, 2015

1 commit


23 Nov, 2014

1 commit

  • Provide a new modifier to vsprintf() to print phys_addr_t variables to
    avoid having to cast or #ifdef when printing them out. The %pa modifier
    is used for this purpose, so phys_addr_t variables need to be passed by
    reference, like so:

    phys_addr_t start = 0;

    printf("start: %pa\n", &start);

    Depending on the size of phys_addr_t this will print out the address
    with 8 or 16 hexadecimal digits following a 0x prefix.

    Signed-off-by: Thierry Reding
    Tested-by: Stephen Warren
    Signed-off-by: Simon Glass

    Thierry Reding
     

21 Nov, 2014

1 commit

  • U-Boot has imported various utility macros from Linux
    scattering them to various places without consistency.

    In include/common.h are min, max, min3, max3, ARRAY_SIZE, ALIGN,
    container_of, DIV_ROUND_UP, etc.
    In include/linux/compat.h are min_t, max_t, round_up, round_down,
    etc.
    We also have duplicated defines of min_t in some *.c files.

    Moreover, we are suffering from too cluttered include/common.h.

    This commit moves various macros that originate in
    include/linux/kernel.h of Linux to their original position.

    Note:
    This commit simply moves the macros; the macros roundup,
    min, max, min2, max3, ARRAY_SIZE are different
    from those of Linux at this point.

    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     

27 Oct, 2014

1 commit


19 Jul, 2014

1 commit


25 Jan, 2014

1 commit

  • When CONFIG_SYS_VSNPRINTF is enabled, it protects print operations
    such as sprintf, snprintf, vsnprintf, etc., from buffer overflows.
    But vsnprintf_internal includes the terminating NULL character in
    the calculation of number of characters written. This affects sprintf
    and snprintf return values. Fix this issue by setting pointer 'str'
    back to the location of the '\0'.

    Signed-off-by: Darwin Rambo
    Reviewed-by: Steve Rae

    Darwin Rambo
     

26 Jun, 2013

1 commit


20 Feb, 2013

1 commit


14 Dec, 2012

1 commit

  • The ustrtoul shall convert string defined size (e.g. 1GiB) to unsigned
    long type (as its name implies).

    Up till now it had returned int, which might cause problems with large
    numbers (GiB range), when interpreted as U2 signed numbers.

    Signed-off-by: Lukasz Majewski
    Signed-off-by: Kyungmin Park

    Lukasz Majewski
     

05 Nov, 2012

1 commit


03 Nov, 2012

1 commit

  • The %p format of printf() would print a pointer to address null as
    "(null)". This makes sense in a real OS where a NULL pointer must
    never be dereferenced, but this is a bootloader, and there are cases
    where accessing the data at address null makes perfect sense.

    Remove the special case in lib/vsprintf.c using "#if 0" with a comment
    to make clear this was an intentional change and to stop re-adding
    this code.

    Signed-off-by: Wolfgang Denk
    Acked-by: Joe Hershberger

    Wolfgang Denk
     

16 Oct, 2012

2 commits


18 Dec, 2011

2 commits


27 Oct, 2011

1 commit


10 Sep, 2011

1 commit

  • assert() is like BUG_ON() but compiles to nothing unless DEBUG is defined.
    This is useful when a condition is an error but a board reset is unlikely
    to fix it, so it is better to soldier on in hope. Assertion failures should
    be caught during development/test.

    It turns out that assert() is defined separately in a few places in U-Boot
    with various meanings. This patch cleans up some of these.

    Build errors exposed by this change (and defining DEBUG) are also fixed in
    this patch.

    Signed-off-by: Simon Glass

    Simon Glass
     

29 Jul, 2011

1 commit

  • since commit

    commit d2e8b911c0a0661d395ccac72156040702ac842d
    Author: Mike Frysinger
    Date: Wed Jun 29 11:58:04 2011 +0000

    panic: add noreturn attribute

    I see the following warnings:

    vsprintf.c: In function 'panic':
    vsprintf.c:730: warning: 'noreturn' function does return

    for nearly all boards. This patch fixes this warning.

    Signed-off-by: Heiko Schocher
    cc: Mike Frysinger

    Heiko Schocher
     

13 May, 2011

1 commit

  • as checkpatch proposes to use strict_strtoul instead of
    simple_strtoul, introduce it.

    Ported this function from Linux 2.6.38 commit ID:
    521cb40b0c44418a4fd36dc633f575813d59a43d

    Signed-off-by: Heiko Schocher
    cc: Wolfgang Denk
    cc: Detlev Zundel
    cc: Valentin Longchamp
    cc: Holger Brunck
    Signed-off-by: Valentin Longchamp

    Heiko Schocher
     

29 Nov, 2010

1 commit


05 Jul, 2010

1 commit

  • The hush shell dynamically allocates (and re-allocates) memory for the
    argument strings in the "char *argv[]" argument vector passed to
    commands. Any code that modifies these pointers will cause serious
    corruption of the malloc data structures and crash U-Boot, so make
    sure the compiler can check that no such modifications are being done
    by changing the code into "char * const argv[]".

    This modification is the result of debugging a strange crash caused
    after adding a new command, which used the following argument
    processing code which has been working perfectly fine in all Unix
    systems since version 6 - but not so in U-Boot:

    int main (int argc, char **argv)
    {
    while (--argc > 0 && **++argv == '-') {
    /* ====> */ while (*++*argv) {
    switch (**argv) {
    case 'd':
    debug++;
    break;
    ...
    default:
    usage ();
    }
    }
    }
    ...
    }

    The line marked "====>" will corrupt the malloc data structures and
    usually cause U-Boot to crash when the next command gets executed by
    the shell. With the modification, the compiler will prevent this with
    an
    error: increment of read-only location '*argv'

    N.B.: The code above can be trivially rewritten like this:

    while (--argc > 0 && **++argv == '-') {
    char *arg = *argv;
    while (*++arg) {
    switch (*arg) {
    ...

    Signed-off-by: Wolfgang Denk
    Acked-by: Mike Frysinger

    Wolfgang Denk
     

13 Apr, 2010

1 commit

  • Now that the other architecture-specific lib directories have been
    moved out of the top-level directory there's not much reason to have the
    '_generic' suffix on the common lib directory.

    Signed-off-by: Peter Tyser

    Peter Tyser