Hello community,
here is the log from the commit of package fpc.15334 for openSUSE:Leap:15.2:Update checked in at 2020-12-21 14:22:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2:Update/fpc.15334 (Old)
and /work/SRC/openSUSE:Leap:15.2:Update/.fpc.15334.new.5145 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "fpc.15334"
Mon Dec 21 14:22:35 2020 rev:1 rq:856869 version:3.2.0
Changes:
--------
New Changes file:
--- /dev/null 2020-12-09 01:05:43.965003977 +0100
+++ /work/SRC/openSUSE:Leap:15.2:Update/.fpc.15334.new.5145/fpc.changes 2020-12-21 14:23:06.633332725 +0100
@@ -0,0 +1,276 @@
+-------------------------------------------------------------------
+Fri Sep 25 10:14:45 UTC 2020 - Guillaume GARDET
+
+- Add patch to fix build on ppc64le:
+ * fpc-fix-library-paths-on-ppc64.patch
+
+-------------------------------------------------------------------
+Thu Sep 24 06:30:04 UTC 2020 - Dirk Mueller
+
+- add aarch64-fpc-compilation-fix.patch: pass vfp flags to
+ gas
+- Handle fpu initialization (bsc#1122855):
+ * add aarch64-fpu-initialization.patch: initialize fpu properly
+ * aarch64: disable bootstrap mode
+
+-------------------------------------------------------------------
+Mon Sep 21 15:02:29 UTC 2020 - Tom de Vries
+
+- Backport r46209 - "@PLT is needed for calls to link it properly
+ with pic code" [bsc#1176706]:
+ * fpc-si_c-x86_64-plt.patch
+
+-------------------------------------------------------------------
+Tue Aug 18 09:00:15 UTC 2020 - Guillaume GARDET
+
+- Drop '%elifarch' usage for now since it is not well supported
+ by the source validator, see:
+ https://github.com/openSUSE/obs-service-source_validator/issues/85
+
+-------------------------------------------------------------------
+Mon Aug 17 15:38:06 UTC 2020 - Guillaume GARDET
+
+- Fix doc building when bootstrap is used
+
+-------------------------------------------------------------------
+Mon Aug 17 15:23:42 UTC 2020 - Guillaume GARDET
+
+- Fix bootstrap handling
+
+-------------------------------------------------------------------
+Tue Jun 30 08:39:31 UTC 2020 - John Paul Adrian Glaubitz
+
+- Update to 3.2.0
+ * Changes see https://wiki.freepascal.org/User_Changes_3.2.0
+- Enable bootstrap for aarch64, ppc, ppc64, ppc64le
+ * Add bootstrap binary archives
+ + fpc-3.2.0-aarch64.zip
+ + fpc-3.2.0-ppc.zip
+ + fpc-3.2.0-ppc64.zip
+ + fpc-3.2.0-ppc64le.zip
+- Drop old git snapshot source for aarch64 build
+ * fpcbuild.zip
+- Add patch to fix library paths on aarch64
+ * fpc-fix-library-paths-on-aarch64.patch
+- Drop patches for issues fixed upstream
+ * fpc-fix_aarch64.patch
+ * update-fpcdocs.patch
+
+-------------------------------------------------------------------
+Wed Aug 28 17:56:57 UTC 2019 - Stefan Brüns
+
+- Use _multibuild for building the doc subpackage. This removes e.g.
+ TeXLive, python and X11 from the dependency chain of the main package.
+- Remove noarch for doc subpackage as we need to use %ifarch
+
+-------------------------------------------------------------------
+Mon Aug 26 18:49:28 UTC 2019 - Stefan Brüns
+
+- Use separate subpackages for documentation and examples, and make
+ both noarch.
+- Make PDF documentation build reproducible
+- Use tex(foo) style BuildRequires, only request what is really needed.
+- Install COPYING* in licensedir
+- Drop gpm and ncurses runtime requires (not used by the compiler,
+ but only for some of the examples).
+- Remove defattr and BuildRoot from spec file.
+
+-------------------------------------------------------------------
+Sat Mar 16 15:57:11 UTC 2019 - termim@gmail.com
+
+- http --> https in URL
+
+-------------------------------------------------------------------
+Mon Sep 10 13:04:54 UTC 2018 - Guillaume GARDET
+
+- Move patches and sources out of %ifarch conditions
+
+-------------------------------------------------------------------
+Fri Sep 7 12:32:05 UTC 2018 - Guillaume GARDET
+
+- Remove 'fpcsrc/packages/nvapi/nvapi.pas' due to license problems
+
+-------------------------------------------------------------------
+Tue Sep 4 11:56:51 UTC 2018 - guillaume.gardet@opensuse.org
+
+- Add patch to fix aarch64 build:
+ * fpc-fix_aarch64.patch
+
+-------------------------------------------------------------------
+Tue Sep 4 07:21:34 UTC 2018 - Guillaume GARDET
+
+- Add aarch64 support
+
+-------------------------------------------------------------------
+Tue May 15 12:23:06 UTC 2018 - guillaume.gardet@opensuse.org
+
+- Fix %arm build
+- Add ExclusiveArch for %ix86 x86_64 %arm ppc ppc64
+
+-------------------------------------------------------------------
+Fri Dec 15 22:06:50 UTC 2017 - markus.beth@web.de
+
+- Update to 3.0.4
+ * Changes see http://wiki.freepascal.org/User_Changes_3.0.4
+
+- Added update-fpcdocs.patch to fix doc generation
+
+-------------------------------------------------------------------
+Mon Jun 27 20:03:42 UTC 2016 - termim@gmail.com
+
+- Update to 3.0.0
+ * remove patch fpc-2.6.2-make-user.pdf-fix.patch as fixed upstream
+ * use previous fpc version instead prebuild one for build
+ * New features see http://wiki.freepascal.org/FPC_New_Features_3.0
+ * Changes see http://wiki.freepascal.org/User_Changes_3.0
+
+-------------------------------------------------------------------
+Tue May 06 08:57:47 UTC 2014 - guillaume@opensuse.org
+
+- Add ARM support
+
+-------------------------------------------------------------------
+Mon May 5 19:17:00 UTC 2014 - mihailjp@gmail.com
+
+- Update to 2.6.4 - a fixes update from the 2.6.x branch
+ The new features include, amongst others:
+ * Compiler:
+ - Improvements and fixes for the ARM architecture
+ * Packages:
+ - New package fpindexer (indexing engine)
+ - Support for observer pattern added to fcl-base (and base classes in RTL)
+ - Lots and lots fixes and improvements for fcl-db
+ * Support for JSON dataset added among others
+ - Fixes and improvements for fcl-passrc (and fpdoc)
+ - Updates for PTCPas and gtk2
+ - fpmkunit improvements (better support for future switch to fpmake)
+ - Several fixes for x11
+ - Several fixes for winunits (and winceunits)
+ * Platforms:
+ - Improvements to the NativeNT target (newly introduced as alpha in 2.6.0)
+ - Many fixes for OpenBSD and NetBSD (considered in beta state now)
+ - Internal ELF writer supported for more BSD targets
+ - Fixes and improvements for gba and nds
+
+-------------------------------------------------------------------
+Fri Apr 12 09:12:12 UTC 2013 - svalx@svalx.net
+
+- Update to 2.6.2 - a fixes update from the 2.6.x branch.
+ The new features include, amongst others:
+ * Compiler:
+ - Improvements and fixes for the ARM architecture
+ * Packages:
+ - New package fpindexer (indexing engine)
+ - Support for observer pattern added to fcl-base (and base classes in RTL)
+ - Lots and lots fixes and improvements for fcl-db
+ * Support for JSON dataset added among others
+ - Fixes and improvements for fcl-passrc (and fpdoc)
+ - Updates for PTCPas and gtk2
+ - Fpmkunit improvements (better support for future switch to fpmake)
+ - Several fixes for x11
+ - Several fixes for winunits (and winceunits)
+ * Platforms:
+ - Improvements to the NativeNT target (newly introduced as alpha in 2.6.0)
+ - Many fixes for OpenBSD and NetBSD (considered in beta state now)
+ - Internal ELF writer supported for more BSD targets
+ - Fixes and improvements for gba and nds
+- Add fpc-2.6.2-make-user.pdf-fix.patch - fix TeX broke with error when build user.pdf
+
+-------------------------------------------------------------------
+Sun Oct 14 17:21:30 UTC 2012 - asterios.dramis@gmail.com
+
+- Enabled debuginfo in all BuildArches.
+- Removed gpm build requirement (not needed).
+- Removed glibc runtime requirement (it's always provided).
+- Fixed some rpmlint warnings "script-without-shebang".
+- Added support for "build ID" in binaries (for debuginfo support).
+
+-------------------------------------------------------------------
+Wed Oct 3 18:03:43 UTC 2012 - asterios.dramis@gmail.com
+
+- Added texlive-float as build requirement to fix compilation in Factory.
+ Removed texlive-collection-basic (not needed anymore).
+
+-------------------------------------------------------------------
+Sun Sep 16 22:18:56 UTC 2012 - termim@gmail.com
+
+- Update to 2.6.0 - a new major version of the Free Pascal compiler.
++++ 79 more lines (skipped)
++++ between /dev/null
++++ and /work/SRC/openSUSE:Leap:15.2:Update/.fpc.15334.new.5145/fpc.changes
New:
----
_multibuild
aarch64-fpc-compilation-fix.patch
aarch64-fpu-initialization.patch
fpc-3.2.0-aarch64.zip
fpc-3.2.0-ppc.zip
fpc-3.2.0-ppc64.zip
fpc-3.2.0-ppc64le.zip
fpc-fix-library-paths-on-aarch64.patch
fpc-fix-library-paths-on-ppc64.patch
fpc-rpmlintrc
fpc-si_c-x86_64-plt.patch
fpc.changes
fpc.spec
fpcbuild-3.2.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ fpc.spec ++++++
#
# spec file for package fpc
#
# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%global flavor @BUILD_FLAVOR@%{nil}
%if "%{flavor}" == ""
%else
%global psuffix -%{flavor}
%endif
%ifarch ppc64le ppc64 ppc
# Bootstrap the compiler for a new architecture. Set this to 0 after we've bootstrapped.
%bcond_without bootstrap
%else
%bcond_with bootstrap
%endif
%ifarch %arm
# We use hardfloat on ARM
%define fpcopt -dFPC_ARMHF -k--build-id -k-z -knoexecstack
%else
%ifarch ppc64le
%define fpcopt -Cb- -Caelfv2 -k--build-id -k-z -knoexecstack
%else
%define fpcopt -k--build-id -k-z -knoexecstack
%endif
%endif
%define fpcdebugopt -gl
%ifarch aarch64
%define ppcname ppca64
%endif
%ifarch %arm
%define ppcname ppcarm
%endif
%ifarch ppc
%define ppcname ppcppc
%endif
%ifarch x86_64
%define ppcname ppcx64
%endif
%ifarch ppc64le
%define ppcname ppcppc64
%endif
%ifarch ppc64
%define ppcname ppcppc64
%endif
%ifarch %ix86
%define ppcname ppc386
%endif
Name: fpc%{?psuffix}
Version: 3.2.0
Release: 0
%if "%{flavor}" == ""
Summary: Free Pascal Compiler
License: GPL-2.0-or-later AND LGPL-2.1-or-later
Group: Documentation/Other
%else
Summary: Freepascal Compiler documentation
License: GPL-2.0-or-later AND LGPL-2.1-or-later
Group: Documentation/Other
%endif
URL: https://www.freepascal.org/
Source: fpcbuild-%{version}.tar.gz
Source1: fpc-3.2.0-aarch64.zip
Source2: fpc-3.2.0-ppc64le.zip
Source3: fpc-3.2.0-ppc64.zip
Source4: fpc-3.2.0-ppc.zip
Source90: fpc-rpmlintrc
Patch0: fpc-fix-library-paths-on-aarch64.patch
Patch1: fpc-si_c-x86_64-plt.patch
Patch2: aarch64-fpc-compilation-fix.patch
# From https://github.com/graemeg/freepascal/commit/aad68409bec902e39f9292930238edd...
Patch3: aarch64-fpu-initialization.patch
Patch4: fpc-fix-library-paths-on-ppc64.patch
BuildRequires: binutils
%if 0%{?suse_version}
BuildRequires: fdupes
%endif
%if %{without bootstrap}
BuildRequires: fpc
%else
%if "%{flavor}" == "doc"
BuildRequires: fpc
%else
BuildRequires: unzip
%endif
%endif
BuildRequires: glibc-devel
%if "%{flavor}" == "doc"
BuildRequires: texlive-latex
BuildRequires: texlive-makeindex
BuildRequires: texlive-pdftex
BuildRequires: texlive-ucs
BuildRequires: tex(8r.enc)
BuildRequires: tex(a4.sty)
BuildRequires: tex(enumitem.sty)
BuildRequires: tex(fancyhdr.sty)
BuildRequires: tex(float.sty)
BuildRequires: tex(hyperref.sty)
BuildRequires: tex(pcrr8t.tfm)
BuildRequires: tex(phvr8t.tfm)
BuildRequires: tex(ptmr8t.tfm)
BuildRequires: tex(syntax.sty)
BuildRequires: tex(tabularx.sty)
BuildRequires: tex(times.sty)
%endif
Requires: binutils
ExclusiveArch: %ix86 x86_64 %arm aarch64 ppc ppc64 ppc64le
%if "%{flavor}" == ""
%description
Freepascal is a free 32/64bit Pascal Compiler. It comes with a run-time
library and is fully compatible with Turbo Pascal 7.0 and nearly Delphi
compatible. Some extensions are added to the language, like function
overloading and generics. Shared libraries can be linked. This package
contains commandline compiler and utils. Provided units are the runtime
library (RTL), free component library (FCL) and the base and extra
packages.
%else
%description
The fpc-doc package contains the documentation PDF files.
%endif
%package examples
Summary: Freepascal Compiler examples
Group: Documentation/Other
BuildArch: noarch
%description examples
The fpc-examples package contains examples for Freepascal.
%package src
Summary: Freepascal Compiler - sources
Group: Development/Languages/Other
%description src
The fpc-src package contains the sources of Freepascal, for
documentation or automatical-code generation purposes.
%prep
%setup -q -n fpcbuild-%{version}
%patch0 -p1
%patch1 -p0
%patch2 -p1
%patch3 -p1
%patch4 -p1
%if %{with bootstrap}
%if "%{flavor}" == ""
%ifarch aarch64
unzip %{SOURCE1}
%endif
%ifarch ppc64le
unzip %{SOURCE2}
%endif
%ifarch ppc64
unzip %{SOURCE3}
%endif
%ifarch ppc
unzip %{SOURCE4}
%endif
%endif
%endif
# Remove files with license problems (which are not used on Linux)
rm -f fpcsrc/packages/nvapi/src/nvapi.pas
# Copy needed source files by external packages in a new directory (to be included in the fpc-src subpackage)
install -dm 0755 fpc-src
cp -a fpcsrc/rtl fpc-src
cp -a fpcsrc/packages fpc-src
find fpc-src -name '*.o' | xargs rm -f
rm -rf fpc-src/packages/extra/amunits
rm -rf fpc-src/packages/extra/winunits
# Inject reproducible date into PDF documentation
date --date=@${SOURCE_DATE_EPOCH:-0} +'\date{%B %Y}' > fpcdocs/date.inc
%build
%if "%{flavor}" == ""
%if %{with bootstrap}
STARTPP=$(pwd)/fpc-%{version}-%{_arch}/bin/%{ppcname}
%else
STARTPP=%{ppcname}
%endif
pushd fpcsrc
FPCDIR=
NEWPP=`pwd`/compiler/%{ppcname}
make %{?_smp_mflags} compiler_cycle FPC=${STARTPP} OPT='%{fpcopt} %{fpcdebugopt}'
make %{?_smp_mflags} rtl_clean rtl_smart FPC=${NEWPP} OPT='%{fpcopt}'
make %{?_smp_mflags} packages_smart \
FPC=${NEWPP} OPT='%{fpcopt}'
make %{?_smp_mflags} utils_all \
FPC=${NEWPP} OPT='%{fpcopt} %{fpcdebugopt}'
popd
%else
make -C fpcdocs pdf FPC=fpc
%endif
%install
# Make available built binaries
%if "%{flavor}" == ""
export PATH=$PATH:%{buildroot}%{_bindir}
pushd fpcsrc
FPCDIR=
NEWPP=`pwd`/compiler/%{ppcname}
INSTALLOPTS="FPC=${NEWPP} \
INSTALL_PREFIX=%{buildroot}%{_prefix} \
INSTALL_LIBDIR=%{buildroot}%{_libdir} \
INSTALL_BASEDIR=%{buildroot}%{_libdir}/%{name}/%{version} \
CODPATH=%{buildroot}%{_libdir}/%{name}/lexyacc \
INSTALL_DOCDIR=%{buildroot}%{_defaultdocdir}/%{name} \
INSTALL_BINDIR=%{buildroot}%{_bindir}
INSTALL_EXAMPLEDIR=%{buildroot}%{_defaultdocdir}/%{name}/examples"
make compiler_distinstall ${INSTALLOPTS}
make utils_distinstall ${INSTALLOPTS}
make rtl_distinstall ${INSTALLOPTS}
make packages_distinstall ${INSTALLOPTS}
popd
pushd install
make -C doc ${INSTALLOPTS}
make -C man ${INSTALLOPTS} INSTALL_MANDIR=%{buildroot}%{_mandir}
popd
# create link
ln -sf ../%{_lib}/%{name}/%{version}/%{ppcname} %{buildroot}%{_bindir}/%{ppcname}
# create a version independent config
FPCMKCFGBIN=%{buildroot}%{_prefix}/bin/fpcmkcfg
FPCPATH=%{_libdir}/fpc/`$NEWPP -iV`
SYSFPDIRBASE=%{buildroot}%{_libdir}/fpc/`$NEWPP -iV`/ide/text
${FPCMKCFGBIN} -p -d "basepath=$FPCPATH" -o %{buildroot}%{_sysconfdir}/fpc.cfg
${FPCMKCFGBIN} -p -1 -d "basepath=$FPCPATH" -o ${SYSFPDIRBASE}/fp.cfg
${FPCMKCFGBIN} -p -2 -o ${SYSFPDIRBASE}/fp.ini
${FPCMKCFGBIN} -p -3 -d CompilerConfigDir=%{_sysconfdir}/fppkg -o %{buildroot}%{_sysconfdir}/fppkg.cfg
${FPCMKCFGBIN} -p -4 -d "GlobalPrefix=$FPCGLOBALPREFIX" -o %{buildroot}%{_sysconfdir}/fppkg/default
# Add support for "build ID" in binaries (for debuginfo support)
echo -e \
"\n# ----------------------\n\
# Use BuildId by default\n\
# ----------------------\n\
-k--build-id" >> %{buildroot}%{_sysconfdir}/fpc.cfg
# include the COPYING-information for the compiler/rtl/fcl in the documentation
install -m 644 -D fpcsrc/compiler/COPYING.txt %{buildroot}%{_licensedir}/%{name}/COPYING
install -m 644 -D fpcsrc/rtl/COPYING.txt %{buildroot}%{_licensedir}/%{name}/COPYING.rtl
install -m 644 -D fpcsrc/rtl/COPYING.FPC %{buildroot}%{_licensedir}/%{name}/COPYING.FPC
mv %{buildroot}%{_defaultdocdir}/%{name}/../../%{name}-%{version}/ide/readme.ide %{buildroot}%{_defaultdocdir}/%{name}/readme.ide
mv %{buildroot}%{_defaultdocdir}/%{name}/../../%{name}-%{version} %{buildroot}%{_defaultdocdir}/%{name}/examples
# Install source files needed by external packages
cp -a fpc-src/ %{buildroot}%{_datadir}/fpcsrc/
# delete lexyacc
rm -rf %{buildroot}%{_libdir}/%{name}/lexyacc
chmod 755 %{buildroot}%{_datadir}/fpcsrc/packages/ibase/scripts/mkdb
chmod 644 %{buildroot}%{_datadir}/fpcsrc/packages/iconvenc/src/iconvenc.pas
chmod 644 %{buildroot}%{_datadir}/fpcsrc/packages/iconvenc/examples/iconvtest.pp
chmod 755 %{buildroot}%{_datadir}/fpcsrc/packages/libc/scripts/h2p
chmod 755 %{buildroot}%{_datadir}/fpcsrc/packages/mysql/scripts/rmdb
chmod 755 %{buildroot}%{_datadir}/fpcsrc/packages/postgres/scripts/mkdb
chmod 755 %{buildroot}%{_datadir}/fpcsrc/packages/postgres/scripts/rmdb
chmod 755 %{buildroot}%{_datadir}/fpcsrc/packages/xforms/scripts/doc2p
chmod 755 %{buildroot}%{_datadir}/fpcsrc/rtl/freebsd/*/identpatch.sh
chmod 755 %{buildroot}%{_datadir}/fpcsrc/rtl/netware/convertimp
%if 0%{?suse_version}
%fdupes -s %{buildroot}%{_datadir}/fpcsrc
%fdupes -s %{buildroot}%{_libdir}/%{name}
%endif
%else
make -C fpcdocs pdfinstall \
FPC=fpc \
INSTALL_DOCDIR=%{buildroot}%{_defaultdocdir}/fpc
%endif
%if "%{flavor}" == ""
%files
%license %{_licensedir}/%{name}
%dir %{_defaultdocdir}/%{name}/
%doc %{_defaultdocdir}/%{name}/NEWS
%doc %{_defaultdocdir}/%{name}/README
%doc %{_defaultdocdir}/%{name}/readme.ide
%doc %{_defaultdocdir}/%{name}/faq*
%doc %{_mandir}/*/*
%config(noreplace) %{_sysconfdir}/%{name}.cfg
%config(noreplace) %{_sysconfdir}/fppkg.cfg
%dir %{_sysconfdir}/fppkg
%config(noreplace) %{_sysconfdir}/fppkg/default
%{_bindir}/*
%{_libdir}/libpas2jslib.so*
%{_libdir}/%{name}/
%ifarch x86_64 aarch64 ppc64 ppc64le
/usr/lib/%{name}/
%endif
%files examples
%docdir %{_defaultdocdir}/%{name}
%dir %{_defaultdocdir}/%{name}/examples
%doc %{_defaultdocdir}/%{name}/examples/*
%files src
%dir %{_datadir}/fpcsrc
%{_datadir}/fpcsrc/*
%else
%files
%docdir %{_defaultdocdir}/fpc
%doc %{_defaultdocdir}/fpc/*.pdf
%endif
%changelog
++++++ _multibuild ++++++
<multibuild>
<package>doc</package>
</multibuild>
++++++ aarch64-fpc-compilation-fix.patch ++++++
--- fpcbuild-3.2.0/fpcsrc/compiler/arm/agarmgas.pas (Revision 46921)
+++ fpcbuild-3.2.0/fpcsrc/compiler/arm/agarmgas.pas (Revision 46922)
@@ -105,6 +105,12 @@
result:=inherited MakeCmdLine;
if (current_settings.fputype = fpu_soft) then
result:='-mfpu=softvfp '+result;
+ if (current_settings.fputype = fpu_fpa) then
+ result:='-mfpu=fpa '+result;
+ if (current_settings.fputype = fpu_fpa10) then
+ result:='-mfpu=fpa10 '+result;
+ if (current_settings.fputype = fpu_fpa11) then
+ result:='-mfpu=fpa11 '+result;
if (current_settings.fputype = fpu_vfpv2) then
result:='-mfpu=vfpv2 '+result;
if (current_settings.fputype = fpu_vfpv3) then
++++++ aarch64-fpu-initialization.patch ++++++
--- fpcbuild-3.2.0/fpcsrc/compiler/aarch64/cgcpu.pas 2018-12-13 19:27:26.000000000 +0100
+++ fpcbuild-3.2.0/fpcsrc/compiler/aarch64/cgcpu.pas 2020-09-24 09:53:53.047492225 +0200
@@ -980,6 +980,7 @@
{ Notify the register allocator that we have written a move
instruction so it can try to eliminate it. }
add_move_instruction(instr);
+ { FMOV cannot generate a floating point exception }
end
else
begin
--- fpcbuild-3.2.0/fpcsrc/rtl/aarch64/aarch64.inc 2015-02-23 23:54:03.000000000 +0100
+++ fpcbuild-3.2.0/fpcsrc/rtl/aarch64/aarch64.inc 2020-09-24 13:52:50.744053033 +0200
@@ -50,26 +50,46 @@
mrs x0,fpsr
end;
+const
+ FPSR_IOC = 1;
+ FPSR_DZC = 1 shl 1;
+ FPSR_OFC = 1 shl 2;
+ FPSR_UFC = 1 shl 3;
+ FPSR_IXC = 1 shl 4;
+ FPSR_IDC = 1 shl 7;
+ FPSR_EXCEPTIONS = FPSR_IOC or FPSR_DZC or FPSR_OFC or FPSR_UFC or FPSR_IXC or FPSR_IDC;
procedure setfpsr(val: dword); nostackframe; assembler;
asm
msr fpsr, x0
end;
-
-procedure fpc_enable_fpu_exceptions;
+{$define FPC_SYSTEM_HAS_SYSINITFPU}
+procedure SysInitFPU;
begin
+ softfloat_rounding_mode:=rmNearest;
+ { 0 is rmNearest }
+ setfpcr(getfpcr and $ff3fffff);
{ clear all "exception happened" flags we care about}
- setfpsr(getfpsr and not(fpu_exception_mask shr fpu_exception_mask_to_status_mask_shift));
- { enable invalid operations and division by zero exceptions. }
- setfpcr(getfpcr or fpu_exception_mask);
+ setfpsr(getfpsr and not(fpu_exception_mask shr fpu_exception_mask_to_status_mask_shift));
+ { enable invalid operations and division by zero exceptions. }
+ setfpcr(((getfpcr and not(fpu_exception_mask)) or fpu_dze or fpu_ofe or fpu_ioe));
+ softfloat_exception_mask:=[float_flag_underflow,float_flag_inexact,float_flag_denormal];
+ softfloat_exception_flags:=[];
end;
+{$define FPC_SYSTEM_HAS_SYSRESETFPU}
+Procedure SysResetFPU;{$ifdef SYSTEMINLINE}inline;{$endif}
+begin
+ softfloat_exception_flags:=[];
+ setfpsr(getfpsr and not(FPSR_EXCEPTIONS));
+end;
+
procedure fpc_cpuinit;
begin
{ don't let libraries influence the FPU cw set by the host program }
if not IsLibrary then
- fpc_enable_fpu_exceptions;
+ SysInitFPU;
end;
++++++ fpc-fix-library-paths-on-aarch64.patch ++++++
diff -Nru fpcbuild-3.2.0.orig/fpcsrc/compiler/systems/t_linux.pas fpcbuild-3.2.0/fpcsrc/compiler/systems/t_linux.pas
--- fpcbuild-3.2.0.orig/fpcsrc/compiler/systems/t_linux.pas 2019-12-05 21:11:43.000000000 +0100
+++ fpcbuild-3.2.0/fpcsrc/compiler/systems/t_linux.pas 2020-06-25 18:33:04.362536867 +0200
@@ -142,8 +142,15 @@
LibrarySearchPath.AddLibraryPath(sysrootpath,'=/lib64;=/usr/lib64;=/usr/X11R6/lib64',true)
else
LibrarySearchPath.AddLibraryPath(sysrootpath,'=/lib64;=/usr/lib/powerpc64le-linux-gnu;=/usr/X11R6/powerpc64le-linux-gnu',true);
-{$else powerpc64}
+{$else}
+{$ifdef aarch64}
+ LibrarySearchPath.AddLibraryPath(sysrootpath,'=/usr/lib',true);
+ LibrarySearchPath.AddLibraryPath(sysrootpath,'=/lib',true);
+ LibrarySearchPath.AddLibraryPath(sysrootpath,'=/usr/lib64',true);
+ LibrarySearchPath.AddLibraryPath(sysrootpath,'=/lib64',true);
+{$else}
LibrarySearchPath.AddLibraryPath(sysrootpath,'=/lib;=/usr/lib;=/usr/X11R6/lib',true);
+{$endif aarch64}
{$endif powerpc64}
{$endif x86_64}
@@ -223,7 +230,7 @@
{$endif arm}
{$ifdef aarch64}
-const defdynlinker='/lib/ld-linux-aarch64.so.1';
+const defdynlinker='/lib64/ld-linux-aarch64.so.1';
{$endif aarch64}
{$ifdef mips}
++++++ fpc-fix-library-paths-on-ppc64.patch ++++++
--- fpcbuild-3.2.0/fpcsrc/compiler/systems/t_linux.pas.orig 2020-09-25 07:43:31.880558566 +0000
+++ fpcbuild-3.2.0/fpcsrc/compiler/systems/t_linux.pas 2020-09-25 07:55:16.789263339 +0000
@@ -141,7 +141,7 @@ begin
if target_info.abi<>abi_powerpc_elfv2 then
LibrarySearchPath.AddLibraryPath(sysrootpath,'=/lib64;=/usr/lib64;=/usr/X11R6/lib64',true)
else
- LibrarySearchPath.AddLibraryPath(sysrootpath,'=/lib64;=/usr/lib/powerpc64le-linux-gnu;=/usr/X11R6/powerpc64le-linux-gnu',true);
+ LibrarySearchPath.AddLibraryPath(sysrootpath,'=/lib64;=/usr/lib64;=/usr/X11R6/lib64',true);
{$else}
{$ifdef aarch64}
LibrarySearchPath.AddLibraryPath(sysrootpath,'=/usr/lib',true);
++++++ fpc-rpmlintrc ++++++
addFilter("statically-linked-binary")
addFilter("shlib-policy-name-error")
addFilter("devel-file-in-non-devel-package .*/fpc/.*/units/.*-linux/.*.a")
addFilter("devel-file-in-non-devel-package .*/fpcsrc/.*/.*.a")
addFilter("devel-file-in-non-devel-package .*/fpcsrc/.*/.*.c")
addFilter("devel-file-in-non-devel-package .*/fpcsrc/.*/.*.cpp")
addFilter("devel-file-in-non-devel-package .*/fpcsrc/.*/.*.h")
++++++ fpc-si_c-x86_64-plt.patch ++++++
Index: fpcsrc/rtl/linux/x86_64/si_c.inc
===================================================================
--- fpcsrc/rtl/linux/x86_64/si_c.inc (revision 46208)
+++ fpcsrc/rtl/linux/x86_64/si_c.inc (revision 46209)
@@ -86,7 +86,7 @@
{ start the program }
xorq %rbp,%rbp
- call PASCALMAIN
+ call PASCALMAIN@PLT
{$endif FPC_HAS_INDIRECT_ENTRY_INFORMATION}
hlt
end;
@@ -162,7 +162,7 @@
{ Call the user's main function, and exit with its value.
But let the libc call main. }
- call libc_start_main
+ call libc_start_main@PLT
hlt { Crash if somehow `exit' does return. }
end;