diff options
Diffstat (limited to 'sys-apps/util-linux/files/util-linux-2.25-lscpu-pic.patch')
-rw-r--r-- | sys-apps/util-linux/files/util-linux-2.25-lscpu-pic.patch | 81 |
1 files changed, 0 insertions, 81 deletions
diff --git a/sys-apps/util-linux/files/util-linux-2.25-lscpu-pic.patch b/sys-apps/util-linux/files/util-linux-2.25-lscpu-pic.patch deleted file mode 100644 index f66ffa707ae0..000000000000 --- a/sys-apps/util-linux/files/util-linux-2.25-lscpu-pic.patch +++ /dev/null @@ -1,81 +0,0 @@ -From f86d649d5f2522c61b791366a96e9f00cd255668 Mon Sep 17 00:00:00 2001 -From: Mike Frysinger <vapier@gentoo.org> -Date: Tue, 5 Aug 2014 18:58:52 -0400 -Subject: [PATCH] lscpu: clean up vmware inline asm - -This code is not PIC clean which means it fails to build on hardened -32bit x86 systems (i.e. building as PIE). - -While here, optimize the existing cpuid logic slightly. - -URL: https://bugs.gentoo.org/518936 -Signed-off-by: Mike Frysinger <vapier@gentoo.org> ---- - sys-utils/lscpu.c | 36 ++++++++++++++++++++++++++---------- - 1 file changed, 26 insertions(+), 10 deletions(-) - -diff --git a/sys-utils/lscpu.c b/sys-utils/lscpu.c -index 062dff5..9965eeb 100644 ---- a/sys-utils/lscpu.c -+++ b/sys-utils/lscpu.c -@@ -546,10 +546,9 @@ cpuid(unsigned int op, unsigned int *eax, unsigned int *ebx, - __asm__( - #if defined(__PIC__) && defined(__i386__) - /* x86 PIC cannot clobber ebx -- gcc bitches */ -- "pushl %%ebx;" -+ "xchg %%ebx, %%esi;" - "cpuid;" -- "movl %%ebx, %%esi;" -- "popl %%ebx;" -+ "xchg %%esi, %%ebx;" - : "=S" (*ebx), - #else - "cpuid;" -@@ -656,12 +655,29 @@ read_hypervisor_powerpc(struct lscpu_desc *desc) - #define VMWARE_BDOOR_PORT 0x5658 - #define VMWARE_BDOOR_CMD_GETVERSION 10 - --#define VMWARE_BDOOR(eax, ebx, ecx, edx) \ -- __asm__("inl (%%dx), %%eax" : \ -- "=a"(eax), "=c"(ecx), "=d"(edx), "=b"(ebx) : \ -- "0"(VMWARE_BDOOR_MAGIC), "1"(VMWARE_BDOOR_CMD_GETVERSION), \ -- "2"(VMWARE_BDOOR_PORT), "3"(0) : \ -- "memory"); -+static inline -+void vmware_bdoor(uint32_t *eax, uint32_t *ebx, uint32_t *ecx, uint32_t *edx) -+{ -+ __asm__( -+#if defined(__PIC__) && defined(__i386__) -+ /* x86 PIC cannot clobber ebx -- gcc bitches */ -+ "xchg %%ebx, %%esi;" -+ "inl (%%dx), %%eax;" -+ "xchg %%esi, %%ebx;" -+ : "=S" (*ebx), -+#else -+ "inl (%%dx), %%eax;" -+ : "=b" (*ebx), -+#endif -+ "=a" (*eax), -+ "=c" (*ecx), -+ "=d" (*edx) -+ : "0" (VMWARE_BDOOR_MAGIC), -+ "1" (VMWARE_BDOOR_CMD_GETVERSION), -+ "2" (VMWARE_BDOOR_PORT), -+ "3" (0) -+ : "memory"); -+} - - static jmp_buf segv_handler_env; - -@@ -697,7 +713,7 @@ is_vmware_platform(void) - if (sigaction(SIGSEGV, &act, &oact)) - err(EXIT_FAILURE, _("error: can not set signal handler")); - -- VMWARE_BDOOR(eax, ebx, ecx, edx); -+ vmware_bdoor(&eax, &ebx, &ecx, &edx); - - if (sigaction(SIGSEGV, &oact, NULL)) - err(EXIT_FAILURE, _("error: can not restore signal handler")); --- -2.0.0 - |