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

--- Comment #4 from John Paul Adrian Glaubitz <glaubitz at physik dot 
fu-berlin.de> ---
(In reply to Eric Botcazou from comment #3)
> > Looks like the compiler itself is not functioning properly.
> 
> Do you mean the cross-compiled native compiler or the cross-compiler itself?

The cross-compiled native compiler. The cross-compiler works fine.

> > I have tried building libgmpada, for example, and when trying to compile
> > src/gnu_multiple_precision-big_integers.adb, the compiler is constantly
> > generating segfaults:
> 
> It would be nice to have a backtrace for one of them.

I haven't been able to create a backtrace with gdb. The command line is:

gcc-7 -c -Isrc/ -O2 -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -Wl,-z,defs
-specs=/usr/share/dpkg/pie-link.specs -specs=/usr/share/dpkg/pie-compile.specs
-fstack-protector-strong -Wformat -Werror=format-security -fPIC -I- -o
/build/libgmpada/libgmpada-1.1/obj-dynamic/gnu_multiple_precision-big_integers.o
src/gnu_multiple_precision-big_integers.adb

This hangs. Attaching with strace to the process shows the segfaults.

I ran "gdb /usr/bin/gcc-7" and ran it with "r -c -Isrc/ -O2 -Wl,-z,relro
-Wl,-z,now -Wl,--as-needed -Wl,-z,defs -specs=/usr/share/dpkg/pie-link.specs
-specs=/usr/share/dpkg/pie-compile.specs -fstack-protector-strong -Wformat
-Werror=format-security -fPIC -I- -o
/build/libgmpada/libgmpada-1.1/obj-dynamic/gnu_multiple_precision-big_integers.o
src/gnu_multiple_precision-big_integers.adb" but it seems to be stuck as well.

One observation I made is that reduducing the optimization to "-O0" resolves
the segfault issue, i.e. pressing "Ctrl+C" above, then copying and pasting the
command line, replacing "-O2" with "-O0" makes the compile process succeed.

The linker issue is resolved by removing "-Wl,-z,defs" from the final linker
command line:

root@pacman:/build/libgmpada/libgmpada-1.1# gcc-7 -shared -o obj/libgmpada.so.4
-Wl,-soname,libgmpada.so.4 obj-dynamic/*.o
-specs=/usr/share/dpkg/pie-link.specs -Wl,-z,relro -Wl,-z,now -Wl,--as-needed
-Wl,-z,defs -lgmp -lgnat
obj-dynamic/gnu_multiple_precision-big_floats.o: In function
`gnu_multiple_precision__big_floats__Oadd':                                     
gnu_multiple_precision-big_floats.adb:(.text+0x19e): undefined reference to
`gnu_multiple_precision__big_floatIP'                                           
obj-dynamic/gnu_multiple_precision-big_floats.o: In function
`gnu_multiple_precision__big_floats__Osubtract':                                
gnu_multiple_precision-big_floats.adb:(.text+0x37c): undefined reference to
`gnu_multiple_precision__big_floatIP'                                           
obj-dynamic/gnu_multiple_precision-big_floats.o: In function
`gnu_multiple_precision__big_floats__Oabs':                                     
gnu_multiple_precision-big_floats.adb:(.text+0x55a): undefined reference to
`gnu_multiple_precision__big_floatIP'                                           
obj-dynamic/gnu_multiple_precision-big_floats.o: In function
`gnu_multiple_precision__big_floats__Oadd__2':                                  
gnu_multiple_precision-big_floats.adb:(.text+0x738): undefined reference to
`gnu_multiple_precision__big_floatIP'                                           
obj-dynamic/gnu_multiple_precision-big_floats.o: In function
`gnu_multiple_precision__big_floats__Osubtract__2':                             
gnu_multiple_precision-big_floats.adb:(.text+0x91c): undefined reference to
`gnu_multiple_precision__big_floatIP'                                           
obj-dynamic/gnu_multiple_precision-big_floats.o:gnu_multiple_precision-big_floats.adb:(.text+0xb00):
more undefined references to `gnu_multiple_precision__big_floatIP' follow       
obj-dynamic/gnu_multiple_precision-big_integers.o: In function
`gnu_multiple_precision__big_integers__value__scan__get_mpz_t.2564':
gnu_multiple_precision-big_integers.adb:(.text+0x2650): undefined reference to
`gmp__binding__mpz_tIP'
obj-dynamic/gnu_multiple_precision-big_rationals.o: In function
`gnu_multiple_precision__big_rationals__Oadd':
gnu_multiple_precision-big_rationals.adb:(.text+0x13c): undefined reference to
`gnu_multiple_precision__big_rationalIP'
obj-dynamic/gnu_multiple_precision-big_rationals.o: In function
`gnu_multiple_precision__big_rationals__Oadd__2':
gnu_multiple_precision-big_rationals.adb:(.text+0x6e0): undefined reference to
`gnu_multiple_precision__big_rationalIP'
obj-dynamic/gnu_multiple_precision-big_rationals.o: In function
`gnu_multiple_precision__big_rationals__Osubtract':
gnu_multiple_precision-big_rationals.adb:(.text+0x8fc): undefined reference to
`gnu_multiple_precision__big_rationalIP'
obj-dynamic/gnu_multiple_precision-big_rationals.o: In function
`gnu_multiple_precision__big_rationals__Omultiply':
gnu_multiple_precision-big_rationals.adb:(.text+0xb18): undefined reference to
`gnu_multiple_precision__big_rationalIP'
obj-dynamic/gnu_multiple_precision-big_rationals.o: In function
`gnu_multiple_precision__big_rationals(double &&, int, void, int, double,...)':
gnu_multiple_precision-big_rationals.adb:(.text+0xd5c): undefined reference to
`gnu_multiple_precision__big_rationalIP'
obj-dynamic/gnu_multiple_precision-big_rationals.o:gnu_multiple_precision-big_rationals.adb:(.text+0xf6e):
more undefined references to `gnu_multiple_precision__big_rationalIP' follow
obj-dynamic/gnu_multiple_precision-random_numbers.o:(.data.rel.ro+0x24):
undefined reference to `gnu_multiple_precision__random_numbers___size__2'
obj-dynamic/gnu_multiple_precision-random_numbers.o:(.data.rel.ro+0x44):
undefined reference to `gnu_multiple_precision__random_numbers___size__2'
obj-dynamic/gnu_multiple_precision-random_numbers.o:(.data.rel.ro+0x48):
undefined reference to `gnu_multiple_precision__random_numbers__stateSR__2'
obj-dynamic/gnu_multiple_precision-random_numbers.o:(.data.rel.ro+0x4c):
undefined reference to `gnu_multiple_precision__random_numbers__stateSW__2'
obj-dynamic/gnu_multiple_precision-random_numbers.o:(.data.rel.ro+0x50):
undefined reference to `gnu_multiple_precision__random_numbers__stateSI__2'
obj-dynamic/gnu_multiple_precision-random_numbers.o:(.data.rel.ro+0x54):
undefined reference to `gnu_multiple_precision__random_numbers__stateSO__2'
obj-dynamic/gnu_multiple_precision-random_numbers.o:(.data.rel.ro+0x58):
undefined reference to `gnu_multiple_precision__random_numbers__Oeq__2'
obj-dynamic/gnu_multiple_precision-random_numbers.o:(.data.rel.ro+0x5c):
undefined reference to `gnu_multiple_precision__random_numbers___assign__2'
obj-dynamic/gnu_multiple_precision-random_numbers.o:(.data.rel.ro+0x60):
undefined reference to `gnu_multiple_precision__random_numbers__stateDA__2'
obj-dynamic/gnu_multiple_precision-random_numbers.o:(.data.rel.ro+0x64):
undefined reference to `gnu_multiple_precision__random_numbers__stateDF__2'
obj-dynamic/gnu_multiple_precision-text_io.o: In function
`gnu_multiple_precision__text_io__get__scan__get_mpz_t__2.1984':
gnu_multiple_precision-text_io.ads:(.text+0x8e0): undefined reference to
`gmp__binding__mpz_tIP'
obj-dynamic/gnu_multiple_precision-text_io.o: In function
`gnu_multiple_precision__text_io__get__scan__get_mpz_t__4.2228':
gnu_multiple_precision-text_io.ads:(.text+0x1464): undefined reference to
`gmp__binding__mpz_tIP'
obj-dynamic/gnu_multiple_precision-wide_text_io.o: In function
`gnu_multiple_precision__wide_text_io__get__scan__get_mpz_t__2.2008':
gnu_multiple_precision-wide_text_io.ads:(.text+0x8e6): undefined reference to
`gmp__binding__mpz_tIP'
obj-dynamic/gnu_multiple_precision-wide_text_io.o: In function
`gnu_multiple_precision__wide_text_io__get__scan__get_mpz_t__4.2252':
gnu_multiple_precision-wide_text_io.ads:(.text+0x14c8): undefined reference to
`gmp__binding__mpz_tIP'
obj-dynamic/gnu_multiple_precision-wide_wide_text_io.o: In function
`gnu_multiple_precision__wide_wide_text_io__get__scan__get_mpz_t__2.2008':
gnu_multiple_precision-wide_wide_text_io.ads:(.text+0x8e4): undefined reference
to `gmp__binding__mpz_tIP'
obj-dynamic/gnu_multiple_precision-wide_wide_text_io.o:gnu_multiple_precision-wide_wide_text_io.ads:(.text+0x14c6):
more undefined references to `gmp__binding__mpz_tIP' follow
obj-dynamic/gnu_multiple_precision.o: In function
`gnu_multiple_precision__read':
gnu_multiple_precision.adb:(.text+0x3a2): undefined reference to
`gmp__binding__mpz_tSR'
gnu_multiple_precision.adb:(.text+0x3e0): undefined reference to
`gmp__binding__mpz_tSR'
obj-dynamic/gnu_multiple_precision.o: In function
`gnu_multiple_precision__write':
gnu_multiple_precision.adb:(.text+0x436): undefined reference to
`gmp__binding__mpz_tSW'
gnu_multiple_precision.adb:(.text+0x474): undefined reference to
`gmp__binding__mpz_tSW'
obj-dynamic/gnu_multiple_precision.o: In function
`gnu_multiple_precision__read__mpz_t_11SI__2.2824':
gnu_multiple_precision.adb:(.text+0x538): undefined reference to
`gmp__binding__mpz_tIP'
gnu_multiple_precision.adb:(.text+0x54e): undefined reference to
`gmp__binding__mpz_tSR'
obj-dynamic/gnu_multiple_precision.o: In function
`gnu_multiple_precision__write__2':
gnu_multiple_precision.adb:(.text+0x738): undefined reference to
`gmp__binding__mpz_tIP'
gnu_multiple_precision.adb:(.text+0x8ea): undefined reference to
`gmp__binding__mpz_tSW'
obj-dynamic/gnu_multiple_precision.o:(.data.rel.ro+0x34): undefined reference
to `gnu_multiple_precision___size__4'
obj-dynamic/gnu_multiple_precision.o:(.data.rel.ro+0x54): undefined reference
to `gnu_multiple_precision___size__4'
obj-dynamic/gnu_multiple_precision.o:(.data.rel.ro+0x58): undefined reference
to `gnu_multiple_precision__big_integerSR__2'
obj-dynamic/gnu_multiple_precision.o:(.data.rel.ro+0x5c): undefined reference
to `gnu_multiple_precision__big_integerSW__2'
obj-dynamic/gnu_multiple_precision.o:(.data.rel.ro+0x60): undefined reference
to `gnu_multiple_precision__big_integerSI__2'
obj-dynamic/gnu_multiple_precision.o:(.data.rel.ro+0x64): undefined reference
to `gnu_multiple_precision__big_integerSO__2'
obj-dynamic/gnu_multiple_precision.o:(.data.rel.ro+0x6c): undefined reference
to `gnu_multiple_precision___assign__4'
obj-dynamic/gnu_multiple_precision.o:(.data.rel.ro+0x70): undefined reference
to `gnu_multiple_precision__big_integerDA__2'
obj-dynamic/gnu_multiple_precision.o:(.data.rel.ro+0x74): undefined reference
to `gnu_multiple_precision__big_integerDF__2'
obj-dynamic/gnu_multiple_precision.o:(.data.rel.ro+0xb6): undefined reference
to `gnu_multiple_precision___size__5'
obj-dynamic/gnu_multiple_precision.o:(.data.rel.ro+0xd6): undefined reference
to `gnu_multiple_precision___size__5'
obj-dynamic/gnu_multiple_precision.o:(.data.rel.ro+0xe2): undefined reference
to `gnu_multiple_precision__big_rationalSI__2'
obj-dynamic/gnu_multiple_precision.o:(.data.rel.ro+0xe6): undefined reference
to `gnu_multiple_precision__big_rationalSO__2'
obj-dynamic/gnu_multiple_precision.o:(.data.rel.ro+0xee): undefined reference
to `gnu_multiple_precision___assign__5'
obj-dynamic/gnu_multiple_precision.o:(.data.rel.ro+0xf2): undefined reference
to `gnu_multiple_precision__big_rationalDA__2'
obj-dynamic/gnu_multiple_precision.o:(.data.rel.ro+0xf6): undefined reference
to `gnu_multiple_precision__big_rationalDF__2'
obj-dynamic/gnu_multiple_precision.o:(.data.rel.ro+0x140): undefined reference
to `gnu_multiple_precision___size__6'
obj-dynamic/gnu_multiple_precision.o:(.data.rel.ro+0x160): undefined reference
to `gnu_multiple_precision___size__6'
obj-dynamic/gnu_multiple_precision.o:(.data.rel.ro+0x16c): undefined reference
to `gnu_multiple_precision__big_floatSI__2'
obj-dynamic/gnu_multiple_precision.o:(.data.rel.ro+0x170): undefined reference
to `gnu_multiple_precision__big_floatSO__2'
obj-dynamic/gnu_multiple_precision.o:(.data.rel.ro+0x178): undefined reference
to `gnu_multiple_precision___assign__6'
obj-dynamic/gnu_multiple_precision.o:(.data.rel.ro+0x17c): undefined reference
to `gnu_multiple_precision__big_floatDA__2'
obj-dynamic/gnu_multiple_precision.o:(.data.rel.ro+0x180): undefined reference
to `gnu_multiple_precision__big_floatDF__2'
collect2: error: ld returned 1 exit status
root@pacman:/build/libgmpada/libgmpada-1.1#

root@pacman:/build/libgmpada/libgmpada-1.1# gcc-7 -shared -o obj/libgmpada.so.4
-Wl,-soname,libgmpada.so.4 obj-dynamic/*.o
-specs=/usr/share/dpkg/pie-link.specs -Wl,-z,relro -Wl,-z,now -Wl,--as-needed
-lgmp -lgnat
root@pacman:/build/libgmpada/libgmpada-1.1#

Reply via email to