@@ -587,6 +587,8 @@ elf_machine_rela (struct link_map *map,
break;
case R_PARISC_DIR21L:
+ if (sym_map == NULL)
+ break;
{
unsigned int insn = *(unsigned int *)reloc_addr;
value = sym_map->l_addr + sym->st_value
@@ -598,6 +600,8 @@ elf_machine_rela (struct link_map *map,
return;
case R_PARISC_DIR14R:
+ if (sym_map == NULL)
+ break;
{
unsigned int insn = *(unsigned int *)reloc_addr;
value = ((sym_map->l_addr + sym->st_value) & 0x7ff)
@@ -686,7 +690,8 @@ elf_machine_rela (struct link_map *map,
#if defined USE_TLS && (!defined RTLD_BOOTSTRAP)
case R_PARISC_TLS_DTPMOD32:
- value = sym_map->l_tls_modid;
+ if (sym_map != NULL)
+ value = sym_map->l_tls_modid;
break;
case R_PARISC_TLS_DTPOFF32:
@@ -698,7 +703,7 @@ elf_machine_rela (struct link_map *map,
case R_PARISC_TLS_TPREL32:
/* The offset is negative, forward from the thread pointer */
- if (sym != NULL)
+ if (sym != NULL && sym_map != NULL)
{
CHECK_STATIC_TLS (map, sym_map);
value = sym_map->l_tls_offset + sym->st_value + reloc->r_addend;