Bug 243245

Summary: net/spread: fix build on powerpc64 elfv2
Product: Ports & Packages Reporter: Piotr Kubaj <pkubaj>
Component: Individual Port(s)Assignee: Piotr Kubaj <pkubaj>
Status: Closed FIXED    
Severity: Affects Only Me CC: portmaster
Priority: --- Flags: bugzilla: maintainer-feedback? (portmaster)
Version: Latest   
Hardware: powerpc   
OS: Any   
Attachments:
Description Flags
patch pkubaj: maintainer-approval? (portmaster)

Description Piotr Kubaj freebsd_committer freebsd_triage 2020-01-10 14:00:24 UTC
Created attachment 210593 [details]
patch

On ELFv2 ABI Clang can't build this port by default and throws assertion (already reported):
Assertion failed: ((Op.getOpcode() == ISD::FP_TO_SINT || Subtarget.hasFPCVT()) && "i64 FP_TO_UINT is supported only with FPCVT"), function LowerFP_TO_INTForReuse, file /poudriere/jails/powerpc64-elfv2-pkubaj/usr/src/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCISelLowering.cpp, line 7281.
Stack dump:
0.	Program arguments: /usr/bin/cc -cc1 -triple powerpc64-unknown-freebsd13.0 -emit-obj -disable-free -main-file-name Spread.c -mrelocation-model pic -pic-level 2 -mthread-model posix -relaxed-aliasing -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu ppc64 -target-feature +secure-plt -mfloat-abi hard -dwarf-column-info -debugger-tuning=gdb -momit-leaf-frame-pointer -coverage-notes-file /wrkdirs/usr/ports/net/spread/work/spread-src-3.17.4/perl/Spread/Spread.gcno -resource-dir /usr/lib/clang/9.0.1 -I ../.. -I ../spread-src-3.17.0/ -D VERSION="3.17.4.4" -D XS_VERSION="3.17.4.4" -D PIC -I /usr/local/lib/perl5/5.30/mach/CORE -O2 -fdebug-compilation-dir /wrkdirs/usr/ports/net/spread/work/spread-src-3.17.4/perl/Spread -ferror-limit 19 -fmessage-length 0 -stack-protector 2 -fno-signed-char -fobjc-runtime=gnustep -fdiagnostics-show-option -vectorize-loops -vectorize-slp -faddrsig -o Spread.o -x c Spread.c 
1.	<eof> parser at end of file
2.	Code generation
3.	Running pass 'Function Pass Manager' on module 'Spread.c'.
4.	Running pass 'PowerPC DAG->DAG Pattern Instruction Selection' on function '@XS_Spread_receive'
#0 0x000000001371df18 (/usr/bin/cc+0x1371df18)
#1 0x000000001371e594 (/usr/bin/cc+0x1371e594)
#2 0x000000001371b858 (/usr/bin/cc+0x1371b858)
#3 0x000000001371ed0c (/usr/bin/cc+0x1371ed0c)
#4 0x000000081520176c (/lib/libthr.so.3+0x1b76c)
cc: error: unable to execute command: Abort trap (core dumped)
cc: error: clang frontend command failed due to signal (use -v to see invocation)
FreeBSD clang version 9.0.1 (git@github.com:llvm/llvm-project.git c1a0a213378a458fbea1a5c77b315c7dce08fd05) (based on LLVM 9.0.1)
Target: powerpc64-unknown-freebsd13.0
Thread model: posix
InstalledDir: /usr/bin
cc: note: diagnostic msg: PLEASE submit a bug report to https://bugs.freebsd.org/submit/ and include the crash backtrace, preprocessed source, and associated run script.
cc: note: diagnostic msg: 
********************

The workaround is to optimize for POWER7, which supports necessary features in hardware.
Comment 1 commit-hook freebsd_committer freebsd_triage 2020-01-24 14:51:30 UTC
A commit references this bug:

Author: pkubaj
Date: Fri Jan 24 14:50:54 UTC 2020
New revision: 523967
URL: https://svnweb.freebsd.org/changeset/ports/523967

Log:
  net/spread: fix build on powerpc64 elfv2

  On ELFv2 ABI Clang can't build this port by default and throws assertion (already reported):
  Assertion failed: ((Op.getOpcode() == ISD::FP_TO_SINT || Subtarget.hasFPCVT()) && "i64 FP_TO_UINT is supported only with FPCVT"), function LowerFP_TO_INTForReuse, file /poudriere/jails/powerpc64-elfv2-pkubaj/usr/src/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCISelLowering.cpp, line 7281.
  Stack dump:
  0.	Program arguments: /usr/bin/cc -cc1 -triple powerpc64-unknown-freebsd13.0 -emit-obj -disable-free -main-file-name Spread.c -mrelocation-model pic -pic-level 2 -mthread-model posix -relaxed-aliasing -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu ppc64 -target-feature +secure-plt -mfloat-abi hard -dwarf-column-info -debugger-tuning=gdb -momit-leaf-frame-pointer -coverage-notes-file /wrkdirs/usr/ports/net/spread/work/spread-src-3.17.4/perl/Spread/Spread.gcno -resource-dir /usr/lib/clang/9.0.1 -I ../.. -I ../spread-src-3.17.0/ -D VERSION="3.17.4.4" -D XS_VERSION="3.17.4.4" -D PIC -I /usr/local/lib/perl5/5.30/mach/CORE -O2 -fdebug-compilation-dir /wrkdirs/usr/ports/net/spread/work/spread-src-3.17.4/perl/Spread -ferror-limit 19 -fmessage-length 0 -stack-protector 2 -fno-signed-char -fobjc-runtime=gnustep -fdiagnostics-show-option -vectorize-loops -vectorize-slp -faddrsig -o Spread.o -x c Spread.c
  1.	<eof> parser at end of file
  2.	Code generation
  3.	Running pass 'Function Pass Manager' on module 'Spread.c'.
  4.	Running pass 'PowerPC DAG->DAG Pattern Instruction Selection' on function '@XS_Spread_receive'
  #0 0x000000001371df18 (/usr/bin/cc+0x1371df18)
  #1 0x000000001371e594 (/usr/bin/cc+0x1371e594)
  #2 0x000000001371b858 (/usr/bin/cc+0x1371b858)
  #3 0x000000001371ed0c (/usr/bin/cc+0x1371ed0c)
  #4 0x000000081520176c (/lib/libthr.so.3+0x1b76c)
  cc: error: unable to execute command: Abort trap (core dumped)
  cc: error: clang frontend command failed due to signal (use -v to see invocation)
  FreeBSD clang version 9.0.1 (git@github.com:llvm/llvm-project.git c1a0a213378a458fbea1a5c77b315c7dce08fd05) (based on LLVM 9.0.1)
  Target: powerpc64-unknown-freebsd13.0
  Thread model: posix
  InstalledDir: /usr/bin
  cc: note: diagnostic msg: PLEASE submit a bug report to https://bugs.freebsd.org/submit/ and include the crash backtrace, preprocessed source, and associated run script.
  cc: note: diagnostic msg:
  ********************

  The workaround is to optimize for POWER7, which supports necessary features in hardware.

  PR:		243245
  Approved by:	portmaster@bsdforge.com (maintainer timeout)

Changes:
  head/net/spread/Makefile