f



different binary output with 32- and 64-bit hosted compilers

--001a114093f4b9dd02051eb118b6
Content-Type: text/plain; charset=UTF-8

32-bit (i686-linux fedora-9) and 64-bit (x86_64-linux fedora-20) hosted
djgpp-targeting compiler generates different output for some sources.
This happens with djgpp source itself too, and it isn't a nice thing
and was not an expected thing for me. Did the following with gcc-3.4.6:

Compiled djgpp-cvs with a 32- and 64-bit hosted toolchain (gcc-3.4.6
and binutils-2.25.1), then did:
diff -urp --exclude=*.d --exclude=id_*.o --exclude=stub* \
   --exclude=*.tex --exclude=*.exe --exclude=djasm.c \
  32/src 64/src > 64.diff
... which results in this:

Binary files 32/src/debug/fsdb/expr.o and 64/src/debug/fsdb/expr.o differ
Binary files 32/src/libc/ansi/stdio/doprnt.o and
64/src/libc/ansi/stdio/doprnt.o differ
Binary files 32/src/libc/ansi/stdlib/strtoll.o and
64/src/libc/ansi/stdlib/strtoll.o differ
Binary files 32/src/libc/compat/stdlib/rand48.o and
64/src/libc/compat/stdlib/rand48.o differ
Binary files 32/src/libc/posix/sys/stat/lfilelen.o and
64/src/libc/posix/sys/stat/lfilelen.o differ
Binary files 32/src/libc/posix/unistd/lseek.o and
64/src/libc/posix/unistd/lseek.o differ
Binary files 32/src/libm/math/llroundl.o and 64/src/libm/math/llroundl.o differ
Binary files 32/src/libm/math/lroundl.o and 64/src/libm/math/lroundl.o differ
Binary files 32/src/libm/math/roundl.o and 64/src/libm/math/roundl.o differ
Binary files 32/src/libm/math/trunc.o and 64/src/libm/math/trunc.o differ

So I added -save-temps to the relevant sources' EXTRA_CFLAGS in the
makefiles and repeated the experiment, and ran diff like:
diff -urp --exclude=*.o --exclude=*.i --exclude=*.d --exclude=id_*.o \
  --exclude=stub* --exclude=*.tex --exclude=*.exe --exclude=djasm.c \
  32/src 64/src > 64x.diff

... which generated the attached output (Attached: 64x.diff.gz)

Didn't try with any other gcc version (at least not yet).
Can anyone reproduce?

--
O.S.

--001a114093f4b9dd02051eb118b6
Content-Type: application/x-gzip; name="64x.diff.gz"
Content-Disposition: attachment; filename="64x.diff.gz"
Content-Transfer-Encoding: base64
X-Attachment-Id: file0

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
--001a114093f4b9dd02051eb118b6--
0
Ozkan
9/1/2015 3:20:56 PM
comp.os.msdos.djgpp 3308 articles. 0 followers. tigrepotrazosalvaje (34) is leader. Post Follow

20 Replies
4093 Views

Similar Articles

[PageSpeed] 14

> Date: Tue, 1 Sep 2015 18:20:56 +0300
> From: "Ozkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com]" <djgpp@delorie.com>
> 
> 32-bit (i686-linux fedora-9) and 64-bit (x86_64-linux fedora-20) hosted
> djgpp-targeting compiler generates different output for some sources.
> This happens with djgpp source itself too, and it isn't a nice thing
> and was not an expected thing for me. Did the following with gcc-3.4.6:
> 
> Compiled djgpp-cvs with a 32- and 64-bit hosted toolchain (gcc-3.4.6
> and binutils-2.25.1), then did:
> diff -urp --exclude=*.d --exclude=id_*.o --exclude=stub* \
>    --exclude=*.tex --exclude=*.exe --exclude=djasm.c \
>   32/src 64/src > 64.diff
> ... which results in this:

Looks like sign extension and register allocation differences.

GCC 3.4.6 is quite old, could well be a compiler bug.  Maybe it's a
good idea to repeat this experiment with a newer version, like 4.9.x?

Thanks.
0
Eli
9/1/2015 3:49:25 PM
On 09/01/2015 06:49 PM, Eli Zaretskii (eliz@gnu.org) [via djgpp@delorie.com] wrote:

>> Date: Tue, 1 Sep 2015 18:20:56 +0300
>> From: "Ozkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com]" <djgpp@delorie.com>
>>
>> 32-bit (i686-linux fedora-9) and 64-bit (x86_64-linux fedora-20) hosted
>> djgpp-targeting compiler generates different output for some sources.
>> This happens with djgpp source itself too, and it isn't a nice thing
>> and was not an expected thing for me. Did the following with gcc-3.4.6:
>>
>> Compiled djgpp-cvs with a 32- and 64-bit hosted toolchain (gcc-3.4.6
>> and binutils-2.25.1), then did:
>> diff -urp --exclude=*.d --exclude=id_*.o --exclude=stub* \
>>     --exclude=*.tex --exclude=*.exe --exclude=djasm.c \
>>    32/src 64/src > 64.diff
>> ... which results in this:
> Looks like sign extension and register allocation differences.
>
> GCC 3.4.6 is quite old, could well be a compiler bug.  Maybe it's a
> good idea to repeat this experiment with a newer version, like 4.9.x?
>
> Thanks.
>
Tried to build DJGPP v2.05 rpms both for i686 and x86_64 and compared object files

i586-pc-msdosdjgpp --disassemble-all file.o | grep -v file\ format\ coff-go32 >...

As result got several similar differences with gcc-4.9.3 cross-compiler (installed from my RPMs).
One of affected file is stubify.c

Also tried to run cc1.exe from gcc-5.2.0 cross-compiler with mostly same
parameters under valgrind after I replaced cc1 installed from RPM with
one from build directory (to have debug info). The result was rather large
number of valgrind error messages like given below from GCC integrated register allocator (IRA).
I only tested this for x86_64

So I suspect that one could potentially get different results if compiling file repeatedly. I have not
however checked it.

Building cross-compiler do not go through bootstrapping process and comparison of stages 2 and 3
as native build. As the result similar problems are much more likely to noticed when building
native compiler. I do not remember having stage 2 and 3 comparison errors when building native
compiler for DJGPP in last years

Andris

Konsole output
==4888== Memcheck, a memory error detector
==4888== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==4888== Using Valgrind-3.10.1 and LibVEX; rerun with -h for copyright info
==4888== Command: /usr/libexec/gcc/i586-pc-msdosdjgpp/5.2.0/cc1 -quiet -nostdinc -v -I 
/usr/lib64/gcc/i586-pc-msdosdjgpp/5.2.0/include -MD
stubify.d -remap -D GAS_MAJOR=2 -D GAS_MINOR=24 -D GAS_MINORMINOR=0 -iquote . -isystem 
./../../include stubify.c -quiet -dumpbase stubify
.c -mtune=i586 -march=i386 -auxbase stubify -O2 -Wall -version
==4888==
GNU C11 (GCC) version 5.2.0 (i586-pc-msdosdjgpp)
        compiled by GNU C version 5.2.0, GMP version 6.0.0, MPFR version 3.1.2, MPC version 1.0.3
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
#include "..." search starts here:
..
#include <...> search starts here:
/usr/lib64/gcc/i586-pc-msdosdjgpp/5.2.0/include
./../../include
End of search list.
GNU C11 (GCC) version 5.2.0 (i586-pc-msdosdjgpp)
        compiled by GNU C version 5.2.0, GMP version 6.0.0, MPFR version 3.1.2, MPC version 1.0.3
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: c4cb9c242d096e93f63c8f0292044b07
==4888== Conditional jump or move depends on uninitialised value(s)
==4888==    at 0x6F9902: sparseset_bit_p (sparseset.h:147)
==4888==    by 0x6F9902: mark_pseudo_regno_live(int) (ira-lives.c:301)
==4888==    by 0x6FA578: process_bb_node_lives(ira_loop_tree_node*) (ira-lives.c:1281)
==4888==    by 0x6E19D6: ira_traverse_loop_tree(bool, ira_loop_tree_node*, void 
(*)(ira_loop_tree_node*), void (*)(ira_loop_tree_node*)) (
ira-build.c:1845)
==4888==    by 0x6FB1E1: ira_create_allocno_live_ranges() (ira-lives.c:1582)
==4888==    by 0x6E3353: ira_build() (ira-build.c:3461)
==4888==    by 0x6DB57D: ira (ira.c:5254)
==4888==    by 0x6DB57D: (anonymous namespace)::pass_ira::execute(function*) (ira.c:5546)
==4888==    by 0x783AD5: execute_one_pass(opt_pass*) (passes.c:2330)
==4888==    by 0x783EF5: execute_pass_list_1(opt_pass*) [clone .constprop.64] (passes.c:2382)
==4888==    by 0x783F07: execute_pass_list_1(opt_pass*) [clone .constprop.64] (passes.c:2383)
==4888==    by 0x783F48: execute_pass_list(function*, opt_pass*) (passes.c:2393)
==4888==    by 0x54063A: cgraph_node::expand() (cgraphunit.c:1895)
==4888==    by 0x541923: expand_all_functions (cgraphunit.c:2031)
==4888==    by 0x541923: symbol_table::compile() [clone .part.43] (cgraphunit.c:2384)
==4888==
==4888== Conditional jump or move depends on uninitialised value(s)
==4888==    at 0x6F9804: sparseset_bit_p (sparseset.h:147)
==4888==    by 0x6F9804: sparseset_set_bit (sparseset.h:166)
==4888==    by 0x6F9804: make_object_born(ira_object*) (ira-lives.c:132)
==4888==    by 0x6F991F: mark_pseudo_regno_live(int) (ira-lives.c:305)
==4888==    by 0x6FA578: process_bb_node_lives(ira_loop_tree_node*) (ira-lives.c:1281)
==4888==    by 0x6E19D6: ira_traverse_loop_tree(bool, ira_loop_tree_node*, void 
(*)(ira_loop_tree_node*), void (*)(ira_loop_tree_node*)) (
ira-build.c:1845)
==4888==    by 0x6FB1E1: ira_create_allocno_live_ranges() (ira-lives.c:1582)
==4888==    by 0x6E3353: ira_build() (ira-build.c:3461)
==4888==    by 0x6DB57D: ira (ira.c:5254)
==4888==    by 0x6DB57D: (anonymous namespace)::pass_ira::execute(function*) (ira.c:5546)
==4888==    by 0x783AD5: execute_one_pass(opt_pass*) (passes.c:2330)
==4888==    by 0x783EF5: execute_pass_list_1(opt_pass*) [clone .constprop.64] (passes.c:2382)
==4888==    by 0x783F07: execute_pass_list_1(opt_pass*) [clone .constprop.64] (passes.c:2383)
==4888==    by 0x783F48: execute_pass_list(function*, opt_pass*) (passes.c:2393)
==4888==    by 0x54063A: cgraph_node::expand() (cgraphunit.c:1895)
0
Andris
9/1/2015 5:16:46 PM
On 9/1/15, Eli Zaretskii (eliz@gnu.org) [via djgpp@delorie.com]
<djgpp@delorie.com> wrote:
>> Date: Tue, 1 Sep 2015 18:20:56 +0300
>> From: "Ozkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com]"
>> <djgpp@delorie.com>
>>
>> 32-bit (i686-linux fedora-9) and 64-bit (x86_64-linux fedora-20) hosted
>> djgpp-targeting compiler generates different output for some sources.
>> This happens with djgpp source itself too, and it isn't a nice thing
>> and was not an expected thing for me. Did the following with gcc-3.4.6:
>>
>> Compiled djgpp-cvs with a 32- and 64-bit hosted toolchain (gcc-3.4.6
>> and binutils-2.25.1), then did:
>> diff -urp --exclude=*.d --exclude=id_*.o --exclude=stub* \
>>    --exclude=*.tex --exclude=*.exe --exclude=djasm.c \
>>   32/src 64/src > 64.diff
>> ... which results in this:
>
> Looks like sign extension and register allocation differences.
>
> GCC 3.4.6 is quite old, could well be a compiler bug.  Maybe it's a
> good idea to repeat this experiment with a newer version, like 4.9.x?
>

Tried with gcc5, not as bad as gcc-3.4.6 but still shows a difference
(src/debug/fsdb/expr.o still differs)

$ ./i586-pc-msdosdjgpp-gcc -v
Using built-in specs.
COLLECT_GCC=./i586-pc-msdosdjgpp-gcc
COLLECT_LTO_WRAPPER=/home/ozzie/cross-dj5/libexec/gcc/i586-pc-msdosdjgpp/5.2.1/lto-wrapper
Target: i586-pc-msdosdjgpp
Configured with: ../gcc-5.21.r225981/configure
--enable-languages=c,c++ --disable-lto --disable-nls
--target=i586-pc-msdosdjgpp --prefix=/home/ozzie/cross-dj5
Thread model: single
gcc version 5.2.1 20150718 (GCC)


$ diff -urp --exclude=*.d --exclude=*.i --exclude=id_*.o
--exclude=stub* --exclude=*.tex --exclude=*.exe --exclude=djasm.c
32/src 64/src > 64y.diff

Binary files 32/src/debug/fsdb/expr.o and 64/src/debug/fsdb/expr.o differ
diff -urp '--exclude=*.d' '--exclude=*.i' '--exclude=id_*.o'
'--exclude=stub*' '--exclude=*.tex' '--exclude=*.exe'
'--exclude=djasm.c' 32/src/libc/ansi/stdio/doprnt.s
64/src/libc/ansi/stdio/doprnt.s
--- 32/src/libc/ansi/stdio/doprnt.s	2015-09-01 20:57:08.000000000 +0300
+++ 64/src/libc/ansi/stdio/doprnt.s	2015-09-01 21:06:18.258481451 +0300
@@ -4788,85 +4788,85 @@ _NAN_REP.3610:
 	.ascii "NAN\0"
 	.p2align 4
 _powtenneg:
-	.long	-858993459
-	.long	-858993460
+	.long	3435973837
+	.long	3435973836
 	.long	16379
 	.long	1889785610
-	.long	-1546188227
+	.long	2748779069
 	.long	16376
-	.long	-501652180
-	.long	-776530088
+	.long	3793315116
+	.long	3518437208
 	.long	16369
-	.long	-2073964803
-	.long	-1412663535
+	.long	2221002493
+	.long	2882303761
 	.long	16356
-	.long	-1001528997
-	.long	-426404674
+	.long	3293438299
+	.long	3868562622
 	.long	16329
 	.long	1161401530
-	.long	-810475859
+	.long	3484491437
 	.long	16276
-	.long	-1522931291
-	.long	-1468011993
+	.long	2772036005
+	.long	2826955303
 	.long	16170
 	.long	1690100897
-	.long	-573553028
+	.long	3721414268
 	.long	15957
 	.long	1668946234
-	.long	-1070513371
+	.long	3224453925
 	.long	15532
-	.long	-618409444
-	.long	-1874203086
+	.long	3676557852
+	.long	2420764210
 	.long	14682
-	.long	-631783234
-	.long	-1566145883
+	.long	3663184062
+	.long	2728821413
 	.long	12981
 	.long	875965924
-	.long	-827436209
+	.long	3467531087
 	.long	9579
-	.long	-758210594
-	.long	-1495464760
+	.long	3536756702
+	.long	2799502536
 	.long	2776
 	.p2align 4
 _powten:
 	.long	0
-	.long	-1610612736
+	.long	2684354560
 	.long	16386
 	.long	0
-	.long	-939524096
+	.long	3355443200
 	.long	16389
 	.long	0
-	.long	-1673527296
+	.long	2621440000
 	.long	16396
 	.long	0
-	.long	-1094967296
+	.long	3200000000
 	.long	16409
 	.long	67108864
-	.long	-1910781505
+	.long	2384185791
 	.long	16436
 	.long	728806814
-	.long	-1647989336
+	.long	2646977960
 	.long	16489
-	.long	-3168555
-	.long	-1032315063
+	.long	4291798741
+	.long	3262652233
 	.long	16595
-	.long	-2132177696
-	.long	-1816508471
+	.long	2162789600
+	.long	2478458825
 	.long	16808
-	.long	-1644568946
-	.long	-1434522629
+	.long	2650398350
+	.long	2860444667
 	.long	17233
-	.long	-1508994617
-	.long	-484859730
+	.long	2785972679
+	.long	3810107566
 	.long	18083
-	.long	-2123035625
-	.long	-914983546
+	.long	2171931671
+	.long	3379983750
 	.long	19784
-	.long	-985834011
-	.long	-1635042467
+	.long	3309133285
+	.long	2659924829
 	.long	23186
-	.long	-1977575525
-	.long	-1000320510
+	.long	2317391771
+	.long	3294646786
 	.long	29989
 	.p2align 4
 _UPPER_DIGITS:
@@ -4896,13 +4896,13 @@ LC5:
 	.long	1082130432
 	.p2align 4
 LC8:
-	.long	-1977575525
-	.long	-1000320510
+	.long	2317391771
+	.long	3294646786
 	.long	29989
 	.p2align 4
 LC10:
-	.long	-758210594
-	.long	-1495464760
+	.long	3536756702
+	.long	2799502536
 	.long	2776
 	.p2align 2
 LC11:
@@ -4912,6 +4912,6 @@ LC12:
 	.long	520093696
 	.p2align 3
 LC13:
-	.long	-350469331
+	.long	3944497965
 	.long	1058682594
 	.ident	"GCC: (GNU) 5.2.1 20150718"
0
Ozkan
9/1/2015 6:14:05 PM
On 9/1/15, Ozkan Sezer <sezeroz@gmail.com> wrote:
> On 9/1/15, Eli Zaretskii (eliz@gnu.org) [via djgpp@delorie.com]
> <djgpp@delorie.com> wrote:
>>> Date: Tue, 1 Sep 2015 18:20:56 +0300
>>> From: "Ozkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com]"
>>> <djgpp@delorie.com>
>>>
>>> 32-bit (i686-linux fedora-9) and 64-bit (x86_64-linux fedora-20) hosted
>>> djgpp-targeting compiler generates different output for some sources.
>>> This happens with djgpp source itself too, and it isn't a nice thing
>>> and was not an expected thing for me. Did the following with gcc-3.4.6:
>>>
>>> Compiled djgpp-cvs with a 32- and 64-bit hosted toolchain (gcc-3.4.6
>>> and binutils-2.25.1), then did:
>>> diff -urp --exclude=*.d --exclude=id_*.o --exclude=stub* \
>>>    --exclude=*.tex --exclude=*.exe --exclude=djasm.c \
>>>   32/src 64/src > 64.diff
>>> ... which results in this:
>>
>> Looks like sign extension and register allocation differences.
>>
>> GCC 3.4.6 is quite old, could well be a compiler bug.  Maybe it's a
>> good idea to repeat this experiment with a newer version, like 4.9.x?
>>
>
> Tried with gcc5, not as bad as gcc-3.4.6 but still shows a difference

Also used the same gcc5 on x86 and x86_64 host to compile our dxe
files in q2dos project, some of them did differ.
0
Ozkan
9/1/2015 6:22:00 PM
> Date: Tue, 1 Sep 2015 21:14:05 +0300
> From: "Ozkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com]" <djgpp@delorie.com>
> 
> Tried with gcc5, not as bad as gcc-3.4.6 but still shows a difference
> (src/debug/fsdb/expr.o still differs)

AFAICS, all the differences are due to sign extension.  The bit
patterns are the same.
0
Eli
9/1/2015 6:39:27 PM
On 9/1/15, Eli Zaretskii (eliz@gnu.org) [via djgpp@delorie.com]
<djgpp@delorie.com> wrote:
>> Date: Tue, 1 Sep 2015 21:14:05 +0300
>> From: "Ozkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com]"
>> <djgpp@delorie.com>
>>
>> Tried with gcc5, not as bad as gcc-3.4.6 but still shows a difference
>> (src/debug/fsdb/expr.o still differs)
>
> AFAICS, all the differences are due to sign extension.  The bit
> patterns are the same.
>

Do you think bug in upstream gcc or bug in djgpp porting of it?
0
Ozkan
9/1/2015 6:41:37 PM
> Date: Tue, 01 Sep 2015 21:39:27 +0300
> From: "Eli Zaretskii (eliz@gnu.org) [via djgpp@delorie.com]" <djgpp@delorie.com>
> 
> > Date: Tue, 1 Sep 2015 21:14:05 +0300
> > From: "Ozkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com]" <djgpp@delorie.com>
> > 
> > Tried with gcc5, not as bad as gcc-3.4.6 but still shows a difference
> > (src/debug/fsdb/expr.o still differs)
> 
> AFAICS, all the differences are due to sign extension.

Or maybe signed vs unsigned integers.
0
Eli
9/1/2015 6:46:59 PM
> Date: Tue, 1 Sep 2015 21:41:37 +0300
> From: "Ozkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com]" <djgpp@delorie.com>
> 
> On 9/1/15, Eli Zaretskii (eliz@gnu.org) [via djgpp@delorie.com]
> <djgpp@delorie.com> wrote:
> >> Date: Tue, 1 Sep 2015 21:14:05 +0300
> >> From: "Ozkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com]"
> >> <djgpp@delorie.com>
> >>
> >> Tried with gcc5, not as bad as gcc-3.4.6 but still shows a difference
> >> (src/debug/fsdb/expr.o still differs)
> >
> > AFAICS, all the differences are due to sign extension.  The bit
> > patterns are the same.
> >
> 
> Do you think bug in upstream gcc or bug in djgpp porting of it?

I don't think it's a bug.  It's just a different presentation of the
same bit pattern: signed vs unsigned int.
0
Eli
9/1/2015 7:17:40 PM
------=_Part_150186_1391873034.1441167671550
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

I'm not sure but from your email is there a djgpp that runs on a 64 bit ope=
rating system? =C2=A0 The current djgpp source files that I have will not r=
un on my windows 7 64 bit operating system.=C2=A0 Thank you for any info yo=
u can give me.



     On Tuesday, September 1, 2015 8:22 AM, "Ozkan Sezer (sezeroz@gmail.com=
) [via djgpp@delorie.com]" <djgpp@delorie.com> wrote:
  =20

 32-bit (i686-linux fedora-9) and 64-bit (x86_64-linux fedora-20) hosted
djgpp-targeting compiler generates different output for some sources.
This happens with djgpp source itself too, and it isn't a nice thing
and was not an expected thing for me. Did the following with gcc-3.4.6:

Compiled djgpp-cvs with a 32- and 64-bit hosted toolchain (gcc-3.4.6
and binutils-2.25.1), then did:
diff -urp --exclude=3D*.d --exclude=3Did_*.o --exclude=3Dstub* \
=C2=A0 --exclude=3D*.tex --exclude=3D*.exe --exclude=3Ddjasm.c \
=C2=A0 32/src 64/src > 64.diff
... which results in this:

Binary files 32/src/debug/fsdb/expr.o and 64/src/debug/fsdb/expr.o differ
Binary files 32/src/libc/ansi/stdio/doprnt.o and
64/src/libc/ansi/stdio/doprnt.o differ
Binary files 32/src/libc/ansi/stdlib/strtoll.o and
64/src/libc/ansi/stdlib/strtoll.o differ
Binary files 32/src/libc/compat/stdlib/rand48.o and
64/src/libc/compat/stdlib/rand48.o differ
Binary files 32/src/libc/posix/sys/stat/lfilelen.o and
64/src/libc/posix/sys/stat/lfilelen.o differ
Binary files 32/src/libc/posix/unistd/lseek.o and
64/src/libc/posix/unistd/lseek.o differ
Binary files 32/src/libm/math/llroundl.o and 64/src/libm/math/llroundl.o di=
ffer
Binary files 32/src/libm/math/lroundl.o and 64/src/libm/math/lroundl.o diff=
er
Binary files 32/src/libm/math/roundl.o and 64/src/libm/math/roundl.o differ
Binary files 32/src/libm/math/trunc.o and 64/src/libm/math/trunc.o differ

So I added -save-temps to the relevant sources' EXTRA_CFLAGS in the
makefiles and repeated the experiment, and ran diff like:
diff -urp --exclude=3D*.o --exclude=3D*.i --exclude=3D*.d --exclude=3Did_*.=
o \
=C2=A0 --exclude=3Dstub* --exclude=3D*.tex --exclude=3D*.exe --exclude=3Ddj=
asm.c \
=C2=A0 32/src 64/src > 64x.diff

... which generated the attached output (Attached: 64x.diff.gz)

Didn't try with any other gcc version (at least not yet).
Can anyone reproduce?

--
O.S.


  
------=_Part_150186_1391873034.1441167671550
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<html><body><div style=3D"color:#000; background-color:#fff; font-family:ti=
mes new roman, new york, times, serif;font-size:16px"><div id=3D"yui_3_16_0=
_1_1441167171443_4382" dir=3D"ltr">I'm not sure but from your email is ther=
e a djgpp that runs on a 64 bit operating system<!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:View>Normal</w:View>
  <w:Zoom>0</w:Zoom>
  <w:PunctuationKerning/>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
  </w:Compatibility>
  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
 </w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:LatentStyles DefLockedState=3D"false" LatentStyleCount=3D"156">
 </w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
 /* Style Definitions */
 table.MsoNormalTable
=09{mso-style-name:"Table Normal";
=09mso-tstyle-rowband-size:0;
=09mso-tstyle-colband-size:0;
=09mso-style-noshow:yes;
=09mso-style-parent:"";
=09mso-padding-alt:0in 5.4pt 0in 5.4pt;
=09mso-para-margin:0in;
=09mso-para-margin-bottom:.0001pt;
=09mso-pagination:widow-orphan;
=09font-size:10.0pt;
=09font-family:"Times New Roman";
=09mso-ansi-language:#0400;
=09mso-fareast-language:#0400;
=09mso-bidi-language:#0400;}
</style>
<![endif]--><span class=3D"" id=3D"yui_3_16_0_1_1441167171443_5903" style=
=3D"font-size:12.0pt;font-family:&quot;Times New Roman&quot;;mso-fareast-fo=
nt-family:&quot;Times New Roman&quot;;mso-ansi-language:EN-US;mso-fareast-l=
anguage:EN-US;mso-bidi-language:AR-SA">? &nbsp;</span> The current djgpp so=
urce files that I have will not run on my windows 7 64 bit operating system=
<!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:View>Normal</w:View>
  <w:Zoom>0</w:Zoom>
  <w:PunctuationKerning/>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
  </w:Compatibility>
  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
 </w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:LatentStyles DefLockedState=3D"false" LatentStyleCount=3D"156">
 </w:LatentStyles>
</xml><![endif]--><span class=3D"" id=3D"yui_3_16_0_1_1441167171443_5651" s=
tyle=3D"font-size:12.0pt;font-family:&quot;Times New Roman&quot;;mso-fareas=
t-font-family:&quot;Times New Roman&quot;;mso-ansi-language:EN-US;mso-farea=
st-language:EN-US;mso-bidi-language:AR-SA">.&nbsp; Thank you for any info y=
ou can give me.<br></span></div><br><div class=3D"qtdSeparateBR"><br><br></=
div><div style=3D"display: block;" class=3D"yahoo_quoted"> <div style=3D"fo=
nt-family: times new roman, new york, times, serif; font-size: 16px;"> <div=
 style=3D"font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Luc=
ida Grande, sans-serif; font-size: 16px;"> <div dir=3D"ltr"> <font face=3D"=
Arial" size=3D"2"> On Tuesday, September 1, 2015 8:22 AM, "Ozkan Sezer (sez=
eroz@gmail.com) [via djgpp@delorie.com]" &lt;djgpp@delorie.com&gt; wrote:<b=
r> </font> </div>  <br><br> <div class=3D"y_msg_container">32-bit (i686-lin=
ux fedora-9) and 64-bit (x86_64-linux fedora-20) hosted<br>djgpp-targeting =
compiler generates different output for some sources.<br>This happens with =
djgpp source itself too, and it isn't a nice thing<br>and was not an expect=
ed thing for me. Did the following with gcc-3.4.6:<br><br>Compiled djgpp-cv=
s with a 32- and 64-bit hosted toolchain (gcc-3.4.6<br>and binutils-2.25.1)=
, then did:<br>diff -urp --exclude=3D*.d --exclude=3Did_*.o --exclude=3Dstu=
b* \<br>&nbsp;  --exclude=3D*.tex --exclude=3D*.exe --exclude=3Ddjasm.c \<b=
r>&nbsp; 32/src 64/src &gt; 64.diff<br>... which results in this:<br><br>Bi=
nary files 32/src/debug/fsdb/expr.o and 64/src/debug/fsdb/expr.o differ<br>=
Binary files 32/src/libc/ansi/stdio/doprnt.o and<br>64/src/libc/ansi/stdio/=
doprnt.o differ<br>Binary files 32/src/libc/ansi/stdlib/strtoll.o and<br>64=
/src/libc/ansi/stdlib/strtoll.o differ<br>Binary files 32/src/libc/compat/s=
tdlib/rand48.o and<br>64/src/libc/compat/stdlib/rand48.o differ<br>Binary f=
iles 32/src/libc/posix/sys/stat/lfilelen.o and<br>64/src/libc/posix/sys/sta=
t/lfilelen.o differ<br>Binary files 32/src/libc/posix/unistd/lseek.o and<br=
>64/src/libc/posix/unistd/lseek.o differ<br>Binary files 32/src/libm/math/l=
lroundl.o and 64/src/libm/math/llroundl.o differ<br>Binary files 32/src/lib=
m/math/lroundl.o and 64/src/libm/math/lroundl.o differ<br>Binary files 32/s=
rc/libm/math/roundl.o and 64/src/libm/math/roundl.o differ<br>Binary files =
32/src/libm/math/trunc.o and 64/src/libm/math/trunc.o differ<br><br>So I ad=
ded -save-temps to the relevant sources' EXTRA_CFLAGS in the<br>makefiles a=
nd repeated the experiment, and ran diff like:<br>diff -urp --exclude=3D*.o=
 --exclude=3D*.i --exclude=3D*.d --exclude=3Did_*.o \<br>&nbsp; --exclude=
=3Dstub* --exclude=3D*.tex --exclude=3D*.exe --exclude=3Ddjasm.c \<br>&nbsp=
; 32/src 64/src &gt; 64x.diff<br><br>... which generated the attached outpu=
t (Attached: 64x.diff.gz)<br><br>Didn't try with any other gcc version (at =
least not yet).<br>Can anyone reproduce?<br><br>--<br>O.S.<br><br><br></div=
>  </div> </div>  </div></div></body></html>
------=_Part_150186_1391873034.1441167671550--
0
Peter
9/2/2015 4:21:11 AM
The cross compilers will.  See Andrew Wu's binaries [0].


[0] https://github.com/andrewwutw/build-djgpp/releases

On Tue, Sep 1, 2015 at 9:21 PM, Peter Bailie (prbailie@yahoo.com) [via
djgpp@delorie.com] <djgpp@delorie.com> wrote:
> I'm not sure but from your email is there a djgpp that runs on a 64 bit
> operating system?   The current djgpp source files that I have will not run
> on my windows 7 64 bit operating system.  Thank you for any info you can
> give me.
>
>
>
> On Tuesday, September 1, 2015 8:22 AM, "Ozkan Sezer (sezeroz@gmail.com) [via
> djgpp@delorie.com]" <djgpp@delorie.com> wrote:
>
>
> 32-bit (i686-linux fedora-9) and 64-bit (x86_64-linux fedora-20) hosted
> djgpp-targeting compiler generates different output for some sources.
> This happens with djgpp source itself too, and it isn't a nice thing
> and was not an expected thing for me. Did the following with gcc-3.4.6:
>
> Compiled djgpp-cvs with a 32- and 64-bit hosted toolchain (gcc-3.4.6
> and binutils-2.25.1), then did:
> diff -urp --exclude=*.d --exclude=id_*.o --exclude=stub* \
>   --exclude=*.tex --exclude=*.exe --exclude=djasm.c \
>   32/src 64/src > 64.diff
> ... which results in this:
>
> Binary files 32/src/debug/fsdb/expr.o and 64/src/debug/fsdb/expr.o differ
> Binary files 32/src/libc/ansi/stdio/doprnt.o and
> 64/src/libc/ansi/stdio/doprnt.o differ
> Binary files 32/src/libc/ansi/stdlib/strtoll.o and
> 64/src/libc/ansi/stdlib/strtoll.o differ
> Binary files 32/src/libc/compat/stdlib/rand48.o and
> 64/src/libc/compat/stdlib/rand48.o differ
> Binary files 32/src/libc/posix/sys/stat/lfilelen.o and
> 64/src/libc/posix/sys/stat/lfilelen.o differ
> Binary files 32/src/libc/posix/unistd/lseek.o and
> 64/src/libc/posix/unistd/lseek.o differ
> Binary files 32/src/libm/math/llroundl.o and 64/src/libm/math/llroundl.o
> differ
> Binary files 32/src/libm/math/lroundl.o and 64/src/libm/math/lroundl.o
> differ
> Binary files 32/src/libm/math/roundl.o and 64/src/libm/math/roundl.o differ
> Binary files 32/src/libm/math/trunc.o and 64/src/libm/math/trunc.o differ
>
> So I added -save-temps to the relevant sources' EXTRA_CFLAGS in the
> makefiles and repeated the experiment, and ran diff like:
> diff -urp --exclude=*.o --exclude=*.i --exclude=*.d --exclude=id_*.o \
>   --exclude=stub* --exclude=*.tex --exclude=*.exe --exclude=djasm.c \
>   32/src 64/src > 64x.diff
>
> ... which generated the attached output (Attached: 64x.diff.gz)
>
> Didn't try with any other gcc version (at least not yet).
> Can anyone reproduce?
>
> --
> O.S.
>
>
0
Louis
9/2/2015 5:10:44 AM
On 09/02/2015 07:21 AM, Peter Bailie (prbailie@yahoo.com) [via djgpp@delorie.com] wrote:
> I'm not sure but from your email is there a djgpp that runs on a 64 bit operating system? The 
> current djgpp source files that I have will not run on my windows 7 64 bit operating system. 
> Thank you for any info you can give me.

Nobody here is writing about running DJGPP under 64-bit WIndows directly

The problem is with compiling sources for DJGPP using cross-compiler on 64 bit and 32 bit systems 
(in this case Linux).
Cross-compilers built for 32- and 64-bit Linux versions produce slightly different output. I 
suspected (due to uninitialized
memory use errors detected by Valgrind) that repeatedly running compiler for same system could also
produce different results but failed to detect it on 64-bit Linux (Fedora 22 x86_64)

There seems to be no problems with DJGPP native compiler. Bootstrapping gcc is very sensitive about 
such problems so
all is perhaps OK with native compiler

Andris

0
Andris
9/2/2015 5:12:29 AM
"Ozkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com]" <djgpp@delorie.com> wrote:
....
> Binary files 32/src/debug/fsdb/expr.o and 64/src/debug/fsdb/expr.o differ
> diff -urp '--exclude=*.d' '--exclude=*.i' '--exclude=id_*.o'
> '--exclude=stub*' '--exclude=*.tex' '--exclude=*.exe'
> '--exclude=djasm.c' 32/src/libc/ansi/stdio/doprnt.s
> 64/src/libc/ansi/stdio/doprnt.s
> --- 32/src/libc/ansi/stdio/doprnt.s     2015-09-01 20:57:08.000000000 +0300
> +++ 64/src/libc/ansi/stdio/doprnt.s     2015-09-01 21:06:18.258481451 +0300
> @@ -4788,85 +4788,85 @@ _NAN_REP.3610:
>         .ascii "NAN\0"
>         .p2align 4
>  _powtenneg:
> -       .long   -858993459
> -       .long   -858993460
> +       .long   3435973837
> +       .long   3435973836


-858993459 and 3435973837 is the same number on a 32-bit
two-complements machine (you'll get the same bit pattern in the
memory). Likewise -858993460 and 3435973836.

I say all the others are as well but I haven't verified that.


-- 
MartinS
0
Martin
9/2/2015 6:02:37 AM
On 9/2/15, Martin Str|mberg <ams@ludd.luth.se> wrote:
> "Ozkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com]"
> <djgpp@delorie.com> wrote:
> ...
>> Binary files 32/src/debug/fsdb/expr.o and 64/src/debug/fsdb/expr.o differ
>> diff -urp '--exclude=*.d' '--exclude=*.i' '--exclude=id_*.o'
>> '--exclude=stub*' '--exclude=*.tex' '--exclude=*.exe'
>> '--exclude=djasm.c' 32/src/libc/ansi/stdio/doprnt.s
>> 64/src/libc/ansi/stdio/doprnt.s
>> --- 32/src/libc/ansi/stdio/doprnt.s     2015-09-01 20:57:08.000000000
>> +0300
>> +++ 64/src/libc/ansi/stdio/doprnt.s     2015-09-01 21:06:18.258481451
>> +0300
>> @@ -4788,85 +4788,85 @@ _NAN_REP.3610:
>>         .ascii "NAN\0"
>>         .p2align 4
>>  _powtenneg:
>> -       .long   -858993459
>> -       .long   -858993460
>> +       .long   3435973837
>> +       .long   3435973836
>
>
> -858993459 and 3435973837 is the same number on a 32-bit
> two-complements machine (you'll get the same bit pattern in the
> memory). Likewise -858993460 and 3435973836.
>
> I say all the others are as well but I haven't verified that.

I have a source that gives the following asm output difference

--- g_weapon.s
+++ ../../g_weapon.s
@@ -4526,7 +4526,7 @@
 	.long	1065353216
 	.p2align 3
 LC5:
-	.long	-1717986918
+	.long	2576980378
 	.long	1069128089
 	.p2align 2
 LC13:

... and results in different *.o.  This is with gcc5 (which I really
don't want to use).

The original mail shows that with gcc-3.4.6 there are not only differences
like -858993459 and 3435973837 but also asm output differences.
Similar with gcc-3.3.6. (And I understand that people wouldn't want to
go back to those old gcc.)
0
Ozkan
9/2/2015 7:18:24 AM
> Date: Wed, 2 Sep 2015 10:18:24 +0300
> From: "Ozkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com]" <djgpp@delorie.com>
> 
> > -858993459 and 3435973837 is the same number on a 32-bit
> > two-complements machine (you'll get the same bit pattern in the
> > memory). Likewise -858993460 and 3435973836.
> >
> > I say all the others are as well but I haven't verified that.
> 
> I have a source that gives the following asm output difference
> 
> --- g_weapon.s
> +++ ../../g_weapon.s
> @@ -4526,7 +4526,7 @@
>  	.long	1065353216
>  	.p2align 3
>  LC5:
> -	.long	-1717986918
> +	.long	2576980378
>  	.long	1069128089
>  	.p2align 2
>  LC13:

They are again the same bit pattern, only represented as a signed or
unsigned value.

> ... and results in different *.o.

Can you disassemble the *.o files and show the differences?
0
Eli
9/2/2015 2:35:16 PM
"Ozkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com]" <djgpp@delorie.com> wrote:
> I have a source that gives the following asm output difference

> --- g_weapon.s
> +++ ../../g_weapon.s
> @@ -4526,7 +4526,7 @@
>         .long   1065353216
>         .p2align 3
>  LC5:
> -       .long   -1717986918
> +       .long   2576980378
>         .long   1069128089
>         .p2align 2
>  LC13:

Yes, I understand that.

> .. and results in different *.o.  This is with gcc5 (which I really
> don't want to use).

The diff above can't give different bit patterns on 32-bit
two-complements machine. The bits will be
10011001100110011001100110011010 for both -1717986918 and 2576980378.
The differences in .o must be because of something else.

> The original mail shows that with gcc-3.4.6 there are not only differences
> like -858993459 and 3435973837 but also asm output differences.

I have, so far, only seen posts from you with this (IMO) same bits
non-difference.

If there are different opcodes used, it's (much) harder to definitely
say if they mean the same thing. Likely they don't.


-- 
MartinS
0
Martin
9/2/2015 2:52:13 PM
--001a11c31f746c5d6c051ec52f55
Content-Type: text/plain; charset=UTF-8

On 9/2/15, Eli Zaretskii (eliz@gnu.org) [via djgpp@delorie.com]
<djgpp@delorie.com> wrote:
>> Date: Wed, 2 Sep 2015 10:18:24 +0300
>> From: "Ozkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com]"
>> <djgpp@delorie.com>
>>
>> > -858993459 and 3435973837 is the same number on a 32-bit
>> > two-complements machine (you'll get the same bit pattern in the
>> > memory). Likewise -858993460 and 3435973836.
>> >
>> > I say all the others are as well but I haven't verified that.
>>
>> I have a source that gives the following asm output difference
>>
>> --- g_weapon.s
>> +++ ../../g_weapon.s
>> @@ -4526,7 +4526,7 @@
>>  	.long	1065353216
>>  	.p2align 3
>>  LC5:
>> -	.long	-1717986918
>> +	.long	2576980378
>>  	.long	1069128089
>>  	.p2align 2
>>  LC13:
>
> They are again the same bit pattern, only represented as a signed or
> unsigned value.
>
>> ... and results in different *.o.
>
> Can you disassemble the *.o files and show the differences?
>

See attached tarball. The source in question is here:
https://bitbucket.org/neozeed/q2dos/ (see: game/g_weapon.c )

--001a11c31f746c5d6c051ec52f55
Content-Type: application/x-bzip2; name="gw.tar.bz2"
Content-Disposition: attachment; filename="gw.tar.bz2"
Content-Transfer-Encoding: base64
X-Attachment-Id: file0

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
6VxMsxdSpnGLgcZVZYopFi1oQiERERERERlmM6XCyxTRWVWUYJddELItLRFiihC0IWpaimAzjKsi
EyzLODhZcAf/ctay1FLqIilFKUpS0RCkUiIiIiIiIiIhEIiIi0QiIi1opS1qREREIiIhERCIKUoi
EIta0ItSKREWiH/3oURCIiIiLREWiIiIiyIREQiIi0QiIiIuilKUpRSIiERSlIREQiIpEUpSEIpF
FKUiIilIhCKUspFoQhEQiIpalFKIiIUiiLUihSlLRRS1KUotSIiIoikWpSkKWpRREUhSERCIiIpS
iilIhSkQoiKFKKRERSlKRSKUpSCKUWiFERSkRREUpFoRBSFqRZERSlohERCkRFqREWiIiERCkIha
LIpEREUhSIiIiIikUhFFqURRSKUoopCikUiiIiERVohCEYCxaFroWjFZg4uCcY7suAwDLEIsYLUp
FrUhEIiilIopSilIpFIKREUhSLUhRFLUUpERFIiKRaliiKKKIhSlKIstSiKFKUtSlCkUhSilopFE
QRSKIilIiykQiMLFiikIhFKUhBAuiylKEIshCiFEWoilqKUtRSlqKUhRFIRSlIRFIiKUUpFKRSlL
UUoq1IhCIoilqKQRRFLRRFLRS0WpaKKRRRFIUtFFFSSr2LAutchalIshay6yIuhCIiIsiEQhSlIs
QigpCkUQiKIQixFIpZaIsQiyKUIooRFkREREUpCFIRFkQUiilLKQtFoQiKWpalKKUii0UgotEUiy
IIoodCVZ0Vh2YcYLGdkmMUtBCIQiiFItRFKKUopSKRQhSERSFIpCSSiKIoikRSKRFLRRFClKIQik
UhSKRFoilKKUpSCIpBSikRZFLUoQpFKWgohSiFKKWopEIiqqqrBZYpa0FC1yERF0REQiIiIhSlIi
EIIhSKREKQogpFIiIiIQiyIpSkUsqxSiKRS1ItCClKUixRFLRSlCiLQUIpGVy6LXRRS1LUsaHN2R
GXRjUynSTKYq4sTLjhcZZlZmZjhxxECIURS1FKUiKUilFIREUUpCLKUpCLIwupEXRFqIpEUopERE
RFqUhQiikIpSlEWhRSKREKRaKKQikF11qRdS0KUhCkKUQpSkKQpQoi96qsWsta1mCkWMLOxCzjMz
OOOK5IxlYpBSLUgpCkWiCkCkUtakWpFrWRBSFqQIgUiIIpEIiIFLL2FlrFFwjKmFoWhZFlkIRCyB
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
0kszX516F817ifyf4L6L+5V/9C7kinChIRDPaVo=
--001a11c31f746c5d6c051ec52f55--
0
Ozkan
9/2/2015 3:18:56 PM
> Date: Wed, 2 Sep 2015 18:18:56 +0300
> From: "Ozkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com]" <djgpp@delorie.com>
> 
> On 9/2/15, Eli Zaretskii (eliz@gnu.org) [via djgpp@delorie.com]
> <djgpp@delorie.com> wrote:
> >> Date: Wed, 2 Sep 2015 10:18:24 +0300
> >> From: "Ozkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com]"
> >> <djgpp@delorie.com>
> >>
> >> > -858993459 and 3435973837 is the same number on a 32-bit
> >> > two-complements machine (you'll get the same bit pattern in the
> >> > memory). Likewise -858993460 and 3435973836.
> >> >
> >> > I say all the others are as well but I haven't verified that.
> >>
> >> I have a source that gives the following asm output difference
> >>
> >> --- g_weapon.s
> >> +++ ../../g_weapon.s
> >> @@ -4526,7 +4526,7 @@
> >>  	.long	1065353216
> >>  	.p2align 3
> >>  LC5:
> >> -	.long	-1717986918
> >> +	.long	2576980378
> >>  	.long	1069128089
> >>  	.p2align 2
> >>  LC13:
> >
> > They are again the same bit pattern, only represented as a signed or
> > unsigned value.
> >
> >> ... and results in different *.o.
> >
> > Can you disassemble the *.o files and show the differences?
> >
> 
> See attached tarball. The source in question is here:
> https://bitbucket.org/neozeed/q2dos/ (see: game/g_weapon.c )

Looks like the only difference is some alignment issue, perhaps the
64-bit compiler wants to align stronger.

Could someone who feels more at home with assembly please take a look?
DJ?
0
Eli
9/2/2015 3:53:23 PM
> Could someone who feels more at home with assembly please take a look?
> DJ?

The difference is in GAS itself, which chooses a longer form of the JE
opcode here (and no, I can't think of a good reason why):

32:    21d3:	0f 84 47 00 00 00    	je     2220 <_fire_grenade2+0x270>
64:    21d3:	74 4b                	je     2220 <_fire_grenade2+0x270>

There are no other root differences - every other difference is due to
addresses being different, and even that is limited as an alignment
shortly after that resynchromizes everything.
0
DJ
9/2/2015 6:53:59 PM
> Date: Wed, 2 Sep 2015 14:53:59 -0400
> From: DJ Delorie <dj@delorie.com>
> 
> > Could someone who feels more at home with assembly please take a look?
> > DJ?
> 
> The difference is in GAS itself, which chooses a longer form of the JE
> opcode here (and no, I can't think of a good reason why):

Perhaps this should be reported to the Binutils maintainers.

> 32:    21d3:	0f 84 47 00 00 00    	je     2220 <_fire_grenade2+0x270>
> 64:    21d3:	74 4b                	je     2220 <_fire_grenade2+0x270>
> 
> There are no other root differences - every other difference is due to
> addresses being different, and even that is limited as an alignment
> shortly after that resynchromizes everything.

Thanks.

So I guess we can conclude that these differences can be disregarded,
at least with a new enough version of GCC.  The fact there are
differences is, of course, an annoyance, but it looks like we will
have to live with that.
0
Eli
9/2/2015 7:07:27 PM
On 9/2/15, Eli Zaretskii (eliz@gnu.org) [via djgpp@delorie.com]
<djgpp@delorie.com> wrote:
>> Date: Wed, 2 Sep 2015 14:53:59 -0400
>> From: DJ Delorie <dj@delorie.com>
>>
>> > Could someone who feels more at home with assembly please take a look?
>> > DJ?
>>
>> The difference is in GAS itself, which chooses a longer form of the JE
>> opcode here (and no, I can't think of a good reason why):
>
> Perhaps this should be reported to the Binutils maintainers.
>
>> 32:    21d3:	0f 84 47 00 00 00    	je     2220 <_fire_grenade2+0x270>
>> 64:    21d3:	74 4b                	je     2220 <_fire_grenade2+0x270>
>>
>> There are no other root differences - every other difference is due to
>> addresses being different, and even that is limited as an alignment
>> shortly after that resynchromizes everything.
>
> Thanks.
>
> So I guess we can conclude that these differences can be disregarded,
> at least with a new enough version of GCC.  The fact there are
> differences is, of course, an annoyance, but it looks like we will
> have to live with that.
>

OK.  Many thanks to all.
0
Ozkan
9/2/2015 8:07:28 PM
Reply:

Similar Artilces:

64 bit binary and 32 bit binary have different result. Is it library bug or compiler bug?
#include <errno.h> #include <stdlib.h> #include <string.h> #include <stdio.h> #include <dirent.h> #include <assert.h> int main(int argc, char *argv[]) { DIR *s_pDIR; struct dirent *s_pDirEnt; struct dirent *s_pResDirEnt; char s_backupDir[1024]; int s_rc; s_pDirEnt = NULL; s_pDirEnt = (struct dirent*)malloc(sizeof(struct dirent) + 1024); if(s_pDirEnt == NULL) { printf("malloc error\n"); exit(1); } strcpy(s_b...

Compile to 64-bit on 32-bit OS
Apparently my Mac Mini will run 64-bit code transparently even thought I'm on a 32-bit OS. What I want to know is, how can I compile my code to 64-bit? -- Dr Jon D Harrop, Flying Frog Consultancy Ltd. http://www.ffconsultancy.com/products/?u In article <13l2sktancigaa7@corp.supernews.com>, Jon Harrop <usenet@jdh30.plus.com> wrote: > Apparently my Mac Mini will run 64-bit code transparently even thought I'm > on a 32-bit OS. What I want to know is, how can I compile my code to > 64-bit? You get Intel's Just released C++ Compiler Update with the newer 64bi...

32 bit or 64 bit Oracle on 64 bit OS?
Hello, Currently our environment is on 10g Release 2, OS windows 2000/2003 standard edition 32 bit. We use shared server to take advantage of scalability and connecting maximum no of simultaneous connections to the database. Now we take advantage of memory beyond 4GB we are planning to check following. 64 bit Windows 2003 standard edition on AMD64/EM64T Servers. Do we need to install 64 bit Oracle as well? Do we need to reinstall Oracle clients with 64 bit installable if Oracle Server is upgraded to 64 bit? Is 32 bit Oracle is certified on 64 bit OS? Do we need to take care of any other ...

compiling on 32-bit vs. 64-bit (gcc fails on 64-bit)
On a 64-bit Scientific Linux 5.4 machine, I get the following when I try to compile the basic "Hello world" program: [root]# g++ -Wall hello.cc -o hello /tmp/ccglIDXK.s: Assembler messages: /tmp/ccglIDXK.s:10: Error: suffix or operands invalid for `push' /tmp/ccglIDXK.s:38: Error: suffix or operands invalid for `push' /tmp/ccglIDXK.s:55: Error: suffix or operands invalid for `push' /tmp/ccglIDXK.s:79: Error: suffix or operands invalid for `push' /tmp/ccglIDXK.s:81: Error: suffix or operands invalid for `push' /tmp/ccglIDXK.s:85: Error: suffix or operand...

A 64-bit binary returning a value to a 32-bit binary?
I have a program that needs to be compiled as 64bit. I have another program that needs to be compiled as 32bit and will call that 64-bit binary. Is there a way for the 64-bit binary to return a string to the 32-bit? If so, how? The only way I could think of is to have the 32-bit binary call the 64- bit binary, then it writes to a text file and finally have the 32-bit binary read it off. Is there a better way to do this? spammenotplui31@yahoo.ca wrote: > I have a program that needs to be compiled as 64bit. I have another > program that needs to be compiled as 32bit and will call t...

When a 32-bit OS is 37% faster than a 64-bit OS
http://biz.yahoo.com/bw/061003/20061003005999.html?.v=1 CHICAGO--(BUSINESS WIRE)--Neal Nelson & Associates, a Chicago area computer performance consulting firm, has announced test results that show a possible 37 percent throughput advantage when a Web-based application is run under the 32-bit version of SUSE Linux Enterprise Server 10 from Novell, in comparison to the same machine running a 64-bit version of SUSE Linux Enterprise Server 10. The tests were run on a computer configured with two AMD Opteron 64-bit processors. In comp.os.linux.advocacy, Larry Qualig <lqualig@uku.co.uk&g...

Windows 7 64 bit
My server works under Windows 7 Professional 64 bits, my FileMaker Pro10 Advanced is 32 bits. FM has to connect to a MySQL-database, which driver should I use? The 64bits or the 32bits version? And if 64, can FM communicate via the 64bits driver with MySQL? Or should I better downgrade W7 to 32bits? Harry <a@b.c> wrote: > My server works under Windows 7 Professional 64 bits, my FileMaker > Pro10 Advanced is 32 bits. > FM has to connect to a MySQL-database, which driver should I use? > The 64bits or the 32bits version? I never used Filemaker. And I try to sta...

Are 64-bit Binaries Really Slower than 32-bit Binaries?
http://www.osnews.com/story.php?news_id=5768&page=1 "Jean Marc BRUN" <jean-marc.brun _arobace/at_ tgcp.fr> wrote: > http://www.osnews.com/story.php?news_id=5768&page=1 hey dammit!! I just posted that a couple of days ago! :-) -nick e. -- Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect. --Linus Torvalds "Nick E." <nicke@flyingpigs.com> a �crit dans le message de news: JYcRb.4749 --- > I just posted that a couple of days ago! > > :-) > OOOPSS... Let's say it's for ...

What is the difference between 32 and 64 bit Python on Windows 7 64 bit?
--001a11c22568ee6c3a04f91a5298 Content-Type: text/plain; charset=UTF-8 Hi, I want to install Python on a PC with 16GB of RAM and the 64 bit version of Windows 7. I want Python to be able to use as much as possible of the RAM. When I install the 64 bit version of Python I find that sys.maxint == 2**31 - 1 Whereas the Pythpon installed on my 64 bit linux system returns sys.maxint == 2**63 - 1. It looks to me as though 32 and 64 bit versions of Python on 64 bit Windows are both really 32 bit Python, differing only in how they interact with Windows. So I wouldn't expect ...

Progress with 32-bit compiles with 64-bit compiler and related GLADE issues
Hi all! Progress so far... I have been using the x86_64 GNAT, version 4.1.0 to compile 32-bit and 64-bit code. (I'm on Fedora Core 5 at the moment!) The "-m32" option didn't work for GNAT without a bit of messing around. First I had to install a 32-bit libgnat.a, but that didn't work until I put in a link from libgnat-4.1.a into /usr/lib (it should get it from a separate x86_64-redhat-linux/4.1.0/32 directory, but doesn't. Running "gnatmake -m32 ..." now builds working 32-bit executables, but I am left with the warning: /usr/bin/ld: skipping incompati...

How to tell if a program compiled as 32-bit or 64-bit? (Windows Vista 64)
I think I have finally gotten my Visual C++ Express 2008 to use the 64-bit compiler in the Windows 7 SDK. I THINK! But I want to make sure. I've compiled some programs with the 'target platform' set to x64 in VC Express, but how do I tell if they really compiled into AMD64 code? Thanks, Roy "Bad Roy" <AlaBadRoy@yahoo.com> wrote in message news:e1t5e51mvn3hd721l4or8l1qr2vjiff069@4ax.com... > I think I have finally gotten my Visual C++ Express 2008 to > use the 64-bit compiler in the Windows 7 SDK. I THINK! But I want to > make sure. I've co...

32 Bit or 64 Bit OS?
At first I thought if I had 64 bit hardware the best server performance would be had with 64 bit operating system. Now I am not sure because I have read about far greater memory usage for the same task on a 64 bit OS. I am seeking opinions on whether to have a 32 bit or 64 bit OS in my situation. The Hardware is an Intel Xeon processor. The server is a VPS with 512 MB allocated. The OS will be a guest of XenServer. The website will be run by Drupal which requires the execution of lot of PHP code and several database queries for each web page served. Memcached, XCache and Fast ...

64-bit / 32-bit compilation
Hi Everyone, Many a times, while trying to compile software from source, I face the situation where the 32-bit based code tries to access a 64-bit library of 64-bit executable. In such a situation, I get an "Wrong ELF class" error. Is there anyway I can compile that 64-bit library or executable so that my 32-bit code can also use it. Is this what is known as cross- compilation? My environment is: Solaris 10 5/08 s10x_u5wos_10 X86. CC: Sun C++ 5.8 Patch 121018-15 2008/05/14 GNU Make 3.81 ld: Software Generation Utilities - Solaris Link Editors: 5.10-1.489 Thanks & Regards, dot...

64 bit or 32 bit OS
I have a preinstalled solaris machine, $ uname -a SunOS sun_machine 5.9 Generic_117171-07 sun4u sparc SUNW,Ultra-Enterprise $ uname -X System = SunOS Node = sun_machine Release = 5.9 KernelID = Generic_117171-07 Machine = sun4u BusType = <unknown> Serial = <unknown> Users = <unknown> OEM# = 0 Origin# = 1 NumCPU = 2 1. how to know whether the OS is 32-bit or 64-bit? and whether the release is Maintenance Update 5 or later? or earlier? 2. how to limit the sizes of varios log files ? Thanks. "newbie" <cd@hotmail.com> wrote in message news:dtmab3$fdt$1...

Web resources about - different binary output with 32- and 64-bit hosted compilers - comp.os.msdos.djgpp

Bay Area's first Super Bowl in 1985 reflects transformation of Silicon Valley
No one sitting on their Apple seat cushions on that Super Bowl Sunday in 1985 could anticipate how quickly antiquated their film-filled cameras ...

Full Episode: 01/24/16: Winter Storm Stretches Thousands of Miles
Alaska Jolted by a Powerful Earthquake; Pittsburgh Military Wife Gets Great Surprise When Furnace Breaks

Shakeup At The Top Of Twitter As CEO Confirms Departure Of Key Execs
Following reports this weekend that several top executives at Twitter have left the company, CEO Jack Dorsey tonight confirmed the news and elaborated ...

Reports Of Damage Following 7.1 Magnitude Earthquake In Alaska
State seismologist Michael West says aftershocks from last night’s magnitude 7.1 earthquake in Alaska could easily continue for weeks, the Associated ...

Washington shuts down government, New York rebounds after blizzard
By Frank McGurty and Ian Simpson NEW YORK/WASHINGTON (Reuters) - Washington shut down U.S. federal government offices on Monday, while New York ...

Authorities seek 3 inmates in California prison escape
Chicago Sun-Times Authorities seek 3 inmates in California prison escape Chicago Sun-Times Orange County sheriff's deputies investigate early ...

Islamic State releases video of 'Paris attackers'
The Islamic State group has released a video purporting to show nine jihadists involved in the November Paris attacks that killed 130 people, ...

Matt Damon Reveals Why He's Not in 'Manchester By the Sea'
Matt Damon stops for a quick camera opp while participating in a panel discussion hosted by Stella Artois and held during the 2016 Sundance Film ...

American Airlines: 7 hospitalized after severe turbulence aboard flight to Italy
CNN American Airlines: 7 hospitalized after severe turbulence aboard flight to Italy CNN (CNN) Severe turbulence aboard an American Airlines ...

New York Mayor Blasts Donald Trump For Saying He Could ‘Shoot Someone’ & Still Win, Says Trump ‘Not Presidential’ ...
Donald Trump has a knack for rubbing folks the wrong way. Count New York City Mayor Bill de Blasio in that bunch, as the duly elected leader ...

Resources last updated: 1/25/2016 7:03:35 AM