]> granicus.if.org Git - strace/commit
ARM: make it one-personality arch
authorDenys Vlasenko <vda.linux@googlemail.com>
Thu, 21 Feb 2013 14:46:34 +0000 (15:46 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Thu, 21 Feb 2013 14:46:34 +0000 (15:46 +0100)
commit7270de551ca6b3ea097c114005b6b028990ce3dc
tree9d5d4f1de04037ad1a8085f3440a9b04d2e50795
parente7030e5a7ef541f0ffda46a2850ef720245f01a5
ARM: make it one-personality arch

ARM in fact _is_ one personality.

We had two personalities for it because it has a handful of
syscalls with huge scnos (0x000f00xx).

Extending syscall table to have [0x000f0005] index is of course
not a good idea.

Someone decided to handle that by having a separate personality
just for these syscalls.

But multi-personality arch does a bit more work in other parts.

This patch is another alternative: "move" 0x000f00nn syscalls
down to the entries just above last ordinary syscall,
by manipulating scno if it falls into the 0x000f00xx range.

In order to not worsen genuine undefined scnos' printing,
the code remaps scno back to actual value before printing
"syscall_NNN" string.

* defs.h: Remove multi-reprsonality defines from ARM.
* syscall.c (shuffle_scno): New function.
(undefined_scno_name): New function.
(get_scno): [ARM] Replace personality setting with scno shuffling.
(trace_syscall_entering): Print unknown syscall name using
undefined_scno_name().
(trace_syscall_exiting): Likewise.
* linux/arm/syscallent.h: Add ARM specific syscalls at the end.
* linux/arm/errnoent1.h: Deleted.
* linux/arm/ioctlent1.h: Deleted.
* linux/arm/signalent1.h: Deleted.
* linux/arm/syscallent1.h: Deleted.

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
defs.h
linux/arm/errnoent1.h [deleted file]
linux/arm/ioctlent1.h [deleted file]
linux/arm/signalent1.h [deleted file]
linux/arm/syscallent.h
linux/arm/syscallent1.h [deleted file]
syscall.c