<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/syslinux.git/com32, branch syslinux-5.01-pre3</title>
<subtitle>git.kernel.org: pub/scm/boot/syslinux/syslinux.git
</subtitle>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/syslinux.git/'/>
<entry>
<title>ldlinux: Perform chdir() before parsing config</title>
<updated>2013-01-16T12:22:42+00:00</updated>
<author>
<name>Matt Fleming</name>
<email>matt.fleming@intel.com</email>
</author>
<published>2013-01-16T11:14:59+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/syslinux.git/commit/?id=d5e63aca6de51f9a70e9f78e2cc5ee3d32a18614'/>
<id>d5e63aca6de51f9a70e9f78e2cc5ee3d32a18614</id>
<content type='text'>
The old 4.x behaviour for handling CONFIG directives of the form,

    CONFIG foo.cfg /bar

was to lookup the absolute pathname of foo.cfg, then chdir to /bar and
finally to parse foo.cfg. The 5.x behaviour reversed the chdir and
parsing steps. This meant if foo.cfg's contents were simply,

    INCLUDE say.txt

4.x would include /bar/say.txt and 5.x would include
/boot/syslinux/say.txt (assuming the current working directory was
/boot/syslinux).

What's even worse is that because of the way 'config_cwd' is used in
5.x we'd actually perform the chdir() operation after the first
INCLUDE in foo.cfg, e.g.

   INCLUDE say.txt
   INCLUDE say.txt

would include /boot/syslinux/say.txt and /bar/say.txt, respectively.

Signed-off-by: Matt Fleming &lt;matt.fleming@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The old 4.x behaviour for handling CONFIG directives of the form,

    CONFIG foo.cfg /bar

was to lookup the absolute pathname of foo.cfg, then chdir to /bar and
finally to parse foo.cfg. The 5.x behaviour reversed the chdir and
parsing steps. This meant if foo.cfg's contents were simply,

    INCLUDE say.txt

4.x would include /bar/say.txt and 5.x would include
/boot/syslinux/say.txt (assuming the current working directory was
/boot/syslinux).

What's even worse is that because of the way 'config_cwd' is used in
5.x we'd actually perform the chdir() operation after the first
INCLUDE in foo.cfg, e.g.

   INCLUDE say.txt
   INCLUDE say.txt

would include /boot/syslinux/say.txt and /bar/say.txt, respectively.

Signed-off-by: Matt Fleming &lt;matt.fleming@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>module: Check return value of malloc()</title>
<updated>2013-01-16T12:22:42+00:00</updated>
<author>
<name>Matt Fleming</name>
<email>matt.fleming@intel.com</email>
</author>
<published>2013-01-15T14:57:45+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/syslinux.git/commit/?id=8deea7fccbf76bca2ec62057afc774540da1603e'/>
<id>8deea7fccbf76bca2ec62057afc774540da1603e</id>
<content type='text'>
And return NULL after printing an appropriate error message if the
call failed.

Signed-off-by: Matt Fleming &lt;matt.fleming@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
And return NULL after printing an appropriate error message if the
call failed.

Signed-off-by: Matt Fleming &lt;matt.fleming@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ldlinux: Strip whitespace from LABEL directive</title>
<updated>2013-01-15T13:03:51+00:00</updated>
<author>
<name>Matt Fleming</name>
<email>matt.fleming@intel.com</email>
</author>
<published>2013-01-15T13:03:51+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/syslinux.git/commit/?id=ab06ca87afc01c1146a878989524eef03f331d7e'/>
<id>ab06ca87afc01c1146a878989524eef03f331d7e</id>
<content type='text'>
Any LABEL directive arguments shouldn't include whitespace
characters. If whitespace characters are needed use MENU LABEL.

Signed-off-by: Matt Fleming &lt;matt.fleming@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Any LABEL directive arguments shouldn't include whitespace
characters. If whitespace characters are needed use MENU LABEL.

Signed-off-by: Matt Fleming &lt;matt.fleming@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>module: Allow .c32 files to execute themselves</title>
<updated>2013-01-10T14:02:19+00:00</updated>
<author>
<name>Matt Fleming</name>
<email>matt.fleming@intel.com</email>
</author>
<published>2013-01-10T13:39:50+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/syslinux.git/commit/?id=04cf121216bf2d5c6fc9e01028519f7d655d66cf'/>
<id>04cf121216bf2d5c6fc9e01028519f7d655d66cf</id>
<content type='text'>
Historically, .c32 files had to explicitly link against ldlinux.c32 in
order to use its exported symbols. This lead to the undesirable
situation during module dependency resolution where loading,
e.g. menu.c32, would cause ldlinux.c32 to be reloaded, thus
re-executing its main() function and dropping the user at a prompt
instead of executing menu.c32.

commit 1357b7e62706 ("elflink: Don't reload the current EXEC_MODULE
module") was the solution to this problem, since you don't need to
reload a module to link against it's symbols. Unfortunately, while
this commit was intended to stop ldlinux.c32 being reloaded, it also
broke the use case where a .c32 wants to load itself, e.g. when
vesamenu.c32 wants to execute vesamenu.c32 with a different config.

Luckily, modules no longer need to include ldlinux.c32 in their
dependency list, since ldlinux.c32 is *always* loaded and any symbols
can be automatically resolved. Which means that the check in
spawn_load() can be deleted.

Signed-off-by: Matt Fleming &lt;matt.fleming@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Historically, .c32 files had to explicitly link against ldlinux.c32 in
order to use its exported symbols. This lead to the undesirable
situation during module dependency resolution where loading,
e.g. menu.c32, would cause ldlinux.c32 to be reloaded, thus
re-executing its main() function and dropping the user at a prompt
instead of executing menu.c32.

commit 1357b7e62706 ("elflink: Don't reload the current EXEC_MODULE
module") was the solution to this problem, since you don't need to
reload a module to link against it's symbols. Unfortunately, while
this commit was intended to stop ldlinux.c32 being reloaded, it also
broke the use case where a .c32 wants to load itself, e.g. when
vesamenu.c32 wants to execute vesamenu.c32 with a different config.

Luckily, modules no longer need to include ldlinux.c32 in their
dependency list, since ldlinux.c32 is *always* loaded and any symbols
can be automatically resolved. Which means that the check in
spawn_load() can be deleted.

Signed-off-by: Matt Fleming &lt;matt.fleming@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>menugen: Make it compatible with Py3k</title>
<updated>2013-01-09T19:05:06+00:00</updated>
<author>
<name>Paulo Alcantara</name>
<email>pcacjr@zytor.com</email>
</author>
<published>2013-01-06T20:36:17+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/syslinux.git/commit/?id=48865d2af1eca051716829ef0393d7a12a1a86d0'/>
<id>48865d2af1eca051716829ef0393d7a12a1a86d0</id>
<content type='text'>
Signed-off-by: Paulo Alcantara &lt;pcacjr@zytor.com&gt;
Signed-off-by: Matt Fleming &lt;matt.fleming@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Paulo Alcantara &lt;pcacjr@zytor.com&gt;
Signed-off-by: Matt Fleming &lt;matt.fleming@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ldlinux: Dynamically alloc memory for kernel and initrd filenames</title>
<updated>2013-01-04T19:52:26+00:00</updated>
<author>
<name>Matt Fleming</name>
<email>matt.fleming@intel.com</email>
</author>
<published>2013-01-04T19:16:39+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/syslinux.git/commit/?id=96f02b37a56382c0e297fdbe4b7002f8ffb8829c'/>
<id>96f02b37a56382c0e297fdbe4b7002f8ffb8829c</id>
<content type='text'>
Absolutely no bounds checking is performed when copying filenames to
'cmdline_buf' and 'initrd_name' which means that sufficiently long
strings will scribble over the stack. At best, the files will simply
fail to load because the name is garbled.

Allocate space for the cmdline at runtime to avoid these overflow
problems.

Signed-off-by: Matt Fleming &lt;matt.fleming@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Absolutely no bounds checking is performed when copying filenames to
'cmdline_buf' and 'initrd_name' which means that sufficiently long
strings will scribble over the stack. At best, the files will simply
fail to load because the name is garbled.

Allocate space for the cmdline at runtime to avoid these overflow
problems.

Signed-off-by: Matt Fleming &lt;matt.fleming@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ldlinux: Don't delete ldlinux.c32 with 'make clean'</title>
<updated>2013-01-04T11:43:53+00:00</updated>
<author>
<name>Matt Fleming</name>
<email>matt.fleming@intel.com</email>
</author>
<published>2013-01-04T11:33:21+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/syslinux.git/commit/?id=e1680d483ead4a0afdc672ce9c5c7942941f985b'/>
<id>e1680d483ead4a0afdc672ce9c5c7942941f985b</id>
<content type='text'>
The documented command sequence for distributions wishing to package a
Syslinux release is,

	 make clean
	 make installer

Unfortunately, becaues ldlinux.c32 is deleted by 'make clean' the
installer target fails like so,

make[1]: *** No rule to make target `../com32/elflink/ldlinux/ldlinux.c32', needed by `ldlinuxc32_bin.c'.  Stop.
make: *** [installer] Error 2

Follow the example set by core/Makefile for ldlinux.sys, etc and add
any build files that are required by the installers to
$(BTARGET). $(BTARGET) only gets deleted when running 'make spotless'.

Reported-by: László Házy &lt;hazy_l@yahoo.com&gt;
Signed-off-by: Matt Fleming &lt;matt.fleming@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The documented command sequence for distributions wishing to package a
Syslinux release is,

	 make clean
	 make installer

Unfortunately, becaues ldlinux.c32 is deleted by 'make clean' the
installer target fails like so,

make[1]: *** No rule to make target `../com32/elflink/ldlinux/ldlinux.c32', needed by `ldlinuxc32_bin.c'.  Stop.
make: *** [installer] Error 2

Follow the example set by core/Makefile for ldlinux.sys, etc and add
any build files that are required by the installers to
$(BTARGET). $(BTARGET) only gets deleted when running 'make spotless'.

Reported-by: László Házy &lt;hazy_l@yahoo.com&gt;
Signed-off-by: Matt Fleming &lt;matt.fleming@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>elflink: set the sonames of shared libraries</title>
<updated>2013-01-03T17:29:51+00:00</updated>
<author>
<name>H. Peter Anvin</name>
<email>hpa@linux.intel.com</email>
</author>
<published>2013-01-03T17:29:51+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/syslinux.git/commit/?id=3bede445728bfc519f649d69d6e0bcc196ed74de'/>
<id>3bede445728bfc519f649d69d6e0bcc196ed74de</id>
<content type='text'>
Set the sonames of shared libraries to the filename, so we don't end
up with full pathnames embedded in the files.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Set the sonames of shared libraries to the filename, so we don't end
up with full pathnames embedded in the files.
</pre>
</div>
</content>
</entry>
<entry>
<title>Delete 16-bit COMBOOT support</title>
<updated>2012-12-06T10:47:31+00:00</updated>
<author>
<name>Matt Fleming</name>
<email>matt.fleming@intel.com</email>
</author>
<published>2012-12-06T10:13:41+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/syslinux.git/commit/?id=ddb10ce99c327888ade4d2ba3e4c50ad12aaa059'/>
<id>ddb10ce99c327888ade4d2ba3e4c50ad12aaa059</id>
<content type='text'>
16-bit COMBOOT files are no longer supported by Syslinux in 5.00 so
delete all references and change any 32-bit COMBOOT image references
to mention ELF instead.

Some of the COMBOOT stuff is still used internally so we can't nuke
core/comboot.inc yet, but that will disappear in a future release.

Signed-off-by: Matt Fleming &lt;matt.fleming@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
16-bit COMBOOT files are no longer supported by Syslinux in 5.00 so
delete all references and change any 32-bit COMBOOT image references
to mention ELF instead.

Some of the COMBOOT stuff is still used internally so we can't nuke
core/comboot.inc yet, but that will disappear in a future release.

Signed-off-by: Matt Fleming &lt;matt.fleming@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Symbol export whitelist</title>
<updated>2012-12-05T22:41:32+00:00</updated>
<author>
<name>Matt Fleming</name>
<email>matt.fleming@intel.com</email>
</author>
<published>2012-12-04T21:17:47+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/syslinux.git/commit/?id=e4b3ce2dd82ce2da85c37fd3f332ec2eb802b734'/>
<id>e4b3ce2dd82ce2da85c37fd3f332ec2eb802b734</id>
<content type='text'>
Before modules were dynamically loaded the boundary between GPL and
non-GPL code was implicit because of the separate link domains for
each module. With dynamic modules we need an explicit whitelist of
core symbols that non-GPL code can link against at runtime without
needing to be re-licensed under the GPL.

Mark such symbols with __export, so that it is explicitly clear which
symbols in the core can be linked against by non-GPL code.

Reduce the visibility of symbols in both the core and ldlinux.c32 with
-fvisibility=hidden. __export changes the visibility to 'default'.

Signed-off-by: Matt Fleming &lt;matt.fleming@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Before modules were dynamically loaded the boundary between GPL and
non-GPL code was implicit because of the separate link domains for
each module. With dynamic modules we need an explicit whitelist of
core symbols that non-GPL code can link against at runtime without
needing to be re-licensed under the GPL.

Mark such symbols with __export, so that it is explicitly clear which
symbols in the core can be linked against by non-GPL code.

Reduce the visibility of symbols in both the core and ldlinux.c32 with
-fvisibility=hidden. __export changes the visibility to 'default'.

Signed-off-by: Matt Fleming &lt;matt.fleming@intel.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
