On Sat, Aug 06, 2022 at 11:59:33PM -0400, George Koehler wrote:
> We recently added --enable-optimizations in lang/python/3.* for PGO
> (Profile Guided Optimization), on all platforms where the linker is
> lld.  Turns out, this breaks on macppc (powerpc).  The build segfaults
> as soon as it tries to run the linked python binary,

> cc -pthread -L/usr/local/lib/  -flto -g 
> -L/usr/obj/ports/Python-3.9.13/Python-3.
> 9.13 -L/usr/local/lib/ -fprofile-instr-generate -Wl,--export-dynamic -o 
> python P
> rograms/python.o -L. -lpython3.9 -lintl -lpthread  -lutil -lm   -lm 
> LD_LIBRARY_PATH=/usr/obj/ports/Python-3.9.13/Python-3.9.13 ./python -E -S -m 
> sys
> config --generate-posix-vars ; if test $? -ne 0 ; then  echo 
> "generate-posix-var
> s failed" ;  rm -f ./pybuilddir.txt ;  exit 1 ;  fi
> Segmentation fault (core dumped) 
> *** Error 139 in . (Makefile:623 'pybuilddir.txt')

> There is no problem on powerpc64; this seems to be a bug in clang or
> lld specific to 32-bit powerpc.  I don't know how to reproduce this
> bug outside of python.  All of python 3.8, 3.9, 3.10 are broken; they
> all get packaged after I remove --enable-optimizations.

> May I commit this diff, which removes --enable-optimizations on
> powerpc?    --George

Looks reasonable. ok kmos@

--Kurt

> Index: Makefile.inc
> ===================================================================
> RCS file: /cvs/ports/lang/python/Makefile.inc,v
> retrieving revision 1.149
> diff -u -p -r1.149 Makefile.inc
> --- Makefile.inc      27 Jul 2022 06:20:10 -0000      1.149
> +++ Makefile.inc      6 Aug 2022 21:35:35 -0000
> @@ -122,7 +122,11 @@ CONFIGURE_ARGS +=        --with-fpectl \
>  .if ${VERSION} != "2.7"
>  CONFIGURE_ARGS +=    --enable-loadable-sqlite-extensions
>  .  if ${PROPERTIES:Mlld}
> -CONFIGURE_ARGS +=    --with-lto --enable-optimizations
> +CONFIGURE_ARGS +=    --with-lto
> +.    if ${MACHINE_ARCH} != "powerpc"
> +# On powerpc, the python binary would crash by "Segmentation fault".
> +CONFIGURE_ARGS +=    --enable-optimizations
> +.    endif
>  .  endif
>  TEST_IS_INTERACTIVE =        Yes
>  .endif

Reply via email to