From 4c6552d2df2912a710cab6acf476347a7fbf15a0 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Wed, 1 Sep 2010 09:12:44 +0000 Subject: [PATCH] Support for Position Independet Code by aboid clobbering PIC register Do not use the PIC register (ebx) See http://www.gentoo.org/proj/en/hardened/pic-fix-guide.xml#doc_chap5 --- utils/cpuid.h | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) diff --git a/utils/cpuid.h b/utils/cpuid.h index 2bac69a..ebcec7c 100644 --- a/utils/cpuid.h +++ b/utils/cpuid.h @@ -5,9 +5,12 @@ static inline void __cpuid(unsigned int *eax, unsigned int *ebx, unsigned int *ecx, unsigned int *edx) { /* ecx is often an input as well as an output. */ - asm volatile("cpuid" + asm volatile( + "movl %%ebx, %%esi;" + "cpuid;" + "xchg %%ebx, %%esi;" : "=a" (*eax), - "=b" (*ebx), + "=S" (*ebx), "=c" (*ecx), "=d" (*edx) : "0" (*eax), "2" (*ecx)); -- 1.7.2.2