Re: [PATCH 1/4] glibc: Perform rseq(2) registration at C startup and thread creation (v7)
flat view
From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Date: 2019-04-18 15:32:00
Also in:
lkml
----- On Apr 9, 2019, at 5:29 AM, Alan Modra amodra@gmail.com wrote:
On Tue, Apr 09, 2019 at 02:23:53PM +1000, Michael Ellerman wrote:quoted
I'd much rather we use a trap with a specific immediate value. Otherwise someone's going to waste time one day puzzling over why userspace is doing mtmsr.It's data. We have other data in executable sections. Anyone who wonders about odd disassembly just hasn't realized they are disassembling data.quoted
It would also complicate things if we ever wanted to emulate mtmsr.No, because it won't be executed. If I understand correctly, the only reason to choose an illegal, trap or privileged insn is to halt execution earlier rather than later when a program goes off in the weeds.quoted
If we want something that is a trap rather than a nop then use 0x0fe50553. That's "compare the value in r5 with 0x553 and then trap unconditionally". It shows up in objdump as: 10000000: 53 05 e5 0f twui r5,1363 The immediate can be anything, I chose that value to mimic the x86 value Mathieu mentioned. There's no reason that instruction would ever be generated because the immediate value serves no purpose. So it satisfies the "very unlikely to appear" criteria AFAICS.Yes, looks fine to me, except that in VLE mode (do we care?) ".long 0x0fe50553" disassembles as 0: 0f e5 se_cmphl r5,r30 2: 05 53 se_mullw r3,r5 No illegal/trap/privileged insn there. ".long 0x0fe5000b" might be better to cover VLE.
Can you share with us the objdump output of ".long 0x0fe5000b" in VLE mode ? VLE mode support does not appear to be available in typical toolchains. Also, is VLE mode only for powerpc 32 be, or also for powerpc 64 be/le ? Thanks, Mathieu -- Mathieu Desnoyers EfficiOS Inc. http://www.efficios.com