https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88832

            Bug ID: 88832
           Summary: the layout of .data section of a binary is slightly
                    changed when -g option is enabled.
           Product: gcc
           Version: 7.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: wangchang15 at huawei dot com
  Target Milestone: ---

Dear all,

I use a little-endian cross compiler ( gcc7.3-based
build=host=x86_64-suse-linux target=aarch64-linux-gnu) to compile a C
application temp.c which is randomly generated by a CSmith tool.  




To check whether the binaries are the same when compiling temp.c with and
without -g option, the following command is used.

/some/path/to/my/cross/compiler/aarch64-linux-gnu-gcc temp.c  -static -O2  -I
./csmith/runtime  -fcompare-debug=-g -lm -w  -o ./temp_O2.exe

The result is an error message " error: temp.c: -fcompare-debug failure
(length)".

I checked the .data section in both binaries (with/without -g option), the
reason is that the position of an array variable (g_32) is changed. Because the
alignment requirement, different number of 0s are supplemented to this array
variable and another array variable g_1161 which leads to the length of .data
section in both binaries are different.
The disassembly fragment of .data section of both binaries are listed below. 
The position of array variable g_32 is different in the two binaries.

I do not know whether this situation is normal or this could be some deeper
error.

Definitions of relative variables are listed as follows. All these variables
have initialized to non-zero values at the beginning of the C example.
static int8_t g_32[3][5][7];
static uint16_t g_1161;
static uint64_t g_97[5];
static int32_t g_132;
static int32_t g_562[4][3][6];
static int32_t ** volatile g_997;
static union U0 g_198[5];

.data section fragment 1st (without -g, with -O2):
++++++++++++++++++++++++++++++++++++++++++++++++++
temp_O2.exe:     file format elf64-littleaarch64

Disassembly of section .data:

        ...

0000000000480070 <g_97>:
  480070:       ff ff ff ff ff ff ff ff f6 ff ff ff ff ff ff ff    
................
  480080:       ff ff ff ff ff ff ff ff f6 ff ff ff ff ff ff ff    
................
  480090:       ff ff ff ff ff ff ff ff                             ........

0000000000480098 <g_1161>:
  480098:       b1 bf 00 00                                         ....

000000000048009c <g_132>:
  48009c:       01 00 00 00                                         ....

00000000004800a0 <g_562>:
  4800a0:       01 00 00 00 a8 63 4b 59 cc 4f 0a a8 38 29 ad 89    
.....cKY.O..8)..
  4800b0:       cc 4f 0a a8 a8 63 4b 59 01 00 00 00 a8 63 4b 59    
.O...cKY.....cKY
  4800c0:       cc 4f 0a a8 38 29 ad 89 cc 4f 0a a8 a8 63 4b 59    
.O..8)...O...cKY
  4800d0:       01 00 00 00 a8 63 4b 59 cc 4f 0a a8 38 29 ad 89    
.....cKY.O..8)..
  4800e0:       cc 4f 0a a8 a8 63 4b 59 01 00 00 00 a8 63 4b 59    
.O...cKY.....cKY
  4800f0:       cc 4f 0a a8 38 29 ad 89 cc 4f 0a a8 a8 63 4b 59    
.O..8)...O...cKY
  480100:       01 00 00 00 a8 63 4b 59 cc 4f 0a a8 38 29 ad 89    
.....cKY.O..8)..
  480110:       cc 4f 0a a8 a8 63 4b 59 01 00 00 00 a8 63 4b 59    
.O...cKY.....cKY
  480120:       cc 4f 0a a8 38 29 ad 89 cc 4f 0a a8 a8 63 4b 59    
.O..8)...O...cKY
  480130:       01 00 00 00 a8 63 4b 59 cc 4f 0a a8 38 29 ad 89    
.....cKY.O..8)..
  480140:       cc 4f 0a a8 a8 63 4b 59 01 00 00 00 a8 63 4b 59    
.O...cKY.....cKY
  480150:       cc 4f 0a a8 38 29 ad 89 cc 4f 0a a8 a8 63 4b 59    
.O..8)...O...cKY
  480160:       01 00 00 00 a8 63 4b 59 cc 4f 0a a8 38 29 ad 89    
.....cKY.O..8)..
  480170:       cc 4f 0a a8 a8 63 4b 59 01 00 00 00 a8 63 4b 59    
.O...cKY.....cKY
  480180:       cc 4f 0a a8 38 29 ad 89 cc 4f 0a a8 a8 63 4b 59    
.O..8)...O...cKY
  480190:       01 00 00 00 a8 63 4b 59 cc 4f 0a a8 38 29 ad 89    
.....cKY.O..8)..
  4801a0:       cc 4f 0a a8 a8 63 4b 59 01 00 00 00 a8 63 4b 59    
.O...cKY.....cKY
  4801b0:       cc 4f 0a a8 38 29 ad 89 cc 4f 0a a8 a8 63 4b 59    
.O..8)...O...cKY

00000000004801c0 <g_997>:
  4801c0:       88 0d 48 00 00 00 00 00                             ..H.....

00000000004801c8 <g_32>:
  4801c8:       cc 06 01 40 01 06 cc cc 06 01 40 01 06 cc cc 06    
...@......@.....
  4801d8:       01 40 01 06 cc cc 06 01 40 01 06 cc cc 06 01 40    
.@......@......@
  4801e8:       01 06 cc cc 06 01 40 01 06 cc cc 06 01 40 01 06    
......@......@..
  4801f8:       cc cc 06 01 40 01 06 cc cc 06 01 40 01 06 cc cc    
....@......@....
  480208:       06 01 40 01 06 cc cc 06 01 40 01 06 cc cc 06 01    
..@......@......
  480218:       40 01 06 cc cc 06 01 40 01 06 cc cc 06 01 40 01    
@......@......@.
  480228:       06 cc cc 06 01 40 01 06 cc 00 00 00 00 00 00 00    
.....@..........

0000000000480238 <g_198>:
  480238:       9e b0 49 35 07 f7 e4 57 01 00 00 00 00 00 00 00    
..I5...W........
  480248:       9e b0 49 35 07 f7 e4 57 01 00 00 00 00 00 00 00    
..I5...W........
  480258:       9e b0 49 35 07 f7 e4 57                             ..I5...W

        ...

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


.data section fragment 2nd (with -g and -O2):
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
temp_O2_g.exe:     file format elf64-littleaarch64


Disassembly of section .data:

        ...

0000000000480070 <g_97>:
  480070:       ff ff ff ff ff ff ff ff f6 ff ff ff ff ff ff ff    
................
  480080:       ff ff ff ff ff ff ff ff f6 ff ff ff ff ff ff ff    
................
  480090:       ff ff ff ff ff ff ff ff                             ........

0000000000480098 <g_32>:
  480098:       cc 06 01 40 01 06 cc cc 06 01 40 01 06 cc cc 06    
...@......@.....
  4800a8:       01 40 01 06 cc cc 06 01 40 01 06 cc cc 06 01 40    
.@......@......@
  4800b8:       01 06 cc cc 06 01 40 01 06 cc cc 06 01 40 01 06    
......@......@..
  4800c8:       cc cc 06 01 40 01 06 cc cc 06 01 40 01 06 cc cc    
....@......@....
  4800d8:       06 01 40 01 06 cc cc 06 01 40 01 06 cc cc 06 01    
..@......@......
  4800e8:       40 01 06 cc cc 06 01 40 01 06 cc cc 06 01 40 01    
@......@......@.
  4800f8:       06 cc cc 06 01 40 01 06 cc 00                       .....@....

0000000000480102 <g_1161>:
  480102:       b1 bf                                               ..

0000000000480104 <g_132>:
  480104:       01 00 00 00                                         ....

0000000000480108 <g_562>:
  480108:       01 00 00 00 a8 63 4b 59 cc 4f 0a a8 38 29 ad 89    
.....cKY.O..8)..
  480118:       cc 4f 0a a8 a8 63 4b 59 01 00 00 00 a8 63 4b 59    
.O...cKY.....cKY
  480128:       cc 4f 0a a8 38 29 ad 89 cc 4f 0a a8 a8 63 4b 59    
.O..8)...O...cKY
  480138:       01 00 00 00 a8 63 4b 59 cc 4f 0a a8 38 29 ad 89    
.....cKY.O..8)..
  480148:       cc 4f 0a a8 a8 63 4b 59 01 00 00 00 a8 63 4b 59    
.O...cKY.....cKY
  480158:       cc 4f 0a a8 38 29 ad 89 cc 4f 0a a8 a8 63 4b 59    
.O..8)...O...cKY
  480168:       01 00 00 00 a8 63 4b 59 cc 4f 0a a8 38 29 ad 89    
.....cKY.O..8)..
  480178:       cc 4f 0a a8 a8 63 4b 59 01 00 00 00 a8 63 4b 59    
.O...cKY.....cKY
  480188:       cc 4f 0a a8 38 29 ad 89 cc 4f 0a a8 a8 63 4b 59    
.O..8)...O...cKY
  480198:       01 00 00 00 a8 63 4b 59 cc 4f 0a a8 38 29 ad 89    
.....cKY.O..8)..
  4801a8:       cc 4f 0a a8 a8 63 4b 59 01 00 00 00 a8 63 4b 59    
.O...cKY.....cKY
  4801b8:       cc 4f 0a a8 38 29 ad 89 cc 4f 0a a8 a8 63 4b 59    
.O..8)...O...cKY
  4801c8:       01 00 00 00 a8 63 4b 59 cc 4f 0a a8 38 29 ad 89    
.....cKY.O..8)..
  4801d8:       cc 4f 0a a8 a8 63 4b 59 01 00 00 00 a8 63 4b 59    
.O...cKY.....cKY
  4801e8:       cc 4f 0a a8 38 29 ad 89 cc 4f 0a a8 a8 63 4b 59    
.O..8)...O...cKY
  4801f8:       01 00 00 00 a8 63 4b 59 cc 4f 0a a8 38 29 ad 89    
.....cKY.O..8)..
  480208:       cc 4f 0a a8 a8 63 4b 59 01 00 00 00 a8 63 4b 59    
.O...cKY.....cKY
  480218:       cc 4f 0a a8 38 29 ad 89 cc 4f 0a a8 a8 63 4b 59    
.O..8)...O...cKY

0000000000480228 <g_997>:
  480228:       80 0d 48 00 00 00 00 00                             ..H.....

0000000000480230 <g_198>:
  480230:       9e b0 49 35 07 f7 e4 57 01 00 00 00 00 00 00 00    
..I5...W........
  480240:       9e b0 49 35 07 f7 e4 57 01 00 00 00 00 00 00 00    
..I5...W........
  480250:       9e b0 49 35 07 f7 e4 57                             ..I5...W

        ...
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Reply via email to