=== modified file 'configure.ac'
--- configure.ac 2012-02-10 15:48:48 +0000
+++ configure.ac 2012-02-10 23:28:12 +0000
@@ -373,9 +373,9 @@
LIBS=""
# debug flags.
-WARN_FLAGS="-Wall -W -Wshadow -Wold-style-declaration -Wold-style-definition -Wpointer-arith -Wmissing-prototypes -Wundef -Wextra -Waddress -Warray-bounds -Wattributes -Wbuiltin-macro-redefined -Wcast-align -Wchar-subscripts -Wclobbered -Wcomment -Wcoverage-mismatch -Wdeprecated -Wdeprecated-declarations -Wdisabled-optimization -Wdiv-by-zero -Wempty-body -Wendif-labels -Wfloat-equal -Wformat-contains-nul -Wformat-extra-args -Wformat-security -Wformat-y2k -Wignored-qualifiers -Wimplicit -Wimplicit-function-declaration -Wimplicit-int -Winit-self -Winline -Wint-to-pointer-cast -Winvalid-pch -Wunsafe-loop-optimizations -Wlogical-op -Wmain -Wmissing-braces -Wmissing-field-initializers -Wmissing-format-attribute -Wmissing-noreturn -Wmudflap -Wmultichar -Wnonnull -Woverflow -Wpacked-bitfield-compat -Wparentheses -Wpointer-arith -Wpointer-to-int-cast -Wreturn-type -Wsequence-point -Wshadow -Wsign-compare -Wstack-protector -Wstrict-aliasing -Wstrict-overflow -Wswitch -Wsync-nand -Wtrigraphs -Wtype-limits -Wundef -Wuninitialized -Wunknown-pragmas -Wunreachable-code -Wunused -Wunused-function -Wunused-label -Wunused-parameter -Wunused-result -Wunused-value -Wunused-variable -Wvariadic-macros -Wvolatile-register-var -Wwrite-strings -Wmissing-declarations -Wmissing-parameter-type -Wmissing-prototypes -Wnested-externs -Wstrict-prototypes -Wpointer-sign"
+WARN_FLAGS="-Wall -W -Wshadow -Wold-style-declaration -Wold-style-definition -Wpointer-arith -Wundef -Wextra -Waddress -Warray-bounds -Wattributes -Wbuiltin-macro-redefined -Wcast-align -Wchar-subscripts -Wclobbered -Wcomment -Wcoverage-mismatch -Wdeprecated -Wdeprecated-declarations -Wdisabled-optimization -Wdiv-by-zero -Wempty-body -Wendif-labels -Wfloat-equal -Wformat-contains-nul -Wformat-extra-args -Wformat-security -Wformat-y2k -Wignored-qualifiers -Wimplicit -Wimplicit-function-declaration -Wimplicit-int -Winit-self -Wint-to-pointer-cast -Winvalid-pch -Wunsafe-loop-optimizations -Wlogical-op -Wmain -Wmissing-braces -Wmissing-field-initializers -Wmissing-format-attribute -Wmissing-noreturn -Wmudflap -Wmultichar -Wnonnull -Woverflow -Wpacked-bitfield-compat -Wparentheses -Wpointer-arith -Wpointer-to-int-cast -Wreturn-type -Wsequence-point -Wshadow -Wsign-compare -Wstack-protector -Wstrict-aliasing -Wswitch -Wsync-nand -Wtrigraphs -Wtype-limits -Wundef -Wuninitialized -Wunknown-pragmas -Wunreachable-code -Wunused -Wunused-function -Wunused-label -Wunused-parameter -Wunused-result -Wunused-value -Wunused-variable -Wvariadic-macros -Wvolatile-register-var -Wwrite-strings -Wmissing-declarations -Wmissing-parameter-type -Wmissing-prototypes -Wnested-externs -Wstrict-prototypes -Wpointer-sign"
HOST_CFLAGS="$HOST_CFLAGS $WARN_FLAGS"
-TARGET_CFLAGS="$TARGET_CFLAGS $WARN_FLAGS -g -Wredundant-decls"
+TARGET_CFLAGS="$TARGET_CFLAGS $WARN_FLAGS -g -Wredundant-decls -Wmissing-prototypes"
TARGET_CCASFLAGS="$TARGET_CCASFLAGS -g"
# Force no alignment to save space on i386.
=== modified file 'docs/grub.texi'
--- docs/grub.texi 2012-01-31 21:59:32 +0000
+++ docs/grub.texi 2012-02-10 17:11:59 +0000
@@ -20,7 +20,7 @@
This manual is for GNU GRUB (version @value{VERSION},
@value{UPDATED}).
-Copyright @copyright{} 1999,2000,2001,2002,2004,2006,2008,2009,2010 Free Software Foundation, Inc.
+Copyright @copyright{} 1999,2000,2001,2002,2004,2006,2008,2009,2010,2011,2012 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
=== modified file 'gentpl.py'
--- gentpl.py 2011-12-24 14:09:26 +0000
+++ gentpl.py 2012-02-10 17:10:18 +0000
@@ -1,4 +1,19 @@
#! /usr/bin/python
+# GRUB -- GRand Unified Bootloader
+# Copyright (C) 2010,2011 Free Software Foundation, Inc.
+#
+# GRUB is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# GRUB is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GRUB. If not, see .
#
# This is the python script used to generate Makefile.tpl
=== modified file 'grub-core/disk/diskfilter.c'
--- grub-core/disk/diskfilter.c 2012-02-09 22:43:43 +0000
+++ grub-core/disk/diskfilter.c 2012-02-10 19:54:58 +0000
@@ -260,6 +260,24 @@
return list;
}
+void
+grub_diskfilter_print_partmap (grub_disk_t disk)
+{
+ struct grub_diskfilter_lv *lv = disk->data;
+ struct grub_diskfilter_pv *pv;
+
+ if (lv->vg->pvs)
+ for (pv = lv->vg->pvs; pv; pv = pv->next)
+ {
+ grub_size_t s;
+ if (!pv->disk)
+ grub_util_error (_("Couldn't find physical volume `%s'."
+ " Check your device.map"), pv->name);
+ for (s = 0; pv->partmaps[s]; s++)
+ grub_printf ("%s ", pv->partmaps[s]);
+ }
+}
+
static const char *
grub_diskfilter_getname (struct grub_disk *disk)
{
@@ -964,6 +982,19 @@
pv->part_start = grub_partition_get_start (disk->partition);
pv->part_size = grub_disk_get_size (disk);
+#ifdef GRUB_UTIL
+ {
+ grub_size_t s = 1;
+ grub_partition_t p;
+ for (p = disk->partition; p; p = p->parent)
+ s++;
+ pv->partmaps = xmalloc (s * sizeof (pv->partmaps[0]));
+ s = 0;
+ for (p = disk->partition; p; p = p->parent)
+ pv->partmaps[s++] = xstrdup (p->partmap->name);
+ pv->partmaps[s++] = 0;
+ }
+#endif
if (start_sector != (grub_uint64_t)-1)
pv->start_sector = start_sector;
pv->start_sector += pv->part_start;
=== modified file 'grub-core/kern/emu/full.c'
--- grub-core/kern/emu/full.c 2012-02-09 22:15:27 +0000
+++ grub-core/kern/emu/full.c 2012-02-10 20:37:43 +0000
@@ -50,7 +50,7 @@
grub_no_autoload = 1;
}
-#ifdef __ia64__
+#if defined (__ia64__) || defined (__powerpc__)
void grub_arch_dl_get_tramp_got_size (const void *ehdr __attribute__ ((unused)),
grub_size_t *tramp, grub_size_t *got)
{
=== modified file 'grub-core/script/execute.c'
--- grub-core/script/execute.c 2012-02-04 11:21:21 +0000
+++ grub-core/script/execute.c 2012-02-10 22:24:15 +0000
@@ -26,6 +26,7 @@
#include
#include
#include
+#include
/* Max digits for a char is 3 (0xFF is 255), similarly for an int it
is sizeof (int) * 3, and one extra for a possible -ve sign. */
@@ -312,8 +313,8 @@
struct grub_script_arg *arg = 0;
struct grub_script_argv result = { 0, 0, 0 };
- auto int append (char *s, int escape_type);
- int append (char *s, int escape_type)
+ auto int append (const char *s, int escape_type);
+ int append (const char *s, int escape_type)
{
int r;
char *p = 0;
@@ -379,12 +380,20 @@
break;
case GRUB_SCRIPT_ARG_TYPE_TEXT:
- if (grub_strlen (arg->str) &&
+ if (arg->str[0] &&
grub_script_argv_append (&result, arg->str,
grub_strlen (arg->str)))
goto fail;
break;
+ case GRUB_SCRIPT_ARG_TYPE_GETTEXT:
+ {
+ const char *t = _(arg->str);
+ if (grub_script_argv_append (&result, t, grub_strlen (t)))
+ goto fail;
+ }
+ break;
+
case GRUB_SCRIPT_ARG_TYPE_DQSTR:
case GRUB_SCRIPT_ARG_TYPE_SQSTR:
if (append (arg->str, 1))
=== modified file 'grub-core/script/yylex.l'
--- grub-core/script/yylex.l 2012-02-03 10:56:49 +0000
+++ grub-core/script/yylex.l 2012-02-10 22:20:27 +0000
@@ -131,15 +131,17 @@
SQCHR [^\']
DQCHR {ESC}|[^\\\"]
DQSTR \"{DQCHR}*\"
+I18NSTR \$\"{DQCHR}*\"
SQSTR \'{SQCHR}*\'
SPECIAL \?|\#|\*|\@
VARIABLE ${NAME}|$\{{NAME}\}|${DIGITS}|$\{{DIGITS}\}|${SPECIAL}|$\{{SPECIAL}\}
-WORD ({CHAR}|{DQSTR}|{SQSTR}|{ESC}|{VARIABLE})+
+WORD ({CHAR}|{DQSTR}|{SQSTR}|{ESC}|{VARIABLE}|{I18NSTR})+
MULTILINE {WORD}?((\"{DQCHR}*)|(\'{SQCHR}*)|(\\\n))
%x SPLIT
%x DQUOTE
+%x I18NQUOTE
%x SQUOTE
%x VAR
@@ -215,6 +217,10 @@
yy_push_state (SQUOTE, yyscanner);
ARG (GRUB_SCRIPT_ARG_TYPE_TEXT);
}
+ "\$\"" {
+ yy_push_state (I18NQUOTE, yyscanner);
+ ARG (GRUB_SCRIPT_ARG_TYPE_GETTEXT);
+ }
\$ {
yy_push_state (VAR, yyscanner);
ARG (GRUB_SCRIPT_ARG_TYPE_TEXT);
@@ -280,6 +286,18 @@
(.|\n) { COPY (yytext, yyleng); }
}
+{
+ \\\\ { COPY ("\\", 1); }
+ \\\" { COPY ("\"", 1); }
+ \\\n { /* ignore */ }
+ [^\"\\\n]+ { COPY (yytext, yyleng); }
+ \" {
+ yy_pop_state (yyscanner);
+ ARG (GRUB_SCRIPT_ARG_TYPE_GETTEXT);
+ }
+ (.|\n) { COPY (yytext, yyleng); }
+}
+
<> {
yypop_buffer_state (yyscanner);
yyextra->lexerstate->eof = 1;
=== modified file 'include/grub/diskfilter.h'
--- include/grub/diskfilter.h 2012-01-29 13:28:01 +0000
+++ include/grub/diskfilter.h 2012-02-10 19:53:29 +0000
@@ -72,6 +72,9 @@
struct grub_diskfilter_pv *next;
/* Optional. */
grub_uint8_t *internal_id;
+#ifdef GRUB_UTIL
+ char **partmaps;
+#endif
};
struct grub_diskfilter_lv {
@@ -186,6 +189,8 @@
struct grub_diskfilter_pv *
grub_diskfilter_get_pv_from_disk (grub_disk_t disk,
struct grub_diskfilter_vg **vg);
+void
+grub_diskfilter_print_partmap (grub_disk_t disk);
#endif
#endif /* ! GRUB_RAID_H */
=== modified file 'include/grub/script_sh.h'
--- include/grub/script_sh.h 2011-11-11 19:34:37 +0000
+++ include/grub/script_sh.h 2012-02-10 20:30:33 +0000
@@ -53,6 +53,7 @@
{
GRUB_SCRIPT_ARG_TYPE_VAR,
GRUB_SCRIPT_ARG_TYPE_TEXT,
+ GRUB_SCRIPT_ARG_TYPE_GETTEXT,
GRUB_SCRIPT_ARG_TYPE_DQVAR,
GRUB_SCRIPT_ARG_TYPE_DQSTR,
GRUB_SCRIPT_ARG_TYPE_SQSTR,
=== modified file 'util/getroot.c'
--- util/getroot.c 2012-02-10 12:17:12 +0000
+++ util/getroot.c 2012-02-10 18:48:24 +0000
@@ -372,7 +372,7 @@
char *buf = NULL;
size_t len = 0;
char **ret = NULL;
- int entry_len = 0, entry_max = 4;
+ grub_size_t entry_len = 0, entry_max = 4;
struct mountinfo_entry *entries;
struct mountinfo_entry parent_entry = { 0, 0, 0, "", "", "", "" };
int i;
@@ -1991,7 +1991,7 @@
const grub_partition_t partition)
{
grub_disk_addr_t part_start = 0;
- grub_util_info ("Partition %d starts from %lu",
+ grub_util_info ("Partition %d starts from %" PRIuGRUB_UINT64_T,
partition->number, partition->start);
part_start = grub_partition_get_start (partition);
@@ -2022,7 +2022,7 @@
return 0;
}
- grub_util_info ("%s starts from %lu", os_dev, start);
+ grub_util_info ("%s starts from %" PRIuGRUB_UINT64_T, os_dev, start);
if (start == 0 && device_is_wholedisk (os_dev))
return name;
=== modified file 'util/grub-mkimage.c'
--- util/grub-mkimage.c 2012-02-10 12:56:18 +0000
+++ util/grub-mkimage.c 2012-02-10 23:30:37 +0000
@@ -714,7 +714,7 @@
grub_uint64_t start_address;
void *rel_section;
grub_size_t reloc_size, align;
- size_t decompress_size;
+ size_t decompress_size = 0;
if (comp == COMPRESSION_AUTO)
comp = image_target->default_compression;
=== modified file 'util/grub-mkimagexx.c'
--- util/grub-mkimagexx.c 2012-02-10 12:56:18 +0000
+++ util/grub-mkimagexx.c 2012-02-10 23:34:17 +0000
@@ -182,6 +182,7 @@
#define MASK20 ((1 << 20) - 1)
#define MASK19 ((1 << 19) - 1)
+#define MASK3 (~(grub_addr_t) 3)
static void
add_value_to_slot_20b (grub_addr_t addr, grub_uint32_t value)
@@ -190,17 +191,17 @@
switch (addr & 3)
{
case 0:
- p = (struct unaligned_uint32 *) ((addr & ~3ULL) + 2);
+ p = (struct unaligned_uint32 *) ((addr & MASK3) + 2);
p->val = ((((((p->val >> 2) & MASK20) + value) & MASK20) << 2)
| (p->val & ~(MASK20 << 2)));
break;
case 1:
- p = (struct unaligned_uint32 *) ((grub_uint8_t *) (addr & ~3ULL) + 7);
+ p = (struct unaligned_uint32 *) ((grub_uint8_t *) (addr & MASK3) + 7);
p->val = ((((((p->val >> 3) & MASK20) + value) & MASK20) << 3)
| (p->val & ~(MASK20 << 3)));
break;
case 2:
- p = (struct unaligned_uint32 *) ((grub_uint8_t *) (addr & ~3ULL) + 12);
+ p = (struct unaligned_uint32 *) ((grub_uint8_t *) (addr & MASK3) + 12);
p->val = ((((((p->val >> 4) & MASK20) + value) & MASK20) << 4)
| (p->val & ~(MASK20 << 4)));
break;
@@ -227,15 +228,15 @@
switch (addr & 3)
{
case 0:
- p = (struct unaligned_uint32 *) ((addr & ~3ULL) + 2);
+ p = (struct unaligned_uint32 *) ((addr & MASK3) + 2);
p->val = ((add_value_to_slot_21_real (((p->val >> 2) & MASKF21), value) & MASKF21) << 2) | (p->val & ~(MASKF21 << 2));
break;
case 1:
- p = (struct unaligned_uint32 *) ((grub_uint8_t *) (addr & ~3ULL) + 7);
+ p = (struct unaligned_uint32 *) ((grub_uint8_t *) (addr & MASK3) + 7);
p->val = ((add_value_to_slot_21_real (((p->val >> 3) & MASKF21), value) & MASKF21) << 3) | (p->val & ~(MASKF21 << 3));
break;
case 2:
- p = (struct unaligned_uint32 *) ((grub_uint8_t *) (addr & ~3ULL) + 12);
+ p = (struct unaligned_uint32 *) ((grub_uint8_t *) (addr & MASK3) + 12);
p->val = ((add_value_to_slot_21_real (((p->val >> 4) & MASKF21), value) & MASKF21) << 4) | (p->val & ~(MASKF21 << 4));
break;
}
@@ -457,8 +458,8 @@
- target_section_addr - (offset & ~3)) >> 4;
tr++;
if (noff & ~MASK19)
- grub_util_error ("trampoline offset too big (%lx)",
- noff);
+ grub_util_error ("trampoline offset too big (%"
+ PRIxGRUB_UINT64_T ")", noff);
add_value_to_slot_20b ((grub_addr_t) target, noff);
}
break;
@@ -919,7 +920,7 @@
grub_size_t kernel_size;
grub_size_t ia64jmp_off = 0, ia64_toff = 0, ia64_got_off = 0;
unsigned ia64jmpnum = 0;
- Elf_Shdr *symtab_section;
+ Elf_Shdr *symtab_section = 0;
grub_size_t got = 0;
*start = 0;
=== modified file 'util/grub-probe.c'
--- util/grub-probe.c 2012-02-10 11:57:00 +0000
+++ util/grub-probe.c 2012-02-10 19:56:18 +0000
@@ -87,6 +87,9 @@
for (part = disk->partition; part; part = part->parent)
printf ("%s ", part->partmap->name);
+ if (disk->dev->id == GRUB_DISK_DEVICE_DISKFILTER_ID)
+ grub_diskfilter_print_partmap (disk);
+
/* In case of LVM/RAID, check the member devices as well. */
if (disk->dev->memberlist)
{
@@ -304,7 +307,7 @@
raid_level = probe_raid_level (disk);
if (raid_level >= 0)
{
- printf ("raid ");
+ printf ("diskfilter ");
if (disk->dev->raidname)
printf ("%s ", disk->dev->raidname (disk));
}
=== modified file 'util/import_gcry.py'
--- util/import_gcry.py 2012-02-10 15:48:48 +0000
+++ util/import_gcry.py 2012-02-10 23:26:06 +0000
@@ -325,7 +325,7 @@
confutil.write (" common = grub-core/%s;\n" % src)
if modname == "gcry_rijndael" or modname == "gcry_md4" or modname == "gcry_md5" or modname == "gcry_rmd160" or modname == "gcry_sha1" or modname == "gcry_sha256" or modname == "gcry_sha512" or modname == "gcry_tiger":
# Alignment checked by hand
- conf.write (" cflags = '$(CFLAGS_GCRY) -Wno-cast-align';\n");
+ conf.write (" cflags = '$(CFLAGS_GCRY) -Wno-cast-align -Wno-strict-aliasing';\n");
else:
conf.write (" cflags = '$(CFLAGS_GCRY)';\n");
conf.write (" cppflags = '$(CPPFLAGS_GCRY)';\n");