aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2014-02-01dtc: fix some more -Wshadow warningsFlorian Fainelli4-17/+17
Building on a RHEL6 system produced the following -Wshadow warnings in fstree.c, util.c and checks.c: cc1: warnings being treated as errors checks.c: In function 'parse_checks_option': checks.c:709: error: declaration of 'optarg' shadows a global declaration /usr/include/getopt.h:59: error: shadowed declaration is here make[1]: *** [checks.o] Error 1 make[1]: *** Waiting for unfinished jobs.... make[1]: *** Waiting for unfinished jobs.... cc1: warnings being treated as errors fstree.c: In function 'read_fstree': fstree.c:40: error: declaration of 'tmpnam' shadows a global declaration /usr/include/stdio.h:208: error: shadowed declaration is here make[1]: *** [fstree.o] Error 1 cc1: warnings being treated as errors util.c: In function 'xstrdup': util.c:42: error: declaration of 'dup' shadows a global declaration /usr/include/unistd.h:528: error: shadowed declaration is here Fix all of these -Wshadow warnings by using slightly different variable names which won't collide with anything else. Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
2014-01-25Makefile: enable -Wshadow by defaultFlorian Fainelli1-1/+1
Now that all -Wshadow build warnings/errors are fixed, turn on -Wshadow by default to make sure we would catch new potential shadow warnings. Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
2014-01-25libfdt: avoid shadowing "err" in FDT_RW_CHECK_HEADERFlorian Fainelli1-3/+3
FDT_RW_CHECK_HEADER declares an internal variable named "err" which is far too generic and will produce the following -Wshadow warnings: libfdt/fdt_rw.c: In function 'fdt_add_mem_rsv': libfdt/fdt_rw.c:177:2: error: declaration of 'err' shadows a previous local [-Werror=shadow] libfdt/fdt_rw.c:175:6: error: shadowed declaration is here [-Werror=shadow] libfdt/fdt_rw.c: In function 'fdt_del_mem_rsv': libfdt/fdt_rw.c:194:2: error: declaration of 'err' shadows a previous local [-Werror=shadow] libfdt/fdt_rw.c:192:6: error: shadowed declaration is here [-Werror=shadow] libfdt/fdt_rw.c: In function 'fdt_set_name': ... Since this variable is only used internally in the macro, rename to __err which should be prefixed enough not to cause new shadow warnings. Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
2014-01-25libfdt: avoid shadowing "err" in FDT_CHECK_HEADERFlorian Fainelli1-3/+3
FDT_CHECK_HEADER declares an internal variable named "err" whose name is far too generic and will produce the following -Wshadow warnings: libfdt/fdt_ro.c: In function 'fdt_node_offset_by_compatible': libfdt/fdt_ro.c:555:2: error: declaration of 'err' shadows a previous local [-Werror=shadow] libfdt/fdt_ro.c:553:14: error: shadowed declaration is here [-Werror=shadow] cc1: all warnings being treated as errors Since this variable is only used internally in the macro, rename to __err which should be prefixed enough not to cause new shadow warnings. Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
2014-01-25dtc: avoid shadowing dirname()Florian Fainelli1-2/+2
dirname() is declared as a function, and later on try_open() another variable dirname is used, which shadows the dirname() function declaration and will produce the following warnings/errors with -Wshadow turned on: srcpos.c: In function 'try_open': srcpos.c:71:35: error: declaration of 'dirname' shadows a global declaration [-Werror=shadow] srcpos.c:37:14: error: shadowed declaration is here [-Werror=shadow] srcpos.c: In function 'srcfile_add_search_path': srcpos.c:183:42: error: declaration of 'dirname' shadows a global declaration [-Werror=shadow] srcpos.c:37:14: error: shadowed declaration is here [-Werror=shadow] cc1: all warnings being treated as errors Fix this by renaming the function dirname() to get_dirname(). Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
2014-01-04Clean up parser error messagesDavid Gibson1-26/+18
Generally edit parser error messages for brevity and clarity. Replace the print_error() function with a a new macro for brevity and clarity in the source. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2014-01-04Correct locations in parser error messaesDavid Gibson1-14/+12
The print_error() function used in several places in the parser uses the location information in yylloc to describe the location of the error. This is not correct in most cases. yylloc gives the location of the lookahead token, whereas the error is generally associated with one of the already parsed non-terminals. This patch corrects this, adding a location parameter to print_error() and supplying it with the appropriate bison @N symbols. This probably breaks yacc compatiblity, but too bad - accurate error messages are more important. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2014-01-04Die on failed /incbin/ seeksDavid Gibson1-4/+3
Failing to open an input file, with /include/ or /incbin/ is treated as immediately fatal inside srcfile_relative_open(). However, filing to seek() to the requested offset in an /incbin/ is not. This is a bit oddly inconsistent, and leaves us with a strange case that's awkward to deal with down the line. So, get rid of it and have failed seeks on an /incbin/ be immediately fatal. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2014-01-04Move character literal processing to the lexerDavid Gibson2-36/+18
To match the processing of integer literals, character literals are passed as a string from lexer to parser then interpreted there. This is just as awkward as it was for integer literals, without the excuse that we used to need the information about the dts version to process them correctly. So, move character literal processing back to the lexer as well, cleaning things up. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2014-01-03Move integer literal processing back to the lexerDavid Gibson2-34/+38
At the moment integer literals are passed from the lexer to the parser as a string, where it's evaluated into an integer by eval_literal(). That strange approach happened because we needed to know whether we were processing dts-v0 or dts-v1 - only known at the parser level - to know how to interpret the literal properly. dts-v0 support has been gone for some time now, and the base and bits parameters to eval_literal() are essentially useless. So, clean things up by moving the literal interpretation back to the lexer. This also introduces a new lexical_error() function to report malformed literals and set the treesource_error flag so that they'll cause a parse failure at the top level. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2014-01-01Make srcpos_{v,}error() more widely usefulDavid Gibson3-11/+13
Allow them to take a prefix argument giving the general type of error, which will be useful in future. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2014-01-01Fix memory leak in srcpos_verror()David Gibson1-1/+3
Since dtc runs are short, we don't care that much about memory leaks. Still, leaking the source position string every time we print an error messages is pretty nasty. Fix it. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2014-01-01Fix indentation of srcpos_verror()David Gibson1-5/+5
Somehow this function ended up with a 7 space indent, instead of the usual 8 space (1 tab) indent. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2014-01-01Fix typo in type of srcpos_verror() et al.David Gibson2-4/+4
The srcpos_verror() and srcpos_error() functions declare the format string as 'char const *' instead of 'const char *'. Fix it. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2014-01-01Remove unused srcpos_warn() functionDavid Gibson2-19/+0
This function has no users, and we can replace it more generally later. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2013-12-31Fix valgrind errors in sw_tree1David Gibson2-5/+26
The sw_tree1 testcase has accumulated some valgrind errors, at least in the "realloc" mode. * It had both a realloc_fdt() and explicit xmalloc() for the initial allocation which was redundant and caused errors. * It doesn't make sense to call fdt_resize() until after we've created the initial stub tree * Alignment gaps inserted into the tree contain uninitialized data, which trips an error when we write it out. We could zero the buffer, but that would make it easier to miss real bugs, so we add suppressions for the valgrind warnings instead. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2013-12-30Add option to run_tests.sh to stop immediately on a failing testDavid Gibson1-1/+8
This is a debugging convenience option, which makes it much easier to find the failing tests and fix them one by one. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2013-12-25Pass 'unsigned char' type to isdigit()/isspace()/isprint() functionsSerge Lamikhov-Center3-5/+5
The isdigit(), isprint(), etc. functions take an int, whose value is required to be in the range of an _unsigned_ char, or EOF. This, horribly, means that systems which have a signed char by default need casts to pass a char variable safely to these functions. We can't do this more nicely by making the variables themselves 'unsigned char *' because then we'll get warnings passing them to the strchr() etc. functions. At least the cygwin version of these functions, are designed to generate warnings if this isn't done, as explained by this comment from ctype.h: These macros are intentionally written in a manner that will trigger a gcc -Wall warning if the user mistakenly passes a 'char' instead of an int containing an 'unsigned char'. Signed-off-by: Serge Lamikhov-Center <Serge.Lamikhov@gmail.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2013-10-28Use stdbool more widelyDavid Gibson12-37/+39
We already use the C99 bool type from stdbool.h in a few places. However there are many other places we represent boolean values as plain ints. This patch changes that. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2013-10-26libfdt: Add function to resize the buffer for a sequential write treeDavid Gibson4-8/+114
At present, when using sequential write mode, there's no straightforward means of resizing the buffer the fdt is being built into. This patch adds an fdt_resize() function for this purpose. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2013-10-01util: Fix out of bounds memory accessSerge Lamikhov-Center1-1/+1
The change also fixes numeric values output produced by fdtdump. Signed-off-by: Serge Lamikhov-Center <Serge.Lamikhov@gmail.com>
2013-09-20Ensure all tests have matching reg and unit addressStephen Warren19-1/+120
ePAPR 1.1 section 2.2.1.1 "Node Name Requirements" specifies that any node that has a reg property must include a unit address in its name with value matching the first entry in its reg property. Conversely, if a node does not have a reg property, the node name must not include a unit address. Adjust all the dtc test-cases to conform to this rule. Signed-off-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2013-08-15Makefile: provide separate install targetsDavid Gibson1-2/+10
Currently `make install` will install the binaries, libraries and includes. This change separates the install target into install-bin, install-lib and install-includes, so we have more flexibility, particularly when we're just using libfdt. Signed-off-by: Jeremy Kerr <jk@ozlabs.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2013-06-22Tag Version 1.4.0v1.4.0Jon Loeliger1-1/+1
Signed-off-by: Jon Loeliger <jdl@jdl.com>
2013-06-03dtc: ensure #line directives don't consume data from the next lineStephen Warren2-1/+11
Previously, the #line parsing regex ended with ({WS}+[0-9]+)?. The {WS} could match line-break characters. If the #line directive did not contain the optional flags field at the end, this could cause any integer data on the next line to be consumed as part of the #line directive parsing. This could cause syntax errors (i.e. #line parsing consuming the leading 0 from a hex literal 0x1234, leaving x1234 to be parsed as cell data, which is a syntax error), or invalid compilation results (i.e. simply consuming literal 1234 as part of the #line processing, thus removing it from the cell data). Fix this by replacing {WS} with [ \t] so that it can't match line-breaks. Convert all instances of {WS}, even though the other instances should be irrelevant for any well-formed #line directive. This is done for consistency and ultimate safety. Reported-by: Ian Campbell <Ian.Campbell@citrix.com> Signed-off-by: Stephen Warren <swarren@nvidia.com> Acked-by: David Gibson <david@gibson.dropbear.id.au>
2013-05-29Add missing test binary to .gitignoreDavid Gibson1-0/+1
The subnode_iterate test binary was missing from .gitignore, this fixes it. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2013-05-29fdtput: expand fdt if value does not fitSrinivas Kandagatla2-15/+65
If you try to insert a new node or extend a property with large value, using fdtput you will notice that it always fails. example: fdtput -v -p -ts ./tst.dtb "/node-1" "property-1" "value-1 Error at 'node-1': FDT_ERR_NOSPACE or fdtput -v -c ./tst.dtb "/node-1" Error at 'node-1': FDT_ERR_NOSPACE or fdtput -v -ts ./tst.dtb "/node" "property" "very big value" Decoding value: string: 'very big value' Value size 15 Error at 'property': FDT_ERR_NOSPACE All these error are returned from libfdt, as the size of the fdt passed has no space to accomdate these new properties. This patch adds realloc functions in fdtput to allocate new space in fdt when it detects a shortage in space for new value or node. With this patch, fdtput can insert a new node or property or extend a property with new value greater than original size. Also it packs the final blob to clean up any extra padding. Without this patch fdtput tool complains with FDT_ERR_NOSPACE when we try to add a node/property or extend the value of a property. Testcases for the new behaviour added by David Gibson. Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@st.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2013-05-29Remove some tests for misfeaturesDavid Gibson1-4/+0
There are a couple of fdtput related tests which are rather pointless - they explicitly test for the presence of an undesirable limitation in fdtput, which will cause test failures when we fix it. This patch removes the tests. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2013-05-29Use shorten_echo for wrap_testsDavid Gibson1-1/+1
We have certain tests which generate extremely long command lines, which are shortened in the testsuite output with the 'shorten_echo' function. Currently that is used in run_fdtput_test and run_wrap_test, this patch uses it for run_wrap_test as well, allowing more general tests with long command lines. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2013-05-24fdtdump: add a debug modeMike Frysinger1-4/+37
When hacking raw fdt files, it's useful to know the actual offsets into the file each node appears. Add a --debug mode that includes this. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2013-05-24util: add common ARRAY_SIZE defineMike Frysinger3-3/+2
I want to use this in more places, so put it in util.h rather than copying & pasting it into another file. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2013-05-24util: drop "long" from usage helpersMike Frysinger7-24/+24
Now that all utils have converted to the new usage framework, we can rename to just plain "usage()" and avoid naming conflicts. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2013-05-24dtc/fdt{get, put}/convert-dtsv0-lexer: convert to new usage helpersMike Frysinger5-127/+131
This helps standardize the flag processing and the usage screens. Only lightly tested; would be great if someone who uses these utils could double check. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2013-05-24fdtdump: add a --scan optionMike Frysinger1-2/+44
Often times, fdts get embedded in other larger files. Rather than force people to `dd` the blob out themselves, make the fdtdump file smarter. It can now scan the blob looking for the fdt magic. Once locate, it does a little validation on the main struct to make sure we didn't hit random binary data. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2013-05-24fdtdump: make usage a bit more friendlyMike Frysinger3-8/+138
This starts a new usage framework and then cuts fdtdump over to it. Now we can do `fdtdump -h` and get something useful back. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2013-04-28libfdt: Add fdt_next_subnode() to permit easy subnode iterationSimon Glass6-1/+193
Iterating through subnodes with libfdt is a little painful to write as we need something like this: for (depth = 0, count = 0, offset = fdt_next_node(fdt, parent_offset, &depth); (offset >= 0) && (depth > 0); offset = fdt_next_node(fdt, offset, &depth)) { if (depth == 1) { /* code body */ } } Using fdt_next_subnode() we can instead write this, which is shorter and easier to get right: for (offset = fdt_first_subnode(fdt, parent_offset); offset >= 0; offset = fdt_next_subnode(fdt, offset)) { /* code body */ } Also, it doesn't require two levels of indentation for the loop body. Signed-off-by: Simon Glass <sjg@chromium.org> Acked-by: David Gibson <david@gibson.dropbear.id.au>
2013-04-22utilfdt_read: pass back up the length of data readMike Frysinger2-3/+29
For a follow up commit, we want to be able to scan the buffer that was returned to us. In order to do that safely, we need to know how big the buffer actually is, so create a new set of funcs to pass that back. Acked-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2013-04-22Revert "utilfdt_read: pass back up the length of data read"Jon Loeliger5-12/+8
This reverts commit cc2c178727cdeca4eb9756637c2e09e50e0856e7. It was the wrong version of the patch.
2013-04-21util_version: new helper for displaying version infoMike Frysinger3-4/+13
This is so all utilities can have this flag and not just dtc. Acked-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2013-04-21die: constify format string argMike Frysinger1-1/+1
We only display this string, so there's no need for it to be writable. Constify away! Acked-by: David Gibson <David@gibson.dropbear.id.au> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2013-04-21utilfdt_read: pass back up the length of data readMike Frysinger5-8/+12
For a follow up commit, we want to be able to scan the buffer that was returned to us. In order to do that safely, we need to know how big the buffer actually is, so pass that back if requested. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2013-04-21utilfdt_read_err: use xmalloc funcsMike Frysinger1-2/+2
We've got these handy helpers, so let's use them. Acked-by: David Gibson <David@gibson.dropbear.id.au> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2013-02-18Added license header to dtc/libfdt/fdt.h and libfdt_env.hJustin Sobota2-0/+102
This commit adds a license header to fdt.h and libfdt_env.h because the license was omitted. Signed-off-by: Justin Sobota <jsobota@ti.com> Acked-by: David Gibson <david@gibson.dropbear.id.au>
2013-02-03Fix typoFrançois Revol1-1/+1
Signed-off-by: François Revol <revol@free.fr>
2013-01-27Export fdt_stringlist_contains()Simon Glass2-3/+16
This function is useful outside libfdt, so export it. Signed-off-by: Simon Glass <sjg@chromium.org> Acked-by: David Gibson <david@gibson.dropbear.id.au>
2013-01-27.gitignore: Add rule for *.patchSimon Glass1-0/+1
Ignore any patch files that we find, since these are likely to be used when sending patches upstream. Signed-off-by: Simon Glass <sjg@chromium.org> Acked-by: David Gibson <david@gibson.dropbear.id.au>
2013-01-27Move property-printing into utilSimon Glass3-36/+52
The function that prints a property can be useful to other programs, so move it into util. Signed-off-by: Simon Glass <sjg@chromium.org> Acked-by: David Gibson <david@gibson.dropbear.id.au>
2013-01-27Adjust util_is_printable_string() comment and fix testSimon Glass2-4/+7
This commit which changed the behaviour of this function broke one of the tests. Also the comment should be updated to reflect its new behaviour. Signed-off-by: Simon Glass <sjg@chromium.org> Acked-by: David Gibson <david@gibson.dropbear.id.au>
2013-01-06fdtget-runtest.sh: use printf instead of /bin/echo -eStephen Warren1-1/+1
Not all /bin/echo implementations support the -e option. Instead, use printf, which appears to be more widely available than /bin/echo -e. See commit eaec1db "fdtget-runtest.sh: Fix failures when /bin/sh isn't bash" for history. I have tested this on Ubuntu 10.04 with /bin/sh pointing to both dash and bash. Reported-by: Mike Frysinger <vapier@gentoo.org> # and implemented-by Signed-off-by: Stephen Warren <swarren@nvidia.com> Acked-by: David Gibson <david@gibson.dropbear.id.au>
2013-01-06dtc: Drop the '-S is deprecated' warningKRONSTORFER Horst1-3/+0
The 'deprecated' warning is in there for more than 4 years now and nobody seemed to be confused enough to vote it out. Let's drop the warning then. This reverts commit 315c5d095ebdf29f1912186e76ab9f95e694b18a. Signed-off-by: Horst Kronstorfer <hkronsto@frequentis.com>