bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug gold/24123] incremental_copy_test failure when building with gcc-9


From: saldivarcher at gmail dot com
Subject: [Bug gold/24123] incremental_copy_test failure when building with gcc-9
Date: Sun, 09 Feb 2020 04:19:46 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=24123

Miguel Saldivar <saldivarcher at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |saldivarcher at gmail dot com

--- Comment #3 from Miguel Saldivar <saldivarcher at gmail dot com> ---
The issue comes from `.rodata` section, as it isn't directly emitted in gcc-9,
when using the `-fmerge-constants` flag.

Looking at copy_test_v1.o, produced by gcc-9:
$ readelf --sections copy_test_v1.o
...
  [ 7] .rodata.str1.1
       PROGBITS         0000000000000000  0000000000000100  0
       000000000000002a 0000000000000001  0                 1
       [0000000000000032]: ALLOC, MERGE, STRINGS
  [ 8] .rodata.str1.8
       PROGBITS         0000000000000000  0000000000000130  0
       0000000000000065 0000000000000001  0                 8
       [0000000000000032]: ALLOC, MERGE, STRINGS
...

Now one by gcc-8:
$ readelf --sections copy_test_v1.o
...
  [ 7] .rodata.str1.8
       PROGBITS         0000000000000000  0000000000000100  0
       000000000000004c 0000000000000001  0                 8
       [0000000000000032]: ALLOC, MERGE, STRINGS
  [ 8] .rodata.str1.1
       PROGBITS         0000000000000000  000000000000014c  0
       000000000000001f 0000000000000001  0                 1
       [0000000000000032]: ALLOC, MERGE, STRINGS
  [ 9] .rodata
       PROGBITS         0000000000000000  0000000000000170  0
       000000000000000b 0000000000000000  0                 8
       [0000000000000002]: ALLOC
...

This is the output of `gold` using the `--debug=incremental` flag on the gcc-9
object:
gcctestdir/collect-ld: Free_list::allocate(00000018, 8, 00000540)
gcctestdir/collect-ld: set_section_list_addresses: 00000540 00000018 .rela.plt
gcctestdir/collect-ld: set_section_list_addresses: 000005a8 0000001b .init
gcctestdir/collect-ld: set_section_list_addresses: 000005d0 00000020 .plt
gcctestdir/collect-ld: set_section_list_addresses: 000005f0 00000470 .text
gcctestdir/collect-ld: set_section_list_addresses: 00000a60 0000000d .fini
gcctestdir/collect-ld: set_section_list_addresses: 000001c8 0000001c .interp
gcctestdir/collect-ld: set_section_list_addresses: 00000a70 00000130 .rodata
gcctestdir/collect-ld: set_section_list_addresses: 00000ba0 000000e4 .eh_frame
gcctestdir/collect-ld: Free_list::allocate(00000092, 8, 00000a6d)
gcctestdir/collect-ld: set_section_list_addresses: 00000c88 00000092 .rodata
gcctestdir/collect-ld: Free_list::allocate(00000200, 8, 00000d1a)
gcctestdir/collect-ld: set_section_list_addresses: 00001ad8 00000200 .dynamic
gcctestdir/collect-ld: set_section_list_addresses: 00000eb8 00000040 .got
gcctestdir/collect-ld: set_section_list_addresses: 00000ef8 00000020 .got.plt
gcctestdir/collect-ld: set_section_list_addresses: 00000f18 00000030 .data
gcctestdir/collect-ld: set_section_list_addresses: 00000f48 00000000
.tm_clone_table
gcctestdir/collect-ld: set_section_list_addresses: 00000f48 00000008
.fini_array
gcctestdir/collect-ld: set_section_list_addresses: 00000f50 00000008
.init_array
gcctestdir/collect-ld: internal error in set_section_addresses, at
/mnt/hdd/hdd_workspace/binutils-project/build/gold/../../binutils-gdb/gold/output.cc:4453
collect2: error: ld returned 1 exit status

The output using the same flag on `gold`, but instead using the gcc-8 object:
gcctestdir/collect-ld: Free_list::allocate(00000018, 8, 00000540)
gcctestdir/collect-ld: set_section_list_addresses: 00000540 00000018 .rela.plt
gcctestdir/collect-ld: set_section_list_addresses: 000005a8 0000001b .init
gcctestdir/collect-ld: set_section_list_addresses: 000005d0 00000020 .plt
gcctestdir/collect-ld: set_section_list_addresses: 000005f0 00000470 .text
gcctestdir/collect-ld: set_section_list_addresses: 00000a60 0000000d .fini
gcctestdir/collect-ld: set_section_list_addresses: 000001c8 0000001c .interp
gcctestdir/collect-ld: set_section_list_addresses: 00000a70 00000108 .rodata
gcctestdir/collect-ld: set_section_list_addresses: 00000b78 000000e4 .eh_frame
gcctestdir/collect-ld: Free_list::allocate(00000200, 8, 00000c5c)
gcctestdir/collect-ld: set_section_list_addresses: 00000c60 00000200 .dynamic
gcctestdir/collect-ld: set_section_list_addresses: 00000e90 00000040 .got
gcctestdir/collect-ld: set_section_list_addresses: 00000ed0 00000020 .got.plt
gcctestdir/collect-ld: set_section_list_addresses: 00000ef0 00000030 .data
gcctestdir/collect-ld: set_section_list_addresses: 00000f20 00000000
.tm_clone_table
gcctestdir/collect-ld: set_section_list_addresses: 00000f20 00000008
.fini_array
gcctestdir/collect-ld: set_section_list_addresses: 00000f28 00000008
.init_array
gcctestdir/collect-ld: set_section_list_addresses: 00000f30 00000030 .bss

The gcc-9 object output shows two `.rodata` sections being created, and this
seems to be the underlying issue.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]