{
while (p < e)
{
- void *ptr = __reloc_pointer (*p, map);
- if (ptr)
+ if (*p != (void **)-1)
{
- void *pt;
- if ((long)ptr & 3)
+ void *ptr = __reloc_pointer (*p, map);
+ if (ptr != (void *)-1)
{
- unsigned char *c = ptr;
- int i;
- unsigned long v = 0;
- for (i = 0; i < 4; i++)
- v |= c[i] << 8 * i;
- pt = (void *)v;
+ void *pt;
+ if ((long)ptr & 3)
+ {
+ unsigned char *c = ptr;
+ int i;
+ unsigned long v = 0;
+ for (i = 0; i < 4; i++)
+ v |= c[i] << 8 * i;
+ pt = (void *)v;
+ }
+ else
+ pt = *(void**)ptr;
+ pt = __reloc_pointer (pt, map);
+ if ((long)ptr & 3)
+ {
+ unsigned char *c = ptr;
+ int i;
+ unsigned long v = (unsigned long)pt;
+ for (i = 0; i < 4; i++, v >>= 8)
+ c[i] = v;
+ }
+ else
+ *(void**)ptr = pt;
}
- else
- pt = *(void**)ptr;
- pt = __reloc_pointer (pt, map);
- if ((long)ptr & 3)
- {
- unsigned char *c = ptr;
- int i;
- unsigned long v = (unsigned long)pt;
- for (i = 0; i < 4; i++, v >>= 8)
- c[i] = v;
- }
- else
- *(void**)ptr = pt;
}
p++;
}