# # spec file for package gc # # Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # 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/ # Name: gc Version: 8.0.4 Release: 1.8 Summary: A garbage collector for C and C++ License: BSD-3-Clause Group: Development/Libraries/C and C++ URL: http://www.hboehm.info/gc/ #Git-Clone: git://github.com/ivmai/bdwgc Source: https://github.com/ivmai/bdwgc/releases/download/v%version/%name-%version.tar.gz BuildRequires: autoconf >= 2.64 BuildRequires: gcc-c++ BuildRequires: libtool BuildRequires: pkgconf-pkg-config BuildRequires: pkgconfig(atomic_ops) %description The Boehm-Demers-Weiser conservative garbage collector can be used as a garbage collecting replacement for C malloc or C++ new. It allows you to allocate memory basically as you normally would, without explicitly deallocating memory that is no longer useful. The collector automatically recycles memory when it determines that it can no longer be otherwise accessed. %package -n libgc1 Summary: A garbage collector for C and C++ Group: System/Libraries %ifarch ppc64 # bug437293 Obsoletes: boehm-gc-64bit %endif %description -n libgc1 The Boehm-Demers-Weiser conservative garbage collector can be used as a garbage collecting replacement for C malloc or C++ new. It allows you to allocate memory basically as you normally would, without explicitly deallocating memory that is no longer useful. The collector automatically recycles memory when it determines that it can no longer be otherwise accessed. %package devel Summary: A garbage collector for C and C++ Group: Development/Libraries/C and C++ Provides: gc:/usr/include/gc/gc.h Requires: glibc-devel Requires: libatomic_ops-devel Requires: libgc1 = %version %description devel The Boehm-Demers-Weiser conservative garbage collector can be used as a garbage collecting replacement for C malloc or C++ new. It allows you to allocate memory basically as you normally would, without explicitly deallocating memory that is no longer useful. The collector automatically recycles memory when it determines that it can no longer be otherwise accessed. %prep %setup -q %build autoreconf -fi # see bugzilla.redhat.com/689877 export CPPFLAGS="-DUSE_GET_STACKBASE_FOR_MAIN" export CXXFLAGS="%optflags -std=gnu++98" %configure --disable-static --docdir="%_docdir/%name" \ --with-gnu-ld \ --enable-cplusplus \ --enable-large-config \ --enable-threads=posix \ --enable-parallel-mark \ --with-libatomic-ops=yes # --with-libatomic-ops=yes means to use the system library make %{?_smp_mflags} %install %make_install rm -Rf "%buildroot/%_datadir/gc" "%buildroot/%_libdir"/*.la rm -f "%buildroot/%_docdir/%name"/README.{Mac,OS2,win32} %check %if !0%{?qemu_user_space_build} make check %endif %post -n libgc1 -p /sbin/ldconfig %postun -n libgc1 -p /sbin/ldconfig %files -n libgc1 %defattr(-, root, root) %_libdir/libcord.so.1* %_libdir/libgc*.so.1* %files devel %defattr(-, root, root) %_docdir/%name/ %_libdir/libcord.so %_libdir/libgc*.so %_libdir/pkgconfig/bdw-gc.pc %_mandir/man3/gc.3* %_includedir/gc.h %_includedir/gc_cpp.h %_includedir/gc/ %changelog * Fri Mar 15 2019 Jan Engelhardt - Update to new upstream release 8.0.4 * Avoid a full GC when growing finalizer tables if in incremental mode. * Avoid potential race in hb_sz access between realloc and reclaim_block. * Ensure result of every variant of MS_TIME_DIFF has unsigned long type. * Fix 'unexpected mark stack overflow' abort in push_all_stack. * Tue Jan 8 2019 Jan Engelhardt - Add libatomic_ops-devel as a package require, since it shows up in bdw-gc.pc. * Tue Jan 8 2019 Jan Engelhardt - Update to new upstream release 8.0.2 * Explicitly unblock GC signals on GC initialization. * Add initial RISC-V support. * Never return null by C++ GC allocators and gc_cpp operator new. * Add AO primitives implementation to GC based on C11 atomic intrinsic. * Change pointer arguments of push_all[_eager]/conditional API to void * type. * Change type of hb_sz field (of hblkhdr) from size_t to word. * Decide between memory unmapping and mprotect-based dirty bits at runtime. * New API function (GC_dump_named) to produce named dumps. * New API function (get_size_map_at) to get content of size_map table. * New API to stop and start the GC world externally. * New API to turn on manual VDB at runtime. * Tue Jan 30 2018 jengelh@inai.de - Update to new upstream release 7.6.4 * Also enable the TSX workaround for i386 (Linux) * Relax mark_mutex attribute needed to disable elision (Linux/x64) * Process all PT_LOAD segments before PT_GNU_RELRO segments (Glibc) * Add API function to calculate total memory in use by all GC blocks * Add API function to set/modify GC log file descriptor (Unix) * Add alt-stack registration support * Implement the finalization extension API * Implement thread suspend/resume API (Linux threads only) * Mon Feb 1 2016 rguenther@suse.com - Force -std=gnu++98 for C++ testcases. * Thu Mar 5 2015 jengelh@inai.de - Update homepage URLs * Mon Dec 29 2014 p.drouand@gmail.com - Update to version 7.4.2 * Add config option to use STGRTMIN-based signals for thread suspend/resume. * Allow parallel mark to be enabled on powerpc-linux systems. * Fix 'Array subscript is above array bounds' GCC warning in GC_new_kind/proc. * Fix 'attribute declaration must precede definition' warning. * Fix GC_finalized_malloc failure on disclaim_test. * Fix GC_sig_suspend initialization when non-constant SIGRTMIN used. * Fix data roots registration for Android/x86 and NDK ARM 'gold' linker. * Fix find stackbottom on BlueGene P/Q systems. * Fix machdep .lo files path in configure (SPARC, IA-64). * Fix ok_init assignment (missing cast) in GC_new_kind_inner. - Remove aarch64-support.patch; merged on upstream release - gc project has a new home; update URL tag and download source URL * Sun May 26 2013 jengelh@inai.de - Make use of external libatomic_ops -- openSUSE has it in a separate source package - Fix version: 7.2d is not a prerelease, so there is no need to call it 7.1* - More portable make install call; more robust file list * Sat May 25 2013 root@localhost - libatomic_ops-aarch64.patch: update makefile to install missing headers, don't use AO_EXPECT_FALSE. * Sat May 18 2013 schwab@suse.de - aarch64-support.patch: aarch64 support for gc from upstream - libatomic_ops-aarch64.patch: aarch64 support for libatomic_ops from upstream add-aarch64-support branch * Mon Mar 25 2013 dmueller@suse.com - update to 7.2d + no upstream changelog available, but bring it two years further up to date - remove all patches. All upstream meanwhile - fix packaging of atomic_ops.pc * Sun Mar 3 2013 jengelh@inai.de - Record autoconf requirements in spec file * Tue Aug 7 2012 uli@suse.com - fix for malloc()/calloc() overflows (CVE-2012-2673, bnc#765444) * Sat Feb 11 2012 coolo@suse.com - put the provides for libatomic-ops-devel in a package actually in existance * Sun Dec 25 2011 idonmez@suse.com - Provide libatomic-ops-devel package too * Tue Dec 13 2011 werner@suse.de - To use this with asymptote from TeX Live large config is required. Also fast garbage collection iby using pthread-based parallel mark implementation will help a lot. * Sat Oct 1 2011 coolo@suse.com - add libtool as buildrequire to make the spec file more reliable * Fri Sep 30 2011 crrodriguez@opensuse.org - Workaround qemu-arm bugs. * Thu Sep 22 2011 jengelh@medozas.de - Implement shlib policy - Resolve rpmlint warning "no-pkg-config-provides" - Remove redundant/obsolete tags (cf. specfile guidelines; License field is inherited from (main) subpackage) * Mon Jun 20 2011 pgajdos@novell.com - updated to 7.2alpha6 * many bug fixes and new features from 6.6, see doc/README.changes for older changes and ChangeLog for recent changes * Thu Apr 2 2009 crrodriguez@suse.de - remove static libraries and "la" files - run make check * Wed Dec 10 2008 olh@suse.de - use Obsoletes: -XXbit only for ppc64 to help solver during distupgrade (bnc#437293) * Tue Nov 11 2008 olh@suse.de - use gcc built-in atomic functions, to fix w3m build * Thu Oct 30 2008 olh@suse.de - obsolete old -XXbit packages (bnc#437293) * Mon Feb 25 2008 crrodriguez@suse.de - fix library-without-ldconfig-postin errors * Wed Nov 21 2007 uli@suse.de - implicit malloc() redirection breaks some apps (bug #335123) * Sat May 26 2007 ro@suse.de - split off devel package * Mon Jan 30 2006 uli@suse.de - enabled malloc redirection, C++ support - fixed shared libs * Wed Jan 25 2006 mls@suse.de - converted neededforbuild to BuildRequires * Wed Jan 11 2006 uli@suse.de - initial package