Bug 1748529 - aarch64 regression: ICE: Should be 64-bit target
Summary: aarch64 regression: ICE: Should be 64-bit target
Keywords:
Status: MODIFIED
Alias: None
Product: Fedora
Classification: Fedora
Component: annobin
Version: rawhide
Hardware: aarch64
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Nick Clifton
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: ARMTracker 1748181
TreeView+ depends on / blocked
 
Reported: 2019-09-03 19:16 UTC by Rex Dieter
Modified: 2019-09-15 15:44 UTC (History)
5 users (show)

Fixed In Version: annobin-8.79-2.fc32
Doc Type: No Doc Update
Doc Text:
Clone Of:
Environment:
Last Closed:


Attachments (Terms of Use)

Description Rex Dieter 2019-09-03 19:16:31 UTC
works:
annobin                          aarch64 8.78-1.fc31 

fails:
annobin                          aarch64 8.79-1.fc32

pulseaudio builds started to fail recently on rawhide with error:

libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../src -I../src/modules -I../src/modules -DPA_ALSA_PATHS_DIR=\"/usr/share/pulseaudio/alsa-mixer/paths\" -DPA_ALSA_PROFILE_SETS_DIR=\"/usr/share/pulseaudio/alsa-mixer/profile-sets\" -DPA_SRCDIR=\"/builddir/build/BUILD/pulseaudio-12.99.3/src\" -DPA_BUILDDIR=\"/builddir/build/BUILD/pulseaudio-12.99.3/src\" -DPULSE_LOCALEDIR=\"/usr/share/locale\" -DFASTPATH -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -std=gnu11 -DPA_MODULE_NAME=module_loopback -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fasynchronous-unwind-tables -fstack-clash-protection -W -Wextra -Wno-long-long -Wno-overlength-strings -Wunsafe-loop-optimizations -Wundef -Wformat=2 -Wlogical-op -Wsign-compare -Wformat-security -Wmissing-include-dirs -Wformat-nonliteral -Wpointer-arith -Winit-self -Wdeclaration-after-statement -Wfloat-equal -Wmissing-prototypes -Wredundant-decls -Wmissing-declarations -Wmissing-noreturn -Wshadow -Wendif-labels -Wcast-align -Wstrict-aliasing -Wwrite-strings -Wno-unused-parameter -fno-common -fdiagnostics-show-option -fdiagnostics-color=auto -c modules/module-loopback.c  -fPIC -DPIC
libtool: compile: mv -f "module-loopback.o" "modules/.libs/module_loopback_la-module-loopback.o"
make[3]: Leaving directory '/builddir/build/BUILD/pulseaudio-12.99.3/src'
BUILDSTDERR: annobin: modules/module-loopback.c: ICE: Should be 64-bit target

Same code built fine previously,
https://koji.fedoraproject.org/koji/buildinfo?buildID=1348793

Comment 1 Philip Kovacs 2019-09-03 21:27:01 UTC
Same on openmpi, F32 only and only aarch64.  See builds such as

https://koji.fedoraproject.org/koji/taskinfo?taskID=37332928

Lots of these messages in the build.log

BUILDSTDERR: annobin: patterns/net/netpatterns_knomial_tree.c: ICE: Should be 64-bit target
BUILDSTDERR: annobin: patterns/net/netpatterns_knomial_tree.c: ICE: Should be 64-bit target
BUILDSTDERR: annobin: patterns/net/netpatterns_knomial_tree.c: ICE: Should be 64-bit target
BUILDSTDERR: annobin: patterns/net/netpatterns_knomial_tree.c: ICE: Should be 64-bit target
BUILDSTDERR: annobin: patterns/net/netpatterns_knomial_tree.c: ICE: Should be 64-bit target

and, though mostly c code, there are c++ units and those get hit with PIC errors such as:

BUILDSTDERR: .libs/file.o: in function `MPI::Errhandler::Errhandler(ompi_errhandler_t*)':
BUILDSTDERR: /builddir/build/BUILD/openmpi-4.0.1/ompi/mpi/cxx/../../../ompi/mpi/cxx/errhandler.h:30:(.text+0x158): dangerous relocation: unsupported relocation
BUILDSTDERR: /usr/bin/ld: .libs/win.o: relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `_ZTVN3MPI10ErrhandlerE' which may bind externally can not be used when making a shared object; recompile with -fPIC
BUILDSTDERR: .libs/win.o: in function `MPI::Errhandler::Errhandler(ompi_errhandler_t*)':
BUILDSTDERR: /builddir/build/BUILD/openmpi-4.0.1/ompi/mpi/cxx/../../../ompi/mpi/cxx/errhandler.h:30:(.text+0x20): dangerous relocation: unsupported relocation
BUILDSTDERR: collect2: error: ld returned 1 exit status

Note this message in the configure output:

Checking for g++ option to produce PIC... -fPIC -DPIC
checking if g++ PIC flag -fPIC -DPIC works... no            <=== What !!!! ????

I added a hack for aarch64 that adds -fPIC to the cxx flags only on that arch and
that way I am able to build openmpi on aarch64 rawhide.  No problems observed in 
F31, F30 or F29, so it's some sort of regression for F32.

Comment 2 Nick Clifton 2019-09-04 07:51:52 UTC
Hi Guys,

  Sorry - this is a known problem.  Updates to gcc can sometimes move around
  fields inside its internal structures, especially those to do with architecture
  specific command line options.  The annobin plugin examines these structures
  and if the fields have moved, then it looks in the wrong places and generates
  bogus results.

  The simplest solution is to rebuild annobin with the latest version of gcc,
  which I have now done with annobin-8.79-2.fc32.

  We are working on better fixes to this problem.  Such as detecting when
  the structures have changed using libabigail, and finding a way to have
  rebuilds of gcc automatically trigger a rebuild of annobin.

Cheers
  Nick

Comment 3 Michael Cronenworth 2019-09-14 02:06:24 UTC
Rawhide is now fixed, but it looks like F31 needs the fix, too.

https://koji.fedoraproject.org/koji/taskinfo?taskID=37655496

Comment 4 Nick Clifton 2019-09-14 21:52:16 UTC
(In reply to Michael Cronenworth from comment #3)
> Rawhide is now fixed, but it looks like F31 needs the fix, too.
 
I think that F31 has now been updated as well:

  https://bodhi.fedoraproject.org/updates/FEDORA-2019-4deb54f42a

Comment 5 Michael Cronenworth 2019-09-15 15:44:54 UTC
Yes, I've pushed out the pending updates to stable. Builds are working now. This bug should be safe to close.


Note You need to log in before you can comment on or make changes to this bug.