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