Lines 1174-1183
Link Here
|
1174 |
} |
1174 |
} |
1175 |
#endif /* ! STAGE1_5 */ |
1175 |
#endif /* ! STAGE1_5 */ |
1176 |
|
1176 |
|
|
|
1177 |
#ifdef GRUB_UTIL |
1178 |
# ifdef __PIC__ |
1179 |
# if defined(HAVE_START_SYMBOL) && defined(HAVE_END_SYMBOL) |
1180 |
extern char start[]; |
1181 |
extern char end[]; |
1182 |
# elif defined(HAVE_USCORE_START_SYMBOL) && defined (HAVE_USCORE_END_SYMBOL) |
1183 |
extern char _start[]; |
1184 |
extern char _end[]; |
1185 |
# endif |
1186 |
# endif |
1187 |
#endif |
1177 |
int |
1188 |
int |
1178 |
memcheck (int addr, int len) |
1189 |
memcheck (int addr, int len) |
1179 |
{ |
1190 |
{ |
1180 |
#ifdef GRUB_UTIL |
1191 |
#ifdef GRUB_UTIL |
|
|
1192 |
# ifdef __PIC__ |
1193 |
# if defined(HAVE_START_SYMBOL) && defined(HAVE_END_SYMBOL) |
1194 |
if (start <= addr && end > addr + len) |
1195 |
return ! errnum; |
1196 |
# elif defined(HAVE_USCORE_START_SYMBOL) && defined (HAVE_USCORE_END_SYMBOL) |
1197 |
if (_start <= addr && _end > addr + len) |
1198 |
return ! errnum; |
1199 |
# endif |
1200 |
# else /* __PIC__ */ |
1181 |
auto int start_addr (void); |
1201 |
auto int start_addr (void); |
1182 |
auto int end_addr (void); |
1202 |
auto int end_addr (void); |
1183 |
|
1203 |
|
Lines 1189-1195
Link Here
|
1189 |
# elif defined(HAVE_USCORE_START_SYMBOL) |
1209 |
# elif defined(HAVE_USCORE_START_SYMBOL) |
1190 |
asm volatile ("movl $_start, %0" : "=a" (ret)); |
1210 |
asm volatile ("movl $_start, %0" : "=a" (ret)); |
1191 |
# endif |
1211 |
# endif |
1192 |
return ret; |
1212 |
return ret; |
1193 |
} |
1213 |
} |
1194 |
|
1214 |
|
1195 |
auto int end_addr (void) |
1215 |
auto int end_addr (void) |
Lines 1205-1210
Link Here
|
1205 |
|
1225 |
|
1206 |
if (start_addr () <= addr && end_addr () > addr + len) |
1226 |
if (start_addr () <= addr && end_addr () > addr + len) |
1207 |
return ! errnum; |
1227 |
return ! errnum; |
|
|
1228 |
# endif /* __PIC__ */ |
1208 |
#endif /* GRUB_UTIL */ |
1229 |
#endif /* GRUB_UTIL */ |
1209 |
|
1230 |
|
1210 |
if ((addr < RAW_ADDR (0x1000)) |
1231 |
if ((addr < RAW_ADDR (0x1000)) |