Middleware regression test suites, e.g. ACE
Alexandre Julliard
julliard at winehq.com
Mon Mar 24 17:00:02 CST 2003
"Dimitrie O. Paun" <dpaun at rogers.com> writes:
> Ah, now I see. Well, that sucks. So maybe we should create a libs/oldnames?
> For i386, can't we just create (inline( a symbol X (similar to they way
> __ASM_GLOBAL_FUNC() works) that does "jmp _X", so we can avoid the lib?
Actually it may be possible to use the alias attribute under gcc,
something along these lines:
Index: include/msvcrt/process.h
===================================================================
RCS file: /opt/cvs-commit/wine/include/msvcrt/process.h,v
retrieving revision 1.8
diff -u -r1.8 process.h
--- include/msvcrt/process.h 22 Mar 2003 21:15:41 -0000 1.8
+++ include/msvcrt/process.h 24 Mar 2003 22:49:40 -0000
@@ -123,22 +123,35 @@
static inline int cwait(int *status, int pid, int action) { return _cwait(status, pid, action); }
static inline int getpid(void) { return _getpid(); }
-#define execl _execl
-#define execle _execle
-#define execlp _execlp
-#define execlpe _execlpe
static inline int execv(const char* name, char* const* argv) { return _execv(name, argv); }
static inline int execve(const char* name, char* const* argv, const char* const* envv) { return _execve(name, argv, envv); }
static inline int execvp(const char* name, char* const* argv) { return _execvp(name, argv); }
static inline int execvpe(const char* name, char* const* argv, const char* const* envv) { return _execvpe(name, argv, envv); }
-#define spawnl _spawnl
-#define spawnle _spawnle
-#define spawnlp _spawnlp
-#define spawnlpe _spawnlpe
static inline int spawnv(int flags, const char* name, const char* const* argv) { return _spawnv(flags, name, argv); }
static inline int spawnve(int flags, const char* name, const char* const* argv, const char* const* envv) { return _spawnve(flags, name, argv, envv); }
static inline int spawnvp(int flags, const char* name, const char* const* argv) { return _spawnvp(flags, name, argv); }
static inline int spawnvpe(int flags, const char* name, const char* const* argv, const char* const* envv) { return _spawnvpe(flags, name, argv, envv); }
+
+#ifdef __GNUC__
+extern int execl(const char*,const char*,...) __attribute__((alias("_execl")));
+extern int execle(const char*,const char*,...) __attribute__((alias("_execle")));
+extern int execlp(const char*,const char*,...) __attribute__((alias("_execlp")));
+extern int execlpe(const char*,const char*,...) __attribute__((alias("_execlpe")));
+extern int spawnl(int,const char*,const char*,...) __attribute__((alias("_spawnl")));
+extern int spawnle(int,const char*,const char*,...) __attribute__((alias("_spawnle")));
+extern int spawnlp(int,const char*,const char*,...) __attribute__((alias("_spawnlp")));
+extern int spawnlpe(int,const char*,const char*,...) __attribute__((alias("_spawnlpe")));
+#else
+#define execl _execl
+#define execle _execle
+#define execlp _execlp
+#define execlpe _execlpe
+#define spawnl _spawnl
+#define spawnle _spawnle
+#define spawnlp _spawnlp
+#define spawnlpe _spawnlpe
+#endif /* __GNUC__ */
+
#endif /* USE_MSVCRT_PREFIX */
#endif /* __WINE_PROCESS_H */
--
Alexandre Julliard
julliard at winehq.com
More information about the wine-devel
mailing list