# # spec file for package gdb # # Copyright (c) 2011 SUSE LINUX Products 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 http://bugs.opensuse.org/ # Summary: A GNU source-level debugger for C, C++, Java and other languages Name: gdb # Set version to contents of gdb/version.in. # NOTE: the FSF gdb versions are numbered N.M for official releases, like 6.3 # and, since January 2005, X.Y.Z.date for daily snapshots, like 6.3.50.20050112 # (daily snapshot from mailine), or 6.3.0.20040112 (head of the release branch). Version: 7.3 Release: 1 # The release always contains a leading reserved number, start it at 1. # `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and BSD and Public Domain Group: Development/Debuggers # Do not provide URL for snapshots as the file lasts there only for 2 days. # ftp://sourceware.org/pub/gdb/snapshots/current/gdb-%{version}.tar.bz2 # ftp://sourceware.org/pub/gdb/snapshots/branch/gdb-%{version}.tar.bz2 # ftp://sourceware.org/pub/gdb/releases/gdb-%{version}.tar.bz2 Source: ftp://sourceware.org/pub/gdb/snapshots/current/gdb-%{version}.tar.bz2 BuildRoot: %{_tmppath}/%{name}-%{version}-build Url: http://gnu.org/software/gdb/ # For our convenience %define gdb_src gdb-%{version} %define gdb_build build-%{_target_platform} %define gdb_docdir %{_docdir}/%{name}-doc-%{version} %if 0%{?_with_debug:1} # Define this if you want to skip the strip step and preserve debug info. # Useful for testing. %define __debug_install_post : > %{_builddir}/%{?buildsubdir}/debugfiles.list %define debug_package %{nil} %endif # Make sure we get rid of the old package gdb64, now that we have unified # support for 32-64 bits in one single 64-bit gdb. %ifarch ppc64 Obsoletes: gdb64 < 5.3.91 %endif # GDB patches have the format `gdb--bz-.patch'. # They should be created using patch level 1: diff -up ./gdb (or gdb-6.3/gdb). #= #push=Should be pushed upstream. #maybepush=Should be pushed upstream unless it got obsoleted there. #fedora=Should stay as a Fedora patch. #ia64=Drop after RHEL-5 rebases and rebuilds are no longer meaningful. #fedoratest=Keep it in Fedora only as a regression test safety. #+ppc=Specific for ppc32/ppc64/ppc* #+work=Requires some nontrivial work. # Cleanup any leftover testsuite processes as it may stuck mock(1) builds. #=push Source2: gdb-orphanripper.c # Man page for gstack(1). #=push Source3: gdb-gstack.man # /etc/gdbinit (from Debian but with Fedora compliant location). #=fedora Source4: gdbinit # libstdc++ pretty printers from GCC SVN HEAD (4.5 experimental). %define libstdcxxpython libstdc++-v3-python-r155978 Source5: %{libstdcxxpython}.tar.bz2 # Work around out-of-date dejagnu that does not have KFAIL #=drop: That dejagnu is too old to be supported. Patch1: gdb-6.3-rh-dummykfail-20041202.patch # Match the Fedora's version info. #=fedora Patch2: gdb-6.3-rh-testversion-20041202.patch # Check that libunwind works - new test then fix #=ia64 Patch3: gdb-6.3-rh-testlibunwind-20041202.patch # Use convert_from_func_ptr_addr on the solib breakpoint address; # simplifies and makes more consistent the logic. #=maybepush+ppc: Write new testcase. Patch104: gdb-6.3-ppcdotsolib-20041022.patch # Better parse 64-bit PPC system call prologues. #=maybepush+ppc: Write new testcase. Patch105: gdb-6.3-ppc64syscall-20040622.patch # Include the pc's section when doing a symbol lookup so that the # correct symbol is found. #=maybepush: Write new testcase. Patch111: gdb-6.3-ppc64displaysymbol-20041124.patch # Fix upstream `set scheduler-locking step' vs. upstream PPC atomic seqs. #=maybepush+work: It is a bit difficult patch, a part is ppc specific. Patch112: gdb-6.6-scheduler_locking-step-sw-watchpoints2.patch # Make upstream `set scheduler-locking step' as default. #=maybepush+work: How much is scheduler-locking relevant after non-stop? Patch260: gdb-6.6-scheduler_locking-step-is-default.patch # Add a wrapper script to GDB that implements pstack using the # --readnever option. #=push+work: with gdbindex maybe --readnever should no longer be used. Patch118: gdb-6.3-gstack-20050411.patch # VSYSCALL and PIE #=fedoratest Patch122: gdb-6.3-test-pie-20050107.patch #=maybepush: May get obsoleted by Tom's unrelocated objfiles patch. Patch389: gdb-archer-pie-addons.patch #=push+work: Breakpoints disabling matching should not be based on address. Patch394: gdb-archer-pie-addons-keep-disabled.patch # Get selftest working with sep-debug-info #=maybepush Patch125: gdb-6.3-test-self-20050110.patch # Test support of multiple destructors just like multiple constructors #=fedoratest Patch133: gdb-6.3-test-dtorfix-20050121.patch # Fix to support executable moving #=fedoratest Patch136: gdb-6.3-test-movedir-20050125.patch # Fix gcore for threads #=ia64 Patch140: gdb-6.3-gcore-thread-20050204.patch # Stop while intentionally stepping and the thread exit is met. #=push Patch141: gdb-6.6-step-thread-exit.patch #=push Patch259: gdb-6.3-step-thread-exit-20050211-test.patch # Test sibling threads to set threaded watchpoints for x86 and x86-64 #=fedoratest Patch145: gdb-6.3-threaded-watchpoints2-20050225.patch # Do not issue warning message about first page of storage for ia64 gcore #=ia64 Patch153: gdb-6.3-ia64-gcore-page0-20050421.patch # Security errata for untrusted .gdbinit #=push Patch157: gdb-6.3-security-errata-20050610.patch # IA64 sigtramp prev register patch #=ia64 Patch158: gdb-6.3-ia64-sigtramp-frame-20050708.patch # IA64 gcore speed-up patch #=ia64 Patch160: gdb-6.3-ia64-gcore-speedup-20050714.patch # Notify observers that the inferior has been created #=fedoratest Patch161: gdb-6.3-inferior-notification-20050721.patch # Fix ia64 info frame bug #=ia64 Patch162: gdb-6.3-ia64-info-frame-fix-20050725.patch # Verify printing of inherited members test #=fedoratest Patch163: gdb-6.3-inheritancetest-20050726.patch # Add readnever option #=push Patch164: gdb-6.3-readnever-20050907.patch # Fix ia64 gdb problem with user-specified SIGILL handling #=ia64 Patch169: gdb-6.3-ia64-sigill-20051115.patch # Fix debuginfo addresses resolving for --emit-relocs Linux kernels (BZ 203661). #=push+work: There was some mail thread about it, this patch may be a hack. Patch188: gdb-6.5-bz203661-emit-relocs.patch # Support TLS symbols (+`errno' suggestion if no pthread is found) (BZ 185337). #=push+work: It should be replaced by existing uncommitted Roland's glibc patch for TLS without libpthreads. Patch194: gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch # Fix TLS symbols resolving for shared libraries with a relative pathname. # The testsuite needs `gdb-6.5-tls-of-separate-debuginfo.patch'. #=fedoratest+work: One should recheck if it is really fixed upstream. Patch196: gdb-6.5-sharedlibrary-path.patch # Suggest fixing your target architecture for gdbserver(1) (BZ 190810). # FIXME: It could be autodetected. #=push+work: There are more such error cases that can happen. Patch199: gdb-6.5-bz190810-gdbserver-arch-advice.patch # Testcase for deadlocking on last address space byte; for corrupted backtraces. #=fedoratest Patch211: gdb-6.5-last-address-space-byte-test.patch # Improved testsuite results by the testsuite provided by the courtesy of BEA. #=fedoratest+work: For upstream it should be rewritten as a dejagnu test, the test of no "??" was useful. Patch208: gdb-6.5-BEA-testsuite.patch # Fix readline segfault on excessively long hand-typed lines. #=fedoratest Patch213: gdb-6.5-readline-long-line-crash-test.patch # Fix bogus 0x0 unwind of the thread's topmost function clone(3) (BZ 216711). #=fedoratest Patch214: gdb-6.5-bz216711-clone-is-outermost.patch # Test sideeffects of skipping ppc .so libs trampolines (BZ 218379). #=fedoratest Patch216: gdb-6.5-bz218379-ppc-solib-trampoline-test.patch # Fix lockup on trampoline vs. its function lookup; unreproducible (BZ 218379). #=push Patch217: gdb-6.5-bz218379-solib-trampoline-lookup-lock-fix.patch # Find symbols properly at their original (included) file (BZ 109921). #=fedoratest Patch225: gdb-6.5-bz109921-DW_AT_decl_file-test.patch # Update PPC unwinding patches to their upstream variants (BZ 140532). #=fedoratest+ppc Patch229: gdb-6.3-bz140532-ppc-unwinding-test.patch # Testcase for exec() from threaded program (BZ 202689). #=fedoratest Patch231: gdb-6.3-bz202689-exec-from-pthread-test.patch # Backported fixups post the source tarball. #Xdrop: Just backports. #Patch232: gdb-upstream.patch # Testcase for PPC Power6/DFP instructions disassembly (BZ 230000). #=fedoratest+ppc Patch234: gdb-6.6-bz230000-power6-disassembly-test.patch # Temporary support for shared libraries >2GB on 64bit hosts. (BZ 231832) #=push+work: Upstream should have backward compat. API: libc-alpha: <20070127104539.GA9444@.*> Patch235: gdb-6.3-bz231832-obstack-2gb.patch # Allow running `/usr/bin/gcore' with provided but inaccessible tty (BZ 229517). #=fedoratest Patch245: gdb-6.6-bz229517-gcore-without-terminal.patch # Notify user of a child forked process being detached (BZ 235197). #=push: This is more about discussion if/what should be printed. Patch247: gdb-6.6-bz235197-fork-detach-info.patch # Avoid too long timeouts on failing cases of "annota1.exp annota3.exp". #=push Patch254: gdb-6.6-testsuite-timeouts.patch # Support for stepping over PPC atomic instruction sequences (BZ 237572). #=fedoratest Patch258: gdb-6.6-bz237572-ppc-atomic-sequence-test.patch # Test kernel VDSO decoding while attaching to an i386 process. #=fedoratest Patch263: gdb-6.3-attach-see-vdso-test.patch # Do not hang on exit of a thread group leader (BZ 247354). #=push Patch265: gdb-6.6-bz247354-leader-exit-fix.patch #=push Patch266: gdb-6.6-bz247354-leader-exit-test.patch # Test leftover zombie process (BZ 243845). #=fedoratest Patch271: gdb-6.5-bz243845-stale-testing-zombie-test.patch # New locating of the matching binaries from the pure core file (build-id). #=push Patch274: gdb-6.6-buildid-locate.patch #=push Patch353: gdb-6.6-buildid-locate-rpm.patch # Workaround librpm BZ 643031 due to its unexpected exit() calls (BZ 642879). #=push Patch519: gdb-6.6-buildid-locate-rpm-librpm-workaround.patch # Fix displaying of numeric char arrays as strings (BZ 224128). #=fedoratest: But it is failing anyway, one should check the behavior more. Patch282: gdb-6.7-charsign-test.patch # Test PPC hiding of call-volatile parameter register. #=fedoratest+ppc Patch284: gdb-6.7-ppc-clobbered-registers-O2-test.patch # Testsuite fixes for more stable/comparable results. #=push Patch287: gdb-6.7-testsuite-stable-results.patch # Test ia64 memory leaks of the code using libunwind. #=fedoratest Patch289: gdb-6.5-ia64-libunwind-leak-test.patch # Test hiding unexpected breakpoints on intentional step commands. #=fedoratest Patch290: gdb-6.5-missed-trap-on-step-test.patch # Support DW_TAG_interface_type the same way as DW_TAG_class_type (BZ 426600). #=fedoratest Patch294: gdb-6.7-bz426600-DW_TAG_interface_type-test.patch # Test gcore memory and time requirements for large inferiors. #=fedoratest Patch296: gdb-6.5-gcore-buffer-limit-test.patch # Test debugging statically linked threaded inferiors (BZ 239652). # - It requires recent glibc to work in this case properly. #=fedoratest Patch298: gdb-6.6-threads-static-test.patch # Test GCORE for shmid 0 shared memory mappings. #=fedoratest: But it is broken anyway, sometimes the case being tested is not reproducible. Patch309: gdb-6.3-mapping-zero-inode-test.patch # Test a crash on `focus cmd', `focus prev' commands. #=fedoratest Patch311: gdb-6.3-focus-cmd-prev-test.patch # Test various forms of threads tracking across exec() (BZ 442765). #=fedoratest Patch315: gdb-6.8-bz442765-threaded-exec-test.patch # Silence memcpy check which returns false positive (sparc64) #=push: But it is just a GCC workaround, look up the existing GCC PR for it. Patch317: gdb-6.8-sparc64-silence-memcpy-check.patch # Test a crash on libraries missing the .text section. #=fedoratest Patch320: gdb-6.5-section-num-fixup-test.patch # Create a single binary `gdb' autodetecting --tui by its argv[0]. #=push+work: IIRC Tom told argv[0] should not be used by GNU programs, also drop libgdb.a. Patch326: gdb-6.8-tui-singlebinary.patch # Fix PRPSINFO in the core files dumped by gcore (BZ 254229). #=push Patch329: gdb-6.8-bz254229-gcore-prpsinfo.patch # Fix register assignments with no GDB stack frames (BZ 436037). #=push+work: This fix is incorrect. Patch330: gdb-6.8-bz436037-reg-no-longer-active.patch # Make the GDB quit processing non-abortable to cleanup everything properly. #=push: Useful only after gdb-6.8-attach-signalled-detach-stopped.patch . Patch331: gdb-6.8-quit-never-aborts.patch # Fix attaching to stopped processes and/or pending signals. #=push+work Patch337: gdb-6.8-attach-signalled-detach-stopped.patch # Test the watchpoints conditionals works. #=fedoratest Patch343: gdb-6.8-watchpoint-conditionals-test.patch # Fix resolving of variables at locations lists in prelinked libs (BZ 466901). #=fedoratest Patch348: gdb-6.8-bz466901-backtrace-full-prelinked.patch # The merged branch `archer-jankratochvil-fedora15' of: # http://sourceware.org/gdb/wiki/ProjectArcher #=push #archer-jankratochvil-vla #=push #archer-jankratochvil-watchpoint3 #=push #archer-jankratochvil-ifunc Patch349: gdb-archer.patch # Fix parsing elf64-i386 files for kdump PAE vmcore dumps (BZ 457187). # - Turn on 64-bit BFD support, globally enable AC_SYS_LARGEFILE. #=fedoratest Patch360: gdb-6.8-bz457187-largefile-test.patch # New test for step-resume breakpoint placed in multiple threads at once. #=fedoratest Patch381: gdb-simultaneous-step-resume-breakpoint-test.patch # Fix GNU/Linux core open: Can't read pathname for load map: Input/output error. #=push+work: It should be in glibc: libc-alpha: <20091004161706.GA27450@.*> Patch382: gdb-core-open-vdso-warning.patch # Fix syscall restarts for amd64->i386 biarch. #=push Patch391: gdb-x86_64-i386-syscall-restart.patch # Fix stepping with OMP parallel Fortran sections (BZ 533176). #=push+work: It requires some better DWARF annotations. Patch392: gdb-bz533176-fortran-omp-step.patch # Fix regression by python on ia64 due to stale current frame. #=push Patch397: gdb-follow-child-stale-parent.patch # Workaround ccache making lineno non-zero for command-line definitions. #=drop: ccache is rarely used and it is even fixed now. Patch403: gdb-ccache-workaround.patch # Implement `info common' for Fortran. #=push Patch404: gdb-fortran-common-reduce.patch #=push Patch405: gdb-fortran-common.patch # Testcase for "Do not make up line information" fix by Daniel Jacobowitz. #=fedoratest Patch407: gdb-lineno-makeup-test.patch # Test power7 ppc disassembly. #=fedoratest+ppc Patch408: gdb-ppc-power7-test.patch # Revert: Add -Wunused-function to compile flags. #=drop Patch412: gdb-unused-revert.patch # Fix i386+x86_64 rwatch+awatch before run, regression against 6.8 (BZ 541866). # Fix i386 rwatch+awatch before run (BZ 688788, on top of BZ 541866). #=push+work: It should be fixed properly instead. Patch417: gdb-bz541866-rwatch-before-run.patch # Workaround non-stop moribund locations exploited by kernel utrace (BZ 590623). #=push+work: Currently it is still not fully safe. Patch459: gdb-moribund-utrace-workaround.patch # Fix follow-exec for C++ programs (bugreported by Martin Stransky). #=fedoratest Patch470: gdb-archer-next-over-throw-cxx-exec.patch # Backport DWARF-4 support (BZ 601887, Tom Tromey). #=fedoratest Patch475: gdb-bz601887-dwarf4-rh-test.patch # Print 2D C++ vectors as matrices (BZ 562763, sourceware10659, Chris Moller). #=push+work: There are some outstanding issues, check the mails. Patch486: gdb-bz562763-pretty-print-2d-vectors.patch #=push+work: There are some outstanding issues, check the mails. Patch487: gdb-bz562763-pretty-print-2d-vectors-libstdcxx.patch # [delayed-symfile] Test a backtrace regression on CFIs without DIE (BZ 614604). #=fedoratest Patch490: gdb-test-bt-cfi-without-die.patch # Provide /usr/bin/gdb-add-index for rpm-build (Tom Tromey). #=drop: Re-check against the upstream version. Patch491: gdb-gdb-add-index-script.patch # Out of memory is just an error, not fatal (uninitialized VLS vars, BZ 568248). #=drop+work: Inferior objects should be read in parts, then this patch gets obsoleted. Patch496: gdb-bz568248-oom-is-error.patch # Fix gcore writer for -Wl,-z,relro (PR corefiles/11804). #=push: There is different patch on gdb-patches, waiting now for resolution in kernel. Patch504: gdb-bz623749-gcore-relro.patch # Fix lost siginfo_t in linux-nat (BZ 592031). #=push Patch510: gdb-bz592031-siginfo-lost-4of5.patch #=push Patch511: gdb-bz592031-siginfo-lost-5of5.patch # Verify GDB Python built-in function gdb.solib_address exists (BZ # 634108). #=fedoratest Patch526: gdb-bz634108-solib_address.patch # New testcase py-prettyprint.exp:print hint_error (for BZ 611569, BZ 629236). #=fedoratest Patch541: gdb-test-pp-hint-error.patch # New test gdb.arch/x86_64-pid0-core.exp for kernel PID 0 cores (BZ 611435). #=fedoratest Patch542: gdb-test-pid0-core.patch # [archer-tromey-delayed-symfile] New test gdb.dwarf2/dw2-aranges.exp. # =fedoratest Patch547: gdb-test-dw2-aranges.patch # [archer-keiths-expr-cumulative+upstream] Import C++ testcases. # =fedoratest Patch548: gdb-test-expr-cumulative-archer.patch # Temporary fix of F15 gcc-4.6 child DIEs of DW_TAG_typedef (BZ 672230). # =push Patch555: gdb-gcc46-typedef.patch # Workaround gcc-4.6 stdarg false prologue end (GDB PR 12435 + GCC PR 47471). # =push Patch556: gdb-gcc46-stdarg-prologue.patch # Fix attach/core-load of {,un}prelinked i386 libs (bugreport by Michal Toman). Patch571: gdb-prelink-rela.patch # Fix threading internal error on corrupted memory (BZ 677654). Patch572: gdb-core-thread-internalerr-1of3.patch Patch573: gdb-core-thread-internalerr-2of3.patch Patch574: gdb-core-thread-internalerr-3of3.patch # Toolchain on sparc is slightly broken and debuginfo files are generated # with non 64bit aligned tables/offsets. # See for example readelf -S ../Xvnc.debug. # # As a consenquence calculation of sectp->filepos as used in # dwarf2_read_section (gdb/dwarf2read.c:1525) will return a non aligned buffer # that cannot be used directly as done with MMAP. # Usage will result in a BusError. # # While we figure out what's wrong in the toolchain and do a full archive # rebuild to fix it, we need to be able to use gdb :) Patch579: gdb-7.2.50-sparc-add-workaround-to-broken-debug-files.patch # Fix case insensitive symbols for Fortran by iFort (BZ 645773). Patch580: gdb-bz645773-case-insensitive-1of5.patch Patch581: gdb-bz645773-case-insensitive-2of5.patch Patch582: gdb-bz645773-case-insensitive-3of5.patch Patch583: gdb-bz645773-case-insensitive-4of5.patch # Bundle readline-6.2 with a workaround of skipped "ask" (BZ 701131). Patch591: gdb-bz701131-readline62-1of3.patch Patch592: gdb-bz701131-readline62-2of3.patch Patch593: gdb-bz701131-readline62-3of3.patch # [stap] Fix double free. Patch594: gdb-stap-double-free.patch # Upstream patch to fix gcc -Werror Patch1002: gdb-6.6-buildid-locate-rpm-suse.patch BuildRequires: bison flex gettext glibc-devel ncurses-devel texinfo zlib-devel %if %{suse_version} < 1020 BuildRequires: expat %else BuildRequires: libexpat-devel %endif BuildRequires: readline-devel BuildRequires: zlib-devel %if 0%{!?_without_python:1} %if 0%{suse_version} > 1000 Requires: python-base %endif BuildRequires: python-devel %endif # 0%{!?_without_python:1} %if 0%{?_with_testsuite:1} # Ensure the devel libraries are installed for both multilib arches. %define bits_local %{?_isa} %define bits_other %{?_isa} %if 0%{!?el5:1} %ifarch s390x %define bits_other (%{__isa_name}-32) %else #!s390x %ifarch ppc %define bits_other (%{__isa_name}-64) %else #!ppc %ifarch sparc64 ppc64 s390x x86_64 %define bits_other (%{__isa_name}-32) %endif #sparc64 ppc64 s390x x86_64 %endif #!ppc %endif #!s390x %endif #!el5 BuildRequires: dejagnu sharutils # gcc-objc++ is not covered by the GDB testsuite. BuildRequires: gcc gcc-c++ gcc-gfortran gcc-java gcc-objc # Copied from gcc-4.1.2-32. %ifarch %{ix86} x86_64 ia64 ppc alpha BuildRequires: gcc-ada %endif BuildRequires: glibc-devel-32bit %if 0%{suse_version} > 1120 BuildRequires: gcc-c++-32bit %endif %endif # 0%{?_with_testsuite:1} %ifarch ia64 BuildRequires: libunwind-devel Requires: libunwind %endif PreReq: %install_info_prereq %description GDB, the GNU debugger, allows you to debug programs written in C, C++, Java, and other languages, by executing them in a controlled fashion and printing their data. %if %{suse_version} > 1010 %package -n gdbserver Summary: A standalone server for GDB (the GNU source-level debugger) Group: Development/Debuggers %description -n gdbserver GDB, the GNU debugger, allows you to debug programs written in C, C++, Java, and other languages, by executing them in a controlled fashion and printing their data. This package provides a program that allows you to run GDB on a different machine than the one which is running the program being debugged. %endif %prep # This allows the tarball name to be different from our # version-release name. %setup -q -n %{gdb_src} %if 0%{?rhel:1} # libstdc++ pretty printers. tar xjf %{SOURCE5} %endif # 0%{?rhel:1} # Files have `# ' statements breaking VPATH / find-debuginfo.sh . rm -f gdb/ada-exp.c gdb/ada-lex.c gdb/c-exp.c gdb/cp-name-parser.c gdb/f-exp.c rm -f gdb/jv-exp.c gdb/m2-exp.c gdb/objc-exp.c gdb/p-exp.c # Apply patches defined above. # Match the Fedora's version info. %patch2 -p1 %if 0%{!?_with_upstream:1} #patch232 -p1 %patch349 -p1 %patch1 -p1 %patch3 -p1 %patch104 -p1 %patch105 -p1 %patch111 -p1 %patch112 -p1 %patch118 -p1 %patch122 -p1 %patch125 -p1 %patch133 -p1 %patch136 -p1 %patch140 -p1 %patch141 -p1 %patch259 -p1 %patch145 -p1 %patch153 -p1 %patch157 -p1 %patch158 -p1 %patch160 -p1 %patch161 -p1 %patch162 -p1 %patch163 -p1 %patch164 -p1 %patch169 -p1 %patch188 -p1 %patch194 -p1 %patch196 -p1 %patch199 -p1 %patch208 -p1 %patch211 -p1 %patch213 -p1 %patch214 -p1 %patch216 -p1 %patch217 -p1 %patch225 -p1 %patch229 -p1 %patch231 -p1 %patch234 -p1 %patch235 -p1 %patch245 -p1 %patch247 -p1 %patch254 -p1 %patch258 -p1 %patch260 -p1 %patch263 -p1 %patch265 -p1 %patch266 -p1 %patch271 -p1 %patch274 -p1 %patch353 -p1 %patch282 -p1 %patch284 -p1 %patch287 -p1 %patch289 -p1 %patch290 -p1 %patch294 -p1 %patch296 -p1 %patch298 -p1 %patch309 -p1 %patch311 -p1 %patch315 -p1 %patch317 -p1 %patch320 -p1 %patch326 -p1 %patch329 -p1 %patch330 -p1 %patch331 -p1 %patch337 -p1 %patch343 -p1 %patch348 -p1 %patch360 -p1 %patch381 -p1 %patch382 -p1 %patch391 -p1 %patch392 -p1 %patch397 -p1 %patch403 -p1 %patch404 -p1 %patch405 -p1 %patch389 -p1 %patch394 -p1 %patch407 -p1 %patch408 -p1 %patch412 -p1 %patch417 -p1 %patch459 -p1 %patch470 -p1 %patch475 -p1 %patch486 -p1 %patch519 -p1 %patch490 -p1 %patch491 -p1 %patch496 -p1 %patch504 -p1 %patch510 -p1 %patch511 -p1 %patch526 -p1 %patch541 -p1 %patch542 -p1 %patch547 -p1 %patch548 -p1 %patch555 -p1 %patch556 -p1 %patch571 -p1 %patch572 -p1 %patch573 -p1 %patch574 -p1 %patch579 -p1 %patch580 -p1 %patch581 -p1 %patch582 -p1 %patch583 -p1 %patch591 -p1 %patch592 -p1 %patch593 -p1 %patch594 -p1 %if 0%{?rhel:1} %patch487 -p1 %endif # 0%{?rhel:1} %patch1002 -p1 find -name "*.orig" | xargs rm -f ! find -name "*.rej" # Should not happen. %endif # 0%{!?_with_upstream:1} # Change the version that gets printed at GDB startup, so it is SUSE # specific. # Fedora (%{version}-%{release}) # Red Hat Enterprise Linux (%{version}-%{release}) cat > gdb/version.in << _FOO SUSE (%{version}-%{release}) _FOO # Remove the info and other generated files added by the FSF release # process. rm -f libdecnumber/gstdint.h rm -f bfd/doc/*.info rm -f bfd/doc/*.info-* rm -f gdb/doc/*.info rm -f gdb/doc/*.info-* %build # Identify the build directory with the version of gdb as well as the # architecture, to allow for mutliple versions to be installed and # built. # Initially we're in the %{gdb_src} directory. for fprofile in %{?_with_profile:-fprofile} "" do mkdir %{gdb_build}$fprofile cd %{gdb_build}$fprofile # g77 executable is no longer present in Fedora gcc-4.x+. g77="`which gfortran 2>/dev/null || true`" test -z "$g77" || ln -s "$g77" ./g77 export CFLAGS="$RPM_OPT_FLAGS" %if 0%{?_with_debug:1} # --enable-werror could conflict with `-Wall -O0' but this is no longer true # for recent GCCs. CFLAGS="$CFLAGS -O0 -ggdb2" %endif ../configure \ --prefix=%{_prefix} \ --libdir=%{_libdir} \ --sysconfdir=%{_sysconfdir} \ --mandir=%{_mandir} \ --infodir=%{_infodir} \ --htmldir=%{gdb_docdir} \ --pdfdir=%{gdb_docdir} \ --with-system-gdbinit=%{_sysconfdir}/gdbinit \ --with-gdb-datadir=%{_datadir}/gdb \ --enable-gdb-build-warnings=,-Wno-unused \ %ifnarch %{ix86} alpha ia64 ppc s390 s390x x86_64 ppc64 sparc sparcv9 sparc64 --disable-werror \ %else %if 0%{?_with_upstream:1} --disable-werror \ %else --enable-werror \ %endif %endif --with-separate-debug-dir=/usr/lib/debug \ --disable-sim \ --disable-rpath \ --without-system-readline \ --with-expat \ $(: ppc64 host build crashes on ppc variant of libexpat.so ) \ --without-libexpat-prefix \ --enable-tui \ %if 0%{!?_without_python:1} --with-python \ %else --without-python \ %endif --without-rpm \ %ifarch ia64 --with-libunwind \ %else --without-libunwind \ %endif %ifarch sparc sparcv9 sparc64 --without-mmap \ %endif --enable-64-bit-bfd \ %if 0%{?_with_debug:1} --enable-static --disable-shared --enable-debug \ %endif %ifarch sparc sparcv9 sparc-%{_vendor}-%{_target_os}%{?_gnu} %else %{_target_platform} %endif if [ -z "%{!?_with_profile:no}" ] then # Run all the configure tests being incompatible with $FPROFILE_CFLAGS. make %{?_smp_mflags} configure-host configure-target make %{?_smp_mflags} clean # Workaround -fprofile-use: # linux-x86-low.c:2225: Error: symbol `start_i386_goto' is already defined make %{?_smp_mflags} -C gdb/gdbserver linux-x86-low.o fi # Global CFLAGS would fail on: # conftest.c:1:1: error: coverage mismatch for function 'main' while reading counter 'arcs' if [ "$fprofile" = "-fprofile" ] then FPROFILE_CFLAGS='-fprofile-generate' elif [ -z "%{!?_with_profile:no}" ] then FPROFILE_CFLAGS='-fprofile-use' # We cannot use -fprofile-dir as the bare filenames clash. (cd ../%{gdb_build}-fprofile; # It was 333 on x86_64. test $(find -name "*.gcda"|wc -l) -gt 300 find -name "*.gcda" | while read -r i do ln $i ../%{gdb_build}/$i done ) else FPROFILE_CFLAGS="" fi make %{?_smp_mflags} CFLAGS="$CFLAGS $FPROFILE_CFLAGS" LDFLAGS="$FPROFILE_CFLAGS" if [ "$fprofile" = "-fprofile" ] then cd gdb cp -p gdb gdb-withindex PATH="$PWD:$PATH" sh ../../gdb/gdb-add-index $PWD/gdb-withindex ./gdb -nx -ex q ./gdb-withindex ./gdb -nx -readnow -ex q ./gdb-withindex cd .. fi cd .. done # fprofile cd %{gdb_build} #make %{?_smp_mflags} -C gdb/doc {gdb,annotate}{.info,/index.html,.pdf} MAKEHTMLFLAGS=--no-split grep '#define HAVE_ZLIB_H 1' gdb/config.h # Copy the /gdb/NEWS file to the directory above it. cp $RPM_BUILD_DIR/%{gdb_src}/gdb/NEWS $RPM_BUILD_DIR/%{gdb_src} %check # Initially we're in the %{gdb_src} directory. cd %{gdb_build} %if 0%{!?_with_testsuite:1} echo ====================TESTSUITE DISABLED========================= %else echo ====================TESTING========================= cd gdb gcc -o ./orphanripper %{SOURCE2} -Wall -lutil -ggdb2 # Need to use a single --ignore option, second use overrides first. # No `%{?_smp_mflags}' here as it may race. # WARNING: can't generate a core file - core tests suppressed - check ulimit # "readline-overflow.exp" - Testcase is broken, functionality is OK. ( # ULIMIT required for `gdb.base/auxv.exp'. ulimit -H -c ulimit -c unlimited || : # Setup $CHECK as `check//unix/' or `check//unix/-m64' for explicit bitsize. # Never use two different bitsizes as it fails on ppc64. echo 'int main (void) { return 0; }' >biarch.c CHECK="" for BI in -m64 -m32 -m31 "" do # Do not use size-less options if any of the sizes works. # On ia64 there is no -m64 flag while we must not leave a bare `check' here # as it would switch over some testing scripts to the backward compatibility # mode: when `make check' was executed from inside the testsuite/ directory. if [ -z "$BI" -a -n "$CHECK" ];then continue fi # Do not use $RPM_OPT_FLAGS as the other non-size options will not be used # in the real run of the testsuite. if ! gcc $BI -o biarch biarch.c then continue fi CHECK="$CHECK check//unix/$BI" done # Do not try -m64 inferiors for -m32 GDB as it cannot handle inferiors larger # than itself. # s390 -m31 still uses the standard ELF32 binary format. gcc $RPM_OPT_FLAGS -o biarch biarch.c RPM_SIZE="$(file ./biarch|sed -n 's/^.*: ELF \(32\|64\)-bit .*$/\1/p')" if [ "$RPM_SIZE" != "64" ] then CHECK="$(echo " $CHECK "|sed 's# check//unix/-m64 # #')" fi # Disable some problematic testcases. # RUNTESTFLAGS='--ignore ...' is not used below as it gets separated by the # `check//...' target spawn and too much escaping there would be dense. for test in \ gdb.base/readline-overflow.exp \ gdb.base/bigcore.exp \ ; do mv -f ../../gdb/testsuite/$test ../gdb/testsuite/$test-DISABLED || : done %if 0%{!?_with_upstream:1} # Run all the scheduled testsuite runs also in the PIE mode. # Upstream GDB would lock up the testsuite run for too long on its failures. CHECK="$(echo $CHECK|sed 's#check//unix/[^ ]*#& &/-fPIE/-pie#g')" %endif # 0%{!?_with_upstream:1} ./orphanripper make %{?_smp_mflags} -k $CHECK \ $(: Serialize the output to keep the order for regression checks. ) \ %if 0%{?el5:1} RUNTESTFLAGS="--tool gdb" \ %endif || : ) for t in sum log do for file in testsuite*/gdb.$t do suffix="${file#testsuite.unix.}" suffix="${suffix%/gdb.$t}" ln $file gdb-%{_target_platform}$suffix.$t || : done done # `tar | bzip2 | uuencode' may have some piping problems in Brew. tar cjf gdb-%{_target_platform}.tar.bz2 gdb-%{_target_platform}*.{sum,log} uuencode gdb-%{_target_platform}.tar.bz2 gdb-%{_target_platform}.tar.bz2 cd ../.. echo ====================TESTING END===================== %endif %install # Initially we're in the %{gdb_src} directory. cd %{gdb_build} rm -rf $RPM_BUILD_ROOT make %{?_smp_mflags} install DESTDIR=$RPM_BUILD_ROOT # install the gcore script in /usr/bin cp $RPM_BUILD_DIR/%{gdb_src}/gdb/gdb_gcore.sh $RPM_BUILD_ROOT%{_bindir}/gcore chmod 755 $RPM_BUILD_ROOT%{_bindir}/gcore # Remove the gdb/gdbtui binaries duplicity. test -x $RPM_BUILD_ROOT%{_prefix}/bin/gdbtui ln -sf gdb $RPM_BUILD_ROOT%{_prefix}/bin/gdbtui cmp $RPM_BUILD_ROOT%{_mandir}/*/gdb.1 $RPM_BUILD_ROOT%{_mandir}/*/gdbtui.1 ln -sf gdb.1 $RPM_BUILD_ROOT%{_mandir}/*/gdbtui.1 mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/gdbinit.d sed 's#%%{_sysconfdir}#%{_sysconfdir}#g' <%{SOURCE4} >$RPM_BUILD_ROOT%{_sysconfdir}/gdbinit for i in `find $RPM_BUILD_ROOT%{_datadir}/gdb/python/gdb -name "*.py"` do # Files could be also patched getting the current time. touch -r $RPM_BUILD_DIR/%{gdb_src}/gdb/ChangeLog $i done %if 0%{?rhel:1} %if 0%{!?_without_python:1} # Temporarily now: for LIB in lib lib64;do LIBPATH="$RPM_BUILD_ROOT%{_datadir}/gdb/auto-load%{_prefix}/$LIB" mkdir -p $LIBPATH # basename is being run only for the native (non-biarch) file. sed -e 's,@pythondir@,%{_datadir}/gdb/python,' \ -e 's,@toolexeclibdir@,%{_prefix}/'"$LIB," \ < $RPM_BUILD_DIR/%{gdb_src}/%{libstdcxxpython}/hook.in \ > $LIBPATH/$(basename %{_prefix}/%{_lib}/libstdc++.so.6.*)-gdb.py done test ! -e $RPM_BUILD_ROOT%{_datadir}/gdb/python/libstdcxx cp -a $RPM_BUILD_DIR/%{gdb_src}/%{libstdcxxpython}/libstdcxx \ $RPM_BUILD_ROOT%{_datadir}/gdb/python/libstdcxx %endif # 0%{!?_without_python:1} %endif # 0%{?rhel:1} # Remove the files that are part of a gdb build but that are owned and # provided by other packages. # These are part of binutils rm -rf $RPM_BUILD_ROOT%{_datadir}/locale/ rm -f $RPM_BUILD_ROOT%{_infodir}/bfd* rm -f $RPM_BUILD_ROOT%{_infodir}/standard* rm -f $RPM_BUILD_ROOT%{_infodir}/mmalloc* rm -f $RPM_BUILD_ROOT%{_infodir}/configure* rm -f $RPM_BUILD_ROOT%{_infodir}/gdbint* rm -f $RPM_BUILD_ROOT%{_infodir}/stabs* rm -rf $RPM_BUILD_ROOT%{_includedir} rm -rf $RPM_BUILD_ROOT/%{_libdir}/lib{bfd*,opcodes*,iberty*,mmalloc*} # Delete this too because the dir file will be updated at rpm install time. # We don't want a gdb specific one overwriting the system wide one. rm -f $RPM_BUILD_ROOT%{_infodir}/dir %if 0%{!?_with_upstream:1} # pstack obsoletion cp -p %{SOURCE3} $RPM_BUILD_ROOT%{_mandir}/man1/gstack.1 %endif # 0%{!?_with_upstream:1} # Packaged GDB is not a cross-target one. (cd $RPM_BUILD_ROOT%{_datadir}/gdb/syscalls rm -f mips*.xml %ifnarch sparc sparcv9 sparc64 rm -f sparc*.xml %endif %ifnarch x86_64 rm -f amd64-linux.xml %endif %ifnarch %{ix86} x86_64 rm -f i386-linux.xml %endif %ifnarch ppc ppc64 rm -f ppc{,64}-linux.xml %endif ) %clean rm -rf $RPM_BUILD_ROOT %post # This step is part of the installation of the RPM. Not to be confused # with the 'make install ' of the build (rpmbuild) process. # For --excludedocs: if [ -e %{_infodir}/gdb.info.gz ] then %install_info --info-dir=%{_infodir} %{_infodir}/annotate.info.gz %install_info --info-dir=%{_infodir} %{_infodir}/gdb.info.gz fi %preun if [ $1 = 0 ] then # For --excludedocs: if [ -e %{_infodir}/gdb.info.gz ] then %install_info_delete --delete --info-dir=%{_infodir} %{_infodir}/annotate.info.gz %install_info_delete --delete --info-dir=%{_infodir} %{_infodir}/gdb.info.gz fi fi %files %defattr(-,root,root) %doc COPYING3 COPYING COPYING.LIB README NEWS %{_bindir}/gcore %{_bindir}/gdb %{_bindir}/gdbtui %{_sysconfdir}/gdbinit %{_sysconfdir}/gdbinit.d %{_mandir}/*/gdb.1* %{_mandir}/*/gdbtui.1* %if 0%{!?_with_upstream:1} %{_bindir}/gstack %{_mandir}/*/gstack.1* %{_bindir}/gdb-add-index %endif # 0%{!?_with_upstream:1} %{_datadir}/gdb %{_infodir}/annotate.info* %{_infodir}/gdb.info* # In SLE10 gdbserver is not in a separate package %if %{suse_version} <= 1010 %{_bindir}/gdbserver %{_mandir}/*/gdbserver.1* %ifnarch s390 s390x ia64 ppc %{sparc} %{_libdir}/libinproctrace.so %endif %endif # don't include the files in include, they are part of binutils %if %{suse_version} > 1010 %ifnarch sparcv9 hppa %files -n gdbserver %defattr(-,root,root) %{_bindir}/gdbserver %{_mandir}/*/gdbserver.1* %ifarch %{ix86} x86_64 %{_libdir}/libinproctrace.so %endif %endif %endif %changelog