coreboot/payloads/libpayload
Julius Werner 3f01d1dc09 libpayload: video: Check for 'console' pointer before dereferencing it
Seems that the 'if (cursor_enabled)' check in
video_console_fixup_cursor() that was removed in commit 1f880bca0 really
meant to check for 'if (console)'. Looks like the whole video console
driver is built extra robust to not fail no matter how screwed up the
console is, so let's add this missing check here as well. Also fixed up
a few other missing 'if (!console)' checks while I'm at it.

However, what payloads should really be doing is check the return value
of video_(console_)init() and not call the other video functions if that
failed. This also adapts video_console_init() to correctly pass through
the return value for that purpose (something that seems to have been
overlooked in the dd9e4e58 refactoring).

BUG=chrome-os-partner:28494
TEST=None. I don't know what Dave did to trigger this in the first
place, but it's pretty straight-forward.

Change-Id: I1b9f09d49dc70dacf20621b19e081c754d4814f7
Signed-off-by: Julius Werner <jwerner@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/200688
Reviewed-by: David Hendricks <dhendrix@chromium.org>
2014-05-21 20:32:10 +00:00
..
arch arm: Fix stored PC value when handling exceptions 2014-05-15 05:28:15 +00:00
bin ARM: Generalize armv7 as arm. 2013-10-02 09:18:44 +00:00
configs storm: add libpayload config 2014-05-14 02:23:36 +00:00
crypto libpayload: Change CONFIG_* to CONFIG_LP_* in the kconfig. 2013-08-14 17:05:33 -07:00
curses libpayload: Change CONFIG_* to CONFIG_LP_* in the kconfig. 2013-08-14 17:05:33 -07:00
drivers libpayload: video: Check for 'console' pointer before dereferencing it 2014-05-21 20:32:10 +00:00
include Fix libpayload build compilation warnings 2014-05-16 04:18:05 +00:00
libc libpayload: Fix pointer related casts 2014-05-14 00:25:48 +00:00
libcbfs libpayload: Fix pointer related casts 2014-05-14 00:25:48 +00:00
liblzma libpayload: Make lzma truncation non-fatal. 2013-08-19 19:04:35 -07:00
libpci libpayload: minor cleanups 2012-04-04 00:40:31 +02:00
sample fix compilation of hello.elf example payload. 2010-08-28 23:23:47 +00:00
tests libpayload: Change CONFIG_X86_SERIAL_CONSOLE to CONFIG_8250_SERIAL_CONSOLE 2013-09-27 14:05:53 +00:00
util Set check-lxdialog.sh mode properly 2013-10-22 21:41:24 +00:00
Config.in libpayload: timer: Move the timer drivers from depthcharge to libpayload. 2014-04-12 05:54:01 +00:00
Doxyfile Run doxygen -u on doxygen configuration files 2010-06-28 10:40:38 +00:00
LICENSES Since some people disapprove of white space cleanups mixed in regular commits 2010-04-27 06:56:47 +00:00
Makefile ARM: Generalize armv7 as arm. 2013-10-02 09:18:44 +00:00
Makefile.inc libpayload: Build libpayload with debugging info turned up all the way. 2014-02-13 04:16:03 +00:00
README libpayload, superiotool: README: Prepend coreboot/ to path of change directory line 2013-04-04 17:22:15 +02:00

-------------------------------------------------------------------------------
libpayload README
-------------------------------------------------------------------------------

libpayload is a minimal library to support standalone payloads
that can be booted with firmware like coreboot. It handles the setup
code, and provides common C library symbols such as malloc() and printf().

Note: This is _not_ a standard library for use with an operating system,
rather it's only useful for coreboot payload development!
See http://coreboot.org for details on coreboot.


Installation
------------

 $ git clone http://review.coreboot.org/p/coreboot.git

 $ cd coreboot/payloads/libpayload

 $ make menuconfig

 $ make

 $ sudo make install (optional, will install into /opt per default)

As libpayload is for 32bit x86 systems only, you might have to install the
32bit libgcc version, otherwise your payloads will fail to compile.
On Debian systems you'd do 'apt-get install gcc-multilib' for example.


Usage
-----

Here's an example of a very simple payload (hello.c) and how to build it:

 #include <libpayload.h>

 int main(void)
 {
     printf("Hello, world!\n");
     return 0;
 }

Building the payload using the 'lpgcc' compiler wrapper:

 $ lpgcc -o hello.elf hello.c

Please see the sample/ directory for details.


Website and Mailing List
------------------------

The main website is http://www.coreboot.org/Libpayload.

For additional information, patches, and discussions, please join the
coreboot mailing list at http://coreboot.org/Mailinglist, where most
libpayload developers are subscribed.


Copyright and License
---------------------

See LICENSES.