diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f2027ae --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/lldb-7.0.1.src.tar.xz diff --git a/.lldb.metadata b/.lldb.metadata new file mode 100644 index 0000000..ad27275 --- /dev/null +++ b/.lldb.metadata @@ -0,0 +1 @@ +6286b90b2762404baee55a69a2a7e9ed0fce58a2 SOURCES/lldb-7.0.1.src.tar.xz diff --git a/SOURCES/0001-Convert-symbolication.py-to-python3-using-2to3.patch b/SOURCES/0001-Convert-symbolication.py-to-python3-using-2to3.patch new file mode 100644 index 0000000..de930d3 --- /dev/null +++ b/SOURCES/0001-Convert-symbolication.py-to-python3-using-2to3.patch @@ -0,0 +1,165 @@ +From 660490d17fa1c649a7ad86da4a197c91090ce97a Mon Sep 17 00:00:00 2001 +From: Tom Stellard +Date: Wed, 3 Oct 2018 15:44:30 -0700 +Subject: [PATCH] Convert symbolication.py to python3 using 2to3 + +--- + examples/python/symbolication.py | 70 ++++++++++++++++++++-------------------- + 1 file changed, 35 insertions(+), 35 deletions(-) + +diff --git a/examples/python/symbolication.py b/examples/python/symbolication.py +index b655ad0..313d724 100755 +--- a/examples/python/symbolication.py ++++ b/examples/python/symbolication.py +@@ -27,7 +27,7 @@ + #---------------------------------------------------------------------- + + import lldb +-import commands ++import subprocess + import optparse + import os + import plistlib +@@ -203,13 +203,13 @@ class Section: + if op == '+': + self.end_addr += self.start_addr + return True +- print 'error: invalid section info string "%s"' % s +- print 'Valid section info formats are:' +- print 'Format Example Description' +- print '--------------------- -----------------------------------------------' +- print '= __TEXT=0x123000 Section from base address only' +- print '=- __TEXT=0x123000-0x124000 Section from base address and end address' +- print '=+ __TEXT=0x123000+0x1000 Section from base address and size' ++ print('error: invalid section info string "%s"' % s) ++ print('Valid section info formats are:') ++ print('Format Example Description') ++ print('--------------------- -----------------------------------------------') ++ print('= __TEXT=0x123000 Section from base address only') ++ print('=- __TEXT=0x123000-0x124000 Section from base address and end address') ++ print('=+ __TEXT=0x123000+0x1000 Section from base address and size') + return False + + def __str__(self): +@@ -261,21 +261,21 @@ class Image: + return obj + + def dump(self, prefix): +- print "%s%s" % (prefix, self) ++ print("%s%s" % (prefix, self)) + + def debug_dump(self): +- print 'path = "%s"' % (self.path) +- print 'resolved_path = "%s"' % (self.resolved_path) +- print 'resolved = %i' % (self.resolved) +- print 'unavailable = %i' % (self.unavailable) +- print 'uuid = %s' % (self.uuid) +- print 'section_infos = %s' % (self.section_infos) +- print 'identifier = "%s"' % (self.identifier) +- print 'version = %s' % (self.version) +- print 'arch = %s' % (self.arch) +- print 'module = %s' % (self.module) +- print 'symfile = "%s"' % (self.symfile) +- print 'slide = %i (0x%x)' % (self.slide, self.slide) ++ print('path = "%s"' % (self.path)) ++ print('resolved_path = "%s"' % (self.resolved_path)) ++ print('resolved = %i' % (self.resolved)) ++ print('unavailable = %i' % (self.unavailable)) ++ print('uuid = %s' % (self.uuid)) ++ print('section_infos = %s' % (self.section_infos)) ++ print('identifier = "%s"' % (self.identifier)) ++ print('version = %s' % (self.version)) ++ print('arch = %s' % (self.arch)) ++ print('module = %s' % (self.module)) ++ print('symfile = "%s"' % (self.symfile)) ++ print('slide = %i (0x%x)' % (self.slide, self.slide)) + + def __str__(self): + s = '' +@@ -428,12 +428,12 @@ class Image: + if self.has_section_load_info(): + err = self.load_module(target) + if err: +- print 'ERROR: ', err ++ print('ERROR: ', err) + return target + else: +- print 'error: unable to create a valid target for (%s) "%s"' % (self.arch, self.path) ++ print('error: unable to create a valid target for (%s) "%s"' % (self.arch, self.path)) + else: +- print 'error: unable to locate main executable (%s) "%s"' % (self.arch, self.path) ++ print('error: unable to locate main executable (%s) "%s"' % (self.arch, self.path)) + return None + + +@@ -554,7 +554,7 @@ class Symbolicator: + if symbolicated_addresses: + return symbolicated_addresses + else: +- print 'error: no target in Symbolicator' ++ print('error: no target in Symbolicator') + return None + + +@@ -602,22 +602,22 @@ def disassemble_instructions( + end_idx = inst_idx + for i in range(start_idx, end_idx + 1): + if i == pc_index: +- print ' -> ', lines[i] ++ print(' -> ', lines[i]) + else: +- print ' ', lines[i] ++ print(' ', lines[i]) + + + def print_module_section_data(section): +- print section ++ print(section) + section_data = section.GetSectionData() + if section_data: + ostream = lldb.SBStream() + section_data.GetDescription(ostream, section.GetFileAddress()) +- print ostream.GetData() ++ print(ostream.GetData()) + + + def print_module_section(section, depth): +- print section ++ print(section) + if depth > 0: + num_sub_sections = section.GetNumSubSections() + for sect_idx in range(num_sub_sections): +@@ -632,7 +632,7 @@ def print_module_sections(module, depth): + + def print_module_symbols(module): + for sym in module: +- print sym ++ print(sym) + + + def Symbolicate(command_args): +@@ -709,17 +709,17 @@ def Symbolicate(command_args): + + target = symbolicator.create_target() + if options.verbose: +- print symbolicator ++ print(symbolicator) + if target: + for addr_str in args: + addr = int(addr_str, 0) + symbolicated_addrs = symbolicator.symbolicate( + addr, options.verbose) + for symbolicated_addr in symbolicated_addrs: +- print symbolicated_addr +- print ++ print(symbolicated_addr) ++ print() + else: +- print 'error: no target for %s' % (symbolicator) ++ print('error: no target for %s' % (symbolicator)) + + if __name__ == '__main__': + # Create a new debugger instance +-- +1.8.3.1 + diff --git a/SPECS/lldb.spec b/SPECS/lldb.spec new file mode 100644 index 0000000..e0c5024 --- /dev/null +++ b/SPECS/lldb.spec @@ -0,0 +1,251 @@ +%global enable_python 1 + +Name: lldb +Version: 7.0.1 +Release: 2%{?dist} +Summary: Next generation high-performance debugger + +License: NCSA +URL: http://lldb.llvm.org/ +Source0: http://llvm.org/releases/%{version}/%{name}-%{version}%{?rc_ver:rc%{rc_ver}}.src.tar.xz + +ExclusiveArch: %{arm} aarch64 %{ix86} x86_64 + +Patch0: 0001-Convert-symbolication.py-to-python3-using-2to3.patch + +BuildRequires: cmake +BuildRequires: llvm-devel = %{version} +BuildRequires: clang-devel = %{version} +BuildRequires: ncurses-devel +BuildRequires: swig +BuildRequires: llvm-static = %{version} +BuildRequires: libffi-devel +BuildRequires: zlib-devel +BuildRequires: libxml2-devel +BuildRequires: libedit-devel +BuildRequires: multilib-rpm-config + +%if 0%{?enable_python} +Requires: python3-lldb +%endif + +%description +LLDB is a next generation, high-performance debugger. It is built as a set +of reusable components which highly leverage existing libraries in the +larger LLVM Project, such as the Clang expression parser and LLVM +disassembler. + +%package devel +Summary: Development header files for LLDB +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description devel +The package contains header files for the LLDB debugger. + +%if 0%{?enable_python} + +%package -n python3-lldb +Summary: Python module for LLDB +BuildRequires: python3-devel +Requires: python3-six +Requires: lldb = %{version}-%{release} + +%description -n python3-lldb +The package contains the LLDB Python module. + +%endif + +%prep +%autosetup -n %{name}-%{version}%{?rc_ver:rc%{rc_ver}}.src -p1 + +%if 0%{?enable_python} +# HACK so that lldb can find its custom readline.so, because we move it +# after install. +sed -i -e "s~import sys~import sys\nsys.path.insert\(1, '%{python3_sitearch}/lldb'\)~g" source/Interpreter/embedded_interpreter.py +%endif + +%build + +mkdir -p _build +cd _build + +# Python version detection is broken + +LDFLAGS="%{__global_ldflags} -lpthread -ldl" + +CFLAGS="%{optflags} -Wno-error=format-security" +CXXFLAGS="%{optflags} -Wno-error=format-security" + +%cmake .. \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DLLVM_LINK_LLVM_DYLIB:BOOL=ON \ + -DLLVM_CONFIG:FILEPATH=%{_bindir}/llvm-config \ + \ + -DLLDB_PATH_TO_LLVM_BUILD=%{_prefix} \ + -DLLDB_PATH_TO_CLANG_BUILD=%{_prefix} \ + \ + -DLLDB_DISABLE_CURSES:BOOL=OFF \ + -DLLDB_DISABLE_LIBEDIT:BOOL=OFF \ +%if 0%{?enable_python} + -DLLDB_DISABLE_PYTHON:BOOL=OFF \ +%else + -DLLDB_DISABLE_PYTHON:BOOL=ON \ +%endif +%if 0%{?__isa_bits} == 64 + -DLLVM_LIBDIR_SUFFIX=64 \ +%else + -DLLVM_LIBDIR_SUFFIX= \ +%endif + \ + -DPYTHON_EXECUTABLE:STRING=%{__python3} + +make %{?_smp_mflags} + +%install +cd _build +make install DESTDIR=%{buildroot} + +%multilib_fix_c_header --file %{_includedir}/lldb/Host/Config.h + +# remove static libraries +rm -fv %{buildroot}%{_libdir}/*.a + +%if 0%{?enable_python} +# python: fix binary libraries location +liblldb=$(basename $(readlink -e %{buildroot}%{_libdir}/liblldb.so)) +ln -vsf "../../../${liblldb}" %{buildroot}%{python3_sitearch}/lldb/_lldb.so +mv -v %{buildroot}%{python3_sitearch}/readline.so %{buildroot}%{python3_sitearch}/lldb/readline.so + +# remove bundled six.py +rm -f %{buildroot}%{python3_sitearch}/six.* +%endif + +%post -p /sbin/ldconfig +%postun -p /sbin/ldconfig + +%files +%{_bindir}/lldb* +%{_libdir}/liblldb.so.* +%{_libdir}/liblldbIntelFeatures.so.* + +%files devel +%{_includedir}/lldb +%{_libdir}/*.so + +%if 0%{?enable_python} +%files -n python3-lldb +%{python3_sitearch}/lldb +%endif + +%changelog +* Mon Dec 17 2018 Tom Stellard - 7.0.1-2 +- Fix multilib conflict + +* Fri Dec 14 2018 Tom Stellard - 7.0.1-1 +- 7.0.1 Release + +* Mon Dec 10 2018 Tom Stellard - 7.0.1-0.1.rc3 +- 7.0.1-rc3 Release + +* Thu Dec 06 2018 Tom Stellard - 6.0.1-7 +- Re-enable python module for real + +* Wed Oct 03 2018 Tom Stellard - 6.0.1-6 +- Re-enable python module and fix build with python3 + +* Wed Oct 03 2018 Tom Stellard - 6.0.1-5 +- Disable python module + +* Mon Oct 01 2018 Tom Stellard - 6.0.1-4 +- Drop scl macros + +* Tue Aug 28 2018 Tom Stellard - 6.0.1-3 +- Re-enable python module + +* Tue Aug 07 2018 Tom Stellard - 6.0.1-2 +- Install ld.so.conf file in the root filesystem + +* Wed Jul 11 2018 Tom Stellard - 6.0.1-1 +- 6.0.1 Release + +* Thu Jan 25 2018 Tom Stellard - 5.0.1-3 +- Drop explicit dependencies for llvm-libs and clang-libs + +* Tue Jan 16 2018 Tom Stellard - 5.0.1-2 +- Rebuid for i686 + +* Thu Jan 11 2018 Tom Stellard - 5.0.1-1 +- 5.0.1 Release + +* Wed Aug 16 2017 Tom Stellard - 4.0.1-4 +- Fix crash when loading Fedora debuginfo + Resloves: #1479529 + +* Mon Jul 31 2017 Jan Kratochvil - 4.0.1-3 +- Backport lldb r303907 + Resolves: #1356140 + +* Thu Jun 22 2017 Tom Stellard - 4.0.1-2 +- Fix requires for python-lldb + +* Wed Jun 21 2017 Tom Stellard - 4.0.1-1 +- Build for llvm-toolset-7 rename + +* Wed Jun 07 2017 Tom Stellard - 4.0.0-3 +- Build for llvm-toolset-7 rename + +* Thu May 18 2017 Tom Stellard - 4.0.0-2 +- Fix Requires + +* Fri Mar 24 2017 Tom Stellard - 4.0.0-1 +- lldb 4.0.0 + +* Tue Mar 21 2017 Tom Stellard - 3.9.1-4 +- Add explicit Requires for llvm-libs and clang-libs + +* Fri Mar 17 2017 Tom Stellard - 3.9.1-3 +- Adjust python sys.path so lldb can find readline.so + +* Tue Mar 14 2017 Tom Stellard - 3.9.1-2 +- Fix build with gcc 7 + +* Thu Mar 02 2017 Dave Airlie - 3.9.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Mon Nov 14 2016 Nathaniel McCallum - 3.9.0-3 +- Disable libedit support until upstream fixes it (#1356140) + +* Wed Nov 2 2016 Peter Robinson 3.9.0-2 +- Set upstream supported architectures in an ExclusiveArch + +* Wed Oct 26 2016 Dave Airlie - 3.9.0-1 +- lldb 3.9.0 +- fixup some issues with MIUtilParse by removing it +- build with -fno-rtti + +* Tue Jul 19 2016 Fedora Release Engineering - 3.8.0-2 +- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages + +* Thu Mar 10 2016 Dave Airlie 3.8.0-1 +- lldb 3.8.0 + +* Thu Mar 03 2016 Dave Airlie 3.8.0-0.3 +- lldb 3.8.0 rc3 + +* Wed Feb 24 2016 Dave Airlie - 3.8.0-0.2 +- dynamically link to llvm + +* Thu Feb 18 2016 Dave Airlie - 3.8.0-0.1 +- lldb 3.8.0 rc2 + +* Sun Feb 14 2016 Dave Airlie 3.7.1-3 +- rebuild lldb against latest llvm + +* Thu Feb 04 2016 Fedora Release Engineering - 3.7.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Tue Oct 06 2015 Jan Vcelak 3.7.0-100 +- initial version using cmake build system