Commit Graph

2922 Commits

Author SHA1 Message Date
Vladimir Serbinenko e77c81f6f8 * grub-core/lib/reed_solomon.c: Use section _text, _text rather than
.text when compiling for Apple.
2013-11-24 05:14:11 +01:00
Vladimir Serbinenko 971dbee521 * grub-core/term/arc/console.c: Add missing cast to silence warning. 2013-11-24 05:05:34 +01:00
Vladimir Serbinenko 6f2e82be3a * grub-core/boot/i386/pc/boot.S: Fix floppy probe. Due to missing
%dx restore the probe worked on non-existant drive. Reorganize the
	code a little bit to free 2 bytes necessary for push/pop.
2013-11-24 05:05:33 +01:00
Vladimir Serbinenko 9eec9699b9 * grub-core/kern/mips/arc/init.c (grub_machine_get_bootlocation):
Add missing cast to silence warning.
2013-11-23 15:35:01 +01:00
Vladimir Serbinenko 1bba40f578 Move common BIOS/coreboot memory map declarations to
include/grub/i386/memory_raw.h and eliminate duplicate declarations.
2013-11-23 12:39:21 +01:00
Vladimir Serbinenko a92b5cb8d8 * grub-core/lib/libgcrypt/mpi/longlong.h: Use C version with mips
clang.
2013-11-23 00:36:13 +01:00
Vladimir Serbinenko e1c22419ac * grub-core/kern/xen/init.c: Do not map more pages than we can address. 2013-11-22 13:04:29 +01:00
Vladimir Serbinenko 189090cee9 * grub-core/kern/efi/mm.c: Limit allocations to 2GiB when not compiling
with -mcmodel=large.
2013-11-22 13:03:19 +01:00
Vladimir Serbinenko 1a5b7b404f * grub-core/kern/x86_64/dl.c (grub_arch_dl_relocate_symbols): Add
range-checking for 32-bit quantities.
2013-11-22 13:01:14 +01:00
Vladimir Serbinenko 4a0aaad022 clang emits calls to abort () under some unknown conditions.
Export abort () when compiling with clang.
2013-11-22 12:42:58 +01:00
Vladimir Serbinenko ddb3efc906 * grub-core/disk/i386/pc/biosdisk.c (grub_biosdisk_open): Ensure
at compile time that enough of scratch size is available.
2013-11-22 12:00:10 +01:00
Vladimir Serbinenko 4e42521d8c * grub-core/kern/x86_64/efi/callwrap.S: Fix stack alignment.
Previously we misaligned stack by 8 in startup.S and compensated
	for it in callwrap.S. According to ABI docs (EFI and sysv amd64)
	right behaviour is to align stack in startup.S and keep it aligned
	in callwrap.S. startup.S part was committed few commits before. This
	takes care of callwrap.S.
	Reported by: Gary Lin.
2013-11-22 05:40:32 +01:00
Vladimir Serbinenko 054efe541f * grub-core/boot/mips/startup_raw.S: Handle the case of gap between
.data and .bss. May happen if compiler and assembly use different
	alignment.
2013-11-22 05:07:32 +01:00
Vladimir Serbinenko a0e1befb57 On MIPS handle got16 relocations to local symbols in an ABI-compliant
way.
2013-11-22 05:03:17 +01:00
Vladimir Serbinenko c36c73f681 Add support for a new magic symbol _gp_disp on mips to handle PIC
binaries.
2013-11-22 04:56:10 +01:00
Vladimir Serbinenko 6f4a19f59f Use $t9 for indirect calls from asm to C as PIC ABI requires. 2013-11-22 04:45:05 +01:00
Vladimir Serbinenko 0d8f04cd83 Remove -march=mips3 from TARGET_CCASFLAGS as it creates linking problem
when rest of GRUB is compiled for hisher stepping. Instead use
	.set mips3/.set mips1 around cache and sync opcodes.
2013-11-22 04:36:53 +01:00
Vladimir Serbinenko 4906052019 Unify GOT/trampoline handling between PPC, MIPS and IA64 as they
do essentially the same thing, do it in similar way.
2013-11-21 21:54:33 +01:00
Colin Watson b7f9aedfac * grub-core/normal/progress.c: Remove unused file. 2013-11-21 15:37:57 +00:00
Vladimir Serbinenko 7dd0a30361 * grub-core/lib/crypto.c (grub_crypto_hash): Remove variable length
array.
2013-11-20 20:09:18 +01:00
Josh Triplett 7960d3e182 * grub-core/kern/x86_64/efi/startup.S (_start): Align the stack to a
16-byte boundary, as required by the x86-64 ABI, before calling
	grub_main.  In some cases, GCC emits code that assumes this
	alignment, which crashes if not aligned.  The EFI firmware is also
	entitled to assume that stack alignment without checking.
2013-11-19 14:31:40 +01:00
Leif Lindholm 8a07b55a04 arm64: cache maintenance code rework + bugfix 2013-11-19 10:05:23 +00:00
Josh Triplett d53f4900d7 * grub-core/mmap/efi/mmap.c (grub_mmap_register): Round up/down to
4k page boundaries as expected by firmware rather than 1k
	boundaries.
	(grub_mmap_malign_and_register): Likewise.
2013-11-18 18:00:52 +01:00
Vladimir Serbinenko 96fa2d9d02 Merge branch 'master' into leiflindholm/arm64 2013-11-18 17:51:28 +01:00
Vladimir Serbinenko 45bf8b3a75 * grub-core/kern/mm.c (grub_real_malloc): Decrease cut-off of moving the
pointer to 32K. This is the size of cache element which is the most
	common allocation >1K. This way the pointer is always around blocks
	of 32K and so we keep performance while decreasing fragmentation.
2013-11-18 17:41:37 +01:00
Vladimir Serbinenko 39ff43c579 * grub-core/kern/mm.c (grub_real_malloc): Don't update the pointer to
current memory when allocating large chunks. This significantly
	decreases memory fragmentation.
2013-11-18 16:58:55 +01:00
Vladimir Serbinenko 74e632fea8 * grub-core/kern/mips/qemu_mips/init.c (grub_machine_init): Update
clock frequency to 200 MHz,
2013-11-18 16:39:45 +01:00
Vladimir Serbinenko 4d5b72cdb4 Merge branch 'master' of git.sv.gnu.org:/srv/git/grub 2013-11-18 14:54:01 +01:00
Vladimir Serbinenko ea7c1a7d90 * grub-core/tests/videotest_checksum.c: Don't reload unifont if it's
already loaded. This saves memory needed for tests,
2013-11-18 14:38:31 +01:00
Vladimir Serbinenko 5e3cb8a747 * grub-core/term/terminfo.c (grub_cmd_terminfo): Fix a typo to make -g
work again.
2013-11-18 14:35:18 +01:00
Colin Watson 3bf4088b8b * grub-core/osdep/unix/hostdisk.c (grub_util_make_temporary_file):
Handle errors from mkstemp.
(grub_util_make_temporary_dir): Handle errors from mkdtemp.
2013-11-18 12:27:44 +00:00
Vladimir Serbinenko f8b4c3b6b3 * grub-core/tests/gfxterm_menu.c: Skip high-resolution tests on
low-memory platforms where we don't have enough memory for them.
	* grub-core/tests/videotest_checksum.c: Likewise.
2013-11-18 11:48:07 +01:00
Vladimir Serbinenko 4bf703206d * grub-core/tests/cmdline_cat_test.c: Don't reload unifont if it's
already loaded. This saves memory needed for tests,
2013-11-18 11:45:55 +01:00
Vladimir Serbinenko 2df8f43d3e * grub-core/lib/sparc64/setjmp.S: Force spilling of current window. 2013-11-18 10:01:36 +01:00
Vladimir Serbinenko 6f1bc8bc0f On i386-ieee1275 we run in paged mode. So we need to explicitly map
the devices before accessing them.
2013-11-18 04:32:33 +01:00
Vladimir Serbinenko 04f39f6df8 * grub-core/lib/relocator.c (grub_mm_check_real): Accept const char *
as file argument.
2013-11-18 02:45:25 +01:00
Vladimir Serbinenko 35d4761ce2 * grub-core/normal/cmdline.c (grub_cmdline_get): Plug memory leak. 2013-11-18 02:43:29 +01:00
Vladimir Serbinenko 33d02a42d6 * grub-core/kern/file.c (grub_file_open): Free file->name on failure.
(grub_file_close): Free file->name.
2013-11-18 02:41:42 +01:00
Vladimir Serbinenko 7bbb60cfbd * grub-core/commands/verify.c (free_pk): Plug memory leak.
(grub_load_public_key): Likewise.
	(grub_verify_signature_real): Likewise.
	(grub_cmd_verify_signature): Likewise.
2013-11-18 02:40:17 +01:00
Vladimir Serbinenko da93d6753b * grub-core/commands/legacycfg.c (grub_legacy_check_md5_password): Plug
memory leak.
2013-11-18 02:37:46 +01:00
Vladimir Serbinenko 59c943ecf6 * grub-core/lib/powerpc/setjmp.S (grub_setjmp): Save r31.
(grub_longjmp): Restore r31.
	* include/grub/powerpc/setjmp.h (grub_jmp_buf): Reserve space for r31.
2013-11-18 02:35:32 +01:00
Ian Campbell 7d400406a7 * grub-core/disk/uboot/ubootdisk.c: Include SCSI disks. 2013-11-17 15:38:09 +01:00
Vladimir Serbinenko 0ab8e025c1 * grub-core/tests/cmdline_cat_test.c (cmdline_cat_test): Ignore errors
of loading gfxterm as gfxterm is embed in kernel on some platforms.
	* grub-core/tests/gfxterm_menu.c (gfxterm_menu): Likewise.
	Load gfxmenu.
2013-11-17 02:13:33 +01:00
Leif Lindholm 15a463d742 ARM 64 port by Leif Lindholm 2013-11-16 20:52:55 +01:00
Vladimir Serbinenko cd46aa6cef Rewrite grub-install, grub-mkrescue, grub-mkstandalone and grub-mknetdir
the function of these files exceeds what can be sanely handled in shell
	in posix-comaptible way. Also writing it in C extends the functionality
	to non-UNIX-like OS and minimal environments.
2013-11-16 20:21:16 +01:00
Vladimir Serbinenko 9ef81064a3 * grub-core/kern/arm/cache.S: Don't switch back to ARM mode when
compiling to thumb2.
	* grub-core/kern/arm/cache_armv7.S: Likewise.
	* grub-core/lib/arm/setjmp.S: Likewise.
2013-11-16 17:37:06 +01:00
Leif Lindholm 11a7793221 arm: delete superflouous save of r8 in grub_uboot_syscall 2013-11-16 15:56:09 +00:00
Vladimir Serbinenko 080603f0b0 Decrease stack usage in lexer.
We have only 92K of stack and using over 4K per frame is wasteful

	* grub-core/script/yylex.l (yyalloc), (yyfree), (yyrealloc): Declare
	as macros so that compiler would remove useless structure on stack.
	Better solution would be to fix flex not to put this structure on
	the stack but flex is external program.
2013-11-16 16:37:59 +01:00
Vladimir Serbinenko 4f84ae0ec8 Decrease stack usage in signature verification.
We have only 92K of stack and using over 4K per frame is wasteful

	* grub-core/commands/verify.c (grub_load_public_key): Allocate on heap
	rather than stack.
	(grub_verify_signature_real): Likewise.
2013-11-16 16:34:51 +01:00
Vladimir Serbinenko e6a6182d95 Decrease stack usage in mdraid 0.9x.
We have only 92K of stack and using over 4K per frame is wasteful

	* grub-core/disk/mdraid_linux.c (grub_mdraid_detect): Allocate on heap
	rather than stack.
2013-11-16 16:16:48 +01:00
Vladimir Serbinenko 1a454efe89 Decrease stack usage in BtrFS.
We have only 92K of stack and using over 4K per frame is wasteful

	* grub-core/fs/btrfs.c (grub_btrfs_lzo_decompress): Allocate on heap
	rather than stack.
2013-11-16 16:15:26 +01:00
Vladimir Serbinenko 7b5d51d837 Decrease stack usage in JFS.
We have only 92K of stack and using over 4K per frame is wasteful

	* grub-core/fs/jfs.c (getblk): Allocate on heap rather than on
	stack. Note: this function is recursive.
	(grub_jfs_read_inode): Read only part we care about.
2013-11-16 16:00:42 +01:00
Leif Lindholm 593865b907 arm: fix u-boot port syscall interface va_arg handling
Commit c9cd02c broke the u-boot syscall API for va_args that spill over
to the stack, causing the disk support to stop working. This patch
resolves the problem, while keeping the new, cleaner transition_space
handling.
2013-11-16 14:12:12 +00:00
Andrey Borzenkov 9e18dfe277 MIPS grub_machine_get_bootlocation arguments are used 2013-11-16 16:59:07 +04:00
Vladimir Serbinenko 6fcec43954 Replace libgcc version of ctz with our own.
On upcoming arm64 port libgcc ctz* are not usable in standalone
	environment. Since we need ctz* for this case and implementation is
	in C we may as well use it on all concerned platforms.
2013-11-15 03:28:34 +01:00
Vladimir Serbinenko a9f25a0819 * configure.ac: Probe for linking format rather than guessing it based
on target_os.
2013-11-14 23:17:18 +01:00
Vladimir Serbinenko c7995256e4 * grub-core/disk/xen/xendisk.c (grub_xendisk_fini): Set state to
"1" prior to handoff.

	Reported by: M A Young.
2013-11-14 22:42:54 +01:00
Vladimir Serbinenko e1aa5b6620 * grub-core/kern/xen/init.c (grub_xenstore_write_file): Don't add
\0 to all files.

	Reported by: M A Young.
2013-11-14 22:40:50 +01:00
Vladimir Serbinenko da5ed5cf6b * grub-core/osdep/bsd/hostdisk.c (grub_util_get_fd_size_os): Fix
compilation on NetBSD.
2013-11-14 22:38:36 +01:00
Andrey Borzenkov a5986276ec add grub-core/tests/signatures.h to distfiles 2013-11-15 00:51:30 +04:00
Matthew Garrett 1fe26ab4a0 * grub-core/kern/main.c (grub_set_prefix_and_root): Set variable
cmdpath to firmware directory.
2013-11-14 15:53:32 +01:00
Vladimir Serbinenko 83e9c273e5 * grub-core/kern/efi/efi.c (grub_efi_get_filename): Reset the pointer
at the start of second iteration.
2013-11-14 15:50:43 +01:00
Vladimir Serbinenko ec525c18e1 * grub-core/Makefile.am (efiemu64.o): Explicitly set link format. 2013-11-14 12:05:48 +01:00
Vladimir Serbinenko 1d912bd3c9 Merge branch 'master' of git.sv.gnu.org:/srv/git/grub
Conflicts:
	ChangeLog
2013-11-14 10:05:54 +01:00
Vladimir Serbinenko 57ffe93485 * grub-core/kern/arm/cache_armv6.S: Remove special handling for
clang (not necessarry with -no-integrated-as).
	* include/grub/symbol.h [__arm__]: Likewise.
2013-11-14 10:05:19 +01:00
Colin Watson 5da5517288 * grub-core/fs/ext2.c (grub_ext2_read_block): Factor out common code for indirect block handling.
Saves 185 bytes on compressed image.
2013-11-14 08:13:06 +00:00
Leif Lindholm 035a26c16a * grub-core/kern/arm/misc.S: Make thumb2-compatible. 2013-11-14 01:33:06 +01:00
Colin Watson 81a2e438dc * grub-core/kern/misc.c: Don't redirect divisions in the
GRUB_UTIL case.
* include/grub/misc.h: Likewise.
2013-11-13 14:47:23 +00:00
Colin Watson 9b45c0733e * grub-core/osdep/unix/emuconsole.c (put): Pacify the compiler on
systems that require checking the return value of write.
2013-11-13 13:34:57 +00:00
Vladimir Serbinenko 2bdd07195c * grub-core/kern/arm/cache.c (probe_caches): Move asm part to ...
* grub-core/kern/arm/cache_armv6.S: ... here. This allows this
	asm to stay in arm even if surrounding is thumb.
2013-11-13 09:58:52 +01:00
Vladimir Serbinenko 5e77d9cfc1 * grub-core/kern/arm/misc.S: Add __muldi3 and __aeabi_lmul. Those
helper functions are needed for thumb.
2013-11-13 09:52:33 +01:00
Vladimir Serbinenko 7d5116251d * grub-core/disk/diskfilter.c (grub_diskfilter_make_raid): Make
level / 3 division explicitly unsigned. Saves few bytes.
2013-11-13 09:40:16 +01:00
Vladimir Serbinenko 81023dbdbd * grub-core/fs/zfs/zfs.c (ZAP_LEAF_NUMCHUNKS): Use unsigned arithmetics. 2013-11-13 09:27:36 +01:00
Vladimir Serbinenko b2e9294fb9 * grub-core/normal/datetime.c (grub_get_weekday): Use if rather than
division.
2013-11-13 09:26:13 +01:00
Vladimir Serbinenko 16a22c3851 * grub-core/kern/uboot/init.c: Move grub_uboot_machine_type and
grub_uboot_boot_data to asm part.
2013-11-13 06:28:15 +01:00
Vladimir Serbinenko c9cd02c965 * grub-core/kern/arm/uboot/startup.S: Remove = by replacing with
literal load.
	(grub_uboot_syscall): Save/restore r9 and align stack.
2013-11-13 06:27:03 +01:00
Vladimir Serbinenko 8149861554 * grub-core/kern/arm/cache.S: Replace = with explicit litteral load. 2013-11-13 06:23:32 +01:00
Vladimir Serbinenko ea57de18f8 * include/grub/symbol.h (END) [__arm__]: New macros. Replace all .end
occurencies with END.
2013-11-13 05:19:30 +01:00
Josh Triplett 46d8a2033b * grub-core/normal/term.c (grub_set_more): Use bool logic rather than
increment/decrement.
2013-11-13 02:27:11 +01:00
Vladimir Serbinenko c773faf05e Revert " * include/grub/symbol.h (ADDR): New macro. Replace all occurences of"
This reverts commit 286551b4eb.
2013-11-13 02:17:20 +01:00
Vladimir Serbinenko 513eeb61dd * grub-core/kern/arm/cache_armv6.S [__clang__]: Don't add .armv6 when
compiling with clang.
2013-11-13 01:08:47 +01:00
Vladimir Serbinenko bc379c1aa1 * grub-core/kern/arm/uboot/startup.S: Use .org rather than assigning
".".
2013-11-13 01:06:30 +01:00
Vladimir Serbinenko 286551b4eb * include/grub/symbol.h (ADDR): New macro. Replace all occurences of
=x with ADDR(x) in arm assembly.
	(END): New macro. Replace all .end with END.
2013-11-13 01:04:56 +01:00
Vladimir Serbinenko 16057d6bbb Redirect all divisions to grub_divmod64. 2013-11-13 00:53:53 +01:00
Vladimir Serbinenko f649a6a8fd * grub-core/term/tparm.c (tparam_internal): Use unsigned divisions. 2013-11-13 00:51:06 +01:00
Vladimir Serbinenko ef28ee8bc1 Add missing includes of loader.h. 2013-11-13 00:43:03 +01:00
Vladimir Serbinenko 0c62a5b28e * grub-core/term/at_keyboard.c: Don't poll non-functional AT controller
until it becomes operational.
2013-11-12 19:30:46 +01:00
Vladimir Serbinenko b0720b4988 * grub-core/Makefile.core.def (legacy_password_test): Disable
on platforms where no legacycfg is compiled.
	* grub-core/tests/lib/functional_test.c: Tolerate failure to
	load legacy_password_test.
2013-11-12 18:44:58 +01:00
Vladimir Serbinenko d5bab2c0e1 * grub-core/loader/i386/bsd.c: Remove variable length arrays. 2013-11-12 16:14:33 +01:00
Vladimir Serbinenko 3ea0ccb319 * grub-core/efiemu/prepare.c: Remove variable length arrays. 2013-11-12 16:12:28 +01:00
Vladimir Serbinenko 08772054e9 * grub-core/osdep/windows/hostdisk.c (grub_util_fd_strerror): Silence
strict-aliasing warning.
	(fsync): Silence cast warning.
2013-11-12 16:09:42 +01:00
Vladimir Serbinenko 1dcb27157d * grub-core/commands/verify.c: Remove variable length arrays.
Load gcry_dsa/gcry_rsa automatically.
2013-11-12 16:07:30 +01:00
Vladimir Serbinenko 61c22fdf36 * grub-core/tests/signature_test.c: New test. 2013-11-12 16:05:57 +01:00
Vladimir Serbinenko 431e57a797 * grub-core/disk/cryptodisk.c (luks_script_get): Adapt to new procfs
API.
2013-11-12 16:01:19 +01:00
Vladimir Serbinenko b521bb816d * grub-core/tests/legacy_password_test.c (vectors): Make static.
* grub-core/tests/pbkdf2_test.c (vectors): Likewise.
2013-11-12 15:59:58 +01:00
Vladimir Serbinenko 7d06b24eac * grub-core/tests/setjmp_test.c: Reset counter to 0 before starting. 2013-11-12 15:58:50 +01:00
Vladimir Serbinenko 3bbeade41d * grub-core/fs/proc.c: Allow \0 in proc files. 2013-11-12 15:57:09 +01:00
Vladimir Serbinenko ba82db7a0d * grub-core/tests/xnu_uuid_test.c: Fix assert message. 2013-11-12 14:11:34 +01:00
Vladimir Serbinenko 801564c804 * grub-core/tests/xnu_uuid_test.c: Fix copyright year. 2013-11-12 14:07:34 +01:00
Vladimir Serbinenko ac8cac1dac * grub-core/fs/ext2.c: Remove variable length arrays. 2013-11-12 03:04:19 +01:00