+++ /dev/null
---- grub-0.96/stage2/char_io.c.orig 2005-02-18 09:12:39.163407496 +0100
-+++ grub-0.96/stage2/char_io.c 2005-02-18 09:13:11.431502000 +0100
-@@ -1202,37 +1202,62 @@
- }
- #endif /* ! STAGE1_5 */
-
-+#ifdef GRUB_UTIL
-+# ifdef __PIC__
-+# if defined(HAVE_START_SYMBOL) && defined(HAVE_END_SYMBOL)
-+ extern char start[];
-+ extern char end[];
-+# elif defined(HAVE_USCORE_START_SYMBOL) && defined (HAVE_USCORE_END_SYMBOL)
-+ extern char _start[];
-+ extern char _end[];
-+# endif
-+# endif
-+#endif
- int
- memcheck (int addr, int len)
- {
- #ifdef GRUB_UTIL
-+# ifdef __PIC__
-+# if defined(HAVE_START_SYMBOL) && defined(HAVE_END_SYMBOL)
-+ if (start <= addr && end > addr + len)
-+ return ! errnum;
-+# elif defined(HAVE_USCORE_START_SYMBOL) && defined (HAVE_USCORE_END_SYMBOL)
-+ if (_start <= addr && _end > addr + len)
-+ return ! errnum;
-+# endif
-+# else /* __PIC__ */
- auto int start_addr (void);
- auto int end_addr (void);
-
- auto int start_addr (void)
- {
- int ret;
--# if defined(HAVE_START_SYMBOL)
-+# if defined(HAVE_START_SYMBOL)
- asm volatile ("movl $start, %0" : "=a" (ret));
--# elif defined(HAVE_USCORE_START_SYMBOL)
-+# elif defined(HAVE_USCORE_START_SYMBOL)
- asm volatile ("movl $_start, %0" : "=a" (ret));
--# endif
-+# else
-+ erk! /* function would return undefined data in this case - barf */
-+# endif
- return ret;
- }
-
- auto int end_addr (void)
- {
- int ret;
--# if defined(HAVE_END_SYMBOL)
-+# if defined(HAVE_END_SYMBOL)
- asm volatile ("movl $end, %0" : "=a" (ret));
--# elif defined(HAVE_USCORE_END_SYMBOL)
-+# elif defined(HAVE_USCORE_END_SYMBOL)
- asm volatile ("movl $_end, %0" : "=a" (ret));
--# endif
-+# else
-+ erk! /* function would return undefined data in this case - barf */
-+# endif
- return ret;
- }
-
- if (start_addr () <= addr && end_addr () > addr + len)
- return ! errnum;
-+# endif /* __PIC__ */
- #endif /* GRUB_UTIL */
-
- if ((addr < RAW_ADDR (0x1000))