]> git.pld-linux.org Git - packages/kernel-tools.git/commitdiff
- fix building on x32
authorJan Rękorajski <baggins@pld-linux.org>
Sat, 11 Apr 2015 10:56:23 +0000 (12:56 +0200)
committerJan Rękorajski <baggins@pld-linux.org>
Sat, 11 Apr 2015 10:56:23 +0000 (12:56 +0200)
kernel-tools.spec
x32.patch [new file with mode: 0644]

index 0a02610172cdfe03ecd9002195e85b61797d8680..f8794950f9382af455a53c1cc448ab08ad190eff 100644 (file)
@@ -26,13 +26,17 @@ License:    GPL v2
 Group:         Applications/System
 Source0:       https://www.kernel.org/pub/linux/kernel/v3.x/linux-%{basever}.tar.xz
 # Source0-md5: d3fc8316d4d4d04b65cbc2d70799e763
+Source1:       cpupower.service
+Source2:       cpupower.config
 %if "%{postver}" != ".0"
 Patch0:                https://www.kernel.org/pub/linux/kernel/v3.x/patch-%{version}.xz
 # Patch0-md5:  1fec75551b2f55fced43df8394b1fd9a
 %endif
-Source1:       cpupower.service
-Source2:       cpupower.config
+Patch1:                x32.patch
 URL:           http://www.kernel.org/
+%ifarch %{x8664}
+BuildRequries: gcc-multilib-x32
+%endif
 BuildRequires: gettext-tools
 BuildRequires: pciutils-devel
 BuildRequires: rpmbuild(macros) >= 1.647
@@ -198,6 +202,8 @@ cd linux-%{basever}
 %patch0 -p1
 %endif
 
+%patch1 -p1
+
 sed -i -e 's#libexec/perf-core#%{_datadir}/perf-core#g' tools/perf/config/Makefile
 
 %build
@@ -213,19 +219,19 @@ cd linux-%{basever}
        OPTIMIZATION="%{rpmcflags}" \
        STRIPCMD=true
 
-%ifarch %{ix86}
+%ifarch %{ix86} x32
 %{__make} -C tools/power/cpupower/debug/i386 centrino-decode powernow-k8-decode \
        CC="%{__cc}" \
        CFLAGS="%{rpmcflags}"
 %endif
 
-%ifarch %{x8664}
+%ifarch %{x8664} x32
 %{__make} -C tools/power/cpupower/debug/x86_64 centrino-decode powernow-k8-decode \
        CC="%{__cc}" \
        CFLAGS="%{rpmcflags}"
 %endif
 
-%ifarch %{ix86} %{x8664}
+%ifarch %{ix86} %{x8664} x32
 %{__make} -C tools/power/x86/x86_energy_perf_policy \
        CC="%{__cc}" \
        CFLAGS="%{rpmcflags}"
@@ -276,10 +282,10 @@ install -d $RPM_BUILD_ROOT{/etc/sysconfig,%{systemdunitdir}}
 cp -p %{SOURCE1} $RPM_BUILD_ROOT%{systemdunitdir}/cpupower.service
 cp -p %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/cpupower
 
-%ifarch %{ix86}
+%ifarch %{ix86} x32
 install -p tools/power/cpupower/debug/i386/{centrino,powernow-k8}-decode $RPM_BUILD_ROOT%{_bindir}
 %endif
-%ifarch %{x8664}
+%ifarch %{x8664} x32
 install -p tools/power/cpupower/debug/x86_64/{centrino,powernow-k8}-decode $RPM_BUILD_ROOT%{_bindir}
 %endif
 
@@ -287,7 +293,7 @@ install -p tools/vm/slabinfo $RPM_BUILD_ROOT%{_bindir}
 install -p tools/vm/page-types $RPM_BUILD_ROOT%{_sbindir}
 install -p dslm $RPM_BUILD_ROOT%{_sbindir}
 
-%ifarch %{ix86} %{x8664}
+%ifarch %{ix86} %{x8664} x32
 install -d $RPM_BUILD_ROOT%{_mandir}/man8
 # broken makefile, install manually
 %if 0
@@ -359,11 +365,11 @@ rm -rf $RPM_BUILD_ROOT
 %attr(755,root,root) %{_bindir}/slabinfo
 %attr(755,root,root) %{_sbindir}/dslm
 %attr(755,root,root) %{_sbindir}/page-types
-%ifarch %{ix86} %{x8664}
+%ifarch %{ix86} %{x8664} x32
 %attr(755,root,root) %{_bindir}/centrino-decode
 %attr(755,root,root) %{_bindir}/powernow-k8-decode
 %endif
-%ifarch %{ix86} %{x8664}
+%ifarch %{ix86} %{x8664} x32
 %attr(755,root,root) %{_bindir}/turbostat
 %attr(755,root,root) %{_bindir}/x86_energy_perf_policy
 %{_mandir}/man8/turbostat.8*
@@ -391,7 +397,10 @@ rm -rf $RPM_BUILD_ROOT
 %files perf
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_bindir}/perf
+%ifarch %{x8664}
 %attr(755,root,root) %{_bindir}/perf-read-vdso32
+%attr(755,root,root) %{_bindir}/perf-read-vdsox32
+%endif
 %attr(755,root,root) %{_bindir}/trace
 %{_mandir}/man1/perf*.1*
 %dir %{_datadir}/perf-core
diff --git a/x32.patch b/x32.patch
new file mode 100644 (file)
index 0000000..5c06254
--- /dev/null
+++ b/x32.patch
@@ -0,0 +1,154 @@
+--- linux-3.19/tools/perf/config/Makefile.arch~        2015-02-09 03:54:22.000000000 +0100
++++ linux-3.19/tools/perf/config/Makefile.arch 2015-04-11 12:17:45.107911011 +0200
+@@ -24,8 +24,14 @@
+ ARCH ?= $(RAW_ARCH)
+ LP64 := $(shell echo __LP64__ | ${CC} ${CFLAGS} -E -x c - | tail -n 1)
++ILP32 := $(shell echo __ILP32__ | ${CC} ${CFLAGS} -E -x c - | tail -n 1)
+ ifeq ($(LP64), 1)
+   IS_64_BIT := 1
+ else
+   IS_64_BIT := 0
+ endif
++ifeq ($(ILP32), 1)
++  IS_X32_BIT := 1
++else
++  IS_X32_BIT := 0
++endif
+--- linux-3.19/tools/perf/config/Makefile~     2015-04-11 12:12:31.000000000 +0200
++++ linux-3.19/tools/perf/config/Makefile      2015-04-11 12:19:05.011244885 +0200
+@@ -28,6 +28,9 @@
+     LIBUNWIND_LIBS = -lunwind -lunwind-x86
+   endif
+   NO_PERF_REGS := 0
++  ifeq (${IS_X32_BIT}, 1)
++    CFLAGS += -DHAVE_ARCH_X32_SUPPORT
++  endif
+ endif
+ ifeq ($(ARCH),arm)
+--- linux-3.19/tools/perf/arch/x86/tests/regs_load.S~  2015-02-09 03:54:22.000000000 +0100
++++ linux-3.19/tools/perf/arch/x86/tests/regs_load.S   2015-04-11 12:21:07.717912384 +0200
+@@ -62,14 +62,20 @@
+ ENDPROC(perf_regs_load)
+ #else
+ ENTRY(perf_regs_load)
+-      push %edi
++#ifdef HAVE_ARCH_X32_SUPPORT
++#else
++      pushl %edi
++#endif
+       movl 8(%esp), %edi
+       movl %eax, AX(%edi)
+       movl %ebx, BX(%edi)
+       movl %ecx, CX(%edi)
+       movl %edx, DX(%edi)
+       movl %esi, SI(%edi)
+-      pop %eax
++#ifdef HAVE_ARCH_X32_SUPPORT
++#else
++      popl %eax
++#endif
+       movl %eax, DI(%edi)
+       movl %ebp, BP(%edi)
+--- linux-3.19/arch/x86/include/uapi/asm/bitsperlong.h~        2015-02-09 03:54:22.000000000 +0100
++++ linux-3.19/arch/x86/include/uapi/asm/bitsperlong.h 2015-04-11 12:31:26.051249909 +0200
+@@ -1,7 +1,7 @@
+ #ifndef __ASM_X86_BITSPERLONG_H
+ #define __ASM_X86_BITSPERLONG_H
+-#ifdef __x86_64__
++#if defined(__x86_64__) && !defined(__ILP32__)
+ # define __BITS_PER_LONG 64
+ #else
+ # define __BITS_PER_LONG 32
+--- linux-3.19/tools/perf/bench/sched-messaging.c~     2015-02-09 03:54:22.000000000 +0100
++++ linux-3.19/tools/perf/bench/sched-messaging.c      2015-04-11 12:33:22.587917365 +0200
+@@ -310,13 +310,24 @@
+               printf("# %d groups == %d %s run\n\n",
+                      num_groups, num_groups * 2 * num_fds,
+                      thread_mode ? "threads" : "processes");
++#if defined(__x86_64__) && !defined(__ILP32__)
+               printf(" %14s: %lu.%03lu [sec]\n", "Total time",
+                      diff.tv_sec,
+                      (unsigned long) (diff.tv_usec/1000));
++#else
++              printf(" %14s: %llu.%03llu [sec]\n", "Total time",
++                     diff.tv_sec,
++                     (unsigned long long) (diff.tv_usec/1000));
++#endif
+               break;
+       case BENCH_FORMAT_SIMPLE:
++#if defined(__x86_64__) && !defined(__ILP32__)
+               printf("%lu.%03lu\n", diff.tv_sec,
+                      (unsigned long) (diff.tv_usec/1000));
++#else
++              printf("%llu.%03llu\n", diff.tv_sec,
++                     (unsigned long long) (diff.tv_usec/1000));
++#endif
+               break;
+       default:
+               /* reaching here is something disaster */
+--- linux-3.19/tools/perf/bench/sched-pipe.c~  2015-02-09 03:54:22.000000000 +0100
++++ linux-3.19/tools/perf/bench/sched-pipe.c   2015-04-11 12:34:32.727917841 +0200
+@@ -156,9 +156,15 @@
+               result_usec = diff.tv_sec * 1000000;
+               result_usec += diff.tv_usec;
++#if defined(__x86_64__) && !defined(__ILP32__)
+               printf(" %14s: %lu.%03lu [sec]\n\n", "Total time",
+                      diff.tv_sec,
+                      (unsigned long) (diff.tv_usec/1000));
++#else
++              printf(" %14s: %llu.%03llu [sec]\n\n", "Total time",
++                     diff.tv_sec,
++                     (unsigned long long) (diff.tv_usec/1000));
++#endif
+               printf(" %14lf usecs/op\n",
+                      (double)result_usec / (double)loops);
+@@ -168,9 +174,15 @@
+               break;
+       case BENCH_FORMAT_SIMPLE:
++#if defined(__x86_64__) && !defined(__ILP32__)
+               printf("%lu.%03lu\n",
+                      diff.tv_sec,
+                      (unsigned long) (diff.tv_usec / 1000));
++#else
++              printf("%llu.%03llu\n",
++                     diff.tv_sec,
++                     (unsigned long long) (diff.tv_usec / 1000));
++#endif
+               break;
+       default:
+--- linux-3.19/tools/perf/builtin-stat.c~      2015-02-09 03:54:22.000000000 +0100
++++ linux-3.19/tools/perf/builtin-stat.c       2015-04-11 12:35:21.841251509 +0200
+@@ -550,7 +550,11 @@
+       clock_gettime(CLOCK_MONOTONIC, &ts);
+       diff_timespec(&rs, &ts, &ref_time);
++#if defined(__x86_64__) && !defined(__ILP32__)
+       sprintf(prefix, "%6lu.%09lu%s", rs.tv_sec, rs.tv_nsec, csv_sep);
++#else
++      sprintf(prefix, "%6llu.%09llu%s", rs.tv_sec, rs.tv_nsec, csv_sep);
++#endif
+       if (num_print_interval == 0 && !csv_output) {
+               switch (aggr_mode) {
+--- linux-3.19/tools/perf/builtin-kvm.c~       2015-02-09 03:54:22.000000000 +0100
++++ linux-3.19/tools/perf/builtin-kvm.c        2015-04-11 12:36:00.511251770 +0200
+@@ -565,7 +565,11 @@
+       gettimeofday(&tv, NULL);
+       if (localtime_r(&tv.tv_sec, &ltime)) {
+               strftime(date, sizeof(date), "%H:%M:%S", &ltime);
++#if defined(__x86_64__) && !defined(__ILP32__)
+               pr_info("%s.%06ld", date, tv.tv_usec);
++#else
++              pr_info("%s.%06lld", date, tv.tv_usec);
++#endif
+       } else
+               pr_info("00:00:00.000000");
This page took 0.195396 seconds and 4 git commands to generate.