the same gcc binary emits warnings on one machine but not on another
john smith
wempwer@gmail.com
Thu Oct 20 18:00:00 GMT 2016
On Thu, Oct 20, 2016 at 7:53 PM, Jonathan Wakely <jwakely.gcc@gmail.com> wrote:
> On 20 October 2016 at 18:42, john smith wrote:
>> We use the same cross-compiler on two Linux machines: machine A and
>> machine B. It produces some warnings on machine A but not on machine
>> B when used to compile the same file and with the same set of options
>> (specifically we use -Wall and -Wextra). We are absolutely sure that
>> it's the same compiler - it's in the same version and has the same
>> md5sum on both machines. However, these 2 Linux machines differ - A
>> is x32 Ubuntu, B is x64 bit Slackware. I checked all environment
>
> Do you really mean x32, as in https://en.wikipedia.org/wiki/X32_ABI ?
> Or do you mean you mean x86 aka IA-32?
Sorry, I meant x86.
> Are both compilers producing 32-bit output? Both producing 64-bit
> output? One 32-bit and one 64-bit?
>
> That could make all the difference, compiling printf("%lu",
> sizeof(1)); will warn for i686 and not for x86_64, for example.
They both produce output for ARM 32-bit. They are the same, and have
been configured the same by the vendor.
>> variables on both machines and didn't find anything suspicious - no
>> CFLAGS, CC or something related to compilation at all. The compiler
>> in question behaves the same way when invoked from Makefile and when
>> invoked directly from the command line on both machines.
>>
>> Is this possible that due to some local differences in
>> libc/libgcc/whatnot GCC emits warnings on machine A but not on machine
>> B?
>
> Yes. Of course. If a header in /usr/include has a #warning in it on
> one machine and not in the other it's going to warn on one machine and
> not on the other. That's a silly example, but t here are loads of
> things that could cause it.
Since it's a cross-compiler do headers in /usr/include matter?
>> What else can I check to learn what's the culprit here?
>
> All you've said is "I checked everything" and not told us anything useful.
>
> What's the warning? What does the code look like that triggers it?
The warnings are:
warning: control reaches end of non-void function [-Wreturn-type]
and:
warning: unused variable 'i' [-Wunused-variable]
The code is something like this (I cannot show the real code, sorry):
#include <stdio.h>
#include <stdlib.h>
int foo(void)
{}
int main(void)
{
foo();
int i = 10;
return EXIT_SUCCESS;
}
--
<wempwer@gmail.com>
More information about the Gcc-help
mailing list