aboutsummaryrefslogtreecommitdiff
path: root/ChangeLog
diff options
context:
space:
mode:
authorCarlos O'Donell <carlos@redhat.com>2018-09-05 01:16:42 -0400
committerCarlos O'Donell <carlos@redhat.com>2018-09-19 22:33:07 -0400
commit791b350dc725545e3f9b5db0f97ebdbc60c9735f (patch)
tree0cb9ca4e6bf0111fdea8c8d367d3c4f535453fbf /ChangeLog
parente1080e7e5f3e62ef737bb3ee5babd7ad66bedfd7 (diff)
downloadglibc-791b350dc725545e3f9b5db0f97ebdbc60c9735f.tar
glibc-791b350dc725545e3f9b5db0f97ebdbc60c9735f.tar.gz
glibc-791b350dc725545e3f9b5db0f97ebdbc60c9735f.tar.bz2
glibc-791b350dc725545e3f9b5db0f97ebdbc60c9735f.zip
Fix tst-setcontext9 for optimized small stacks.
If the compiler reduces the stack usage in function f1 before calling into function f2, then when we swapcontext back to f1 and continue execution we may overwrite registers that were spilled to the stack while f2 was executing. Later when we return to f2 the corrupt registers will be reloaded from the stack and the test will crash. This was most commonly observed on i686 with __x86.get_pc_thunk.dx and needing to save and restore $edx. Overall i686 has few registers and the spilling to the stack is bound to happen, therefore the solution to making this test robust is to split function f1 into two parts f1a and f1b, and allocate f1b it's own stack such that subsequent execution does not overwrite the stack in use by function f2. Tested on i686 and x86_64. Signed-off-by: Carlos O'Donell <carlos@redhat.com>
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog6
1 files changed, 6 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index e15ac3bdb1..d5becac41c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2018-09-19 Carlos O'Donell <carlos@redhat.com>
+
+ * stdlib/tst-setcontext9.c (f1): Rename to...
+ (f1a): ... this.
+ (f1b): New function implementing lower half of f1 in alternate stack.
+
2018-09-19 Paul Eggert <eggert@cs.ucla.edu>
Fix mktime localtime offset confusion