public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* 32 bit host build failure from peXXigen.c
@ 2014-04-16 17:34 Doug Evans
  2014-04-17  0:14 ` asmwarrior
  2014-04-22 15:58 ` Nicholas Clifton
  0 siblings, 2 replies; 8+ messages in thread
From: Doug Evans @ 2014-04-16 17:34 UTC (permalink / raw)
  To: nick clifton, Binutils

Hi.

Commit 32ae0d80cd430150ad9536aa160f34f504e129bc has this:

        PR ld/16821
        * peXXigen.c (abs_finder): New function.
        (_bfd_XXi_swap_sym_out): For absolute symbols with values larger
        than 1^32 try to convert them into section relative values
        instead.

and I'm getting build failures.

peigen.c: In function 'abs_finder':
peigen.c:215:3: error: left shift count >= width of type [-Werror]
   return (sec->vma <= abs_val) && ((sec->vma + (1L << 32)) > abs_val);
   ^
peigen.c: In function '_bfd_pei_swap_sym_out':
peigen.c:239:7: error: left shift count >= width of type [-Werror]
       && in->n_value > ((1L << 32) - 1)
       ^
peigen.c:239:22: error: comparison between signed and unsigned integer
expressions [-Werror=sign-compare]
       && in->n_value > ((1L << 32) - 1)


Nick, can you fix?
Thanks!

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: 32 bit host build failure from peXXigen.c
  2014-04-16 17:34 32 bit host build failure from peXXigen.c Doug Evans
@ 2014-04-17  0:14 ` asmwarrior
  2014-04-22 15:58 ` Nicholas Clifton
  1 sibling, 0 replies; 8+ messages in thread
From: asmwarrior @ 2014-04-17  0:14 UTC (permalink / raw)
  To: Doug Evans, nick clifton, Binutils

On 2014-4-17 1:34, Doug Evans wrote:
> Hi.
> 
> Commit 32ae0d80cd430150ad9536aa160f34f504e129bc has this:
> 
>         PR ld/16821
>         * peXXigen.c (abs_finder): New function.
>         (_bfd_XXi_swap_sym_out): For absolute symbols with values larger
>         than 1^32 try to convert them into section relative values
>         instead.
> 
> and I'm getting build failures.
> 
> peigen.c: In function 'abs_finder':
> peigen.c:215:3: error: left shift count >= width of type [-Werror]
>    return (sec->vma <= abs_val) && ((sec->vma + (1L << 32)) > abs_val);
>    ^
> peigen.c: In function '_bfd_pei_swap_sym_out':
> peigen.c:239:7: error: left shift count >= width of type [-Werror]
>        && in->n_value > ((1L << 32) - 1)
>        ^
> peigen.c:239:22: error: comparison between signed and unsigned integer
> expressions [-Werror=sign-compare]
>        && in->n_value > ((1L << 32) - 1)
> 
> 
> Nick, can you fix?
> Thanks!
> 
FYI:

Some discussion about this build failures were here:
https://sourceware.org/bugzilla/show_bug.cgi?id=16821


Yuanhui Zhang


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: 32 bit host build failure from peXXigen.c
  2014-04-16 17:34 32 bit host build failure from peXXigen.c Doug Evans
  2014-04-17  0:14 ` asmwarrior
@ 2014-04-22 15:58 ` Nicholas Clifton
  2014-04-23 20:18   ` Edjunior Barbosa Machado
  1 sibling, 1 reply; 8+ messages in thread
From: Nicholas Clifton @ 2014-04-22 15:58 UTC (permalink / raw)
  To: Doug Evans, Binutils

Hi Doug,

> and I'm getting build failures.
>
> peigen.c: In function 'abs_finder':
> peigen.c:215:3: error: left shift count >= width of type [-Werror]
>     return (sec->vma <= abs_val) && ((sec->vma + (1L << 32)) > abs_val);
>     ^
> peigen.c: In function '_bfd_pei_swap_sym_out':
> peigen.c:239:7: error: left shift count >= width of type [-Werror]
>         && in->n_value > ((1L << 32) - 1)
>         ^
> peigen.c:239:22: error: comparison between signed and unsigned integer
> expressions [-Werror=sign-compare]
>         && in->n_value > ((1L << 32) - 1)
>
>
> Nick, can you fix?

Should be fixed now.

Cheers
   Nick


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: 32 bit host build failure from peXXigen.c
  2014-04-22 15:58 ` Nicholas Clifton
@ 2014-04-23 20:18   ` Edjunior Barbosa Machado
  2014-04-24 15:10     ` Nicholas Clifton
  0 siblings, 1 reply; 8+ messages in thread
From: Edjunior Barbosa Machado @ 2014-04-23 20:18 UTC (permalink / raw)
  To: Nicholas Clifton, Doug Evans, Binutils

On 04/22/2014 12:58 PM, Nicholas Clifton wrote:
> Hi Doug,
> 
>> and I'm getting build failures.
>>
>> peigen.c: In function 'abs_finder':
>> peigen.c:215:3: error: left shift count >= width of type [-Werror]
>>     return (sec->vma <= abs_val) && ((sec->vma + (1L << 32)) > abs_val);
>>     ^
>> peigen.c: In function '_bfd_pei_swap_sym_out':
>> peigen.c:239:7: error: left shift count >= width of type [-Werror]
>>         && in->n_value > ((1L << 32) - 1)
>>         ^
>> peigen.c:239:22: error: comparison between signed and unsigned integer
>> expressions [-Werror=sign-compare]
>>         && in->n_value > ((1L << 32) - 1)
>>
>>
>> Nick, can you fix?
> 
> Should be fixed now.
> 

Hi Nick,

now I'm facing this build issue with peigen.c on x86:

...
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../../bfd -DTRAD_CORE -I. -I../../bfd -I../../bfd/../include -DHAVE_bfd_elf32_i386_vec -DHAVE_i386linux_vec -DHAVE_i386pei_vec -DHAVE_bfd_elf32_little_generic_vec -DHAVE_bfd_elf32_big_generic_vec -DBINDIR=\"/usr/local/bin\" -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Werror -g -O2 -MT peigen.lo -MD -MP -MF .deps/peigen.Tpo -c peigen.c -o peigen.o
peigen.c: In function ‘_bfd_pei_swap_sym_out’:
peigen.c:240:7: error: comparison is always false due to limited range of data type [-Werror=type-limits]
cc1: all warnings being treated as errors
make[4]: *** [peigen.lo] Error 1

This problem was introduced on commit d5f59c10fc37e325d3fbad4ae7970c7cf0857b46.

Thanks,
--
Edjunior

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: 32 bit host build failure from peXXigen.c
  2014-04-23 20:18   ` Edjunior Barbosa Machado
@ 2014-04-24 15:10     ` Nicholas Clifton
  2014-04-24 16:23       ` Edjunior Barbosa Machado
  0 siblings, 1 reply; 8+ messages in thread
From: Nicholas Clifton @ 2014-04-24 15:10 UTC (permalink / raw)
  To: Edjunior Barbosa Machado, Doug Evans, Binutils

[-- Attachment #1: Type: text/plain, Size: 523 bytes --]

Hi Edjunior,

> now I'm facing this build issue with peigen.c on x86:

> peigen.c: In function ‘_bfd_pei_swap_sym_out’:
> peigen.c:240:7: error: comparison is always false due to limited range of data type [-Werror=type-limits]

Darn.  Which version of gcc are you using ?

I have just tried using gcc 4.8.2 on a 32-bit Fedora 20 installation and 
this error did not happen.  (I did find and fix another 32-bit issue).

Could you try out the attached patch and let me know if it works for you ?

Cheers
   Nick



[-- Attachment #2: fred --]
[-- Type: text/plain, Size: 1534 bytes --]

diff --git a/bfd/peXXigen.c b/bfd/peXXigen.c
index d462753..977e389 100644
--- a/bfd/peXXigen.c
+++ b/bfd/peXXigen.c
@@ -235,22 +235,22 @@ _bfd_XXi_swap_sym_out (bfd * abfd, void * inp, void * extp)
      problem by finding a section whose base address is sufficient to
      reduce the absolute value to < 1^32, and then transforming the
      symbol into a section relative symbol.  This of course is a hack.  */
-  if (sizeof (in->n_value) > 4
-      && in->n_value > ((1ULL << 32) - 1)
-      && in->n_scnum == -1)
-    {
-      asection * sec;
+  if (sizeof (in->n_value) > 4)
+    if (in->n_value > ((1ULL << 32) - 1)
+	&& in->n_scnum == -1)
+      {
+	asection * sec;
 
-      sec = bfd_sections_find_if (abfd, abs_finder, & in->n_value);
-      if (sec)
-	{
-	  in->n_value -= sec->vma;
-	  in->n_scnum = sec->target_index;
-	}
-      /* else: FIXME: The value is outside the range of any section.  This
-	 happens for __image_base__ and __ImageBase__ and maybe some other
-	 symbols as well.  We should find a way to handle these values.  */
-    }
+	sec = bfd_sections_find_if (abfd, abs_finder, & in->n_value);
+	if (sec)
+	  {
+	    in->n_value -= sec->vma;
+	    in->n_scnum = sec->target_index;
+	  }
+	/* else: FIXME: The value is outside the range of any section.  This
+	   happens for __image_base__ and __ImageBase__ and maybe some other
+	   symbols as well.  We should find a way to handle these values.  */
+      }
 
   H_PUT_32 (abfd, in->n_value, ext->e_value);
   H_PUT_16 (abfd, in->n_scnum, ext->e_scnum);

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: 32 bit host build failure from peXXigen.c
  2014-04-24 15:10     ` Nicholas Clifton
@ 2014-04-24 16:23       ` Edjunior Barbosa Machado
  2014-04-25 13:07         ` Nicholas Clifton
  0 siblings, 1 reply; 8+ messages in thread
From: Edjunior Barbosa Machado @ 2014-04-24 16:23 UTC (permalink / raw)
  To: Nicholas Clifton, Doug Evans, Binutils

Hi Nick,

On 04/24/2014 12:09 PM, Nicholas Clifton wrote:
> Darn.  Which version of gcc are you using ?
> 
> I have just tried using gcc 4.8.2 on a 32-bit Fedora 20 installation and
> this error did not happen.  (I did find and fix another 32-bit issue).
> 
> Could you try out the attached patch and let me know if it works for you ?
> 

Thank you for the patch, but unfortunately it still fails on my build
here, with the same error message (comparison is always false due to
limited range of data type [-Werror=type-limits]).

I'm using gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5).

Thanks,
--
Edjunior

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: 32 bit host build failure from peXXigen.c
  2014-04-24 16:23       ` Edjunior Barbosa Machado
@ 2014-04-25 13:07         ` Nicholas Clifton
  2014-04-25 15:17           ` Edjunior Barbosa Machado
  0 siblings, 1 reply; 8+ messages in thread
From: Nicholas Clifton @ 2014-04-25 13:07 UTC (permalink / raw)
  To: Edjunior Barbosa Machado; +Cc: Doug Evans, Binutils

[-- Attachment #1: Type: text/plain, Size: 392 bytes --]

Hi Edjunior,

> Thank you for the patch, but unfortunately it still fails on my build

Ho hum.  OK - I have another patch for you to try...

> I'm using gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5).

Ah - unfortunately I do not have access to a system with this version of 
gcc.


Please try the attached patch and let me know if I have gotten it right 
this time. :-)

Cheers
   Nick




[-- Attachment #2: peXXigen.patch --]
[-- Type: text/x-patch, Size: 973 bytes --]

diff --git a/bfd/peXXigen.c b/bfd/peXXigen.c
index d462753..dc45daf 100644
--- a/bfd/peXXigen.c
+++ b/bfd/peXXigen.c
@@ -236,7 +236,15 @@ _bfd_XXi_swap_sym_out (bfd * abfd, void * inp, void * extp)
      reduce the absolute value to < 1^32, and then transforming the
      symbol into a section relative symbol.  This of course is a hack.  */
   if (sizeof (in->n_value) > 4
+      /* GCC 4.6.x erroneously complains about the next test always being
+	 false when compiled on a 32-bit host.  (The sizeof test above
+	 should have made the warning unnecessary).  Hence we have to
+	 predicate the test.  It should not matter if the test is omitted
+	 since the worst that can happen is that some absolute symbols
+	 are needlessly converted to equivalent section relative symbols.  */
+#if defined BFD64 || ! defined __GNUC__ || __GNUC__ > 4 || __GNUC_MINOR__ > 6
       && in->n_value > ((1ULL << 32) - 1)
+#endif
       && in->n_scnum == -1)
     {
       asection * sec;

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: 32 bit host build failure from peXXigen.c
  2014-04-25 13:07         ` Nicholas Clifton
@ 2014-04-25 15:17           ` Edjunior Barbosa Machado
  0 siblings, 0 replies; 8+ messages in thread
From: Edjunior Barbosa Machado @ 2014-04-25 15:17 UTC (permalink / raw)
  To: Nicholas Clifton; +Cc: Doug Evans, Binutils

On 04/25/2014 10:06 AM, Nicholas Clifton wrote:
> Ah - unfortunately I do not have access to a system with this version of
> gcc.
> 
> 
> Please try the attached patch and let me know if I have gotten it right
> this time. :-)

Hi Nick,

your latest patch fixed the build problem here, thanks a lot for your help!

--
Edjunior

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2014-04-25 15:17 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-04-16 17:34 32 bit host build failure from peXXigen.c Doug Evans
2014-04-17  0:14 ` asmwarrior
2014-04-22 15:58 ` Nicholas Clifton
2014-04-23 20:18   ` Edjunior Barbosa Machado
2014-04-24 15:10     ` Nicholas Clifton
2014-04-24 16:23       ` Edjunior Barbosa Machado
2014-04-25 13:07         ` Nicholas Clifton
2014-04-25 15:17           ` Edjunior Barbosa Machado

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).