On Tue, May 07, 2013 at 11:42:28AM -0400, Chris Metcalf wrote:
> On 5/7/2013 11:38 AM, Dmitry V. Levin wrote:
> > On Tue, May 07, 2013 at 09:30:45AM -0400, Mike Frysinger wrote:
> >> > On Tuesday 07 May 2013 08:14:46 Chris Metcalf wrote:
> >>> > > On 5/6/2013 7:43 PM, Dmitry V. Levin wrote:
> >>>> > > > On Mon, May 06, 2013 at 03:21:38PM -0700, Chris Zankel wrote:
> >>>>> > > >> The Xtensa architecture also used dedicated syscalls and doesn't
> >>>>> > > >> need to multiplex ipc and socket subcalls.
> >>>> > > > 
> >>>> > > > Applied, thanks.
> >>> > > 
> >>> > > No new architecture will ever use the subcall model, so in fact it's
> >>> > > probably cleaner to just list the ones that do use it.
> >> > 
> >> > yeah, i was thinking it might be better to move those ifdefs out of the 
> >> > common 
> >> > code and just declare it in the relevant syscallent.h header
> > Yes, something like this?
> 
> Rather than all the checks to see if SYS_socket_subcall has the right value, 
> I'd just require all platforms to define it first, and then in 
> linux/subcall.h, add an #ifndef to error out if it's not defined.

I agree.

 Makefile.am                |  1 +
 linux/arm/syscallent.h     |  5 ++---
 linux/i386/syscallent.h    |  6 ++----
 linux/m68k/syscallent.h    |  6 ++----
 linux/powerpc/syscallent.h |  6 ++----
 linux/s390/syscallent.h    |  6 ++----
 linux/s390x/syscallent.h   |  6 ++----
 linux/sh/syscallent.h      |  6 ++----
 linux/sh64/syscallent.h    |  6 ++----
 linux/sparc/syscallent.h   |  5 ++---
 linux/subcall.h            |  6 ++++++
 linux/syscall.h            | 24 ------------------------
 12 files changed, 25 insertions(+), 58 deletions(-)
 create mode 100644 linux/subcall.h

diff --git a/Makefile.am b/Makefile.am
index 639430d..99d9eaf 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -151,6 +151,7 @@ EXTRA_DIST =                                \
        linux/sparc64/syscallent.h      \
        linux/sparc64/syscallent1.h     \
        linux/sparc64/syscallent2.h     \
+       linux/subcall.h                 \
        linux/syscall.h                 \
        linux/tile/ioctlent.h.in        \
        linux/tile/syscallent.h         \
diff --git a/linux/arm/syscallent.h b/linux/arm/syscallent.h
index b1fd370..8976a82 100644
--- a/linux/arm/syscallent.h
+++ b/linux/arm/syscallent.h
@@ -431,9 +431,8 @@
        { 5,    0,      NULL,                   NULL            }, /* 397 */
        { 5,    0,      NULL,                   NULL            }, /* 398 */
        { 5,    0,      NULL,                   NULL            }, /* 399 */
-# if SYS_socket_subcall != 400
-#  error fix me
-# endif
+#define SYS_socket_subcall     400
+#include "subcall.h"
        { 6,    0,      printargs,              "socket_subcall"}, /* 400 */
        { 3,    TN,     sys_socket,             "socket"        }, /* 401 */
        { 3,    TN,     sys_bind,               "bind"          }, /* 402 */
diff --git a/linux/i386/syscallent.h b/linux/i386/syscallent.h
index 8a1d617..7e40f32 100644
--- a/linux/i386/syscallent.h
+++ b/linux/i386/syscallent.h
@@ -428,10 +428,8 @@
        { 5,    0,      NULL,                   NULL            }, /* 397 */
        { 5,    0,      NULL,                   NULL            }, /* 398 */
        { 5,    0,      NULL,                   NULL            }, /* 399 */
-
-#if SYS_socket_subcall != 400
- #error fix me
-#endif
+#define SYS_socket_subcall     400
+#include "subcall.h"
        { 6,    0,      printargs,              "socket_subcall"}, /* 400 */
        { 3,    TN,     sys_socket,             "socket"        }, /* 401 */
        { 3,    TN,     sys_bind,               "bind"          }, /* 402 */
diff --git a/linux/m68k/syscallent.h b/linux/m68k/syscallent.h
index b872a09..222a522 100644
--- a/linux/m68k/syscallent.h
+++ b/linux/m68k/syscallent.h
@@ -426,10 +426,8 @@
        { 5,    0,      NULL,                   NULL            }, /* 397 */
        { 5,    0,      NULL,                   NULL            }, /* 398 */
        { 5,    0,      NULL,                   NULL            }, /* 399 */
-
-#if SYS_socket_subcall != 400
- #error fix me
-#endif
+#define SYS_socket_subcall     400
+#include "subcall.h"
        { 6,    0,      printargs,              "socket_subcall"}, /* 400 */
        { 3,    TN,     sys_socket,             "socket"        }, /* 401 */
        { 3,    TN,     sys_bind,               "bind"          }, /* 402 */
diff --git a/linux/powerpc/syscallent.h b/linux/powerpc/syscallent.h
index 8db525d..ada58f7 100644
--- a/linux/powerpc/syscallent.h
+++ b/linux/powerpc/syscallent.h
@@ -426,10 +426,8 @@
        { 5,    0,      NULL,                   NULL                    }, /* 
397 */
        { 5,    0,      NULL,                   NULL                    }, /* 
398 */
        { 5,    0,      NULL,                   NULL                    }, /* 
399 */
-
-#if SYS_socket_subcall != 400
- #error fix me
-#endif
+#define SYS_socket_subcall     400
+#include "subcall.h"
        { 6,    0,      printargs,              "socket_subcall"}, /* 400 */
        { 3,    TN,     sys_socket,             "socket"        }, /* 401 */
        { 3,    TN,     sys_bind,               "bind"          }, /* 402 */
diff --git a/linux/s390/syscallent.h b/linux/s390/syscallent.h
index c68362e..8faeba6 100644
--- a/linux/s390/syscallent.h
+++ b/linux/s390/syscallent.h
@@ -428,10 +428,8 @@
        { 5,    0,      NULL,                   NULL            }, /* 397 */
        { 5,    0,      NULL,                   NULL            }, /* 398 */
        { 5,    0,      NULL,                   NULL            }, /* 399 */
-
-#if SYS_socket_subcall != 400
- #error fix me
-#endif
+#define SYS_socket_subcall     400
+#include "subcall.h"
        { 6,    0,      printargs,              "socket_subcall"}, /* 400 */
        { 3,    TN,     sys_socket,             "socket"        }, /* 401 */
        { 3,    TN,     sys_bind,               "bind"          }, /* 402 */
diff --git a/linux/s390x/syscallent.h b/linux/s390x/syscallent.h
index 05b296c..1b19a41 100644
--- a/linux/s390x/syscallent.h
+++ b/linux/s390x/syscallent.h
@@ -427,10 +427,8 @@
        { 5,    0,      NULL,                   NULL            }, /* 397 */
        { 5,    0,      NULL,                   NULL            }, /* 398 */
        { 5,    0,      NULL,                   NULL            }, /* 399 */
-
-#if SYS_socket_subcall != 400
- #error fix me
-#endif
+#define SYS_socket_subcall     400
+#include "subcall.h"
        { 6,    0,      printargs,              "socket_subcall"}, /* 400 */
        { 3,    TN,     sys_socket,             "socket"        }, /* 401 */
        { 3,    TN,     sys_bind,               "bind"          }, /* 402 */
diff --git a/linux/sh/syscallent.h b/linux/sh/syscallent.h
index 577a4f6..af06962 100644
--- a/linux/sh/syscallent.h
+++ b/linux/sh/syscallent.h
@@ -430,10 +430,8 @@
        { 5,    0,      NULL,                   NULL            }, /* 397 */
        { 5,    0,      NULL,                   NULL            }, /* 398 */
        { 5,    0,      NULL,                   NULL            }, /* 399 */
-
-#if SYS_socket_subcall != 400
- #error fix me
-#endif
+#define SYS_socket_subcall     400
+#include "subcall.h"
        { 6,    0,      printargs,              "socket_subcall"}, /* 400 */
        { 3,    TN,     sys_socket,             "socket"        }, /* 401 */
        { 3,    TN,     sys_bind,               "bind"          }, /* 402 */
diff --git a/linux/sh64/syscallent.h b/linux/sh64/syscallent.h
index 246417d..fa9c0aa 100644
--- a/linux/sh64/syscallent.h
+++ b/linux/sh64/syscallent.h
@@ -426,10 +426,8 @@
        { 5,    0,      NULL,                   NULL            }, /* 397 */
        { 5,    0,      NULL,                   NULL            }, /* 398 */
        { 5,    0,      NULL,                   NULL            }, /* 399 */
-
-#if SYS_socket_subcall != 400
- #error fix me
-#endif
+#define SYS_socket_subcall     400
+#include "subcall.h"
        { 6,    0,      printargs,              "socket_subcall"}, /* 400 */
        { 3,    TN,     sys_socket,             "socket"        }, /* 401 */
        { 3,    TN,     sys_bind,               "bind"          }, /* 402 */
diff --git a/linux/sparc/syscallent.h b/linux/sparc/syscallent.h
index de46480..dc00096 100644
--- a/linux/sparc/syscallent.h
+++ b/linux/sparc/syscallent.h
@@ -351,9 +351,8 @@
        { 5,    0,      NULL,                   NULL            }, /* 350 */
        { 5,    0,      NULL,                   NULL            }, /* 351 */
        { 5,    0,      NULL,                   NULL            }, /* 352 */
-#if SYS_socket_subcall != 353
- #error fix me
-#endif
+#define SYS_socket_subcall     353
+#include "subcall.h"
        { 6,    0,      printargs,              "socket_subcall"}, /* 353 */
        { 3,    TN,     sys_socket,             "socket"        }, /* 354 */
        { 3,    TN,     sys_bind,               "bind"          }, /* 355 */
diff --git a/linux/subcall.h b/linux/subcall.h
new file mode 100644
index 0000000..54f7fca
--- /dev/null
+++ b/linux/subcall.h
@@ -0,0 +1,6 @@
+#ifndef SYS_socket_subcall
+# error SYS_socket_subcall is not defined
+#endif
+#define SYS_socket_nsubcalls   20
+#define SYS_ipc_subcall                
((SYS_socket_subcall)+(SYS_socket_nsubcalls))
+#define SYS_ipc_nsubcalls      25
diff --git a/linux/syscall.h b/linux/syscall.h
index 0c87fa6..f6afcac 100644
--- a/linux/syscall.h
+++ b/linux/syscall.h
@@ -313,30 +313,6 @@ int sys_osf_utimes();
 int sys_osf_wait4();
 #endif
 
-#if defined ALPHA \
- || defined __ARM_EABI__ \
- || defined BFIN \
- || defined HPPA \
- || defined METAG \
- || defined MIPS \
- || defined TILE \
- || defined XTENSA
-/*
- * This architecture does not have a socketcall or ipc subcall,
- * it has dedicated syscalls instead, so there is no need
- * to implement socket or ipc subcall decoding.
- */
-#else
-# if defined SPARC || defined SPARC64
-#  define SYS_socket_subcall   353
-# else
-#  define SYS_socket_subcall   400
-# endif
-# define SYS_socket_nsubcalls  20
-# define SYS_ipc_subcall       ((SYS_socket_subcall)+(SYS_socket_nsubcalls))
-# define SYS_ipc_nsubcalls     25
-#endif
-
 #if defined(ALPHA) || defined(IA64) || defined(SPARC) || defined(SPARC64)
 int sys_getpagesize();
 #endif

-- 
ldv

Attachment: pgpRcmaM6Y6bC.pgp
Description: PGP signature

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and 
their applications. This 200-page book is written by three acclaimed 
leaders in the field. The early access version is available now. 
Download your free book today! http://p.sf.net/sfu/neotech_d2d_may
_______________________________________________
Strace-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/strace-devel

Reply via email to