10 years agoman: --nbi, not --NBI master
H. Peter Anvin [Fri, 16 Jul 2010 18:14:20 +0000 (11:14 -0700)]
man: --nbi, not --NBI

The long option is not capitalized.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
10 years agowraplinux 1.7 wraplinux-1.7
H. Peter Anvin [Fri, 16 Jul 2010 17:55:33 +0000 (10:55 -0700)]
wraplinux 1.7

11 years agohighmove: handle zImage and setup separately
H. Peter Anvin [Sat, 29 May 2010 03:50:39 +0000 (20:50 -0700)]
highmove: handle zImage and setup separately

It doesn't really work to try to combine the zImage PM code and the
setup code into a single copy unit.  Separate them into two.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
11 years agodoc: Explain we need --load-high because of Grub.
H. Peter Anvin [Fri, 28 May 2010 23:20:13 +0000 (16:20 -0700)]
doc: Explain we need --load-high because of Grub.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
11 years agodoc: clarify what --load-high does a little more.
H. Peter Anvin [Fri, 28 May 2010 23:19:23 +0000 (16:19 -0700)]
doc: clarify what --load-high does a little more.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
11 years agoDocument and rename the high load options
Paul Bolle [Fri, 28 May 2010 22:59:31 +0000 (00:59 +0200)]
Document and rename the high load options

Rename the high load options (to --load-high and --no-load-high).
Document these options too.

(Move the params option to the top in the man page, for consistency.)

Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
11 years agoWritespace cleanup
H. Peter Anvin [Fri, 28 May 2010 21:17:34 +0000 (14:17 -0700)]
Writespace cleanup

11 years agoHandle loading above 1 MB, for bug-compatibility with Grub
H. Peter Anvin [Fri, 28 May 2010 21:15:50 +0000 (14:15 -0700)]
Handle loading above 1 MB, for bug-compatibility with Grub

Handle being loaded by bootloaders which can only load above 1 MB.
This is for bug-compatibility with Grub, which will err out with an
angry message if it sees addresses below 1 MB in Multiboot.

Thus add a new --loadhigh option, and make it the default when
building a --multiboot image.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
11 years agomain.c: fix silly broken line
H. Peter Anvin [Thu, 27 May 2010 14:28:17 +0000 (07:28 -0700)]
main.c: fix silly broken line

Make the code easier to read by unbreaking a line of text to be
printed verbatim.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
11 years agoAdd "M" as a valid option character
Paul Bolle [Thu, 27 May 2010 10:13:39 +0000 (12:13 +0200)]
Add "M" as a valid option character

The "M" option was missing from the short options list passed to

Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
11 years agole.h: add 64-bit functions, minor cleanups
H. Peter Anvin [Thu, 27 May 2010 14:20:39 +0000 (07:20 -0700)]
le.h: add 64-bit functions, minor cleanups

Add 64-bit functions; we don't use them right now but probably will in
the future.  Also test for __386__, since some non-gcc compilers use
__386__ instead of __i386__.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
11 years agoelf.c: correct the Multiboot checksum algorithms
H. Peter Anvin [Thu, 27 May 2010 13:54:30 +0000 (06:54 -0700)]
elf.c: correct the Multiboot checksum algorithms

The Multiboot checksum *only* applies to the "magic" and "flags"
fields, even if other fields in the header are actually used.

Accordingly, open-code the checksum algorithm instead of looping;
looping over two fields is kind of pointless.

Note that since those are the only non-zero fields in the current
header, the existing algorithm does produce the correct result.  This
is therefore a cleanup/future-proofing patch and not a critical bug

Reported-by: Paul Bolle <pebolle@tiscali.nl>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
12 years agoMinor man page cleanups; update man page copyright
H. Peter Anvin [Fri, 20 Mar 2009 00:06:35 +0000 (17:06 -0700)]
Minor man page cleanups; update man page copyright

Do a few minor cleanups to the man page.  Add Intel copyright.

12 years agomapfile: use bool
H. Peter Anvin [Fri, 13 Feb 2009 00:47:30 +0000 (16:47 -0800)]
mapfile: use bool

We already rely on <stdbool.h>, so use bool for the "writable" flag.

12 years agomapfile.c: minor stylistic cleanup
H. Peter Anvin [Fri, 13 Feb 2009 00:45:22 +0000 (16:45 -0800)]
mapfile.c: minor stylistic cleanup

Minor stylistic cleanup in mapfile.c; emphasize that the actual system
calls are the same in both branches of the "writable" conditional.

12 years agoProvide $(PERL) even when MCONFIG doesn't exist yet
H. Peter Anvin [Fri, 13 Feb 2009 00:40:43 +0000 (16:40 -0800)]
Provide $(PERL) even when MCONFIG doesn't exist yet

We run mkdep.pl before configure is run, so MCONFIG doesn't exist
yet.  Therefore, if PERL isn't defined, define it.

12 years agowraplinux 1.6 wraplinux-1.6
H. Peter Anvin [Thu, 14 Aug 2008 20:54:21 +0000 (13:54 -0700)]
wraplinux 1.6

12 years agoreloc.S: don't prevent !exec stack
H. Peter Anvin [Thu, 14 Aug 2008 20:53:19 +0000 (13:53 -0700)]
reloc.S: don't prevent !exec stack

Set the bit that allows the linker to generate the GNU_STACK
annotation, thus preventing the stack from execution.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
12 years agoMakefile: rules for generating .s and .i files
H. Peter Anvin [Thu, 14 Aug 2008 20:52:37 +0000 (13:52 -0700)]
Makefile: rules for generating .s and .i files

For debugging, it's often handy to have .s and .i files, so permit
them to be generated, and clean them up if necessary.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
12 years agowraplinux 1.5 wraplinux-1.5
H. Peter Anvin [Thu, 7 Aug 2008 22:36:50 +0000 (15:36 -0700)]
wraplinux 1.5

12 years agoa20: issue a null command after toggling the KBC
H. Peter Anvin [Fri, 27 Jun 2008 20:09:13 +0000 (13:09 -0700)]
a20: issue a null command after toggling the KBC

Issue a null command after toggling the KBC, to avoid confusing UHCI
USB controllers.  Apparently DOS did this, probably for
synchronization reasons, and the UHCI specification took it as the end
of the A20 toggle sequence.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
13 years agowraplinux 1.4 wraplinux-1.4
H. Peter Anvin [Mon, 9 Jun 2008 23:23:50 +0000 (16:23 -0700)]
wraplinux 1.4

13 years agoFix NBI flags in the presence of segment merging
Michael Brown [Mon, 9 Jun 2008 23:11:25 +0000 (00:11 +0100)]
Fix NBI flags in the presence of segment merging

output_nbi() was calculating ihdr.flags before merging in subsequent
segments; this meant that if the last segment got merged,
NBI_IFLAG_LAST was never set.  This breaks mknbi's disnbi.pl and
causes gPXE to reject the NBI file as invalid.

Move the calculation of ihdr.flags until after segment merging has
taken place.

Signed-off-by: Michael Brown <mcb30@etherboot.org>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
13 years agowraplinux.spec: add %{_smp_mflags}
H. Peter Anvin [Tue, 27 May 2008 19:39:04 +0000 (12:39 -0700)]
wraplinux.spec: add %{_smp_mflags}

Add %{_smp_mflags}; hardly critical for a program as small as
wraplinux, but for good measure...

13 years agowraplinux 1.3 wraplinux-1.3
H. Peter Anvin [Tue, 27 May 2008 19:23:08 +0000 (12:23 -0700)]
wraplinux 1.3

13 years agoSupport generating Multiboot-compliant ELF images
H. Peter Anvin [Tue, 27 May 2008 19:13:24 +0000 (12:13 -0700)]
Support generating Multiboot-compliant ELF images

Support generating Multiboot-compliant ELF images.  This is handled by
generating a Multiboot header inside a dedicated no-SHF_ALLOC section,
which is forced to be the first section in the file.

Clean up the ELF code somewhat, and make it handle no-ALLOC sections
correctly (no PHDR for a section which isn't ALLOC.)

13 years agoChange -fPIC to -fPIE
H. Peter Anvin [Thu, 8 May 2008 21:15:30 +0000 (14:15 -0700)]
Change -fPIC to -fPIE

What we really want is -fPIE, since we link everything into a single
binary.  From the gcc changelog:

    Also, it adds -fpie/-fPIE options which are similar to
    -fpic/-fPIC, with the difference that the GCC can assume the
    created position independent code will be always linked into an
    executable (whether position independent or not). ATM the
    difference is in binds_local - like in non-fpic code GCC can
    assume any non-common object defined in the same module, even if
    not static, will be in the same binary (which means GOT relative
    accesses to such variables, ability to inline non-static functions
    at -O3, etc.).

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
13 years agowraplinux 1.2 wraplinux-1.2
H. Peter Anvin [Mon, 31 Mar 2008 20:36:59 +0000 (13:36 -0700)]
wraplinux 1.2

13 years agomemmove(): use %edx as temporary; don't save %ebx (untouched)
H. Peter Anvin [Thu, 14 Feb 2008 01:53:21 +0000 (17:53 -0800)]
memmove(): use %edx as temporary; don't save %ebx (untouched)

Use %edx as a temporary instead of %eax (since the standard C
convention for memmove() is that it returns its destination argument,
which is trivial if we don't ever clobber %eax), and since %ebx is
never actually used in the function, don't bother saving it.

13 years agoreloc/reloc_init.S: save/restore preserved GPRs if we return
H. Peter Anvin [Wed, 6 Feb 2008 07:52:11 +0000 (23:52 -0800)]
reloc/reloc_init.S: save/restore preserved GPRs if we return

If we return to the calling environment, save and restore the GPRs
that are preserved by the normal 32-bit C calling conventions: %ebx,
%ebp, %esi, %edi.

13 years agoreloc/reloc_linux.c: Remove unused variables
H. Peter Anvin [Wed, 6 Feb 2008 07:49:24 +0000 (23:49 -0800)]
reloc/reloc_linux.c: Remove unused variables

13 years agoreloc.h: add prototype for intcall()
H. Peter Anvin [Wed, 6 Feb 2008 07:48:40 +0000 (23:48 -0800)]
reloc.h: add prototype for intcall()

Add missing prototype for intcall()

13 years agoMCONFIG.in: compile with -W -Wall
H. Peter Anvin [Wed, 6 Feb 2008 07:48:09 +0000 (23:48 -0800)]
MCONFIG.in: compile with -W -Wall

Give us some warnings...

13 years agoMove dependencies to a separate file wraplinux-1.1
H. Peter Anvin [Wed, 16 Jan 2008 19:26:12 +0000 (14:26 -0500)]
Move dependencies to a separate file

Move the dependencies to a separate file, since we require GNU Make

13 years agoAdd a .gitignore file to make "git status" useful
H. Peter Anvin [Wed, 16 Jan 2008 19:21:46 +0000 (14:21 -0500)]
Add a .gitignore file to make "git status" useful

13 years agowraplinux 1.1
H. Peter Anvin [Wed, 16 Jan 2008 19:19:50 +0000 (14:19 -0500)]
wraplinux 1.1

13 years agoELF: calculate the padding properly when joining sections
H. Peter Anvin [Tue, 15 Jan 2008 19:42:32 +0000 (14:42 -0500)]
ELF: calculate the padding properly when joining sections

Fix the computation of padding when merging PHDRs.

13 years agoUse alignment parameter for initrd; coalescing support for NBI
H. Peter Anvin [Tue, 15 Jan 2008 19:30:54 +0000 (14:30 -0500)]
Use alignment parameter for initrd; coalescing support for NBI

Use the alignment parameter instead of padding the initrd segments;
add support for coalescing adjacent segments in the NBI backend.

13 years agoCopyright rPath, Inc. not H. Peter Anvin wraplinux-1.0
H. Peter Anvin [Sat, 12 Jan 2008 05:08:19 +0000 (21:08 -0800)]
Copyright rPath, Inc. not H. Peter Anvin

Since this is released as a separate project, instead of part of
SYSLINUX, it really should be Copyright rPath, Inc.

13 years agowraplinux: use an actual ljmp after %cr0 transition
H. Peter Anvin [Sat, 12 Jan 2008 01:20:26 +0000 (17:20 -0800)]
wraplinux: use an actual ljmp after %cr0 transition

Be even more paranoid and use an actual ljmp (instead of lretw) after
a %cr0 transition.

13 years agoconfigure.in: use autoconf 2.61
H. Peter Anvin [Sat, 12 Jan 2008 00:26:58 +0000 (16:26 -0800)]
configure.in: use autoconf 2.61

Apparently we're already using autoconf 2.61-isms; may as well make it
formally so.  As such, enable AC_USE_SYSTEM_EXTENSIONS.

13 years agowraplinux 1.0
H. Peter Anvin [Fri, 11 Jan 2008 06:03:55 +0000 (22:03 -0800)]
wraplinux 1.0

13 years agoMCONFIG.in: Add datarootdir to shut up autoconf
H. Peter Anvin [Fri, 11 Jan 2008 06:03:38 +0000 (22:03 -0800)]
MCONFIG.in: Add datarootdir to shut up autoconf

autoconf complains if we don't have datarootdir, even though we don't
use it.

13 years ago"make install" et al
H. Peter Anvin [Fri, 11 Jan 2008 05:58:16 +0000 (21:58 -0800)]
"make install" et al

13 years ago"make release" target
H. Peter Anvin [Fri, 11 Jan 2008 05:50:36 +0000 (21:50 -0800)]
"make release" target

13 years agoAdd RPM specfile
H. Peter Anvin [Fri, 11 Jan 2008 05:44:57 +0000 (21:44 -0800)]
Add RPM specfile

13 years agoDocumentation cleanup, add COPYING
H. Peter Anvin [Fri, 11 Jan 2008 05:41:53 +0000 (21:41 -0800)]
Documentation cleanup, add COPYING

Add COPYING file, and clean up documentation

13 years agoelf: clean up and correct the PHDR merging code
H. Peter Anvin [Fri, 11 Jan 2008 05:41:28 +0000 (21:41 -0800)]
elf: clean up and correct the PHDR merging code

The PHDR merging code used "if" instead of "while", causing issues.
Also, put in a couple of asserts, as well as use the same code for the
PHDR enumeration as for the generation.

13 years agoAdd wraplinux --version (-V)
H. Peter Anvin [Fri, 11 Jan 2008 04:52:48 +0000 (20:52 -0800)]
Add wraplinux --version (-V)

13 years agoman page: fix copyright notice
H. Peter Anvin [Fri, 11 Jan 2008 03:46:28 +0000 (19:46 -0800)]
man page: fix copyright notice

13 years agoAdd "make distclean"
H. Peter Anvin [Fri, 11 Jan 2008 03:45:13 +0000 (19:45 -0800)]
Add "make distclean"

13 years agoAdd "make cleaner" and "make spotless"
H. Peter Anvin [Fri, 11 Jan 2008 03:44:06 +0000 (19:44 -0800)]
Add "make cleaner" and "make spotless"

13 years agoautoconf wants install-sh
H. Peter Anvin [Fri, 11 Jan 2008 03:43:16 +0000 (19:43 -0800)]
autoconf wants install-sh

13 years agoAutoconstipate the build setup, and generate dependencies.
H. Peter Anvin [Fri, 11 Jan 2008 03:41:03 +0000 (19:41 -0800)]
Autoconstipate the build setup, and generate dependencies.

Add autoconstipation framework (from mkzfree) and dependency
generation (from nasm).

13 years agoAdd man page
Marty Connor [Fri, 11 Jan 2008 03:38:06 +0000 (22:38 -0500)]
Add man page

13 years agoRe-enable optimization for the host code
H. Peter Anvin [Fri, 11 Jan 2008 03:16:56 +0000 (19:16 -0800)]
Re-enable optimization for the host code

A debugging decision to disable optimization had accidentally slunk
into the release tree.

13 years agoAdd version file
H. Peter Anvin [Fri, 11 Jan 2008 03:16:20 +0000 (19:16 -0800)]
Add version file

13 years agoGo to Linux kernel indentation style throughout
H. Peter Anvin [Fri, 11 Jan 2008 03:13:39 +0000 (19:13 -0800)]
Go to Linux kernel indentation style throughout

13 years agoreloc: _exit can't be global unless %ebx is regenerated
H. Peter Anvin [Fri, 11 Jan 2008 03:05:41 +0000 (19:05 -0800)]
reloc: _exit can't be global unless %ebx is regenerated

We don't currently use the _exit symbol in reloc_init.S, so we can
rely on main() preserving %ebx around it.  However, if something were
to call _exit() directly this wouldn't be the case, so don't make
_exit a global unless we add %ebx reinitialization.

13 years agoreloc/a20.S: Add newline at end of file
H. Peter Anvin [Fri, 11 Jan 2008 02:31:45 +0000 (18:31 -0800)]
reloc/a20.S: Add newline at end of file

13 years agoreloc: add code to force A20 enabled just in case...
H. Peter Anvin [Fri, 11 Jan 2008 02:30:07 +0000 (18:30 -0800)]
reloc: add code to force A20 enabled just in case...

13 years agoNBI: try to calculate a valid free area; ignore non-PROGBITS segments
H. Peter Anvin [Fri, 11 Jan 2008 01:56:56 +0000 (17:56 -0800)]
NBI: try to calculate a valid free area; ignore non-PROGBITS segments

NBI backend:
- try to pick a valid free area in low memory for the header.
- ignore segments other than PROGBITS segments.

13 years agoreloc.ld: whitespace cleanup
H. Peter Anvin [Tue, 8 Jan 2008 22:34:53 +0000 (14:34 -0800)]
reloc.ld: whitespace cleanup

13 years agoAlign the kernel to a 16-byte boundary
H. Peter Anvin [Tue, 8 Jan 2008 22:30:54 +0000 (14:30 -0800)]
Align the kernel to a 16-byte boundary

Align the kernel to a 16-byte boundary in the image.  This is meant to
improve copying performance.

13 years agoelf: Correct the merging code for differing alignment
H. Peter Anvin [Tue, 8 Jan 2008 22:30:26 +0000 (14:30 -0800)]
elf: Correct the merging code for differing alignment

Handle the case of unequal alignment (first.align > second.align) when
merging PHDRs.

13 years agoelf: Merge adjacent PHDRs if alignment and attributes match
H. Peter Anvin [Tue, 8 Jan 2008 22:27:03 +0000 (14:27 -0800)]
elf: Merge adjacent PHDRs if alignment and attributes match

Merge adjacent PHDRs (but *not* SHDRs!) if alignment and attributes
match appropriately.

13 years agoHandle alignment constraints if the backends support them
H. Peter Anvin [Tue, 8 Jan 2008 20:04:33 +0000 (12:04 -0800)]
Handle alignment constraints if the backends support them

Handle in-file alignment constraints if the backend supports them
(e.g. ELF.)

13 years agoReorder struct segment
H. Peter Anvin [Tue, 8 Jan 2008 01:14:52 +0000 (17:14 -0800)]
Reorder struct segment

Reorder struct segment to make more sense on 64-bit platforms.

13 years agosegment.h: change the "length" argument to a size_t
H. Peter Anvin [Tue, 8 Jan 2008 01:12:39 +0000 (17:12 -0800)]
segment.h: change the "length" argument to a size_t

Change the "length" argument to a size_t to make it easier to pass
around on 64-bit platforms.

13 years agoFactor out mapping/unmapping of files
H. Peter Anvin [Mon, 7 Jan 2008 04:37:48 +0000 (20:37 -0800)]
Factor out mapping/unmapping of files

Factor out file map/unmap; this will make porting to non-Unix
operating systems and/or support nonfile inputs easier.

13 years agofopen(..., "wb") to make ports to other operating systems easier
H. Peter Anvin [Mon, 7 Jan 2008 04:20:04 +0000 (20:20 -0800)]
fopen(..., "wb") to make ports to other operating systems easier

"wb" is the same as "w" for Unix, but for some other OSes it matter.
Right now the code isn't inherently portable (due to mmap()), but it
should be easy enough to port.

13 years agoSupport -o -, note what the defaults are
H. Peter Anvin [Sun, 6 Jan 2008 04:44:04 +0000 (20:44 -0800)]
Support -o -, note what the defaults are

13 years agoAdditional whitespace cleanup
H. Peter Anvin [Sun, 6 Jan 2008 04:41:31 +0000 (20:41 -0800)]
Additional whitespace cleanup

13 years agoAdd usage message
Marty Connor [Sun, 6 Jan 2008 04:40:46 +0000 (20:40 -0800)]
Add usage message

Add a usage message and -h/--help option

13 years agoReturn a meaningful return code; whitespace cleanup
H. Peter Anvin [Sun, 6 Jan 2008 04:38:27 +0000 (20:38 -0800)]
Return a meaningful return code; whitespace cleanup

13 years agoRemove unused xstrdup() function
H. Peter Anvin [Sun, 6 Jan 2008 04:32:23 +0000 (20:32 -0800)]
Remove unused xstrdup() function

13 years agoUse xmalloc, xcalloc, xasprintf
H. Peter Anvin [Sun, 6 Jan 2008 04:26:32 +0000 (20:26 -0800)]
Use xmalloc, xcalloc, xasprintf

Use xmalloc, xcalloc, xasprintf to handle out of memory errors.

13 years agoAdd error messages
H. Peter Anvin [Sun, 6 Jan 2008 04:16:56 +0000 (20:16 -0800)]
Add error messages

13 years agoRemove output routine from the reloc program, making it smaller
H. Peter Anvin [Sat, 5 Jan 2008 00:28:36 +0000 (16:28 -0800)]
Remove output routine from the reloc program, making it smaller

Save a fair bit of space in the reloc program by omitting the console
output routine and printf code.  They were useful for debugging, though.

13 years agoSort segments when outputting NBI
H. Peter Anvin [Sat, 5 Jan 2008 00:26:28 +0000 (16:26 -0800)]
Sort segments when outputting NBI

13 years agoHandle mem= and vga= in the Linux kernel command line.
H. Peter Anvin [Sat, 5 Jan 2008 00:24:47 +0000 (16:24 -0800)]
Handle mem= and vga= in the Linux kernel command line.

13 years agoAdd NBI support
H. Peter Anvin [Fri, 4 Jan 2008 22:48:56 +0000 (14:48 -0800)]
Add NBI support

13 years agoSort segments before emitting them
H. Peter Anvin [Fri, 4 Jan 2008 21:03:20 +0000 (13:03 -0800)]
Sort segments before emitting them

Sort segments in address order, to be nice to the loader.
Furthermore, this paves way for eventually issuing single PHDRs for
adjacent sections.

13 years agoCleaner memory map; avoid < 64K; handle older kernels
H. Peter Anvin [Fri, 4 Jan 2008 20:51:01 +0000 (12:51 -0800)]
Cleaner memory map; avoid < 64K; handle older kernels

Clean up the memory map by making the startup info part of the reloc
segment; this also allows it to be easily prepopulated.

Avoid using < 64K by putting the reloc between the setup and cmdline,
with proper guarding for overflow.

Handle older kernel protocols, and zImage kernels.

13 years agoInitial commit: functional for newer bzImage kernels
H. Peter Anvin [Fri, 4 Jan 2008 05:54:24 +0000 (21:54 -0800)]
Initial commit: functional for newer bzImage kernels