Matt Fleming [Thu, 22 Nov 2012 14:31:06 +0000 (14:31 +0000)]
isolinux: Make BIOSName global
commit
967ee8a1ed49 ("CLI: Add Ctrl + V support for printing the
Syslinux version") should have made the BIOSName symbol global in
core/isolinux.asm. Without this change ldlinux.c32 will hang because
it cannot resolve the 'BIOSName' symbol.
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Matt Fleming [Mon, 26 Nov 2012 13:13:07 +0000 (13:13 +0000)]
ldlinux: Fix OnError behaviour
If the ONERROR directive references a label we need to lookup the
label's command line and type.
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Matt Fleming [Mon, 26 Nov 2012 13:08:06 +0000 (13:08 +0000)]
ldlinux: Automatically apply ".c32" extension for COM32 files
If a type-specifier is used on the command line, e.g.
.com32 pwd
we should apply the ".c32" filename extension automatically as this
works elsewhere and this behaviour was present in 4.0x.
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Matt Fleming [Wed, 21 Nov 2012 22:34:19 +0000 (22:34 +0000)]
runimage.c: Actually pass arguments to execute()
Fix the breakage from commit
8486142cf304 ("elflink: Replace
__intcall() with direct function calls"), where we stopped passing
'cmdline' to execute().
This bug resulted in things like config.c32 not respecting the
<directory> argument.
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Matt Fleming [Thu, 15 Nov 2012 19:46:54 +0000 (19:46 +0000)]
ldlinux: Don't return NULL on KEY_ESC.
The old command line code in 4.06 ignores KEY_ESC and KEY_CTRL('C') so
we should do the same. What currently happens if a user hits ESC is
that we return from edit_cmdline() as though we'd timed out waiting
for user input.
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Matt Fleming [Wed, 21 Nov 2012 21:03:24 +0000 (21:03 +0000)]
ldlinux: Never exit from ldlinux.c32
If there's no DEFAULT directive in the config file and the user hits
the ENTER key enough times, or we timeout waiting for input,
ldlinux.c32 will exit. This should never be allowed to happen, and we
need to keep doing the ldlinux_auto_boot()/boot prompt dance.
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Matt Fleming [Tue, 13 Nov 2012 16:07:18 +0000 (16:07 +0000)]
ldlinux: Delete dead code and useless printf
Seeing the cmdline re-printed every time the user presses enter is
very annoying, so delete the offending printf(). Also delete some code
that has been commented out for ages.
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Matt Fleming [Tue, 13 Nov 2012 15:57:01 +0000 (15:57 +0000)]
ldlinux: Delete inaccurate 'insufficient memory' message
Instead, use strerror() to print a more useful message if we fail to
load a kernel.
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Matt Fleming [Mon, 12 Nov 2012 15:38:33 +0000 (15:38 +0000)]
mk: Add Makefile variable for python
Instead of hard-coding the python executable name use a make variable
like we do for all other executables used during the build. This has
the added bonus of allowing $(PYTHON) to be overridden on the command
line, e.g.
make PYTHON=python2
which is particularly useful for distributions where /usr/bin/python
is actually python3.
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Matt Fleming [Thu, 25 Oct 2012 10:35:14 +0000 (11:35 +0100)]
menu: Inherit parent menu title
The documentation for the menu system clearly states that all
properties of the parent are inherited in the submenu. Unfortunately
there's a bug that means this isn't true for the parent's menu title,
so fix that.
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Matt Fleming [Wed, 7 Nov 2012 07:31:13 +0000 (07:31 +0000)]
Merge branch 'strerror-for-mfleming' of git://github.com/geneC/syslinux into elflink
Pull klibc strerror() patches from Gene Cumm,
Update strerror() to give english messages
* 'strerror-for-mfleming' of git://github.com/geneC/syslinux:
com32 strerror(): Remove macro WITH_ERRLIST use
com32 strerror: add errlist.o to Make
strerror: Use klibc version
Gene Cumm [Sat, 16 Jun 2012 18:26:11 +0000 (14:26 -0400)]
com32 strerror(): Remove macro WITH_ERRLIST use
Signed-off-by: Gene Cumm <gene.cumm@gmail.com>
Gene Cumm [Wed, 7 Nov 2012 04:32:51 +0000 (23:32 -0500)]
com32 strerror: add errlist.o to Make
Exclude in .gitignore
Signed-off-by: Gene Cumm <gene.cumm@gmail.com>
Gene Cumm [Sat, 16 Jun 2012 17:33:19 +0000 (13:33 -0400)]
strerror: Use klibc version
Remove old in favor of current klibc version
Signed-off-by: Gene Cumm <gene.cumm@gmail.com>
Matt Fleming [Tue, 6 Nov 2012 19:56:01 +0000 (19:56 +0000)]
Merge branch 'hexdump' of git://git.zytor.com/users/sha0/syslinux into elflink
Pull new hexdump.c32 module from Shao Miller,
* 'hexdump' of git://git.zytor.com/users/sha0/syslinux:
hexdump.c32: Simple file hex-dumper
Matt Fleming [Mon, 5 Nov 2012 15:35:35 +0000 (15:35 +0000)]
Merge branch 'multi_initrd2-5.00-pre9' of git://git.zytor.com/users/sha0/syslinux into elflink
Pull multi-initrd patches from Shao Miller,
These patches provide two new options for the linux.c32 module.
The "initrd+=" option allows you to append initramfs-style blobs
(files which can be produced with 'cpio -o -H newc') to whatever
"initrd" was specified via the "initrd=" option (or was specified
indirectly via the INITRD directive).
The "initrdfile=" option allows you to load a file and encapsulate it
as though you had used 'cpio -o -H newc', and pass the resulting blob
alongside the other items that might have been specified with
"initrd=" or "initrd+=".
* 'multi_initrd2-5.00-pre9' of git://git.zytor.com/users/sha0/syslinux:
initramfs chain handling: Accounting fixes for padding, etc.
linux.c32: Introduce initrdfile= option
linux.c32: Add new initrd+= option for multiple initrds
linux.c32: Move some initrd=x,y,z code out of main
linux.c32: Add find_arguments function
Shao Miller [Mon, 5 Nov 2012 02:23:09 +0000 (21:23 -0500)]
core: Fix realloc() code transcription error
Commit
79459f631546eea83d4158f535c20ebd4ac18987 copied portions of
com32/lib/realloc.c into core/mem/malloc.c, with minor changes
for accessing allocation arena header attributes. The previous
code used structure members and the current code uses bitmask
macros.
On a particular line in the original realloc(), there were two
assignments in a single expression that included a compound
assignment. This fact was missed when the code was copied and
modified to use the bitmask macros.
Signed-off-by: Shao Miller <sha0.miller@gmail.com>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Matt Fleming [Fri, 2 Nov 2012 17:02:36 +0000 (17:02 +0000)]
extlinux: Avoid dereferencing a garbage pointer
If opt.reset_adv is set the call to ext_read_adv() is skipped which
would have initialised 'filename'. This means that a pointer
containing random data from the stack is passed to ext_write_adv().
Just delete the opt.reset_adv logic since modify_adv() handles that
case anyway.
Reported-by: Frediano Ziglio <frediano.ziglio@citrix.com>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Shao Miller [Sun, 4 Nov 2012 04:26:32 +0000 (00:26 -0400)]
hexdump.c32: Simple file hex-dumper
Usage: %s [<option> [...]] <filename> [<option> [...]]
Options: -p
--page . . . . . . . Pause output every 24 lines
--no-buffer . . . . Load the entire file before dumping
--extended-ascii . . Use extended ASCII chars in dump
-?
-h
--help . . . . . . Display this help
Signed-off-by: Shao Miller <sha0.miller@gmail.com>
Shao Miller [Fri, 26 Oct 2012 06:14:28 +0000 (02:14 -0400)]
initramfs chain handling: Accounting fixes for padding, etc.
Signed-off-by: Shao Miller <sha0.miller@gmail.com>
Shao Miller [Fri, 26 Oct 2012 01:25:38 +0000 (21:25 -0400)]
linux.c32: Introduce initrdfile= option
It is useful to be able to load a file and pass it into a kernel's
rootfs via the initramfs scheme. Given "initrdfile=foo", we will
load the file foo, encapsulate it with the initramfs cpio format,
then pass it alongside any initramfs files that were specified by
"initrd=" and "initrd+=" options.
One can specify the desired path/filename for the file to have
within the rootfs by using the at (@) sign, as in:
initrdfile=foo@/goes/to/foo
One can also specify multiple files, separated by commas, such as:
initrdfile=foo,bar@/somewhere/bar,baz
One can also use this option multiple times, as in:
initrdfile=foo,bar initrdfile=baz@/somewhere/baz
Signed-off-by: Shao Miller <sha0.miller@gmail.com>
Shao Miller [Thu, 25 Oct 2012 07:58:07 +0000 (03:58 -0400)]
linux.c32: Add new initrd+= option for multiple initrds
linux.c32 now processes the kernel's command-line for "initrd+="
options.
Given "initrd+=foo", linux.c32 will concatenate the file "foo"
to the initrds that it has already loaded due to the "initrd="
option.
Given "initrd+=foo,bar", linux.c32 will concatenate both files
"foo" and "bar" to the initrds that it has already loaded due
to the "initrd=" option. That is, multiple filenames can be
specified with comma separators.
Given "initrd+=foo initrd+=bar", linux.c32 will concatenate
both files "foo" and "bar" to the initrds that it has already
loaded due to the "initrd=" option. That is, the "initrd+="
option can be specified multiple times.
The position of any "initrd=" option relative to any "initrd+="
option is irrelevant. The "initrd=" option is always processed
before all "initrd+=" options.
PLEASE NOTE: It is important to note that there are NO SPACES
involved in using the "initrd+=" option. "initrd += foo" will
not work.
Signed-off-by: Shao Miller <sha0.miller@gmail.com>
Shao Miller [Thu, 25 Oct 2012 06:17:36 +0000 (02:17 -0400)]
linux.c32: Move some initrd=x,y,z code out of main
In handling an "initrd=x,y,z" option, it seems reasonable to be able
to handle similar options in a similar fashion, so some of the code
has been moved out of 'main' and into a new 'process_initramfs_args'
function.
Signed-off-by: Shao Miller <sha0.miller@gmail.com>
Matt Fleming [Sat, 3 Nov 2012 01:52:52 +0000 (21:52 -0400)]
linux.c32: Add find_arguments function
The 'find_argument' function already finds the last instance of a
command-line option. For symmetry, we introduce a 'find_arguments'
function which will help to iterate each instance of a command-line
option.
Also, this commit uses 'strncmp' in both, instead of 'memcmp'.
Modified-by: Shao Miller <sha0.miller@gmail.com>
Signed-off-by: Shao Miller <sha0.miller@gmail.com>
Matt Fleming [Thu, 1 Nov 2012 12:26:22 +0000 (12:26 +0000)]
CLI: Add Ctrl + V support for printing the Syslinux version
The cli code is missing support for printing the version string that
is available in Syslinux 4.06 and earlier.
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Matt Fleming [Thu, 1 Nov 2012 11:30:42 +0000 (11:30 +0000)]
win: Print error message if we fail to install to --directory
Instead of silently returning with no indication of error if we
couldn't install to the --directory argument, print an error message
that tells the user the files are not where they wanted.
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Matt Fleming [Thu, 1 Nov 2012 11:12:03 +0000 (11:12 +0000)]
win: Fix installing to a directory
commit
bda54cb68067 ("installers: Install ldlinux.c32 automatically)"
introduced a bug in the move_file() function. move_file() isn't
deleting the destination path, including the --directory argument,
that ldlinux.sys should be installed to ('new_name'), which means that
the MoveFile() calls fails. What it's actually doing is deleting
ldlinux.sys from the file destination system.
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Matt Fleming [Thu, 1 Nov 2012 10:56:06 +0000 (10:56 +0000)]
CLI: Fix command history traversal
The up/down keys were broken with respect to traversing through the
command history because it was dereferencing a NULL pointer on the
first iteration.
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Matt Fleming [Thu, 1 Nov 2012 09:50:46 +0000 (09:50 +0000)]
com32: Include .init_array section in .ctors in linker script
GCC 4.7 now places pointers to functions with the 'constructor' and
'destructor' function attributes in .init_array and .fini_array
sections, respectively, whereas previously they were in the .ctors and
.dtors sections. This change breaks the ctors/dtors code as it only
expects function to be in the .ctors and .dtors sections, meaning the
ctors and dtors functions are never executed.
While a COM32_INIT() macro exists that places functions in the
.init_array section, no function makes use of it, so there should be
no fallout from this change.
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Matt Fleming [Wed, 31 Oct 2012 15:55:02 +0000 (15:55 +0000)]
ldlinux: get_key() requires raw access to user input
commit
4503e6260c0 ("ldlinux: Use stdcon instead of rawcon for the
console") broke get_key() because it was no longer possible to read
raw data from stdin. Provide a new function raw_read() that will
return user input a character at a time.
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Matt Fleming [Wed, 31 Oct 2012 12:42:25 +0000 (12:42 +0000)]
ldlinux: Fix logic if no DEFAULT or UI directive is found
Somewhere along the way the code that prints,
No DEFAULT or UI configuration directive found!
was broken, and now no longer prints at all. While we're fixing this
it's a good opportunity to rework the logic to be clearer. Now we only
print the message if a config file was found, since these directives
are obviously missing if there is no config file (a warning will be
printed about the lack of config file anyway).
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Matt Fleming [Wed, 31 Oct 2012 12:49:43 +0000 (12:49 +0000)]
ldlinux: Print a warning if no config file is found
This behaviour is taken from 4.06, where an error message is printed
if no config file is found. A warning is a more user-friendly choice
since Syslinux will still function without a config file.
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Matt Fleming [Wed, 31 Oct 2012 14:17:49 +0000 (14:17 +0000)]
pxe: Don't call open_config() from the pxe core
Delete some stale comments about ldlinux.c32 requiring ConfigName to
be initialised before it's launched - this is no longer
true. ldlinux.c32 takes care of opening the config files.
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
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>
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>
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
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>
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
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>
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>
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>
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>
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
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>
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>
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>
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>
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>
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>
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>
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.
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>
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>
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
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
Erwan Velu [Mon, 10 Sep 2012 19:07:14 +0000 (21:07 +0200)]
NEWS: Adding 'silent' option from HDT
Erwan Velu [Mon, 10 Sep 2012 19:03:50 +0000 (21:03 +0200)]
hdt: Release 0.5.2
New release with codename Manon
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.
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.
Erwan Velu [Mon, 10 Sep 2012 18:26:59 +0000 (20:26 +0200)]
NEWS: Updating for HDT & kontron_wdt
Erwan Velu [Mon, 10 Sep 2012 18:21:33 +0000 (20:21 +0200)]
kontron_wdt: Fixing makefile
Typo.
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.
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
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
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>
Erwan Velu [Wed, 5 Sep 2012 19:08:39 +0000 (21:08 +0200)]
Merge remote-tracking branch 'hpa/master'
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
Matt Fleming [Wed, 11 Jul 2012 09:17:49 +0000 (10:17 +0100)]
core/elflink: Delete ADV code that's already in ldlinux
The exact same ADV code is in both com32/elflink/ldlinux and
core/elflink. Since there's no need to have the same code in two place
at once delete the copy from the core since there are no users in
core/.
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
H. Peter Anvin [Thu, 19 Jul 2012 15:42:32 +0000 (08:42 -0700)]
Only compile dprintf/vdprintf if DEBUG_PORT is defined
We really, really don't want to accidentally spew output to a debug
port in production, so make it obligatory to define DEBUG_PORT or
DEBUG_STDIO in order for the debugging code to be compiled in. Since
DEBUG_STDIO just turns the debugging code into stdio references, we
only need to compile the code for the DEBUG_PORT case.
Add a commented-out line to mk/devel.mk to make it easier for users.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Cc: Matt Fleming <matt.fleming@intel.com>
Matt Fleming [Thu, 19 Jul 2012 15:03:19 +0000 (16:03 +0100)]
Merge branch 'master' into elflink
The reason for this merge is that we need the fix to core/fs/cache.c
without which we can potentially dereference an invalid pointer.
The below conflict is a result of the new setup_data blob code being
merged from the master branch.
Conflicts:
com32/lib/Makefile
Matt Fleming [Fri, 6 Jul 2012 14:36:56 +0000 (15:36 +0100)]
ldlinux: Return immediately after we execute() a command
If we successfully lookup the filetype of a command we need to return
once we've called execute(), otherwise we'll also end up calling
new_linux_kernel().
Reported-by: Sebastian Herbszt <herbszt@gmx.de>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
H. Peter Anvin [Thu, 19 Jul 2012 14:29:55 +0000 (07:29 -0700)]
Correct initialization of the cache doubly-linked list
The initialization of the cache doubly-linked list had
head->next->prev instead of head->prev->next; this entry is supposed
to initialize the ->next entry of the last entry in the list (which
points back to the head node.)
For clarity, consistently use "head" to refer to the head node; the
mixing of "head" and "dev->cache_head" needlessly obfuscated the code.
The wild pointer reference caused crashes on some systems.
Reported-by: Jan Safrata <jsafrata@centrum.cz>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Paulo Alcantara [Thu, 5 Jul 2012 06:54:19 +0000 (03:54 -0300)]
core: Makefile: Do not enable debug by default
The commit 72842b6 has set "DDEBUG=1" as it shouldn't, so the whole core
was being compiled always with debug enabled.
This patch removes the "DDEBUG=1" from CFLAGS in Makefile, since Syslinux
is never compiled with debug enabled by default.
Signed-off-by: Paulo Alcantara <pcacjr@zytor.com>