aboutsummaryrefslogtreecommitdiffstats
path: root/libc
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2014-08-09 18:45:55 -0700
committerElliott Hughes <enh@google.com>2014-08-09 22:18:33 -0700
commitca5b6a74a70924e513ae1b1a3f8718eb16ca60f2 (patch)
tree9be12a05b97b30aa6693b3b0433a7e179413676b /libc
parenta0db46418757dd1b399acb97ff42083cc274e8ae (diff)
downloadandroid_bionic-ca5b6a74a70924e513ae1b1a3f8718eb16ca60f2.tar.gz
android_bionic-ca5b6a74a70924e513ae1b1a3f8718eb16ca60f2.tar.bz2
android_bionic-ca5b6a74a70924e513ae1b1a3f8718eb16ca60f2.zip
Fix our x86 PIC_PROLOGUE.
The old definition only worked for functions that didn't use numbered local labels. Upstream uses '666' not only as some kind of BSD in-joke, but also because there's little likelihood of any function having labels that high. There's a wider question about whether we actually want to go via the PLT at all in this code, but that's a question for another day. (cherry-pick of 72d7e667c7e926cb120c4edb53cbf74c652ab915.) Bug: 16906712 Change-Id: I3cd8ecc448b33f942bb6e783931808ef39091489
Diffstat (limited to 'libc')
-rw-r--r--libc/arch-x86/include/machine/asm.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/libc/arch-x86/include/machine/asm.h b/libc/arch-x86/include/machine/asm.h
index bf77525ee..672493d5d 100644
--- a/libc/arch-x86/include/machine/asm.h
+++ b/libc/arch-x86/include/machine/asm.h
@@ -39,10 +39,10 @@
#define PIC_PROLOGUE \
pushl %ebx; \
- call 1f; \
-1: \
+ call 666f; \
+666: \
popl %ebx; \
- addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx
+ addl $_GLOBAL_OFFSET_TABLE_+[.-666b], %ebx
#define PIC_EPILOGUE \
popl %ebx
#define PIC_PLT(x) x@PLT