<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/syslinux.git/memdisk, branch syslinux-6.00-pre5</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>mk/embedded.mk: Don't use -mregparm in core</title>
<updated>2013-01-08T10:37:06+00:00</updated>
<author>
<name>Matt Fleming</name>
<email>matt.fleming@intel.com</email>
</author>
<published>2013-01-08T10:14:22+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/syslinux.git/commit/?id=8789d2689564c13754bac94c8309b0de1e34a42a'/>
<id>8789d2689564c13754bac94c8309b0de1e34a42a</id>
<content type='text'>
Unfortunately commit 4eb06d95d882 ("mk: Add -fPIC for x86_64 to
embedded.mk") left -mregparm enabled when compiling objects in core/,
which means that when compiling for i386 those objects are compiled
with a different ABI compared with everything else, leading to hangs
when booting under 32-bit EFI.

We should only enable -mregparm for code that absolutely requires it,
such as dos/crt0.S which would need to be re-written to use another
ABI.

Signed-off-by: Matt Fleming &lt;matt.fleming@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Unfortunately commit 4eb06d95d882 ("mk: Add -fPIC for x86_64 to
embedded.mk") left -mregparm enabled when compiling objects in core/,
which means that when compiling for i386 those objects are compiled
with a different ABI compared with everything else, leading to hangs
when booting under 32-bit EFI.

We should only enable -mregparm for code that absolutely requires it,
such as dos/crt0.S which would need to be re-written to use another
ABI.

Signed-off-by: Matt Fleming &lt;matt.fleming@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge tag 'syslinux-5.00-pre9' into for-hpa/elflink/firmware</title>
<updated>2012-11-05T13:21:04+00:00</updated>
<author>
<name>Matt Fleming</name>
<email>matt.fleming@intel.com</email>
</author>
<published>2012-11-05T13:13:25+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/syslinux.git/commit/?id=0b26e59c8f5dc7a8a124a033a78e08c7a2028bcd'/>
<id>0b26e59c8f5dc7a8a124a033a78e08c7a2028bcd</id>
<content type='text'>
This merge also includes the Syslinux-4.06 release.

Conflicts:
	Makefile
	com32/hdt/Makefile
	com32/modules/Makefile
	com32/samples/hello.c
	mtools/Makefile
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This merge also includes the Syslinux-4.06 release.

Conflicts:
	Makefile
	com32/hdt/Makefile
	com32/modules/Makefile
	com32/samples/hello.c
	mtools/Makefile
</pre>
</div>
</content>
</entry>
<entry>
<title>memdisk: Fix order of sectors/track and bytes/sector</title>
<updated>2012-10-23T09:53:17+00:00</updated>
<author>
<name>Kenneth J. Davis</name>
<email>jeremyd@fdos.org</email>
</author>
<published>2012-10-22T18:20:18+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/syslinux.git/commit/?id=7307d60063ee4303da4de45f9d984fdc8df92146'/>
<id>7307d60063ee4303da4de45f9d984fdc8df92146</id>
<content type='text'>
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 &amp; 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 &lt;jeremyd@fdos.org&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>
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 &amp; 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 &lt;jeremyd@fdos.org&gt;
Signed-off-by: Matt Fleming &lt;matt.fleming@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Add per-firmware object directory support</title>
<updated>2012-10-16T10:38:01+00:00</updated>
<author>
<name>Matt Fleming</name>
<email>matt.fleming@intel.com</email>
</author>
<published>2012-09-25T13:45:18+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/syslinux.git/commit/?id=1408e6ca7b3854d94aaa39612b4bb6fdf9111dc7'/>
<id>1408e6ca7b3854d94aaa39612b4bb6fdf9111dc7</id>
<content type='text'>
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 &lt;matt.fleming@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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 &lt;matt.fleming@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge remote-tracking branch 'mfleming/elflink' into for-hpa/elflink/firmware</title>
<updated>2012-07-30T08:51:36+00:00</updated>
<author>
<name>Matt Fleming</name>
<email>matt.fleming@intel.com</email>
</author>
<published>2012-07-27T09:41:30+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/syslinux.git/commit/?id=0d6f330878173c7ba45b884f3e41ce40b917c73c'/>
<id>0d6f330878173c7ba45b884f3e41ce40b917c73c</id>
<content type='text'>
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
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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
</pre>
</div>
</content>
</entry>
<entry>
<title>This patch implements architecture-dependent code in memdisk to support for i386 and x86_64.</title>
<updated>2012-06-25T19:47:24+00:00</updated>
<author>
<name>chandramouli narayanan</name>
<email>mouli@linux.intel.com</email>
</author>
<published>2012-06-25T19:47:24+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/syslinux.git/commit/?id=6dcc24c818de73fcf54e1cae57f560cb5f01f125'/>
<id>6dcc24c818de73fcf54e1cae57f560cb5f01f125</id>
<content type='text'>
The memcpy, memset and memmove routines originated from klibc.

Remanants of the unused old i386-only files, if any, need to be pruned.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The memcpy, memset and memmove routines originated from klibc.

Remanants of the unused old i386-only files, if any, need to be pruned.
</pre>
</div>
</content>
</entry>
<entry>
<title>The make files have undergone changes to support both i386 and x86_64 platforms.</title>
<updated>2012-06-25T19:45:26+00:00</updated>
<author>
<name>chandramouli narayanan</name>
<email>mouli@linux.intel.com</email>
</author>
<published>2012-06-25T19:45:26+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/syslinux.git/commit/?id=38e58635d3868c23537fc5dce87b152a52df34ad'/>
<id>38e58635d3868c23537fc5dce87b152a52df34ad</id>
<content type='text'>
Pertinent changes are sprinkled through *.mk and Makefile in the syslinux tree.

Build architecture is specified at the command line via ARCH macro. This is to enable whether
one is building for the native platform or cross-building for a different architecture. Currently,
the only supported architectures via ARCH macro are i386 and x86_64.

There are some modules (e.g. memdump) that don't build under the EFI environment. To go forward
with efi boot support, a separate EFI_BUILD=1 macro has been added and is required to be
specified while building. This is a temporary solution for the current build environment.

example build:

On a x86_64 platform, the following cross-builds syslinux for i386
To build for i386: make EFI_BUILD=1 ARCH=i386

On a x86_64 platform, the following builds syslinux for x86_64
To build natively: make EFI_BUILD=1

Changes specific to GCC and LD options:

Architecture specific flags and include/search directories are set up for GCC and LD commands.
Internally, GCC options such as stack-boundary, PIC and machine architecture are set up
based on ARCH macro. While stack-boundary=2 is fine for i386, it does not work for x86_64
and so it is left to the default value. Using -fPIE with gcc does not work with ld on x86_64,
but -fPIC works fine. Similarly, target and elf options are set up for linking
as approrpriate for architecture.

Assumption about gnu-efi install path:

Since the EFI build supports both EFI32 and EFI64, the following assumptions
are made with regard to the installed location of gnu-efi on the build platform.
1. gnu-efi-ia32: assumed installed in /usr/local
[ EFI-32 include files in /usr/local/include/efi and gnu-efi library in /usr/local/lib/ ]
2. gnu-efi-x86_64: assumed installed in /usr
[ EFI-64 include files in /usr/include/efi and gnu-efi library in /usr/lib64/ ]

Remanants of the unused old i386-only files, if any, need to be pruned.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pertinent changes are sprinkled through *.mk and Makefile in the syslinux tree.

Build architecture is specified at the command line via ARCH macro. This is to enable whether
one is building for the native platform or cross-building for a different architecture. Currently,
the only supported architectures via ARCH macro are i386 and x86_64.

There are some modules (e.g. memdump) that don't build under the EFI environment. To go forward
with efi boot support, a separate EFI_BUILD=1 macro has been added and is required to be
specified while building. This is a temporary solution for the current build environment.

example build:

On a x86_64 platform, the following cross-builds syslinux for i386
To build for i386: make EFI_BUILD=1 ARCH=i386

On a x86_64 platform, the following builds syslinux for x86_64
To build natively: make EFI_BUILD=1

Changes specific to GCC and LD options:

Architecture specific flags and include/search directories are set up for GCC and LD commands.
Internally, GCC options such as stack-boundary, PIC and machine architecture are set up
based on ARCH macro. While stack-boundary=2 is fine for i386, it does not work for x86_64
and so it is left to the default value. Using -fPIE with gcc does not work with ld on x86_64,
but -fPIC works fine. Similarly, target and elf options are set up for linking
as approrpriate for architecture.

Assumption about gnu-efi install path:

Since the EFI build supports both EFI32 and EFI64, the following assumptions
are made with regard to the installed location of gnu-efi on the build platform.
1. gnu-efi-ia32: assumed installed in /usr/local
[ EFI-32 include files in /usr/local/include/efi and gnu-efi library in /usr/local/lib/ ]
2. gnu-efi-x86_64: assumed installed in /usr
[ EFI-64 include files in /usr/include/efi and gnu-efi library in /usr/lib64/ ]

Remanants of the unused old i386-only files, if any, need to be pruned.
</pre>
</div>
</content>
</entry>
<entry>
<title>This is a giant patch that splits the linker scripts for libraries, modules and executables into</title>
<updated>2012-06-25T19:43:03+00:00</updated>
<author>
<name>chandramouli narayanan</name>
<email>mouli@linux.intel.com</email>
</author>
<published>2012-06-25T19:43:03+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/syslinux.git/commit/?id=d8eede3f2a360163235fad222a0190cd7c5bef38'/>
<id>d8eede3f2a360163235fad222a0190cd7c5bef38</id>
<content type='text'>
the architecture-dependent scripts to facilitate building syslinux modules/executables
for i386 and x86_64 environments. The x86_64 linker scripts are derived from the earlier i386
counterparts.

Subdirectories i386 and x86_64 hold the respective linker scripts mentioned below.
com32/lib/sylinux.ld
com32/lib/elf.ld
core/syslinux.ld
efi/syslinux.ld
mbr/mbr.ld
memdisk/memdisk.ld

Remanants of the unused old i386-only files, if any, need to be pruned.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
the architecture-dependent scripts to facilitate building syslinux modules/executables
for i386 and x86_64 environments. The x86_64 linker scripts are derived from the earlier i386
counterparts.

Subdirectories i386 and x86_64 hold the respective linker scripts mentioned below.
com32/lib/sylinux.ld
com32/lib/elf.ld
core/syslinux.ld
efi/syslinux.ld
mbr/mbr.ld
memdisk/memdisk.ld

Remanants of the unused old i386-only files, if any, need to be pruned.
</pre>
</div>
</content>
</entry>
<entry>
<title>Makefile: Use -Ox option to NASM</title>
<updated>2012-03-26T21:59:39+00:00</updated>
<author>
<name>H. Peter Anvin</name>
<email>hpa@linux.intel.com</email>
</author>
<published>2012-03-26T21:59:39+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/syslinux.git/commit/?id=9f8174439428e624088648276b7d1ee11e504594'/>
<id>9f8174439428e624088648276b7d1ee11e504594</id>
<content type='text'>
We already require a new enough version of NASM that the -Ox option is
supported, so just use it.

Signed-off-by: H. Peter Anvin &lt;hpa@linux.intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We already require a new enough version of NASM that the -Ox option is
supported, so just use it.

Signed-off-by: H. Peter Anvin &lt;hpa@linux.intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Makefile: Move Makefile fragments into mk/</title>
<updated>2011-04-07T16:59:11+00:00</updated>
<author>
<name>Matt Fleming</name>
<email>matt.fleming@linux.intel.com</email>
</author>
<published>2011-04-07T16:12:08+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/syslinux.git/commit/?id=d7e6cfaa6a990eb8fe2eaabe7fad1d1c8367a7ee'/>
<id>d7e6cfaa6a990eb8fe2eaabe7fad1d1c8367a7ee</id>
<content type='text'>
Move the MCONFIG files into a mk/ directory and give them more
descriptive names.

This is purely a cosmetic change to make the 'include' directives a
bit more coherent by making it obvious exactly which MCONFIG file
we're including. For example, in com32/lua/src/Makefile we exchange
the line,

	include ../../MCONFIG

for the much more comprehensible,

	include $(MAKEDIR)/com32.mk

Signed-off-by: Matt Fleming &lt;matt.fleming@linux.intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Move the MCONFIG files into a mk/ directory and give them more
descriptive names.

This is purely a cosmetic change to make the 'include' directives a
bit more coherent by making it obvious exactly which MCONFIG file
we're including. For example, in com32/lua/src/Makefile we exchange
the line,

	include ../../MCONFIG

for the much more comprehensible,

	include $(MAKEDIR)/com32.mk

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