mips: Fix store/load gp registers to/from ucontext_t
commitb309f058cf7639951bebb86270ffbc116ea5f720
authorGordana Cmiljanovic <Gordana.Cmiljanovic@imgtec.com>
Tue, 13 Jun 2017 21:34:45 +0000 (13 21:34 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Tue, 13 Jun 2017 21:34:45 +0000 (13 21:34 +0000)
treebd42dec0d4649a94e18384bf0294f3c473a6aa83
parentc2528fef3b05bcffb1ac27c6c09cc3ff24b7f03f
mips: Fix store/load gp registers to/from ucontext_t

General purpose registers in mcontext_t structure
are 8 bytes long for both MIPS32/MIPS64.

get/set/make/swap context implementations for MIPS O32
incorrectly assume that general purpose registers
in this structure are 4 bytes long.

This patch is fixing that.

Tested for MIPS O32 LE and BE.
Compared objdump of modified functions for mips n32 and mips n64.

[BZ #21548]
* sysdeps/unix/sysv/linux/mips/getcontext.S: Define MCONTEXT_SZGREG as
8 and use it when copying general purpose registers.
* sysdeps/unix/sysv/linux/mips/makecontext.S: Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/Makefile: Include new test for
mips o32.
* sysdeps/unix/sysv/linux/mips/mips32/bug-getcontext-mips-gp.c: Added
new test for mips o32.
* sysdeps/unix/sysv/linux/mips/setcontext.S: Define MCONTEXT_SZGREG as
8 and use it when copying general purpose registers.
* sysdeps/unix/sysv/linux/mips/swapcontext.S: Likewise.
ChangeLog
sysdeps/unix/sysv/linux/mips/getcontext.S
sysdeps/unix/sysv/linux/mips/makecontext.S
sysdeps/unix/sysv/linux/mips/mips32/Makefile
sysdeps/unix/sysv/linux/mips/mips32/bug-getcontext-mips-gp.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/mips/setcontext.S
sysdeps/unix/sysv/linux/mips/swapcontext.S