02 Oct, 2011
1 commit
-
lzo1x_decompress.c: In function ‘parse_header’:
lzo1x_decompress.c:35:5: warning: variable ‘level’ set but not used
[-Wunused-but-set-variable]Signed-off-by: Marek Vasut
Acked-by: Mike Frysinger
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
05 Aug, 2011
1 commit
-
There was a mix of UTF-8 and ISO-8859 files in the U-Boot source
tree, which could cause issues with the patchwork review system.
This commit converts all ISO-8859 files to UTF-8.Signed-off-by: Albert ARIBAUD
30 Jul, 2011
1 commit
-
This is needed to get rid of build warnings like
main.c:311: warning: passing argument 2 of 'setenv' discards qualifiers from pointer target type
which result from commit 09c2e90 "unify version_string".
Signed-off-by: Wolfgang Denk
Cc: Andreas Bießmann
29 Jul, 2011
1 commit
-
since commit
commit d2e8b911c0a0661d395ccac72156040702ac842d
Author: Mike Frysinger
Date: Wed Jun 29 11:58:04 2011 +0000panic: add noreturn attribute
I see the following warnings:
vsprintf.c: In function 'panic':
vsprintf.c:730: warning: 'noreturn' function does returnfor nearly all boards. This patch fixes this warning.
Signed-off-by: Heiko Schocher
cc: Mike Frysinger
28 Jul, 2011
1 commit
-
This patch removes the architecture specific implementation of
version_string where possible. Some architectures use a special place
and therefore we provide U_BOOT_VERSION_STRING definition and a common
weak symbol version_string.Signed-off-by: Andreas Bießmann
CC: Mike Frysinger
CC: Peter Pan
Acked-by: Mike Frysinger
26 Jul, 2011
2 commits
-
Signed-off-by: Aneesh V
-
In some cases (e.g. bootm with a elf payload which is already at the right
position) there is a in place copy of data to the same address. Catching this
saves some ms while booting.Signed-off-by: Matthias Weisser
15 Jul, 2011
2 commits
-
For ages, we've been talking about adding functions to libfdt to allow
iteration through properties. So, finally, here are some.I got bogged down on this for a long time because I didn't want to
expose offsets directly to properties to the callers. But without
that, attempting to make reasonable iteration functions just became
horrible. So eventually, I settled on an interface which does now
expose property offsets. fdt_first_property_offset() and
fdt_next_property_offset() are used to step through the offsets of the
properties starting from a particularly node offset. The details of
the property at each offset can then be retrieved with either
fdt_get_property_by_offset() or fdt_getprop_by_offset() which have
interfaces similar to fdt_get_property() and fdt_getprop()
respectively.No explicit testcases are included, but we do use the new functions to
reimplement the existing fdt_get_property() function.Signed-off-by: David Gibson
This was extracted from the DTC commit:
73dca9ae0b9abe6924ba640164ecce9f8df69c5a Mon Sep 17 00:00:00 2001Signed-off-by: Gerald Van Baren
-
Currently, the Linux kernel, libfdt and dtc, when using flattened
device trees encode a node's phandle into a property named
"linux,phandle". The ePAPR specification, however - aiming as it is
to not be a Linux specific spec - requires that phandles be encoded in
a property named simply "phandle".This patch adds support for this newer approach to dtc and libfdt.
Specifically:- fdt_get_phandle() will now return the correct phandle if it
is supplied in either of these properties- fdt_node_offset_by_phandle() will correctly find a node with
the given phandle encoded in either property.- By default, when auto-generating phandles, dtc will encode
it into both properties for maximum compatibility. A new -H
option allows either only old-style or only new-style
properties to be generated.- If phandle properties are explicitly supplied in the dts
file, dtc will not auto-generate ones in the alternate format.- If both properties are supplied, dtc will check that they
have the same value.- Some existing testcases are updated to use a mix of old and
new-style phandles, partially testing the changes.- A new phandle_format test further tests the libfdt support,
and the -H option.Signed-off-by: David Gibson
This was extracted from the DTC commit:
d75b33af676d0beac8398651a7f09037555a550b Mon Sep 17 00:00:00 2001Signed-off-by: Gerald Van Baren
13 May, 2011
2 commits
-
as checkpatch proposes to use strict_strtoul instead of
simple_strtoul, introduce it.Ported this function from Linux 2.6.38 commit ID:
521cb40b0c44418a4fd36dc633f575813d59a43dSigned-off-by: Heiko Schocher
cc: Wolfgang Denk
cc: Detlev Zundel
cc: Valentin Longchamp
cc: Holger Brunck
Signed-off-by: Valentin Longchamp -
The previous commit imported a little too much from upstream. We need
to disable stdio.h when using U-Boot.Reported-by: Wolfgang Denk
Signed-off-by: Mike Frysinger
01 May, 2011
1 commit
-
While looking to upgrade to zlib-1.2.5, the current mondo merge of
multiple files into a single was making things way more difficult
than it should have been. Hard to pick out what has been changed
to port it to U-Boot, been removed as useless, and bug fixes added
after the fact.So split the single file up into the original file names, and merge
non-essential changes back from the original tree (for some reason,
style in code in a bunch of places was changed to U-Boot style even
though this isn't "U-Boot" code).The original build style is retained -- we have a single zlib.c that
includes all the other files, and that is the only file we compile.Signed-off-by: Mike Frysinger
28 Apr, 2011
2 commits
-
u-boot environments, esp. when boards are shared across multiple
users, can get pretty large and time consuming to visually parse.
The grepenv command this patch adds can be used in lieu of printenv
to facilitate searching. grepenv works like printenv but limits
its output only to environment strings (variable name and value
pairs) that match the user specified substring.the following examples are on a board with a 5313 byte environment
that spans multiple screen pages:Example 1: summarize ethernet configuration:
=> grepenv eth TSEC
etact=FM1@DTSEC2
eth=FM1@DTSEC4
ethact=FM1@DTSEC2
eth1addr=00:E0:0C:00:8b:01
eth2addr=00:E0:0C:00:8b:02
eth3addr=00:E0:0C:00:8b:03
eth4addr=00:E0:0C:00:8b:04
eth5addr=00:E0:0C:00:8b:05
eth6addr=00:E0:0C:00:8b:06
eth7addr=00:E0:0C:00:8b:07
eth8addr=00:E0:0C:00:8b:08
eth9addr=00:E0:0C:00:8b:09
ethaddr=00:E0:0C:00:8b:00
netdev=eth0
uprcw=setenv ethact $eth;setenv filename p4080ds/R_PPSXX_0xe/rcw_0xe_2sgmii_rev2_high.bin;setenv start 0xe8000000;protect off all;run upimage;protect on all
upuboot=setenv ethact $eth;setenv filename u-boot.bin;setenv start eff80000;protect off all;run upimage;protect on all
upucode=setenv ethact $eth;setenv filename fsl_fman_ucode_P4080_101_6.bin;setenv start 0xef000000;protect off all;run upimage;protect on all
usdboot=setenv ethact $eth;tftp 1000000 $dir/$bootfile;tftp 2000000 $dir/initramfs.cpio.gz.uboot;tftp c00000 $dir/p4080ds-usdpaa.dtb;setenv bootargs root=/dev/ram rw console=ttyS0,115200 $othbootargs;bootm 1000000 2000000 c00000;
=>Example 2: detect unused env vars:
=> grepenv etact
etact=FM1@DTSEC2
=>Example 3: reveal hardcoded variables; e.g., for fdtaddr:
=> grepenv fdtaddr
fdtaddr=c00000
nfsboot=setenv bootargs root=/dev/nfs rw nfsroot=$serverip:$rootpath ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:$netdev:off console=$consoledev,$baudrate $othbootargs;tftp $loadaddr $bootfile;tftp $fdtaddr $fdtfile;bootm $loadaddr - $fdtaddr
ramboot=setenv bootargs root=/dev/ram rw console=$consoledev,$baudrate $othbootargs;tftp $ramdiskaddr $ramdiskfile;tftp $loadaddr $bootfile;tftp $fdtaddr $fdtfile;bootm $loadaddr $ramdiskaddr $fdtaddr
=> grep $fdtaddr
fdtaddr=c00000
my_boot=bootm 0x40000000 0x41000000 0x00c00000
my_dtb=tftp 0x00c00000 $prefix/p4080ds.dtb
nohvboot=tftp 1000000 $dir/$bootfile;tftp 2000000 $dir/$ramdiskfile;tftp c00000 $dir/$fdtfile;setenv bootargs root=/dev/ram rw ramdisk_size=0x10000000 console=ttyS0,115200;bootm 1000000 2000000 c00000;
=>This patch also enables the grepenv command by default on
corenet_ds based boards (and repositions the DHCP command
entry to keep the list sorted).Signed-off-by: Kim Phillips
Cc: Kumar Gala
Cc: Andy Fleming -
commit 560d424b6d7cd4205b062ad95f1b104bd4f8bcc3 "env: re-add
support for auto-completion" fell short of its description -
the 'used' logic in hmatch_r was reversed - 'used' is 0 if
the hash table entry is not used, or -1 if deleted. This
patch makes hmatch_r actually match on valid ('used') entries,
instead of skipping them and failing to match anything.typing 'printenv tft' and hitting 'tab' now displays valid
choices for variable names.Signed-off-by: Kim Phillips
Cc: Mike Frysinger
Tested-by: Mike Frysinger
13 Apr, 2011
1 commit
-
Signed-off-by: Catalin Radu
23 Mar, 2011
2 commits
-
For example, an input of 0x80000000 should print:
2147.484 instead of -2147.-483.
Signed-off-by: Ed Swarthout
Signed-off-by: Kumar Gala -
Use negative used value to mark deleted entry. Search keeps probing
past deleted entries. Adding an entry uses first deleted entry when
it hits end of probe chain.Initially found that "ramdiskimage" and "preboot" collide modulus 347,
causing "preboot" to be inserted at idx 190, "ramdiskimage" at idx 191.
Previous to this fix when "preboot" is deleted, "ramdiskimage" is
orphaned.Signed-off-by: Peter Barada
Tested-by: Wolfgang Denk
19 Jan, 2011
1 commit
-
Crc7 is used to compute mmc spi command packet checksum.
Copy from linux-2.6 lib/crc7.c include/linux/crc7.h
commit ad241528c4919505afccb022acbab3eeb0db4d80Signed-off-by: Thomas Chou
18 Jan, 2011
1 commit
-
Signed-off-by: Stefan Roese
Acked-by: Michal Simek
10 Jan, 2011
2 commits
-
Some ports set up the board info structure at the same time as the global
data structure, and largely keep them together. So generate a define for
the board info struct too.Signed-off-by: Mike Frysinger
-
Currently, only basic completion is supported (no globs), but this is
what we had previously.Signed-off-by: Mike Frysinger
18 Dec, 2010
1 commit
-
The non-reentrant versions of the hashtable functions operate on a single
shared hashtable. So if two different people try using these funcs for
two different purposes, they'll cause problems for the other.Avoid this by converting all existing hashtable consumers over to the
reentrant versions and then punting the non-reentrant ones.Signed-off-by: Mike Frysinger
29 Nov, 2010
3 commits
-
Signed-off-by: Mike Frysinger
-
Signed-off-by: Mike Frysinger
-
The duplication of the do_reset prototype has gotten out of hand,
and they're not all in sync. Unify them all in command.h.Signed-off-by: Mike Frysinger
18 Nov, 2010
1 commit
-
Before this commit, weak symbols were not overridden by non-weak symbols
found in archive libraries when linking with recent versions of
binutils. As stated in the System V ABI, "the link editor does not
extract archive members to resolve undefined weak symbols".This commit changes all Makefiles to use partial linking (ld -r) instead
of creating library archives, which forces all symbols to participate in
linking, allowing non-weak symbols to override weak symbols as intended.
This approach is also used by Linux, from which the gmake function
cmd_link_o_target (defined in config.mk and used in all Makefiles) is
inspired.The name of each former library archive is preserved except for
extensions which change from ".a" to ".o". This commit updates
references accordingly where needed, in particular in some linker
scripts.This commit reveals board configurations that exclude some features but
include source files that depend these disabled features in the build,
resulting in undefined symbols. Known such cases include:
- disabling CMD_NET but not CMD_NFS;
- enabling CONFIG_OF_LIBFDT but not CONFIG_QE.Signed-off-by: Sebastien Carlier
28 Oct, 2010
1 commit
-
Signed-off-by: Wolfgang Denk
27 Oct, 2010
2 commits
-
CONFIG_SYS_GBL_DATA_SIZE has always been just a bad workarond for not
being able to use "sizeof(struct global_data)" in assembler files.
Recent experience has shown that manual synchronization is not
reliable enough. This patch renames CONFIG_SYS_GBL_DATA_SIZE into
GENERATED_GBL_DATA_SIZE which gets automatically generated by the
asm-offsets tool. In the result, all definitions of this value can be
deleted from the board config files. We have to make sure that all
files that reference such data include the new file.No other changes have been done yet, but it is obvious that similar
changes / simplifications can be done for other, related macro
definitions as well.Signed-off-by: Wolfgang Denk
Acked-by: Kumar Gala -
A recurrent issue is that certain C level constructs like sizeof() or
offsetof() cannot be used in assembler files, which is inconvenient
when such constructs are used in the definition of macro names etc.To avoid duplication of such definitions (and thus another cause of
problems), we adapt the Linux way to automatically generate the
respective definitions from the respective C header files.In Linux, this is implemented in include/linux/kbuild.h, Kbuild, and
arch/*/kernel/asm-offsets.c; we adapt the code from the Linux v2.6.36
kernel tree.We also copy the concept of the include/generated/ directory which can
be used to hold other automatically generated files as well.We start with an architecture-independent lib/asm-offsets.c which
generates include/generated/generic-asm-offsets.h (included by
include/asm-offsets.h, which is what will be referred to in the actual
source code). Later this may be extended by architecture-specific
arch/*/lib/asm-offsets.c files that will generate a
include/generated/asm-offsets.h.Signed-off-by: Wolfgang Denk
Acked-by: Kumar Gala
13 Oct, 2010
2 commits
-
Patch 253cb831 [zlib: add watchdog reset call] added already a few
watchdog reset calls to the new zlib U-Boot port. But on some boards
this is not enough. Additional calls are needed on boards with
short watchdog timeouts.This was detected and tested on the lwmon5 board with a very short
watchdog timeout. Without this patch, the board resets during Linux
kernel decompression. With it, the decompression succeeds.Signed-off-by: Stefan Roese
Cc: Detlev Zundel
Acked-by: Detlev Zundel -
As usually done in U-Boot, the watchdog_reset code is called via a
macro (WATCHDOG_RESET). In zlib.c this was done differently, by using
a function pointer which is initialized with WATCHDOG_RESET upon watchdog
usage or with NULL otherwise. This patch now uses the plain
WATCHDOG_RESET macros to call the function resulting in slightly smaller
U-Boot images and simpler code.U-Boot code size reduction:
PowerPC board with watchdog support (lwmon5):
-> 80 bytes smaller image sizePowerPC board without watchdog support (sequoia):
-> 112 bytes smaller image sizeSigned-off-by: Stefan Roese
Cc: Detlev Zundel
Cc: Wolfgang Denk
Acked-by: Detlev Zundel
07 Oct, 2010
1 commit
-
This patch adds a new config parameter for adjusting the calculation of
hash table size when importing a buffer.When importing a extremely small buffer (e.g. the default_environment)
the old calculation generated a hash table which could hold at most the
buffer content but no more entires.The new calculation add a fixed number of entries to the result to fit
better for small import buffers. This amount may be configured by the
user in board file to adjust the behaviour.Signed-off-by: Andreas Bießmann
20 Sep, 2010
4 commits
-
Motivation:
* Old environment code used a pessimizing implementation:
- variable lookup used linear search => slow
- changed/added variables were added at the end, i. e. most
frequently used variables had the slowest access times => slow
- each setenv() would calculate the CRC32 checksum over the whole
environment block => slow
* "redundant" envrionment was locked down to two copies
* No easy way to implement features like "reset to factory defaults",
or to select one out of several pre-defined (previously saved) sets
of environment settings ("profiles")
* No easy way to import or export environment settings======================================================================
API Changes:
- Variable names starting with '#' are no longer allowed
I didn't find any such variable names being used; it is highly
recommended to follow standard conventions and start variable names
with an alphanumeric character- "printenv" will now print a backslash at the end of all but the last
lines of a multi-line variable value.Multi-line variables have never been formally defined, allthough
there is no reason not to use them. Now we define rules how to deal
with them, allowing for import and export.- Function forceenv() and the related code in saveenv() was removed.
At the moment this is causing build problems for the only user of
this code (schmoogie - which has no entry in MAINTAINERS); may be
fixed later by implementing the "env set -f" feature.Inconsistencies:
- "printenv" will '\\'-escape the '\n' in multi-line variables, while
"printenv var" will not do that.======================================================================
Advantages:
- "printenv" output much better readable (sorted)
- faster!
- extendable (additional variable properties can be added)
- new, powerful features like "factory reset" or easy switching
between several different environment settings ("profiles")Disadvantages:
- Image size grows by typically 5...7 KiB (might shrink a bit again on
systems with redundant environment with a following patch series)======================================================================
Implemented:
- env command with subcommands:
- env print [arg ...]
same as "printenv": print environment
- env set [-f] name [arg ...]
same as "setenv": set (and delete) environment variables
["-f" - force setting even for read-only variables - not
implemented yet.]- end delete [-f] name
not implemented yet
["-f" - force delete even for read-only variables]
- env save
same as "saveenv": save environment
- env export [-t | -b | -c] addr [size]
export internal representation (hash table) in formats usable for
persistent storage or processing:-t: export as text format; if size is given, data will be
padded with '\0' bytes; if not, one terminating '\0'
will be added (which is included in the "filesize"
setting so you can for exmple copy this to flash and
keep the termination).
-b: export as binary format (name=value pairs separated by
'\0', list end marked by double "\0\0")
-c: export as checksum protected environment format as
used for example by "saveenv" command
addr: memory address where environment gets stored
size: size of output bufferWith "-c" and size is NOT given, then the export command will
format the data as currently used for the persistent storage,
i. e. it will use CONFIG_ENV_SECT_SIZE as output block size and
prepend a valid CRC32 checksum and, in case of resundant
environment, a "current" redundancy flag. If size is given, this
value will be used instead of CONFIG_ENV_SECT_SIZE; again, CRC32
checksum and redundancy flag will be inserted.With "-b" and "-t", always only the real data (including a
terminating '\0' byte) will be written; here the optional size
argument will be used to make sure not to overflow the user
provided buffer; the command will abort if the size is not
sufficient. Any remainign space will be '\0' padded.On successful return, the variable "filesize" will be set.
Note that filesize includes the trailing/terminating '\0'
byte(s).Usage szenario: create a text snapshot/backup of the current
settings:=> env export -t 100000
=> era ${backup_addr} +${filesize}
=> cp.b 100000 ${backup_addr} ${filesize}Re-import this snapshot, deleting all other settings:
=> env import -d -t ${backup_addr}
- env import [-d] [-t | -b | -c] addr [size]
import external format (text or binary) into hash table,
optionally deleting existing values:-d: delete existing environment before importing;
otherwise overwrite / append to existion definitions
-t: assume text format; either "size" must be given or the
text data must be '\0' terminated
-b: assume binary format ('\0' separated, "\0\0" terminated)
-c: assume checksum protected environment format
addr: memory address to read from
size: length of input data; if missing, proper '\0'
termination is mandatory- env default -f
reset default environment: drop all environment settings and load
default environment- env ask name [message] [size]
same as "askenv": ask for environment variable
- env edit name
same as "editenv": edit environment variable
- env run
same as "run": run commands in an environment variable
======================================================================
TODO:
- drop default env as implemented now; provide a text file based
initialization instead (eventually using several text files to
incrementally build it from common blocks) and a tool to convert it
into a binary blob / object file.- It would be nice if we could add wildcard support for environment
variables; this is needed for variable name auto-completion,
but it would also be nice to be able to say "printenv ip*" or
"printenv *addr*"- Some boards don't link any more due to the grown code size:
DU405, canyonlands, sequoia, socrates.=> cc: Matthias Fuchs ,
Stefan Roese ,
Heiko Schocher- Dropping forceenv() causes build problems on schmoogie
=> cc: Sergey Kubushyn
- Build tested on PPC and ARM only; runtime tested with NOR and NAND
flash only => needs testing!!Signed-off-by: Wolfgang Denk
Cc: Matthias Fuchs ,
Cc: Stefan Roese ,
Cc: Heiko Schocher
Cc: Sergey Kubushyn -
This implementation is based on code from uClibc-0.9.30.3 but was
modified and extended for use within U-Boot.Major modifications and extensions:
* hsearch() [modified / extended]:
- While the standard version does not make any assumptions about
the type of the stored data objects at all, this implementation
works with NUL terminated strings only.
- Instead of storing just pointers to the original objects, we
create local copies so the caller does not need to care about the
data any more.
- The standard implementation does not provide a way to update an
existing entry. This version will create a new entry or update an
existing one when both "action == ENTER" and "item.data != NULL".
- hsearch_r(): Instead of returning 1 on success, we return the
index into the internal hash table, which is also guaranteed to be
positive. This allows us direct access to the found hash table
slot for example for functions like hdelete().
* hdelete() [added]:
- The standard implementation of hsearch(3) does not provide any way
to delete any entries from the hash table. We extend the code to
do that.
* hexport() [added]:
- Export the data stored in the hash table in linearized form:
Entries are exported as "name=value" strings, separated by an
arbitrary (non-NUL, of course) separator character. This allows to
use this function both when formatting the U-Boot environment for
external storage (using '\0' as separator), but also when using it
for the "printenv" command to print all variables, simply by using
as '\n" as separator. This can also be used for new features like
exporting the environment data as text file, including the option
for later re-import.
- The entries in the result list will be sorted by ascending key
values.
* himport() [added]:
- Import linearized data into hash table. This is the inverse
function to hexport(): it takes a linear list of "name=value"
pairs and creates hash table entries from it.
- Entries without "value", i. e. consisting of only "name" or
"name=", will cause this entry to be deleted from the hash table.
- The "flag" argument can be used to control the behaviour: when
the H_NOCLEAR bit is set, then an existing hash table will kept,
i. e. new data will be added to an existing hash table;
otherwise, old data will be discarded and a new hash table will
be created.
- The separator character for the "name=value" pairs can be
selected, so we both support importing from externally stored
environment data (separated by NUL characters) and from plain text
files (entries separated by newline characters).
- To allow for nicely formatted text input, leading white space
(sequences of SPACE and TAB chars) is ignored, and entries
starting (after removal of any leading white space) with a '#'
character are considered comments and ignored.
- NOTE: this means that a variable name cannot start with a '#'
character.
- When using a non-NUL separator character, backslash is used as
escape character in the value part, allowing for example fo
multi-line values.
- In theory, arbitrary separator characters can be used, but only
'\0' and '\n' have really been tested.Signed-off-by: Wolfgang Denk
-
Code adapted from uClibc-0.9.30.3
Signed-off-by: Wolfgang Denk
-
Needed for hash table support; probably useful in a lot of other
places as well.Signed-off-by: Wolfgang Denk
13 Sep, 2010
1 commit
-
use a union to cause necessary alignment per architecture
Signed-off-by: Reinhard Meyer
09 Aug, 2010
1 commit
-
Applying a little creative format string allows us to shrink the initial
data read & display loop by only calling printf once. Re-using the local
data buffer to generate the string we want to display then allows us to
output everything with just one printf call instead of multiple calls to
the putc function.The local stack buffer needs increasing by 1 byte, but the resulting code
shrink and speed up is worth it I think.Signed-off-by: Mike Frysinger
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