aboutsummaryrefslogtreecommitdiffstats
path: root/main/musl/0003-reduce-impact-of-REG_-namespace-pollution-in-x86-_64.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/musl/0003-reduce-impact-of-REG_-namespace-pollution-in-x86-_64.patch')
-rw-r--r--main/musl/0003-reduce-impact-of-REG_-namespace-pollution-in-x86-_64.patch258
1 files changed, 258 insertions, 0 deletions
diff --git a/main/musl/0003-reduce-impact-of-REG_-namespace-pollution-in-x86-_64.patch b/main/musl/0003-reduce-impact-of-REG_-namespace-pollution-in-x86-_64.patch
new file mode 100644
index 0000000000..da727113c1
--- /dev/null
+++ b/main/musl/0003-reduce-impact-of-REG_-namespace-pollution-in-x86-_64.patch
@@ -0,0 +1,258 @@
+From 150747b41e1ecefe82aa45d68c84b9e957b03e29 Mon Sep 17 00:00:00 2001
+From: Rich Felker <dalias@aerifal.cx>
+Date: Wed, 4 Jan 2017 17:08:19 -0500
+Subject: [PATCH] reduce impact of REG_* namespace pollution in x86[_64]
+ signal.h
+
+when _GNU_SOURCE is defined, which is always the case when compiling
+c++ with gcc, these macros for the the indices in gregset_t are
+exposed and likely to clash with applications. by using enum constants
+rather than macros defined with integer literals, we can make the
+clash slightly less likely to break software. the macros are still
+defined in case anything checks for them with #ifdef, but they're
+defined to expand to themselves so that non-file-scope (e.g.
+namespaced) identifiers by the same names still work.
+
+for the sake of avoiding mistakes, the changes were generated with sed
+via the command:
+
+sed -i -e 's/#define *\(REG_[A-Z_0-9]\{1,\}\) *\([0-9]\{1,\}\)'\
+'/enum { \1 = \2 };\n#define \1 \1/' \
+arch/i386/bits/signal.h arch/x86_64/bits/signal.h arch/x32/bits/signal.h
+---
+ arch/i386/bits/signal.h | 57 ++++++++++++++++++++++++++-------------
+ arch/x32/bits/signal.h | 69 +++++++++++++++++++++++++++++++----------------
+ arch/x86_64/bits/signal.h | 69 +++++++++++++++++++++++++++++++----------------
+ 3 files changed, 130 insertions(+), 65 deletions(-)
+
+diff --git a/arch/i386/bits/signal.h b/arch/i386/bits/signal.h
+index 1f9085a5..9931ee93 100644
+--- a/arch/i386/bits/signal.h
++++ b/arch/i386/bits/signal.h
+@@ -7,25 +7,44 @@
+ #endif
+
+ #ifdef _GNU_SOURCE
+-#define REG_GS 0
+-#define REG_FS 1
+-#define REG_ES 2
+-#define REG_DS 3
+-#define REG_EDI 4
+-#define REG_ESI 5
+-#define REG_EBP 6
+-#define REG_ESP 7
+-#define REG_EBX 8
+-#define REG_EDX 9
+-#define REG_ECX 10
+-#define REG_EAX 11
+-#define REG_TRAPNO 12
+-#define REG_ERR 13
+-#define REG_EIP 14
+-#define REG_CS 15
+-#define REG_EFL 16
+-#define REG_UESP 17
+-#define REG_SS 18
++enum { REG_GS = 0 };
++#define REG_GS REG_GS
++enum { REG_FS = 1 };
++#define REG_FS REG_FS
++enum { REG_ES = 2 };
++#define REG_ES REG_ES
++enum { REG_DS = 3 };
++#define REG_DS REG_DS
++enum { REG_EDI = 4 };
++#define REG_EDI REG_EDI
++enum { REG_ESI = 5 };
++#define REG_ESI REG_ESI
++enum { REG_EBP = 6 };
++#define REG_EBP REG_EBP
++enum { REG_ESP = 7 };
++#define REG_ESP REG_ESP
++enum { REG_EBX = 8 };
++#define REG_EBX REG_EBX
++enum { REG_EDX = 9 };
++#define REG_EDX REG_EDX
++enum { REG_ECX = 10 };
++#define REG_ECX REG_ECX
++enum { REG_EAX = 11 };
++#define REG_EAX REG_EAX
++enum { REG_TRAPNO = 12 };
++#define REG_TRAPNO REG_TRAPNO
++enum { REG_ERR = 13 };
++#define REG_ERR REG_ERR
++enum { REG_EIP = 14 };
++#define REG_EIP REG_EIP
++enum { REG_CS = 15 };
++#define REG_CS REG_CS
++enum { REG_EFL = 16 };
++#define REG_EFL REG_EFL
++enum { REG_UESP = 17 };
++#define REG_UESP REG_UESP
++enum { REG_SS = 18 };
++#define REG_SS REG_SS
+ #endif
+
+ #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+diff --git a/arch/x32/bits/signal.h b/arch/x32/bits/signal.h
+index 4c4adf31..097be6f4 100644
+--- a/arch/x32/bits/signal.h
++++ b/arch/x32/bits/signal.h
+@@ -7,29 +7,52 @@
+ #endif
+
+ #ifdef _GNU_SOURCE
+-#define REG_R8 0
+-#define REG_R9 1
+-#define REG_R10 2
+-#define REG_R11 3
+-#define REG_R12 4
+-#define REG_R13 5
+-#define REG_R14 6
+-#define REG_R15 7
+-#define REG_RDI 8
+-#define REG_RSI 9
+-#define REG_RBP 10
+-#define REG_RBX 11
+-#define REG_RDX 12
+-#define REG_RAX 13
+-#define REG_RCX 14
+-#define REG_RSP 15
+-#define REG_RIP 16
+-#define REG_EFL 17
+-#define REG_CSGSFS 18
+-#define REG_ERR 19
+-#define REG_TRAPNO 20
+-#define REG_OLDMASK 21
+-#define REG_CR2 22
++enum { REG_R8 = 0 };
++#define REG_R8 REG_R8
++enum { REG_R9 = 1 };
++#define REG_R9 REG_R9
++enum { REG_R10 = 2 };
++#define REG_R10 REG_R10
++enum { REG_R11 = 3 };
++#define REG_R11 REG_R11
++enum { REG_R12 = 4 };
++#define REG_R12 REG_R12
++enum { REG_R13 = 5 };
++#define REG_R13 REG_R13
++enum { REG_R14 = 6 };
++#define REG_R14 REG_R14
++enum { REG_R15 = 7 };
++#define REG_R15 REG_R15
++enum { REG_RDI = 8 };
++#define REG_RDI REG_RDI
++enum { REG_RSI = 9 };
++#define REG_RSI REG_RSI
++enum { REG_RBP = 10 };
++#define REG_RBP REG_RBP
++enum { REG_RBX = 11 };
++#define REG_RBX REG_RBX
++enum { REG_RDX = 12 };
++#define REG_RDX REG_RDX
++enum { REG_RAX = 13 };
++#define REG_RAX REG_RAX
++enum { REG_RCX = 14 };
++#define REG_RCX REG_RCX
++enum { REG_RSP = 15 };
++#define REG_RSP REG_RSP
++enum { REG_RIP = 16 };
++#define REG_RIP REG_RIP
++enum { REG_EFL = 17 };
++#define REG_EFL REG_EFL
++enum { REG_CSGSFS = 18 };
++#define REG_CSGSFS REG_CSGSFS
++enum { REG_ERR = 19 };
++#define REG_ERR REG_ERR
++enum { REG_TRAPNO = 20 };
++#define REG_TRAPNO REG_TRAPNO
++enum { REG_OLDMASK = 21 };
++#define REG_OLDMASK REG_OLDMASK
++enum { REG_CR2 = 22 };
++#define REG_CR2 REG_CR2
+ #endif
+
+ #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+diff --git a/arch/x86_64/bits/signal.h b/arch/x86_64/bits/signal.h
+index e3c31417..c99317d3 100644
+--- a/arch/x86_64/bits/signal.h
++++ b/arch/x86_64/bits/signal.h
+@@ -7,29 +7,52 @@
+ #endif
+
+ #ifdef _GNU_SOURCE
+-#define REG_R8 0
+-#define REG_R9 1
+-#define REG_R10 2
+-#define REG_R11 3
+-#define REG_R12 4
+-#define REG_R13 5
+-#define REG_R14 6
+-#define REG_R15 7
+-#define REG_RDI 8
+-#define REG_RSI 9
+-#define REG_RBP 10
+-#define REG_RBX 11
+-#define REG_RDX 12
+-#define REG_RAX 13
+-#define REG_RCX 14
+-#define REG_RSP 15
+-#define REG_RIP 16
+-#define REG_EFL 17
+-#define REG_CSGSFS 18
+-#define REG_ERR 19
+-#define REG_TRAPNO 20
+-#define REG_OLDMASK 21
+-#define REG_CR2 22
++enum { REG_R8 = 0 };
++#define REG_R8 REG_R8
++enum { REG_R9 = 1 };
++#define REG_R9 REG_R9
++enum { REG_R10 = 2 };
++#define REG_R10 REG_R10
++enum { REG_R11 = 3 };
++#define REG_R11 REG_R11
++enum { REG_R12 = 4 };
++#define REG_R12 REG_R12
++enum { REG_R13 = 5 };
++#define REG_R13 REG_R13
++enum { REG_R14 = 6 };
++#define REG_R14 REG_R14
++enum { REG_R15 = 7 };
++#define REG_R15 REG_R15
++enum { REG_RDI = 8 };
++#define REG_RDI REG_RDI
++enum { REG_RSI = 9 };
++#define REG_RSI REG_RSI
++enum { REG_RBP = 10 };
++#define REG_RBP REG_RBP
++enum { REG_RBX = 11 };
++#define REG_RBX REG_RBX
++enum { REG_RDX = 12 };
++#define REG_RDX REG_RDX
++enum { REG_RAX = 13 };
++#define REG_RAX REG_RAX
++enum { REG_RCX = 14 };
++#define REG_RCX REG_RCX
++enum { REG_RSP = 15 };
++#define REG_RSP REG_RSP
++enum { REG_RIP = 16 };
++#define REG_RIP REG_RIP
++enum { REG_EFL = 17 };
++#define REG_EFL REG_EFL
++enum { REG_CSGSFS = 18 };
++#define REG_CSGSFS REG_CSGSFS
++enum { REG_ERR = 19 };
++#define REG_ERR REG_ERR
++enum { REG_TRAPNO = 20 };
++#define REG_TRAPNO REG_TRAPNO
++enum { REG_OLDMASK = 21 };
++#define REG_OLDMASK REG_OLDMASK
++enum { REG_CR2 = 22 };
++#define REG_CR2 REG_CR2
+ #endif
+
+ #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+--
+2.11.0
+