1 --- grub-0.96/stage2/char_io.c.orig 2005-02-18 09:12:39.163407496 +0100
2 +++ grub-0.96/stage2/char_io.c 2005-02-18 09:13:11.431502000 +0100
3 @@ -1202,37 +1202,62 @@
5 #endif /* ! STAGE1_5 */
9 +# if defined(HAVE_START_SYMBOL) && defined(HAVE_END_SYMBOL)
10 + extern char start[];
12 +# elif defined(HAVE_USCORE_START_SYMBOL) && defined (HAVE_USCORE_END_SYMBOL)
13 + extern char _start[];
19 memcheck (int addr, int len)
23 +# if defined(HAVE_START_SYMBOL) && defined(HAVE_END_SYMBOL)
24 + if (start <= addr && end > addr + len)
26 +# elif defined(HAVE_USCORE_START_SYMBOL) && defined (HAVE_USCORE_END_SYMBOL)
27 + if (_start <= addr && _end > addr + len)
31 auto int start_addr (void);
32 auto int end_addr (void);
34 auto int start_addr (void)
37 -# if defined(HAVE_START_SYMBOL)
38 +# if defined(HAVE_START_SYMBOL)
39 asm volatile ("movl $start, %0" : "=a" (ret));
40 -# elif defined(HAVE_USCORE_START_SYMBOL)
41 +# elif defined(HAVE_USCORE_START_SYMBOL)
42 asm volatile ("movl $_start, %0" : "=a" (ret));
45 + erk! /* function would return undefined data in this case - barf */
50 auto int end_addr (void)
53 -# if defined(HAVE_END_SYMBOL)
54 +# if defined(HAVE_END_SYMBOL)
55 asm volatile ("movl $end, %0" : "=a" (ret));
56 -# elif defined(HAVE_USCORE_END_SYMBOL)
57 +# elif defined(HAVE_USCORE_END_SYMBOL)
58 asm volatile ("movl $_end, %0" : "=a" (ret));
61 + erk! /* function would return undefined data in this case - barf */
66 if (start_addr () <= addr && end_addr () > addr + len)
68 +# endif /* __PIC__ */
69 #endif /* GRUB_UTIL */
71 if ((addr < RAW_ADDR (0x1000))