platform/upstream/syslinux.git
11 years agoMakefile: Add upload targets to $(private-targets) syslinux-6.00-pre1
Matt Fleming [Fri, 9 Nov 2012 16:53:05 +0000 (16:53 +0000)]
Makefile: Add upload targets to $(private-targets)

So that the catch-all $(MAKECMDGOALS) rule isn't used when trying to
upload a release, add 'preupload' and 'upload' to the list of make
targets that are handled by other Makefiles.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoMakefile: Every invocation of make needs access to syslinux.mk
Matt Fleming [Fri, 9 Nov 2012 16:39:41 +0000 (16:39 +0000)]
Makefile: Every invocation of make needs access to syslinux.mk

syslinux.mk provides variables like $(PERL) which are extremely useful
in most Makefiles, so include it regardless of whether this is the
first invocation of make or a sub-make.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoMakefile.private: Update for new per-firmware object directories
Matt Fleming [Fri, 9 Nov 2012 15:52:57 +0000 (15:52 +0000)]
Makefile.private: Update for new per-firmware object directories

Update the exported variables when invoking make in the 'official'
target.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoMakefile: Change default object directory
Matt Fleming [Fri, 9 Nov 2012 15:18:27 +0000 (15:18 +0000)]
Makefile: Change default object directory

Instead of building all objects in 'obj' if no O= argument is
specified on the make command line, create all the firmware object
directories in the top-level of the source repository.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoefi: Add 'strip' make target and don't installer wrapper
Matt Fleming [Fri, 9 Nov 2012 15:16:18 +0000 (15:16 +0000)]
efi: Add 'strip' make target and don't installer wrapper

The wrapper executable is only useful when building Syslinux. It
shouldn't be distributed outside of the build directories, so remove
it in the 'tidy dist' target.

Also add a 'strip' target which is required when building a release.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoMakefile: Correct version.mk path
Matt Fleming [Tue, 6 Nov 2012 12:55:28 +0000 (12:55 +0000)]
Makefile: Correct version.mk path

Each firmware generates its own version.mk, but they're all exactly
the same. Place a single version.mk in the top-level output directory
(as specified with the O= command line argument) so that this can be
included by Makefile.private.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoMakefile: Correct the location of Makefile.private
Matt Fleming [Tue, 6 Nov 2012 12:00:04 +0000 (12:00 +0000)]
Makefile: Correct the location of Makefile.private

Makefile.private lives in $(topdir) and if we're in $(OBJDIR) we need
an absolute path so that it gets included.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agolibinstaller: Fixup merge botch
Matt Fleming [Mon, 5 Nov 2012 20:32:08 +0000 (20:32 +0000)]
libinstaller: Fixup merge botch

The merge commit 0b26e59c8f5d didn't cause any conflicts in
libinstaller/ so this bug went unnoticed, but we need to sync the
merged libinstaller/Makefile with the changes in 1408e6ca7b38 ("Add
per-firmware object directory support").

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoNEWS, version: Now working on the 6.00 release
Matt Fleming [Mon, 5 Nov 2012 13:25:15 +0000 (13:25 +0000)]
NEWS, version: Now working on the 6.00 release

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoMerge tag 'syslinux-5.00-pre9' into for-hpa/elflink/firmware
Matt Fleming [Mon, 5 Nov 2012 13:13:25 +0000 (13:13 +0000)]
Merge tag 'syslinux-5.00-pre9' into for-hpa/elflink/firmware

This merge also includes the Syslinux-4.06 release.

Conflicts:
Makefile
com32/hdt/Makefile
com32/modules/Makefile
com32/samples/hello.c
mtools/Makefile

11 years agoMerge branch 'cleanup' into for-hpa/elflink/firmware
Matt Fleming [Mon, 5 Nov 2012 13:01:02 +0000 (13:01 +0000)]
Merge branch 'cleanup' into for-hpa/elflink/firmware

11 years agovesa: Change the prototype of __vesacon_init()
Matt Fleming [Thu, 25 Oct 2012 15:53:01 +0000 (16:53 +0100)]
vesa: Change the prototype of __vesacon_init()

commit 97402a0a1639 ("efi, vesa: Fix vesa initialization and video
mode resolution") should have updated the BIOS version of the vesa
code too.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoi915resolution.c: cast to 64-bit sized ptr
Matt Fleming [Fri, 19 Oct 2012 16:36:24 +0000 (17:36 +0100)]
i915resolution.c: cast to 64-bit sized ptr

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoefi: Fix a memory map buffer release
Shao Miller [Tue, 30 Oct 2012 21:41:09 +0000 (17:41 -0400)]
efi: Fix a memory map buffer release

We need to track the beginning of the memory map buffer so that we
free the correct pointer at the end of efi_scan_memory(). Previously
we were passing a pointer that pointed after the memory map, resulting
in a crash when running syslinux.efi under DUET.

Signed-off-by: Shao Miller <sha0.miller@gmail.com>
Signed-off-by: Matt Fleming <matt.fleming@intel.com> [Added changelog]
11 years agodoc: Document the 'PATH' directive syslinux-5.00-pre9
Matt Fleming [Wed, 31 Oct 2012 11:08:03 +0000 (11:08 +0000)]
doc: Document the 'PATH' directive

The 'PATH' directive allows the user to specify a list of directories
to search when loading modules.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoNEWS: Document the major changes in 5.00
Matt Fleming [Wed, 31 Oct 2012 10:32:42 +0000 (10:32 +0000)]
NEWS: Document the major changes in 5.00

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoscreencpy.c: Delete unused variables and cleanup
Matt Fleming [Fri, 19 Oct 2012 16:08:47 +0000 (17:08 +0100)]
screencpy.c: Delete unused variables and cleanup

 * Delete unused variable 'winn'

 * Delete unused variable 'win_pos'

 * Mark parameter __unused

 * Delete unused variable 'l'

 * Delete unused variable 'omask'

 * Delete BIOS code

 * Delete unused variable 'win_size'

 * Delete set_window_pos unused function

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoinitvesa.c: Delete unused variables (set but not used) and cleanup
Matt Fleming [Fri, 19 Oct 2012 16:05:38 +0000 (17:05 +0100)]
initvesa.c: Delete unused variables (set but not used) and cleanup

 * Delete set but not used variables

 * Rip out non-EFI code

 * Delete defined but not used function.

 * Defined but not used variables.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agocom32.h: Fix MK_PTR() for 64-bit
Matt Fleming [Fri, 19 Oct 2012 16:02:37 +0000 (17:02 +0100)]
com32.h: Fix MK_PTR() for 64-bit

In the future we need 32/64-bit EFI to simply not include this file at
all. For now, just fixup the warning about casting integers to
pointers of different size.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoefi: Fix warning about discarding const qualifier
Matt Fleming [Fri, 19 Oct 2012 16:02:20 +0000 (17:02 +0100)]
efi: Fix warning about discarding const qualifier

Cast away the const-ness of cp865_8x16_font_data when passing it to
unpack_font() so that gcc doesn't generate a warning.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoMakefile: Only provide one make rule for each directory
Matt Fleming [Fri, 19 Oct 2012 15:49:05 +0000 (16:49 +0100)]
Makefile: Only provide one make rule for each directory

Otherwise we end up with warnings like this,

   Makefile:258: warning: overriding recipe for target `efi'
   Makefile:253: warning: ignoring old recipe for target `efi'

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoefi: Forward declare 'struct screen_info'
Matt Fleming [Fri, 19 Oct 2012 15:37:32 +0000 (16:37 +0100)]
efi: Forward declare 'struct screen_info'

efi/efi.h:13:26: warning: ‘struct screen_info’ declared inside parameter list [enabled by default]
efi/efi.h:13:26: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoMerge branch 'master' into elflink
Matt Fleming [Wed, 24 Oct 2012 13:41:00 +0000 (14:41 +0100)]
Merge branch 'master' into elflink

The following conflict is a result of the fact comapi_chainboot was
only stubbed out on the 'elflink' branch but was properly marked as
obsolete in 'master'.

Conflicts:
core/comboot.inc

11 years agoefi: Add support for UGA devices
Matt Fleming [Wed, 24 Oct 2012 13:38:07 +0000 (14:38 +0100)]
efi: Add support for UGA devices

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agodiag/mbr: Fix typo in README
Matt Fleming [Tue, 23 Oct 2012 15:49:23 +0000 (16:49 +0100)]
diag/mbr: Fix typo in README

Reported-by: Ady <ady-sf@hotmail.com>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoMerge branch 'elflink' of git://github.com/aericson/syslinux into elflink
Matt Fleming [Tue, 23 Oct 2012 14:02:50 +0000 (15:02 +0100)]
Merge branch 'elflink' of git://github.com/aericson/syslinux into elflink

Conflicts:
com32/modules/Makefile

11 years agomemdisk: Fix order of sectors/track and bytes/sector syslinux-4.06
Kenneth J. Davis [Mon, 22 Oct 2012 18:20:18 +0000 (19:20 +0100)]
memdisk: Fix order of sectors/track and bytes/sector

Swap order of sectors/track with bytes/sector to match diskette
parameter table order (as pointed to by INT 1Eh).

References: (additional ones available if necessary)
'System BIOS for IBM PC/XT/AT computers and compatibles' by Phoenix
Technologies Ltd. copyright 1987,88,89 3rd printing 1990 ISBN:
0-201-51806-6 pages 61-62
'PC Interrupts' 2nd edition by Ralf Brown & Jim Kyle copyright 1994
1st printing 1993 ISBN: 0-201-62485-0 page 211

Note: this fixes an issue with older FreeDOS kernels that expect this
structure to contain valid values.

Signed-off-by: Kenneth J. Davis <jeremyd@fdos.org>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoNEWS: Document the VFAT relative path fix
Matt Fleming [Mon, 22 Oct 2012 12:39:24 +0000 (13:39 +0100)]
NEWS: Document the VFAT relative path fix

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoREADME: Clarify the requirements for utils/isohybrid
Matt Fleming [Mon, 22 Oct 2012 12:02:19 +0000 (13:02 +0100)]
README: Clarify the requirements for utils/isohybrid

Be clear that utils/isohybrid requires the UUID library as well as
/usr/include/uuid/uuid.h.

Reported-by: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoNEWS: Fix some typos
Matt Fleming [Wed, 17 Oct 2012 12:07:07 +0000 (13:07 +0100)]
NEWS: Fix some typos

Reported-by: Ady <ady-sf@hotmail.com>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agodoc: minor documentation updates
Vanush "Misha" Paturyan [Wed, 17 Oct 2012 08:54:16 +0000 (09:54 +0100)]
doc: minor documentation updates

syslinux.txt: syslinux binary is in "linux" directory
menu.txt:     menu.c32 and vesamenu.c32 are in com32/menu directory

11 years agoRevert "win: Add -mno-ms-bitfields"
H. Peter Anvin [Mon, 22 Oct 2012 20:44:53 +0000 (13:44 -0700)]
Revert "win: Add -mno-ms-bitfields"

This reverts commit 7d9ee65cc9577eb69782a49a34895ae80820e9ff.

I am concerned that this may cause the Windows ABI header files to be
misinterpreted.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
11 years agoPacked definition: workaround for mingw + gcc 4.7
H. Peter Anvin [Mon, 22 Oct 2012 20:42:31 +0000 (13:42 -0700)]
Packed definition: workaround for mingw + gcc 4.7

__attribute__((packed)) does the wrong thing when in ms-struct
mode; this breaks compiling on mingw-w64.  Therefore force gcc struct
mode when we use packed.

This obsoletes checkin

  7d9ee65 win: Add -mno-ms-bitfields

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
11 years agoefi: Delete unused variables
Matt Fleming [Fri, 19 Oct 2012 15:29:36 +0000 (16:29 +0100)]
efi: Delete unused variables

Hush gcc by deleting some unused variables.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoldlinux: Use stdcon instead of rawcon for the console
Matt Fleming [Fri, 19 Oct 2012 13:41:12 +0000 (14:41 +0100)]
ldlinux: Use stdcon instead of rawcon for the console

Switch to the stdcon input device so things like fgets() work
correctly when reading from stdin.

I noticed this was broken when running dmitest.c32. fgets() was
returning NULL because there was no pending user input instead of
waiting for/buffering the input. Modules are expecting stdin to be a
line-oriented device, not a raw one where each module has to implement
its own line support.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoClean up $(GPLLIB) leak
Matt Fleming [Fri, 19 Oct 2012 09:55:13 +0000 (10:55 +0100)]
Clean up $(GPLLIB) leak

Modules were linking against com32/gpllib/libcom32gpl.c32 even when
NOGPL was set, so remove it from various modules Makefiles and use
$(C_LIBS) in mk/elf.mk which already has the conditional-magic for
$(GPLLIB).

Also, the object files in com32/gpllib/ are not distributed in the
release tarballs, which means that if a user does a 'make netinstall'
they hit the following install error,

install: cannot stat `com32/gpllib/*.c32': No such file or directory

Add a $(INSTALLABLE_MODULES) variable to separate the list of build
and install modules.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agocore: Print error message if we don't load ldlinux.c32
Matt Fleming [Fri, 19 Oct 2012 09:52:44 +0000 (10:52 +0100)]
core: Print error message if we don't load ldlinux.c32

If the user forgot to install ldlinux.c32 they're greeted with the
following unhelpful message,

  Boot failed: press a key to retry, or wait for reset...

We should explicitly tell the user that the reason for the boot
failing is that ldlinux.c32 could not be loaded.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoAdd per-firmware object directory support
Matt Fleming [Tue, 25 Sep 2012 13:45:18 +0000 (14:45 +0100)]
Add per-firmware object directory support

Now that we have multiple firmware backends it no longer makes sense
to write object files to the same directory as their source. A better
solution is to write the object files to a per-firmware directory
under a top-level object directory.

The top-level object directory can be specified on the command-line
with the O= variable, e.g. make O=/tmp/obj. If no top-level object
directory is specified an 'obj' directory is created in the top-level
of the Syslinux source repository.

All the existing make targets continue to work as before, however now
they apply to all firmware backends, e.g. 'make installer' will build
the BIOS, 32-bit EFI and 64-bit EFI installers and place them under
$(OBJ)/bios, $(OBJ)/efi32 and $(OBJ)/efi64 respectively.

Note unlike every other bit of Syslinux, the gpxe objects are still
kept in the src directory, e.g. gpxe/src, since gpxe is only required
by the BIOS backend.

It is possible to specify a make target for a specific firmware or
list of firmware with the following syntax,

    make [firmware[,firmware]] [target[,target]]

To clean the object directory for just the BIOS firmware type,

      'make bios clean'

To build both the 32-bit and 64-bit EFI installers type,

     'make efi32 efi64 installer'

Since the Syslinux make infrastructure is now more complex a new file
doc/building.txt has been created to explain how to build Syslinux.

The top-level Makefile now exports some make variables for use in
module Makefiles,

    - topdir - the top-level source directory of the Syslinux
      repository, e.g. /usr/src/syslinux

    - objdir - the top-level object directory for the firmware
      backend currently being built, e.g. /obj/syslinux/bios

    - SRC - the source directory in the Syslinux repository for the
      module currently being built,
      e.g. /usr/src/syslinux/com32/libupload

    - OBJ - the object directory for the module currently being
      built, e.g. /obj/syslinux/bios/com32/libupload

Since we're rewriting the Makefile infrastructure anyway it seemed
like a good idea to add parallel support. By writing subdirectories as
prequisites for make targets the objects in those subdirectories can
be built in parallel.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agorosh: Update default make target
Matt Fleming [Wed, 26 Sep 2012 10:31:22 +0000 (11:31 +0100)]
rosh: Update default make target

Put the 'all' target first so that rosh.c32 is built by default.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agocomboot: remove comapi_chainboot syslinux-4.06-pre14
Sebastian Herbszt [Sun, 14 Oct 2012 13:38:58 +0000 (15:38 +0200)]
comboot: remove comapi_chainboot

comapi_chainboot was obsoleted in 3.80.

Signed-off-by: Sebastian Herbszt <herbszt@gmx.de>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agocomboot: fix documentation
Sebastian Herbszt [Sun, 14 Oct 2012 13:38:25 +0000 (15:38 +0200)]
comboot: fix documentation

comapi_shuffle was obsoleted in 3.80.

Signed-off-by: Sebastian Herbszt <herbszt@gmx.de>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoREADME: document the need for /usr/include/uuid/uuid.h
Geert Stappers [Fri, 12 Oct 2012 19:36:50 +0000 (21:36 +0200)]
README: document the need for /usr/include/uuid/uuid.h

utils/isohybrid build depends on /usr/include/uuid/uuid.h The package
name varies between distribution families.

11 years agomenu: Disallow navigation to a disabled entry via *any* key
Matt Fleming [Fri, 12 Oct 2012 11:59:32 +0000 (12:59 +0100)]
menu: Disallow navigation to a disabled entry via *any* key

Generalise the fix from commit c823574f53c1 ("menu: Don't highlight
disabled entries") as it only handled the case where we navigated to a
disabled last entry by pressing Ctrl + N or the DOWN arrow
key. Obviously, we can navigate with other keys such as END, PGDN, etc
so we need to handle all cases.

Reported-by: Ady <ady-sf@hotmail.com>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoprdhcp.c32: Turn off DEBUG syslinux-4.06-pre13
Matt Fleming [Thu, 11 Oct 2012 20:18:10 +0000 (21:18 +0100)]
prdhcp.c32: Turn off DEBUG

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoMerge branch 'pxechn-fix-news-for-hpa-2' of git://github.com/geneC/syslinux
Matt Fleming [Thu, 11 Oct 2012 20:16:37 +0000 (21:16 +0100)]
Merge branch 'pxechn-fix-news-for-hpa-2' of git://github.com/geneC/syslinux

Conflicts:
NEWS
com32/modules/Makefile

11 years agowin: Add -mno-ms-bitfields
Shao Miller [Thu, 11 Oct 2012 15:59:37 +0000 (11:59 -0400)]
win: Add -mno-ms-bitfields

Recent MinGW GCCs now have -mms-bitfields on by default, but it
appears to break our intentions with __attribute__((packed)).
See GCC bug 52991,

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52991

The undesired behaviour was noticed when the win32 installer
had troubles identifying the media type field of a boot sector.

Signed-off-by: Shao Miller <sha0.miller@gmail.com>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoisohybrid: fix isohybrid.c compile
Frediano Ziglio [Fri, 31 Aug 2012 11:00:16 +0000 (12:00 +0100)]
isohybrid: fix isohybrid.c compile

Make isohybrid.c compile on gcc 4.4 32 bit instead of producing the
following error,

isohybrid.c: In function ‘lendian_64’:
isohybrid.c:437: error: integer constant is too large for ‘long’ type

Cc: Matthew Garrett <mjg@redhat.com>
Cc: Michal Soltys <soltys@ziu.info>
Signed-off-by: Frediano Ziglio <frediano.ziglio@citrix.com>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoext2: add additional check to ext2 loader
Frediano Ziglio [Thu, 2 Aug 2012 08:32:36 +0000 (09:32 +0100)]
ext2: add additional check to ext2 loader

Check if a pointer is NULL due to specifying an invalid inode group
number.

Signed-off-by: Frediano Ziglio <frediano.ziglio@citrix.com>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agomboot: fix typo in comment
Frediano Ziglio [Thu, 2 Aug 2012 08:31:23 +0000 (09:31 +0100)]
mboot: fix typo in comment

Signed-off-by: Frediano Ziglio <frediano.ziglio@citrix.com>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agomake some functions static remove unused NADV define
Frediano Ziglio [Thu, 2 Aug 2012 08:30:04 +0000 (09:30 +0100)]
make some functions static remove unused NADV define

Just some minor cleanup

Signed-off-by: Frediano Ziglio <frediano.ziglio@citrix.com>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agomenu: Add MENU GOTO support to the MENU DEFAULT parsing code
Matt Fleming [Tue, 9 Oct 2012 12:45:00 +0000 (13:45 +0100)]
menu: Add MENU GOTO support to the MENU DEFAULT parsing code

Tomas reported that the 'test1' submenu in the following config file
snippet doesn't honour the MENU DEFAULT directive,

    MENU BEGIN test0
       MENU START
       LABEL -
       MENU DEFAULT
       MENU LABEL OptionA
       MENU GOTO test1
    MENU END

    MENU BEGIN test1
       LABEL -
       MENU LABEL OptionA1
       MENU GOTO test0
       LABEL -
       MENU DEFAULT
       MENU LABEL OptionB1
       MENU GOTO test0
    MENU END

The reason is that the menu config code doesn't know how to handle a
default item that is a MENU GOTO directive. A trivial addition to the
code in record() fixes this.

Reported-by: Tomas M <tomas@slax.org>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agomenu: Don't highlight disabled entries
Matt Fleming [Tue, 9 Oct 2012 12:33:51 +0000 (13:33 +0100)]
menu: Don't highlight disabled entries

There's an off-by-one bug in the menu input handling code which makes
it possible to highlight/select the last entry in a menu even if that
entry is disabled.

It should be noted that you can't actually *do* anything with the
disabled entry, i.e. edit or execute it. Still, allowing it to be
highlighted does look a little strange.

Reported-by: Matt Sephton <matt.sephton@gmail.com>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agocom32: Add ifmemdsk.c32 to Makefile
Matt Fleming [Mon, 8 Oct 2012 14:45:46 +0000 (15:45 +0100)]
com32: Add ifmemdsk.c32 to Makefile

... so that it actually gets built. This should have been added to the
Makefile when ifmemdsk.c was created.

Reported-by: Ady <ady-sf@hotmail.com>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoNEWS: Document changes between 4.05 and 4.06 syslinux-4.06-pre12
Matt Fleming [Fri, 13 Jul 2012 14:01:59 +0000 (15:01 +0100)]
NEWS: Document changes between 4.05 and 4.06

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoIn the current Lua.c32 DMI implementation, it is a flat table with dotted names in...
Hung-chi Lihn [Sat, 22 Sep 2012 16:25:49 +0000 (18:25 +0200)]
In the current Lua.c32 DMI implementation, it is a flat table with dotted names in table entries. It also misses a number DMI sub-tables.

This patch, cleans up the DMI table structure using Lua's nested table structure and adds all missing DMI sub-tables. If a DMI sub-table is not supported by the hardware (not filled), then the corresponding sub-table will not be generated. This helps to make the table structure cleaner and reflects the actual DMI information.

Signed-off-by: Hung-chi Lihn <hlihn@google.com>
Signed-off-by: Erwan Velu <erwanaliasr1@gmail.com>
11 years agoBug fix: Added the missing entry (boot_from_pcmcia) in struct s_characteristics.
Hung-chi Lihn [Sat, 22 Sep 2012 16:24:25 +0000 (18:24 +0200)]
Bug fix: Added the missing entry (boot_from_pcmcia) in struct s_characteristics.

In bios_charac_strings[] of /com32/gpllib/dmi/dmi_bios.c there are actually 29 entries. However, BIOS_CHAR_NB_ELEMENTS in /com32/gplinclude/dmi/dmi_bios.h was defined as 28 and struct s_characteristics in the same file also only had 28 entries. It turns out that there was a missing entry "boot_from_pcmcia" (the 16th entry representing bit 18) in s_characteristics.

Signed-off-by: Hung-chi Lihn <hlihn@google.com>
Signed-off-by: Erwan Velu <erwanaliasr1@gmail.com>
11 years agoAdded the native syslinux functions config_file(), ipappend_strs(), and reboot()...
Hung-chi Lihn [Sat, 22 Sep 2012 16:23:38 +0000 (18:23 +0200)]
Added the native syslinux functions config_file(), ipappend_strs(), and reboot() to Lua.c32. This allows the Lua script to query the config file name and the ipappend strings (pxelinux only), as well as to perform reboot (warm and cold) to the system.

In Lua.c32, the extension will be used as the following:
  1. syslinux.config_file() will return the config file string.
  2. syslinux.ipappend_strs() will return a table of IPAPPEND strings with numerical indices.
  3. syslinux.reboot() will perform cold reboot, while syslinux.reboot(1) will perform warm reboot.

Signed-off-by: Hung-chi Lihn <hlihn@google.com>
Signed-off-by: Erwan Velu <erwanaliasr1@gmail.com>
11 years agoThe current Lua.c32 does not enable io.read() due to some missing library functions...
Hung-chi Lihn [Sat, 22 Sep 2012 16:22:55 +0000 (18:22 +0200)]
The current Lua.c32 does not enable io.read() due to some missing library functions. However, this strongly limits the Lua script from getting user inputs and reading files (even in pxelinux via TFTP).

This patch enables io.read() in Lua.c32 with some restrictions:
  1. the io.read("*line") is fully supported.
  2. the io.read("*number") is not supported due to the missing buffering in underlying file I/Os. However, the user can read a line using io.read() and convert the string to numbers using the built in pattern matching and number conversion features.
  3. io.read(bytes) is supported. However, io.read(0) will not be a valid test for EOF due to the missing I/O buffering. io.read() will return nil if EOF is encountered. This offers an alternative way to handle EOF.

Signed-off-by: Hung-chi Lihn <hlihn@google.com>
Signed-off-by: Erwan Velu <erwanaliasr1@gmail.com>
11 years agoinstallers: Install ldlinux.c32 automatically syslinux-5.00-pre8
Matt Fleming [Fri, 14 Sep 2012 14:22:29 +0000 (15:22 +0100)]
installers: Install ldlinux.c32 automatically

Because ldlinux.c32 is required for Syslinux to function correctly, we
should be installing it automatically much like ldlinux.sys.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agodoc/pxechn.txt: update
Gene Cumm [Sun, 16 Sep 2012 15:19:41 +0000 (11:19 -0400)]
doc/pxechn.txt: update

Signed-off-by: Gene Cumm <gene.cumm@gmail.com>
11 years agoextlinux: Handle error case for find_mount()
Matt Fleming [Fri, 14 Sep 2012 13:54:40 +0000 (14:54 +0100)]
extlinux: Handle error case for find_mount()

find_mount() may return NULL, so we'd really better check for that
*before* dereferencing the pointer.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoefi: Update the correct copy of hdr
Matt Fleming [Tue, 11 Sep 2012 16:28:09 +0000 (17:28 +0100)]
efi: Update the correct copy of hdr

There are two struct linux_header variables in efi_boot(), only one of
which points to the boot params that we pass to the kernel we're
booting. Fix the initramfs code to update the correct variable,
otherwise the kernel won't know about any initramfs we've loaded.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoefi: We don't need two memory_map() functions
Matt Fleming [Tue, 11 Sep 2012 16:22:14 +0000 (17:22 +0100)]
efi: We don't need two memory_map() functions

There are two functions for getting the EFI memory map, each with a
different sets of semantics. get_memory_map() returns the number of
entries in the map in it's first parameter, whereas memory_map()
returns the size of the memory map. The implementation of memory_map()
is bogus as it mixes up the semantics by calling get_memory_map().

The two functions do pretty much the same thing anyway so delete the
buggy one.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoNEWS: Adding 'silent' option from HDT
Erwan Velu [Mon, 10 Sep 2012 19:07:14 +0000 (21:07 +0200)]
NEWS: Adding 'silent' option from HDT

11 years agohdt: Release 0.5.2
Erwan Velu [Mon, 10 Sep 2012 19:03:50 +0000 (21:03 +0200)]
hdt: Release 0.5.2

New release with codename Manon

11 years agohdt: Adding Silent mode
Erwan Velu [Mon, 10 Sep 2012 19:02:02 +0000 (21:02 +0200)]
hdt: Adding Silent mode

By using the "silent" option at the cmdline, HDT tries not displaying
any boring message.

This is particulary interesting with the "display" option.

11 years agohdt: Removing remaining printf()
Erwan Velu [Mon, 10 Sep 2012 18:39:37 +0000 (20:39 +0200)]
hdt: Removing remaining printf()

Using more_printf allow to manage more easily several pages printing.

11 years agoNEWS: Updating for HDT & kontron_wdt
Erwan Velu [Mon, 10 Sep 2012 18:26:59 +0000 (20:26 +0200)]
NEWS: Updating for HDT & kontron_wdt

11 years agokontron_wdt: Fixing makefile
Erwan Velu [Mon, 10 Sep 2012 18:21:33 +0000 (20:21 +0200)]
kontron_wdt: Fixing makefile

Typo.

11 years agokontron_wdt: Enforce timeout value if already set
Erwan Velu [Mon, 10 Sep 2012 15:38:16 +0000 (17:38 +0200)]
kontron_wdt: Enforce timeout value if already set

If the watchdog was already engaged, let's rewrite the timeout to insure
the proper value is set.

11 years agokontron_wdt: Adjusting exit path
Erwan Velu [Mon, 10 Sep 2012 15:35:13 +0000 (17:35 +0200)]
kontron_wdt: Adjusting exit path

If we fail, at least let's boot the expected image

11 years agokontron_wdt: Adding watchdog com32 module
Erwan Velu [Mon, 10 Sep 2012 15:05:03 +0000 (17:05 +0200)]
kontron_wdt: Adding watchdog com32 module

When using a Kontron ETX board, it's possible to initialize and start
the watchdog during syslinux booting.

This allow protecting a boot sequence with a defined timeout.

Bootloader is starting, engage the watchdog and then start a default
entry (typically a Linux image).

If the loaded OS, feed or reinitalize the watchdog, nothing occurs
unless the system will reboot

Conflicts:

com32/modules/Makefile

11 years agodoc/pxechn.txt: Fix old example
Gene Cumm [Thu, 6 Sep 2012 22:27:30 +0000 (18:27 -0400)]
doc/pxechn.txt: Fix old example

Command line options changed.

Signed-off-by: Gene Cumm <gene.cumm@gmail.com>
11 years agoefi, vesa: Fix vesa initialization and video mode resolution
Chandramouli Narayanan [Thu, 6 Sep 2012 06:55:11 +0000 (07:55 +0100)]
efi, vesa: Fix vesa initialization and video mode resolution

Fixed undefined symbol dprintf for production build. Now dprintf.h is
included so that both debug and production builds are ok.

Fixed the initialization of mode_info structure to point to a valid
GOP mode structure prior to printing it.

Fixed the case when the requested video mode resolution is unsupported
on a platform.  Essentially, VESA initialization is passed a desirable
video resolution. The underlying platform may either grant it or
return a system supported default value.  This fix is necessitated by
EFI-enabled platforms. Appropriate changes to callers of the vesa
initialization and the BIOS centric code are made as well.

Signed-off-by: Chandramouli Narayanan <chandramouli.narayanan@intel.com>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoMerge remote-tracking branch 'hpa/master'
Erwan Velu [Wed, 5 Sep 2012 19:08:39 +0000 (21:08 +0200)]
Merge remote-tracking branch 'hpa/master'

11 years agoMerge branch 'elflink' into for-hpa/elflink/firmware
Matt Fleming [Wed, 5 Sep 2012 16:06:40 +0000 (17:06 +0100)]
Merge branch 'elflink' into for-hpa/elflink/firmware

We need to pick up a couple of bug fixes, one of which causes some
machines to hang because we're walking out of the bounds of an ELF
symbol table.

Conflicts:
com32/lib/Makefile
core/init.c

11 years agoefi: Fix the screen setup for Graphics Output Protocol
Chandramouli Narayanan [Mon, 3 Sep 2012 12:00:13 +0000 (13:00 +0100)]
efi: Fix the screen setup for Graphics Output Protocol

Earlier version of this routine was erroneously handling locating the
protocol.  The check for error conditions have been fixed. The
handling of more than one GOP handle has been fixed as well.

Added copyright info to the file cp865_8x16.h.

Fixed vesacon_set_mode() to use malloc() instead of lmalloc() and
cleaned up debug traces.

Fixed __vesacon_copy_to_screen() by directly writing to the frame
buffer.

Signed-off-by: Chandramouli Narayanan <chandramouli.narayanan@intel.com>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoefi: Reworked EFI boot loader on several fronts.
Chandramouli Narayanan [Mon, 3 Sep 2012 04:36:32 +0000 (05:36 +0100)]
efi: Reworked EFI boot loader on several fronts.

a) Added EFI timer handling in support of menu subsystem. This enables
the menu system to display and handle timeout properly.

b) Taking the cue from http://git.kernel.org/?p=boot/efilinux/efilinux.git
on the requirement that key kernel data structures need to be capped
at 0x3FFFFFFF, reworked the efi boot loader accordingly. The patch for the
boot loader is an adapted from the recent patches in efilinux as noted
above.

c) Arrow keys (up/down) in the menu system were not working earlier
requiring the user to use CTRL sequence keys instead. Implemented fixes to map
the EFI scan code to appropriate key sequences in order for get_key()
to handle the menu traversal in a user-friendly fashion.

d)efi/keymap.h has been added in support of key scan code mapping.

Signed-off-by: Chandramouli Narayanan <chandramouli.narayanan@intel.com>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agomodule: Fixed the upper limit in symbol table walk through
Chandramouli Narayanan [Wed, 5 Sep 2012 06:49:49 +0000 (07:49 +0100)]
module: Fixed the upper limit in symbol table walk through

Number of entries in symbol table should be sized by the table entry
size. Without this, the loading of modules takes forever due to
walking all over the memory.

Signed-off-by: Chandramouli Narayanan <chandramouli.narayanan@intel.com>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoDebug prints to core/fs/fs.c and core/fs/fat.c have been added.
Chandramouli Narayanan [Sat, 1 Sep 2012 14:13:10 +0000 (07:13 -0700)]
Debug prints to core/fs/fs.c and core/fs/fat.c have been added.

Signed-off-by: Chandramouli Narayanan <chandramouli.narayanan@intel.com>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agocore: Rename DEBUG macro to avoid gnu-efi library conflict
Chandramouli Narayanan [Sat, 1 Sep 2012 14:10:46 +0000 (07:10 -0700)]
core: Rename DEBUG macro to avoid gnu-efi library conflict

Use of DEBUG macro clases with gnu-efi library. This patch defines
CORE_DEBUG. Appropriate changes to sources are made as a result. Also,
the linker error on __bad_SEG is fixed.

Signed-off-by: Chandramouli Narayanan <chandramouli.narayanan@intel.com>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoCreate derivative-specific files
Matt Fleming [Sat, 1 Sep 2012 00:10:14 +0000 (17:10 -0700)]
Create derivative-specific files

Instead of having derivative-specific code within the assembly files
and guarded by %if SYSLINUX, etc move all the code to C files so that
the correct get_derivative_info() function can be wired up at runtime.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
11 years agoconsole: Close stdin, stdout, stderr on ldlinux.c32 unload
Matt Fleming [Mon, 3 Sep 2012 13:35:14 +0000 (14:35 +0100)]
console: Close stdin, stdout, stderr on ldlinux.c32 unload

The location of __file_info[] and ansicon_counter are split between
the core and ldlinux.c32. We can end up calling __ansicon_close (from
fp->oop->close) in the process of reloading ldlinux.c32, and while
ansicon_counter is set to its initialised data value of 0 when
reloading ldlinux.c32, the core is never reloaded, and so
__file_info[] retains its pointers.

What this amounts to is that when ldlinux.c32 tries to call
openconsole() after being reloaded, the core tries to close the
ansicon device (the core still has pointers to __ansicon_close)
despite the ansicon code having no knowledge of ever being opened
(because ansicon_counter was reinitialised).

The most logical way to deal with this is to close stdin, stdout and
stderr when unloading ldlinux.c32.

It also turns out that sys/openconsole.o was present in two Makefile
variables which lead to duplication of code, data, etc. We only need
it present in libcom32min.a and not in the core since the core never
handles opening consoles, at least not now that we've deleted
printf_init() which is safe because we always open a console in
ldlinux.c32 anyway.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
12 years agodoc/pxechn.txt: word wrap
Gene Cumm [Mon, 3 Sep 2012 18:13:11 +0000 (14:13 -0400)]
doc/pxechn.txt: word wrap

Signed-off-by: Gene Cumm <gene.cumm@gmail.com>
12 years agodoc/pxechn.txt: Updates for clarity/flow
Gene Cumm [Mon, 3 Sep 2012 17:48:40 +0000 (13:48 -0400)]
doc/pxechn.txt: Updates for clarity/flow

Signed-off-by: Gene Cumm <gene.cumm@gmail.com>
12 years agodoc/pxechn.txt: Change title for manpage use.
Gene Cumm [Mon, 3 Sep 2012 17:47:48 +0000 (13:47 -0400)]
doc/pxechn.txt: Change title for manpage use.

Signed-off-by: Gene Cumm <gene.cumm@gmail.com>
12 years agomodule: Define __{ctors,dtors}_end symbols
Chandramouli Narayanan [Wed, 22 Aug 2012 10:37:50 +0000 (11:37 +0100)]
module: Define __{ctors,dtors}_end symbols

This patch fixes linker script for module initialization.  The old
__module_*_ptr symbols are no longer used, instead we now have an
array of constructors and destructors.

Signed-off-by: Chandramouli Narayanan <chandramouli.narayanan@intel.com>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
12 years agomodule: Consolidate lots of 32/64-bit code
Matt Fleming [Mon, 13 Aug 2012 17:25:07 +0000 (18:25 +0100)]
module: Consolidate lots of 32/64-bit code

Only carry different code for i386/x86-64 if we really need
it. There's plenty of code that can be shared between the two which
eases the maintenance burden and also makes it easier to merge code
from other branches which don't have the 32/64 split.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
12 years agoefi, ansi: Improve console handling even further (e.g. scrolling support)
Matt Fleming [Fri, 10 Aug 2012 16:05:45 +0000 (17:05 +0100)]
efi, ansi: Improve console handling even further (e.g. scrolling support)

There were quite a few trivial bugs in the EFI console code, such as
mixing up column and row arguments and implementing functions with
different semantics when compared with the BIOS code.

With these changes console output now looks the same as the BIOS
version, with output scrolling down the screen instead of overwriting
existing text at the top whenever it incremented past the last row.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
12 years agoMerge remote-tracking branch 'mfleming/elflink' into for-hpa/elflink/firmware
Matt Fleming [Mon, 13 Aug 2012 15:45:11 +0000 (16:45 +0100)]
Merge remote-tracking branch 'mfleming/elflink' into for-hpa/elflink/firmware

Conflicts:
com32/lib/sys/module/common.c

12 years agoldlinux: Use findpath() to lookup filenames syslinux-5.00-pre7
Matt Fleming [Tue, 7 Aug 2012 09:40:12 +0000 (10:40 +0100)]
ldlinux: Use findpath() to lookup filenames

We should use the same method of opening files as the module code when
searching for extensions. In particular, we should search all of PATH.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
12 years agocore: Change numIPAppends data type
Matt Fleming [Thu, 2 Aug 2012 13:51:03 +0000 (14:51 +0100)]
core: Change numIPAppends data type

For EFI we don't have the opportunity to mess with the object type of
'numIPAppends' via assembly as is done for BIOS - we need to do it all
in C. So change numIPAppends to size_t to accurately reflect its use.

Without this change the loop in __syslinux_get_ipappend_strings()
actually uses the address of numIPAppends instead of any value stored
there because it's a char array.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
12 years agorawcon_read: Fix reading high part of input keys
Matt Fleming [Thu, 2 Aug 2012 09:34:17 +0000 (10:34 +0100)]
rawcon_read: Fix reading high part of input keys

commit 8486142cf304 ("elflink: Replace __intcall() with direct
function calls") made the mistake of zero'ing the high part of the
input key on every invocation of __rawcon_read() instead of preserving
it across calls like the old code, which lead to function keys such as
KEY_UP, KEY_DOWN, etc not working.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
12 years agoldlinux: Return to command prompt after loading COM32
Matt Fleming [Thu, 2 Aug 2012 08:26:54 +0000 (09:26 +0100)]
ldlinux: Return to command prompt after loading COM32

The old COM32 loading code would drop the user at a command prompt
once execution returned from the COM32 amodule. We need to replicate
this because most callers of execute() don't expect it to return.

This bug was noticed when loading a COM32 module from
vesamenu.c32. Once execution returned from the COM32 module the
display became garbled because no code exists to reinitialise the
screen for VGA.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
12 years agoMerge remote-tracking branch 'mfleming/elflink' into for-hpa/elflink/firmware
Matt Fleming [Fri, 27 Jul 2012 09:41:30 +0000 (10:41 +0100)]
Merge remote-tracking branch 'mfleming/elflink' into for-hpa/elflink/firmware

Conflicts:
Makefile
com32/elflink/ldlinux/adv.c
com32/elflink/ldlinux/kernel.c
com32/elflink/ldlinux/ldlinux.c
com32/include/bitsize/stddef.h
com32/include/bitsize/stdint.h
com32/include/stdint.h
com32/include/sys/module.h
com32/include/sys/x86_64/bitops.h
com32/include/syslinux/linux.h
com32/lib/Makefile
com32/lib/sys/ansicon_write.c
com32/lib/sys/module/elfutils.h
com32/lib/sys/vesa/efi/fill.h
com32/lib/syslinux/load_linux.c
com32/lib/syslinux/serial.c
com32/lib/syslinux/shuffle.c
core/conio.c
core/elflink/config.c
core/elflink/load_env32.c
core/graphics.c
core/include/graphics.h
core/init.c
core/pxelinux.asm
mk/elf.mk
mk/lib.mk

12 years agocom32: Use --as-needed for LDFLAGS
Matt Fleming [Thu, 12 Jul 2012 19:35:14 +0000 (20:35 +0100)]
com32: Use --as-needed for LDFLAGS

This extends commit 4678fd92a21e ("elflink: fix dependency problem in
cmenu/Makefile") and basically reverts commit fb543aa635ff ("com32:
Per-object file LDFLAGS"). By using the --as-needed ld argument we can
specify all the required shared libraries for a directory, even if not
all of the libraries are needed by every .c32 file. --as-needed takes
care of only creating DT_NEEDED entries for the shared libraries that
are actually required to resolve undefined symbols in a given module.

Furthermore, by using $(LIBS) we create a dependency between .c32
files and their shared libraries, which allows multiple make jobs to
run in parallel.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
12 years agoUse pxe_call() instead of COMBOOT API
Matt Fleming [Thu, 12 Jul 2012 12:34:06 +0000 (13:34 +0100)]
Use pxe_call() instead of COMBOOT API

This involved some other changes, such as passing flags to
unload_pxe() now that we only call it from C code, and hence don't
need to update KeepPXE.

We also needed to move some of the pxe function prototypes to
com32/include/syslinux/pxe_api.h because they are now referenced
outside of the core.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
12 years agoelflink: Replace __intcall() with direct function calls
Matt Fleming [Tue, 3 Jul 2012 07:50:13 +0000 (08:50 +0100)]
elflink: Replace __intcall() with direct function calls

There's no reason to use the COMBOOT API at all now that we can have
any undefined symbols resolved at runtime - we can just access
functions directly.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
12 years agolib/sys/module: Add support for weak symbols
Matt Fleming [Thu, 12 Jul 2012 16:39:53 +0000 (17:39 +0100)]
lib/sys/module: Add support for weak symbols

We need a means of allowing Syslinux derivative-specific functions to
remain unresolved when there is no implementation for them. For
example, unload_pxe() is referenced by common code in com32/lib, but
is only implemented for PXELINUX. By marking unload_pxe() as __weak we
can substitute references with the undefined_symbol() function for
SYSLINUX, EXTLINUX and ISOLINUX. Provided that those references are
never executed everything works fine. However, if code calls actually
calls unload_pxe() from SYSLINUX, EXTLINUX or ISOLINUX an error
message is displayed and execution is halted.

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
12 years agoldlinux: Stop using the internal KT_* image types
Matt Fleming [Wed, 11 Jul 2012 12:12:33 +0000 (13:12 +0100)]
ldlinux: Stop using the internal KT_* image types

The KT_* image types were never meant to be used outside of
com32/menu, so use the external image types from syslinux/boot.h

Signed-off-by: Matt Fleming <matt.fleming@intel.com>