Chris Kilgour techie@whiterocker.com wrote
FYI - libpayload-lplconsole.patch was put together against libpayload r 3345. I'm pretty sure the patch doesn't apply cleanly to the latest libpayload.
Chris.
I can provide an almost complete aliment in that direction. The patch provided below is constructed against todays trunk, and it solves everything except the build step
build/lib/lplconsole.o(.text+0x9c3): I funktionen "cb_parse_header": : undefined reference to `strncmp'
arising at the very last "ls -N -T ....." command. I had no really good idea as to the best inclusion path to "strncmp()", and therefore I had to leave the patchwork at that point. Most of you are more clever than me in this respect.
Please forgive me for intruding,
Mats Erik Andersson
----
Index: libpayload/curses/tinycurses.c =================================================================== --- libpayload/curses/tinycurses.c (revision 3623) +++ libpayload/curses/tinycurses.c (arbetskopia) @@ -736,8 +736,10 @@ for (x = win->_line[y].firstchar; x <= win->_line[y].lastchar; x++) { attr_t attr = win->_line[y].text[x].attr;
+#ifdef CONFIG_VIDEO_CONSOLE unsigned int c = ((int)color_pairs[PAIR_NUMBER(attr)]) << 8; +#endif
#ifdef CONFIG_SERIAL_CONSOLE if (curses_flags & F_ENABLE_SERIAL) { Index: libpayload/Makefile =================================================================== --- libpayload/Makefile (revision 3623) +++ libpayload/Makefile (arbetskopia) @@ -95,12 +95,45 @@ STACKPROTECT += $(call cc-option, -fno-stack-protector,)
# TODO: Re-add -Os as soon as we find out why it caused problems. -CFLAGS := -Wall -Werror $(STACKPROTECT) -nostdinc $(INCLUDES) -ffreestanding +CFLAGS := -Wall -Werror $(STACKPROTECT) -ggdb -nostdinc $(INCLUDES) -ffreestanding
all: lib
-lib: prepare $(obj)/lib/libpayload.a copystuff +lib: prepare $(obj)/lib/libpayload.a copystuff $(obj)/lib/lplconsole.o
+LPL_CONSOLE_OBJS = $(obj)/libc/console.o $(obj)/drivers/pci.o \ + $(obj)/i386/timer.o $(obj)/i386/sysinfo.o $(obj)/i386/coreboot.o \ + $(obj)/libc/ipchecksum.o $(obj)/i386/virtual.o + +ifeq ($(CONFIG_SERIAL_CONSOLE),y) +LPL_CONSOLE_OBJS += $(obj)/drivers/serial.o +endif + +ifeq ($(CONFIG_PC_KEYBOARD),y) +LPL_CONSOLE_OBJS += $(obj)/drivers/keyboard.o +endif + +ifeq ($(CONFIG_VIDEO_CONSOLE),y) +LPL_CONSOLE_OBJS += $(obj)/drivers/video/font8x16.o \ + $(obj)/drivers/video/video.o +endif + +ifeq ($(CONFIG_VGA_VIDEO_CONSOLE),y) +LPL_CONSOLE_OBJS += $(obj)/drivers/video/vga.o +endif + +ifeq ($(CONFIG_GEODE_VIDEO_CONSOLE),y) +LPL_CONSOLE_OBJS += $(obj)/drivers/video/geode.o +endif + +$(obj)/lib/lplconsole.o: $(LPL_CONSOLE_OBJS) + $(LD) -r -o $@.tmp $(LPL_CONSOLE_OBJS) + objcopy --redefine-sym putchar=lpl_putchar --redefine-sym getchar=lpl_getchar \ + --redefine-sym havekey=lpl_havekey --redefine-sym console_init=lpl_console_init \ + --redefine-sym udelay=lpl_udelay --redefine-sym mdelay=lpl_mdelay \ + --redefine-sym ndelay=lpl_ndelay \ + $@.tmp $@ + # Copy libpayload.a and head.o into $(src)/lib where lpgcc et al expect them. copystuff: $(obj)/$(ARCHDIR-y)/head.S.o $(obj)/lib/libpayload.a $(Q)cp $(obj)/$(ARCHDIR-y)/head.S.o $(src)/lib/$(ARCHDIR-y)/head.o