This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
RE: Build failure
- From: Cupertino Miranda <Cupertino dot Miranda at synopsys dot com>
- To: Nick Clifton <nickc at redhat dot com>, "Cupertino dot Miranda at synopsys dot com" <Cupertino dot Miranda at synopsys dot com>, "Claudiu dot Zissulescu at synopsys dot com" <Claudiu dot Zissulescu at synopsys dot com>
- Cc: "binutils at sourceware dot org" <binutils at sourceware dot org>
- Date: Thu, 21 Jan 2016 12:13:10 +0000
- Subject: RE: Build failure
- Authentication-results: sourceware.org; auth=none
- References: <87lh7jw65a dot fsf at redhat dot com>
Hi Nick,
Sorry for that, we did not try it on 32bit machine. :-(
From our side we have no objections to your patch.
Thanks for the fix.
Cheers,
Cupertino
PS: BTW, indeed in the Changelog our last names got reverse with the first ones.
For future reference, Miranda and Zissulescu are our last names. ;-)
> -----Original Message-----
> From: Nick Clifton [mailto:nickc@redhat.com]
> Sent: Thursday, January 21, 2016 11:59 AM
> To: Cupertino.Miranda@synopsys.com; Claudiu.Zissulescu@synopsys.com
> Cc: binutils@sourceware.org
> Subject: ARC: Build failure
>
> Hi Miranda, Hi Zissulescu,
>
> I have just started encountering a build failure when building an
> all-targets toolchain configured for a 32-bit host:
>
> bfd/elf32-arc.c: In function 'elf_arc_finish_dynamic_symbol':
> bfd/elf32-arc.c:2248:21: error: cast from pointer to integer of different size [-
> Werror=pointer-to-int-cast]
> bfd_vma loc = (bfd_vma) srelbss->contents
> ^
> bfd/elf32-arc.c:2257:52: error: cast to pointer from integer of different size [-
> Werror=int-to-pointer-cast]
> bfd_elf32_swap_reloca_out (output_bfd, &rel, (bfd_byte *) loc);
> ^
> There are several more failures like this.
>
> I am not sure why you are using a bfd_vma to hold the location value,
> but a patch like the one below fixes the build problem for me. Do you
> have any objections to my applying it ?
>
> Cheers
> Nick
>
> diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c index 0931c4e..8a46a2c 100644
> --- a/bfd/elf32-arc.c
> +++ b/bfd/elf32-arc.c
> @@ -55,9 +55,9 @@ name_for_global_symbol (struct elf_link_hash_entry
> *h)
> { \
> struct elf_link_hash_table *_htab = elf_hash_table (info); \
> Elf_Internal_Rela _rel; \
> - bfd_vma _loc; \
> + bfd_byte * _loc; \
> \
> - _loc = (bfd_vma) _htab->srel##SECTION->contents \
> + _loc = _htab->srel##SECTION->contents \
> + ((_htab->srel##SECTION->reloc_count) \
> * sizeof (Elf32_External_Rela)); \
> _htab->srel##SECTION->reloc_count++; \
> @@ -65,7 +65,7 @@ name_for_global_symbol (struct elf_link_hash_entry
> *h)
> _rel.r_offset = (_htab->s##SECTION)->output_section->vma
> \
> + (_htab->s##SECTION)->output_offset + OFFSET; \
> _rel.r_info = ELF32_R_INFO (SYM_IDX, TYPE);
> \
> - bfd_elf32_swap_reloca_out (BFD, &_rel, (bfd_byte *) _loc);
> \
> + bfd_elf32_swap_reloca_out (BFD, &_rel, _loc); \
> }
>
> struct arc_local_data
> @@ -2245,8 +2245,8 @@ GOT_OFFSET = 0x%x, GOT_VMA = 0x%x, INDEX =
> %d, ADDEND = 0x%x\n",
> bfd_get_section_by_name (h->root.u.def.section->owner,
> ".rela.bss");
>
> - bfd_vma loc = (bfd_vma) srelbss->contents
> - + (srelbss->reloc_count * sizeof (Elf32_External_Rela));
> + bfd_byte * loc = srelbss->contents
> + + (srelbss->reloc_count * sizeof (Elf32_External_Rela));
> srelbss->reloc_count++;
>
> Elf_Internal_Rela rel;
> @@ -2254,7 +2254,7 @@ GOT_OFFSET = 0x%x, GOT_VMA = 0x%x, INDEX =
> %d, ADDEND = 0x%x\n",
> rel.r_offset = rel_offset;
> rel.r_info = ELF32_R_INFO (h->dynindx, R_ARC_COPY);
>
> - bfd_elf32_swap_reloca_out (output_bfd, &rel, (bfd_byte *) loc);
> + bfd_elf32_swap_reloca_out (output_bfd, &rel, loc);
> }
>
> /* Mark _DYNAMIC and _GLOBAL_OFFSET_TABLE_ as absolute. */