| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Sort all includes in include with the clang-format rules used by
the zephyr project.
BRANCH=None
BUG=b:247100970
TEST=zmake build -a
TEST=./twister --clobber -v -i
TEST=make -j72 buildall_only runtests
TEST=zmake compare-builds -a
Signed-off-by: Jeremy Bettis <jbettis@google.com>
Change-Id: Ic23f440ebd93519e4341423cf6cb7a298620cbfe
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4049883
Code-Coverage: Zoss <zoss-cl-coverage@prod.google.com>
Commit-Queue: Jeremy Bettis <jbettis@chromium.org>
Tested-by: Jeremy Bettis <jbettis@chromium.org>
Reviewed-by: Tristan Honscheid <honscheid@google.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Normally we don't do this, but enough changes have accumulated that
we're doing a tree-wide one-off update of the name & style.
BRANCH=none
BUG=chromium:1098010
TEST=`repo upload` works
Change-Id: Icd3a1723c20595356af83d190b2c6a9078b3013b
Signed-off-by: Mike Frysinger <vapier@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3891203
Reviewed-by: Jeremy Bettis <jbettis@chromium.org>
Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The "builtin" directory is EC's copy of the C standard library headers.
Move the declarations for printf functions that are provided by the
standard library to the "builtin" directory. This change makes it easier
for future changes to optionally build with the C standard library
instead of the standalone EC subset.
BRANCH=none
BUG=b:172020503, b:234181908, b:237823627
TEST=make buildall
Signed-off-by: Tom Hughes <tomhughes@chromium.org>
Change-Id: I4a5b4f8b98b972e86c4cca65d4910b5aa07ec524
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3712034
Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is the last non-standard format overloading "%p", so we can change
it to the standard "%p" format.
Using standard format specifiers makes it easier to switch between the
"builtin" EC standard library and the C standard library provided by the
toolchain (or Zephyr).
BRANCH=none
BUG=b:238433667, b:234181908
TEST=On icetower v0.1 with servo_micro and J-Trace attached:
Before change:
> rw 536870912
read 0x20000000 = 0x45dbfce2
After change:
> rw 536870912
read 0x20000000 = 0x45dbfce2
Signed-off-by: Tom Hughes <tomhughes@chromium.org>
Change-Id: Id5680ab07af5352d463df42daadff1619c06c9af
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3756180
Reviewed-by: Eric Yilun Lin <yllin@google.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The non-standard "%ph" format is replaced with snprintf_hex_buffer and
then using "%s" to print the resulting buffer.
Using standard format specifiers makes it easier to switch between the
"builtin" EC standard library and the C standard library provided by the
toolchain (or Zephyr).
BRANCH=none
BUG=b:238433667, b:234181908
TEST=Enable CONFIG_CMD_RAND in nocturne_fp/board.h
On icetower v0.1 with servo_micro and J-Trace:
Before change:
> rand
rand 8ab8b15090ca5ae83bdad671c906d51a5f2b98a359a4106054ee6b54a4087190
After change:
> rand
rand 2a8645235a31936a28b8d1b9c4948f46d39662e7fcb10a185ddb14c6a998e2eb
Signed-off-by: Tom Hughes <tomhughes@chromium.org>
Change-Id: I3bff928d32579440d7cdb27a75899e45159accfb
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3759123
Reviewed-by: Denis Brockus <dbrockus@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Using standard format specifiers makes it easier to switch between the
"builtin" EC standard library and the C standard library provided by the
toolchain (or Zephyr).
BRANCH=none
BUG=b:238433667, b:234181908
TEST=On icetower v0.1 with servo_micro and J-Trace attached:
> reboot
observe console shows timestamps
Signed-off-by: Tom Hughes <tomhughes@chromium.org>
Change-Id: I6660ff22ebc6ba74f1245ff83026f5919b356a02
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3756178
Reviewed-by: Ting Shen <phoenixshen@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This function replicate the behavior of the non-standard hex buffer
format "%ph" used in EC and make it possible to replace "%ph" by
printing the bytes into a buffer and then printing the resulting string
with "%s".
A followup commit will replace usage of "%ph" with these functions.
Using standard format specifiers makes it easier to switch between the
"builtin" EC standard library and the C standard library provided by the
toolchain (or Zephyr).
BRANCH=none
BUG=b:238433667, b:234181908
TEST=make run-printf
Signed-off-by: Tom Hughes <tomhughes@chromium.org>
Change-Id: I46135b25c84abe4ca7fb16ebb78af535622f50c8
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3756179
Reviewed-by: Scott Collyer <scollyer@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
These functions replicate the behavior of the non-standard timestamp
format "%pT" used in EC and make it possible to replace "%pT" by
printing the timestamp string into a buffer and then printing the
resulting string with "%s".
A followup commit will replace usage of "%pT" with these functions.
Using standard format specifiers makes it easier to switch between the
"builtin" EC standard library and the C standard library provided by the
toolchain (or Zephyr).
BRANCH=none
BUG=b:238433667, b:234181908
TEST=make run-printf
Signed-off-by: Tom Hughes <tomhughes@chromium.org>
Change-Id: I54c0425a0f08741fa7d3b5d594eea065ee66ab47
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3756177
Reviewed-by: Paul Fagerburg <pfagerburg@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Move the logic for converting a uint64_t to a string into a separate
function so that it can be used in a followup commit for converting
timestamps. The printf logic should behave exactly as before, although
there is additional error checking.
BRANCH=none
BUG=b:238433667, b:234181908
TEST=make run-printf
Signed-off-by: Tom Hughes <tomhughes@chromium.org>
Change-Id: I1f8fd92859d8a7b4b97dbddd1a1009a0e6500047
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3760663
Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
snprintf returns a negative value on failure. The return value should be
checked to make sure that there were no errors.
BRANCH=none
BUG=b:238433667, b:234181908
TEST=make buildall
Signed-off-by: Tom Hughes <tomhughes@chromium.org>
Change-Id: I64e2e69df7fa22c94f19acbbca8c6afbe6cf1ff1
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3756174
Reviewed-by: Denis Brockus <dbrockus@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The libfp library prints some values with PRIx32 or PRId32 format
specifiers which, in their compilation environment, output "%lx" and
"%ld".
Unfortunately, support for printing any '%l' format in EC
code was deprecated in issuetracker.google.com/issues/172210614
after changing it from it being treated as a hard-coded 64-bit length.
There was concern that new code using %l with 32-bit values would be
cherry-picked to older branches without the updated printf. In these
cases, the older code would interpret that %l as 64-bit argument,
causing it to over-ingest arguments and potentially behave in an
undefined manner.
Printing 32-bit values with "%l" or "%i" is safe as long as we can
guarantee no legacy code will attempt to print using "%l" with a
64-bit value. The logic here is protected by a config flag that is
only enabled for FPMCU and FPMCU doesn't use long running release
branches.
A printf test is also added to ensure that only dartmonkey and
bloonchipper boards have long32 enabled.
BRANCH=none
BUG=b:234781655
BUG=b:234143158
TEST=./test/run_device_tests.py -b dartmonkey -t printf
TEST=./test/run_device_tests.py -b bloonchipper -t printf
TEST=make runhosttests
Signed-off-by: Bobby Casey <bobbycasey@google.com>
Change-Id: If432f507a31cc12a4c5c4bdcd07c6141407bd70d
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3707743
Reviewed-by: Andrea Grandi <agrandi@google.com>
Reviewed-by: Tom Hughes <tomhughes@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
| |
BUG=b:236386294
BRANCH=none
TEST=none
Change-Id: I4357139064df7c646395414efa92a1a8b4024fcc
Signed-off-by: Jack Rosenthal <jrosenth@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3730392
Reviewed-by: Jeremy Bettis <jbettis@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Reimplement the printf functions for Zephyr to use shell_* functions
instead of printk.
The main differences are:
-UART output is buffered by the shell layer. The size of the buffer
should be adjusted per board (SHELL_BACKEND_SERIAL_TX_RING_BUFFER_SIZE)
-The shell uses non-blocking UART FIFO operations while printk waits
actively for every sent byte.
-The shell prints can not be split by the other shell prints so it
should increase the quality of the output. However the shell_* functions
can not be used in interrupts, so use printk instead which can divide
the shell output. The output may be messy for boards that have a lot
of prints in interrupts e.g. volteer.
EC uses unusual print format e.g. "%pT" to print a timestamp, so use the
CrosEC's vfnprintf function and then pass the generated string to the
shell_* print. Use the sprintf function for that purpose.
Long term, the EC codebase should switch to a usual print format,
so shell_* can be used directly and not 2 versions of vfnprintf.
This change should also help to pass tests that wait for a certain
pattern on output e.g. ECBootTime.
BUG=b:191724484, b:178033156
BRANCH=none
TEST=Verify the console output works
Signed-off-by: Dawid Niedzwiecki <dn@semihalf.com>
Change-Id: Ifaed2093ab8c43038c7d3e0ded1449a93f7f7da5
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2988194
Reviewed-by: Keith Short <keithshort@chromium.org>
Commit-Queue: Keith Short <keithshort@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Also update the tests for printf since the documentation makes no
guarantee about negative size values.
BRANCH=none
BUG=b:190731415
TEST=build brya
TEST=make run-printf
Signed-off-by: Yuval Peress <peress@chromium.org>
Change-Id: I5e773362f1f30a1beb95284e589e49db3a1d8800
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2970989
Commit-Queue: Denis Brockus <dbrockus@chromium.org>
Reviewed-by: Denis Brockus <dbrockus@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The semantics of %l changed during the enabling of compile-time
printf format checking. Old firmware branches will treat something
like %lx as a 64-bit value, but new code on master will enforce at
compile-time that a long (32-bits on our ECs) is passed in as the
argument. This creates a dangerous and difficult to notice situation
if the following code is cherry-picked from master into an old
firmware branch:
printf("%lx %s", myval32, mystr);
On master, this behaves correctly. On the old firmware branch, this
would swallow myval32 and mystr for %lx, and then %s would grab a
random stack pointer and print a string from it.
Deprecating %l is our mechanism for keeping such a printf from
creeping into master in the future. Obviously we can't protect against
someone that checks in code that's never tested, but anyone who tests
a printf with %l in it will notice their printf comes out with ERROR
instead of what they want.
BUG=chromium:984041
TEST=make -j buildall
BRANCH=None
Change-Id: I0267430363af7954c2ec5d2c45222759fe0ec2c1
Signed-off-by: Evan Green <evgreen@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1834604
Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add annotations to allow the compiler to check printf-style format
strings in the EC.
BUG=chromium:984041
TEST=make -j buildall
BRANCH=None
Change-Id: Ic39f37f8362372de7d289becea684d9da535599a
Signed-off-by: Evan Green <evgreen@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1733101
Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In the standard, %l[dioux] takes an integer of type long. In the EC
up until now, we had been using it as shorthand for a 64-bit long.
Now that we're enabling the compile-time printf format checker, it's
time to correct the semantics of %l.
This is a breaking change. I would advise against cherry-picking this
commit into any firmware branches. The reasoning is that the specifier
now swallows a different number of arguments, causing any subsequent
specifiers to be wrong.
BUG=chromium:984041
TEST=make -j buildall
BRANCH=None
Change-Id: Ia5630e59611097dc0deda648498c7f43b9c62ac9
Signed-off-by: Evan Green <evgreen@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1829576
Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In order to make our printf more standard, utilize %ll for long long
arguments, rather than %l. This does cost a little bit in flash space
for that extra l in a couple of places, but enables us to turn on
compile-time printf format checking.
For this commit only, the semantics are such that both %l and %ll
take 64-bit arguments. In the next commit, %l goes to its correct
behavior of taking a sizeof(long) argument.
BUG=chromium:984041
TEST=make -j buildall
BRANCH=none
Cq-Depend:chrome-internal:1863686,chrome-internal:1860161,chrome-internal:1914029
Change-Id: I18081b55a8dbf5ef8ec15fc499ca75e59d31da58
Signed-off-by: Evan Green <evgreen@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1819652
Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When printing size_t sized integers, utilize the standard %z
modifier so that the specifier format is correct. This will enable us
to turn on compile-time printf format verification.
BUG=chromium:984041
TEST=make -j buildall
BRANCH=none
Cq-Depend:chrome-internal:1860160
Change-Id: I2c95df5c0d87677cb9fcbde33ab8846708a774a1
Signed-off-by: Evan Green <evgreen@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1819651
Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In order to make printf more standard, use %ph. Pass a pointer to
a struct describing the buffer, including its size. Add a convenience
macro so that conversion between the old style and new style is purely
mechanical. The old style of %h cannot be converted directly to %ph as-is
because the C standard doesn't allow flags, precision, or field width on
%p.
Ultimately the goal is to enable compile-time printf format checking.
This gets us one step closer to that.
BUG=chromium:984041
TEST=make -j buildall
BRANCH=None
Cq-Depend:chrome-internal:1559798,chrome-internal:1560598
Change-Id: I9c0ca124a048314c9b62d64bd55b36be55034e0e
Signed-off-by: Evan Green <evgreen@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1730605
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In order to be more compliant to standards, and ultimately turn on
compile-time printf format validation, switch the non-standard %T
into %pT, which takes a pointer to a 64-bit timestamp as an argument.
For convenience, define PRINTF_TIMESTAMP_NOW, which will use the
current time as the timestamp value, rather than forcing everyone
to pass a pointer to get_time().val.
For a couple of instances, simply use CPRINTS instead.
BUG=chromium:984041
TEST=make -j buildall
BRANCH=None
Cq-Depend:chrome-internal:1473305
Change-Id: I83e45b55a95ea27256dc147544ae3f7e39acc5dd
Signed-off-by: Evan Green <evgreen@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1704216
Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In order to avoid landmines later with future extensions to %p,
disallow %p by itself. The danger is that we'll have something
like: printf("%pFOO", myptr), and then later will add a %pF
extension, but miss this printf (maybe the string is split, maybe
it's just missed).
Missing a conversion during extension is worse than just seeing a
print like <ptr_val>OO, since %pF likely reaches through the
pointer and interprets its contents according to whatever F means.
Convert existing uses of %p to %pP, so they're explicitly printing
a pointer value, giving us flexibility to extend in the future.
BUG=chromium:984041
TEST=make -j buildall
BRANCH=None
Cq-Depend:chrome-internal:1560879
Change-Id: I36a4bee8d41cb9a6139171f8de0d8f2f19468132
Signed-off-by: Evan Green <evgreen@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1730604
Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch addresses a few issues with the current formatter.
The major points are as follows:
1. Cannot specify precision 0 (truncate all) for string or hexdump
2. Forced safe precision for malformed strings
3. No padding when using hexdump
4. Bad error EC_ERROR_INVAL in vsnprintf
5. Documentation errors
For (1), no piece of code explicitly sets the precision to 0 in
order to invoke the default behavior, which is currently no
precision limit.
You can check using the following grep line:
grep -rI '%[\*0-9]\{0,20\}\.0\{1,20\}[a-zA-Z]'
However, there are many cases where the precision is used to limit
the character output (as it should be).
grep -rI '%[\*0-9]\{0,20\}\.[\*0-9]\{1,20\}[a-zA-Z]'
There are many more instances that use variable precision without
checking if the precision is zero. One of which is the following:
crrev.com/4a4e2c71a0f6aaa50e0728922f84a7d54c14380a/test/host_command_fuzz.c#116
https://clusterfuzz.com/testcase-detail/5699023975088128
Our current implementation will insert ERROR and stop processing,
if a precision of zero is detected when using the hexdump flag.
This results in a badly formatted console line or runtime string,
when the intended behavior would be to simply read no bytes.
In the aforementioned fuzzer case, outputting ERROR triggers
a false positive.
Our printf should handle explicit zero precision similar to
stdlib's printf, which means truncating all the way to zero
positions, if specified.
For (2), our current implementation uses strlen to identify the
length of the input string, regardless of the set precision.
Since this is an embedded platform, we should use strnlen to
impose safe limits, when a precision is specified.
For (3), our implementation should support padding and adjusting
of all formatter types, since that is a primary feature of a
printf formatter.
The remaining commented code highlights odd behavior that should
be fixed at some point, but is not critical.
BUG=chromium:974084
TEST=Checked for any format lines that rely on a set precision of 0
grep -rI '%[\*0-9]\{0,20\}\.[\*0-9]\{1,20\}[a-zA-Z]'
TEST=make run-printf V=1
BRANCH=none
Change-Id: I897c53cce20a701fcbe8fb9572eb878817525cc3
Signed-off-by: Craig Hesling <hesling@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1659835
Reviewed-by: Randall Spangler <rspangler@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Ran the following command:
git grep -l 'Copyright (c)' | \
xargs sed -i 's/Copyright (c)/Copyright/g'
BRANCH=none
BUG=none
TEST=make buildall -j
Change-Id: I6cc4a0f7e8b30d5b5f97d53c031c299f3e164ca7
Signed-off-by: Tom Hughes <tomhughes@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1663262
Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fuzzing targets are linked against libec.a so that they can invoke ec
functionality while depending on outside libraries that need cstdlib.
An issue was being hit with a libprotobuf-mutator fuzzer target because
protobuf needed the stdlib version of vfnprintf. This change resolves
the issue by keeping the EC version of vfnprinf within libec.a.
BRANCH=none
BUG=chromium:962947
TEST=make -j buildall
Change-Id: Ie0c79199dfba58d5fb04d9f340967a73921d09c8
Signed-off-by: Allen Webb <allenwebb@google.com>
Reviewed-on: https://chromium-review.googlesource.com/1637580
Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org>
Reviewed-by: Nicolas Boichat <drinkcat@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This function enables variadic functions to take advantage
of functionality provided by snprintf.
Signed-off-by: Jeff Andersen <jeffandersen@google.com>
BRANCH=none
BUG=b:72360575
TEST=make buildall -j
Change-Id: I0095a96339b374ef8030b87b5184fa4678b439eb
Reviewed-on: https://chromium-review.googlesource.com/971761
Commit-Ready: Jeff Andersen <jeffandersen@google.com>
Tested-by: Jeff Andersen <jeffandersen@google.com>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For compatibility/convenience, implement the '%li' printf format
as a *32-bit* integer format, as it might be expected by non-EC code.
Signed-off-by: Vincent Palatin <vpalatin@chromium.org>
BRANCH=none
BUG=b:70320279
TEST=run on Eve EVT with unspecified external binary and see its traces
are correctly printed.
Change-Id: Iac20e823c74aac4f659176416eebd804c321d47c
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
'+' flag can be used with signed integer type (%d) and causes positive
integers to be prefixed with '+' (e.g. +1745). This emphasizes output
values as a signed value. It can be mixed with left-justification flag
'-': %-+8d. It's ignored when used with unsigned integer or non-integer
types: %u, %x, %p, %s, %c, etc.
BUG=none
BRANCH=none
TEST=make buildall &&
int32_t d = 1745;
CPRINTS("'%-+8d'", -d); /* '-1745 ' */
CPRINTS("'%-+8d'", d); /* '+1745 ' */
CPRINTS("'%d'", d); /* '1745' */
CPRINTS("'%+08d'", -d); /* '000-1745' */
CPRINTS("'%+08d'", d); /* '000+1745' */
CPRINTS("'%+d'", -d); /* '-1745' */
CPRINTS("'%+d'", d); /* '+1745' */
CPRINTS("'%+s'", "foo"); /* 'foo' */
CPRINTS("'%-+8s'", "foo"); /* 'foo ' */
CPRINTS("'%+08x'", d); /* '000006d1' */
CPRINTS("'%+u'", d); /* '1745' */
Change-Id: I8dcd34b0cf03dbefc500b9c98fea235d85bde8d3
Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/363924
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
No functional changes.
BUG=chrome-os-partner:15579
BRANCH=none
TEST=boot system; debug output still shows up on EC console
Change-Id: I63f4f9481f5393aaff065b37a274236bd78622d9
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/36581
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. Add precision to limit string length.
ccprintf("%.4s", "foobar") prints "foob"
2. Handle '*' for length, precision fields.
ccprintf("%.*s", 3, "foobar") prints "foo"
3. Add hex-dump code "%h"
ccprintf("%.*s", 4, "foobar") prints 666f6f62
BUG=none
TEST=at ec console, 'hash' prints the current hash
Change-Id: I568310f2727495b021081bf58df2a0bbb3c74e73
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/28704
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
|
|
Also add snprintf(), and %X format code.
BUG=chrome-os-partner:10206
TEST=timerinfo; should print correctly. 'ectool battery' on host side should print same serial as 'battery' on EC console.
Change-Id: I5c9f69d1a20ee5d0a59440c122655adbf62c9aea
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/24635
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Rong Chang <rongchang@chromium.org>
|