aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog23
-rw-r--r--bfd/ecofflink.c8
-rw-r--r--bfd/elf32-arm.c11
-rw-r--r--bfd/elf32-hppa.c6
-rw-r--r--bfd/elf32-m32r.c5
-rw-r--r--bfd/elf32-m68k.c6
-rw-r--r--bfd/elf32-ppc.c6
-rw-r--r--bfd/elf32-s390.c10
-rw-r--r--bfd/elf32-sh.c5
-rw-r--r--bfd/elf64-ppc.c21
-rw-r--r--bfd/elf64-s390.c11
-rw-r--r--bfd/elfxx-mips.c6
-rw-r--r--bfd/elfxx-sparc.c11
-rw-r--r--bfd/ieee.c5
-rw-r--r--bfd/oasys.c6
15 files changed, 91 insertions, 49 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index b46f869..a0a02c9 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,26 @@
+2005-10-06 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * elf32-arm.c (elf32_arm_check_relocs): Avoid aliasing warnings from
+ GCC.
+ (elf32_arm_size_dynamic_sections): Likewise.
+ * ecofflink.c (bfd_ecoff_debug_one_external): Likewise.
+ * elf32-hppa.c (elf32_hppa_check_relocs): Likewise.
+ * elf32-m32r.c (m32r_elf_check_relocs): Likewise.
+ * elf32-m68k.c (elf_m68k_check_relocs): Likewise.
+ * elf32-ppc.c (ppc_elf_check_relocs): Likewise.
+ * elf32-s390.c (elf_s390_check_relocs): Likewise.
+ (elf_s390_size_dynamic_sections): Likewise.
+ * elf32-sh.c (sh_elf_check_relocs): Likewise.
+ * elf64-ppc.c (ppc64_elf_check_relocs, dec_dynrel_count)
+ (ppc64_elf_size_dynamic_sections): Likewise.
+ * elf64-s390.c (elf_s390_check_relocs): Likewise.
+ (elf_s390_size_dynamic_sections): Likewise.
+ * elfxx-mips.c (_bfd_mips_elf_finish_dynamic_sections): Likewise.
+ * elfxx-sparc.c (_bfd_sparc_elf_check_relocs): Likewise.
+ (_bfd_sparc_elf_size_dynamic_sections): Likewise.
+ * ieee.c (ieee_slurp_section_data): Likewise.
+ * oasys.c (oasys_slurp_section_data): Likewise.
+
2005-10-04 Bob Wilson <bob.wilson@acm.org>
* archive.c: Add missing SUBSECTION for documentation.
diff --git a/bfd/ecofflink.c b/bfd/ecofflink.c
index c4663b7..d7bb817 100644
--- a/bfd/ecofflink.c
+++ b/bfd/ecofflink.c
@@ -1338,10 +1338,14 @@ bfd_ecoff_debug_one_external (abfd, debug, swap, name, esym)
- (char *) debug->external_ext)
< (symhdr->iextMax + 1) * external_ext_size)
{
- if (! ecoff_add_bytes ((char **) &debug->external_ext,
- (char **) &debug->external_ext_end,
+ char *external_ext = debug->external_ext;
+ char *external_ext_end = debug->external_ext_end;
+ if (! ecoff_add_bytes ((char **) &external_ext,
+ (char **) &external_ext_end,
(symhdr->iextMax + 1) * (size_t) external_ext_size))
return FALSE;
+ debug->external_ext = external_ext;
+ debug->external_ext_end = external_ext_end;
}
esym->asym.iss = symhdr->issExtMax;
diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
index 6bace7a..b9024e9 100644
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
@@ -5118,13 +5118,15 @@ elf32_arm_check_relocs (bfd *abfd, struct bfd_link_info *info,
easily. Oh well. */
asection *s;
+ void *vpp;
+
s = bfd_section_from_r_symndx (abfd, &htab->sym_sec,
sec, r_symndx);
if (s == NULL)
return FALSE;
- head = ((struct elf32_arm_relocs_copied **)
- &elf_section_data (s)->local_dynrel);
+ vpp = &elf_section_data (s)->local_dynrel;
+ head = (struct elf32_arm_relocs_copied **) vpp;
}
p = *head;
@@ -5785,10 +5787,7 @@ elf32_arm_size_dynamic_sections (bfd * output_bfd ATTRIBUTE_UNUSED,
{
struct elf32_arm_relocs_copied *p;
- for (p = *((struct elf32_arm_relocs_copied **)
- &elf_section_data (s)->local_dynrel);
- p != NULL;
- p = p->next)
+ for (p = elf_section_data (s)->local_dynrel; p != NULL; p = p->next)
{
if (!bfd_is_abs_section (p->section)
&& bfd_is_abs_section (p->section->output_section))
diff --git a/bfd/elf32-hppa.c b/bfd/elf32-hppa.c
index 7f20bd6..942b376 100644
--- a/bfd/elf32-hppa.c
+++ b/bfd/elf32-hppa.c
@@ -1446,13 +1446,15 @@ elf32_hppa_check_relocs (bfd *abfd,
easily. Oh well. */
asection *sr;
+ void *vpp;
+
sr = bfd_section_from_r_symndx (abfd, &htab->sym_sec,
sec, r_symndx);
if (sr == NULL)
return FALSE;
- hdh_head = ((struct elf32_hppa_dyn_reloc_entry **)
- &elf_section_data (sr)->local_dynrel);
+ vpp = &elf_section_data (sr)->local_dynrel;
+ hdh_head = (struct elf32_hppa_dyn_reloc_entry **) vpp;
}
hdh_p = *hdh_head;
diff --git a/bfd/elf32-m32r.c b/bfd/elf32-m32r.c
index cb6716f..c26bebf 100644
--- a/bfd/elf32-m32r.c
+++ b/bfd/elf32-m32r.c
@@ -3993,6 +3993,7 @@ m32r_elf_check_relocs (bfd *abfd,
else
{
asection *s;
+ void *vpp;
/* Track dynamic relocs needed for local syms too. */
s = bfd_section_from_r_symndx (abfd, &htab->sym_sec,
@@ -4000,8 +4001,8 @@ m32r_elf_check_relocs (bfd *abfd,
if (s == NULL)
return FALSE;
- head = ((struct elf_m32r_dyn_relocs **)
- &elf_section_data (s)->local_dynrel);
+ vpp = &elf_section_data (s)->local_dynrel;
+ head = (struct elf_m32r_dyn_relocs **) vpp;
}
p = *head;
diff --git a/bfd/elf32-m68k.c b/bfd/elf32-m68k.c
index 146a86d..589dccf 100644
--- a/bfd/elf32-m68k.c
+++ b/bfd/elf32-m68k.c
@@ -745,14 +745,16 @@ elf_m68k_check_relocs (abfd, info, sec, relocs)
else
{
asection *s;
+ void *vpp;
+
s = (bfd_section_from_r_symndx
(abfd, &elf_m68k_hash_table (info)->sym_sec,
sec, r_symndx));
if (s == NULL)
return FALSE;
- head = ((struct elf_m68k_pcrel_relocs_copied **)
- &elf_section_data (s)->local_dynrel);
+ vpp = &elf_section_data (s)->local_dynrel;
+ head = (struct elf_m68k_pcrel_relocs_copied **) vpp;
}
for (p = *head; p != NULL; p = p->next)
diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c
index bfb1ee8..2134af2 100644
--- a/bfd/elf32-ppc.c
+++ b/bfd/elf32-ppc.c
@@ -3469,13 +3469,15 @@ ppc_elf_check_relocs (bfd *abfd,
easily. Oh well. */
asection *s;
+ void *vpp;
+
s = bfd_section_from_r_symndx (abfd, &htab->sym_sec,
sec, r_symndx);
if (s == NULL)
return FALSE;
- head = ((struct ppc_elf_dyn_relocs **)
- &elf_section_data (s)->local_dynrel);
+ vpp = &elf_section_data (s)->local_dynrel;
+ head = (struct ppc_elf_dyn_relocs **) vpp;
}
p = *head;
diff --git a/bfd/elf32-s390.c b/bfd/elf32-s390.c
index a243363..55090c6 100644
--- a/bfd/elf32-s390.c
+++ b/bfd/elf32-s390.c
@@ -1319,14 +1319,15 @@ elf_s390_check_relocs (abfd, info, sec, relocs)
We really need local syms available to do this
easily. Oh well. */
asection *s;
+ void *vpp;
s = bfd_section_from_r_symndx (abfd, &htab->sym_sec,
sec, r_symndx);
if (s == NULL)
return FALSE;
- head = ((struct elf_s390_dyn_relocs **)
- &elf_section_data (s)->local_dynrel);
+ vpp = &elf_section_data (s)->local_dynrel;
+ head = (struct elf_s390_dyn_relocs **) vpp;
}
p = *head;
@@ -2038,10 +2039,7 @@ elf_s390_size_dynamic_sections (output_bfd, info)
{
struct elf_s390_dyn_relocs *p;
- for (p = *((struct elf_s390_dyn_relocs **)
- &elf_section_data (s)->local_dynrel);
- p != NULL;
- p = p->next)
+ for (p = elf_section_data (s)->local_dynrel; p != NULL; p = p->next)
{
if (!bfd_is_abs_section (p->sec)
&& bfd_is_abs_section (p->sec->output_section))
diff --git a/bfd/elf32-sh.c b/bfd/elf32-sh.c
index b2b7c6b..abbee05 100644
--- a/bfd/elf32-sh.c
+++ b/bfd/elf32-sh.c
@@ -6565,6 +6565,7 @@ sh_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
else
{
asection *s;
+ void *vpp;
/* Track dynamic relocs needed for local syms too. */
s = bfd_section_from_r_symndx (abfd, &htab->sym_sec,
@@ -6572,8 +6573,8 @@ sh_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
if (s == NULL)
return FALSE;
- head = ((struct elf_sh_dyn_relocs **)
- &elf_section_data (s)->local_dynrel);
+ vpp = &elf_section_data (s)->local_dynrel;
+ head = (struct elf_sh_dyn_relocs **) vpp;
}
p = *head;
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
index f10af8b..9bc2fcf 100644
--- a/bfd/elf64-ppc.c
+++ b/bfd/elf64-ppc.c
@@ -4767,13 +4767,15 @@ ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
easily. Oh well. */
asection *s;
+ void *vpp;
+
s = bfd_section_from_r_symndx (abfd, &htab->sym_sec,
sec, r_symndx);
if (s == NULL)
return FALSE;
- head = ((struct ppc_dyn_relocs **)
- &elf_section_data (s)->local_dynrel);
+ vpp = &elf_section_data (s)->local_dynrel;
+ head = (struct ppc_dyn_relocs **) vpp;
}
p = *head;
@@ -6119,9 +6121,15 @@ dec_dynrel_count (bfd_vma r_info,
if (h != NULL)
pp = &((struct ppc_link_hash_entry *) h)->dyn_relocs;
else if (sym_sec != NULL)
- pp = (struct ppc_dyn_relocs **) &elf_section_data (sym_sec)->local_dynrel;
+ {
+ void *vpp = &elf_section_data (sym_sec)->local_dynrel;
+ pp = (struct ppc_dyn_relocs **) vpp;
+ }
else
- pp = (struct ppc_dyn_relocs **) &elf_section_data (sec)->local_dynrel;
+ {
+ void *vpp = &elf_section_data (sec)->local_dynrel;
+ pp = (struct ppc_dyn_relocs **) vpp;
+ }
while ((p = *pp) != NULL)
{
@@ -7638,10 +7646,7 @@ ppc64_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
{
struct ppc_dyn_relocs *p;
- for (p = *((struct ppc_dyn_relocs **)
- &elf_section_data (s)->local_dynrel);
- p != NULL;
- p = p->next)
+ for (p = elf_section_data (s)->local_dynrel; p != NULL; p = p->next)
{
if (!bfd_is_abs_section (p->sec)
&& bfd_is_abs_section (p->sec->output_section))
diff --git a/bfd/elf64-s390.c b/bfd/elf64-s390.c
index 1c5a5f7..7808c3f 100644
--- a/bfd/elf64-s390.c
+++ b/bfd/elf64-s390.c
@@ -1285,13 +1285,15 @@ elf_s390_check_relocs (abfd, info, sec, relocs)
easily. Oh well. */
asection *s;
+ void *vpp;
+
s = bfd_section_from_r_symndx (abfd, &htab->sym_sec,
sec, r_symndx);
if (s == NULL)
return FALSE;
- head = ((struct elf_s390_dyn_relocs **)
- &elf_section_data (s)->local_dynrel);
+ vpp = &elf_section_data (s)->local_dynrel;
+ head = (struct elf_s390_dyn_relocs **) vpp;
}
p = *head;
@@ -2009,10 +2011,7 @@ elf_s390_size_dynamic_sections (output_bfd, info)
{
struct elf_s390_dyn_relocs *p;
- for (p = *((struct elf_s390_dyn_relocs **)
- &elf_section_data (s)->local_dynrel);
- p != NULL;
- p = p->next)
+ for (p = elf_section_data (s)->local_dynrel; p != NULL; p = p->next)
{
if (!bfd_is_abs_section (p->sec)
&& bfd_is_abs_section (p->sec->output_section))
diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
index 28ada82..27d2dc3 100644
--- a/bfd/elfxx-mips.c
+++ b/bfd/elfxx-mips.c
@@ -7638,7 +7638,11 @@ _bfd_mips_elf_finish_dynamic_sections (bfd *output_bfd,
break;
case DT_MIPS_TIME_STAMP:
- time ((time_t *) &dyn.d_un.d_val);
+ {
+ time_t t;
+ time (&t);
+ dyn.d_un.d_val = t;
+ }
break;
case DT_MIPS_ICHECKSUM:
diff --git a/bfd/elfxx-sparc.c b/bfd/elfxx-sparc.c
index 264f262..eff34ea 100644
--- a/bfd/elfxx-sparc.c
+++ b/bfd/elfxx-sparc.c
@@ -1381,13 +1381,15 @@ _bfd_sparc_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
easily. Oh well. */
asection *s;
+ void *vpp;
+
s = bfd_section_from_r_symndx (abfd, &htab->sym_sec,
sec, r_symndx);
if (s == NULL)
return FALSE;
- head = ((struct _bfd_sparc_elf_dyn_relocs **)
- &elf_section_data (s)->local_dynrel);
+ vpp = &elf_section_data (s)->local_dynrel;
+ head = (struct _bfd_sparc_elf_dyn_relocs **) vpp;
}
p = *head;
@@ -2071,10 +2073,7 @@ _bfd_sparc_elf_size_dynamic_sections (bfd *output_bfd,
{
struct _bfd_sparc_elf_dyn_relocs *p;
- for (p = *((struct _bfd_sparc_elf_dyn_relocs **)
- &elf_section_data (s)->local_dynrel);
- p != NULL;
- p = p->next)
+ for (p = elf_section_data (s)->local_dynrel; p != NULL; p = p->next)
{
if (!bfd_is_abs_section (p->sec)
&& bfd_is_abs_section (p->sec->output_section))
diff --git a/bfd/ieee.c b/bfd/ieee.c
index 3dca9b3..53e16e1 100644
--- a/bfd/ieee.c
+++ b/bfd/ieee.c
@@ -1666,14 +1666,15 @@ ieee_slurp_section_data (bfd *abfd)
for (s = abfd->sections; s != (asection *) NULL; s = s->next)
{
ieee_per_section_type *per = ieee_per_section (s);
+ arelent **relpp;
if ((s->flags & SEC_DEBUGGING) != 0)
continue;
per->data = bfd_alloc (ieee->h.abfd, s->size);
if (!per->data)
return FALSE;
- per->reloc_tail_ptr =
- (ieee_reloc_type **) & (s->relocation);
+ relpp = &s->relocation;
+ per->reloc_tail_ptr = (ieee_reloc_type **) relpp;
}
while (TRUE)
diff --git a/bfd/oasys.c b/bfd/oasys.c
index 2647f82..74d2c31 100644
--- a/bfd/oasys.c
+++ b/bfd/oasys.c
@@ -384,11 +384,13 @@ oasys_slurp_section_data (bfd *const abfd)
if (! per->initialized)
{
+ arelent **relpp;
+
per->data = bfd_zalloc (abfd, section->size);
if (!per->data)
return FALSE;
- per->reloc_tail_ptr
- = (oasys_reloc_type **) &section->relocation;
+ relpp = &section->relocation;
+ per->reloc_tail_ptr = (oasys_reloc_type **) relpp;
per->had_vma = FALSE;
per->initialized = TRUE;
section->reloc_count = 0;