summaryrefslogtreecommitdiffstats
path: root/mplayer_wine.spec.c
diff options
context:
space:
mode:
authorarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-10-31 23:37:38 +0000
committerarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-10-31 23:37:38 +0000
commit304cac4da3048b961d9ed500ccac657a4d82db00 (patch)
treeb130cc55025f18d7ae6b82b12e214c59019ba9b8 /mplayer_wine.spec.c
parent530610f44c03752a526405a983539bf421f6120c (diff)
downloadmpv-304cac4da3048b961d9ed500ccac657a4d82db00.tar.bz2
mpv-304cac4da3048b961d9ed500ccac657a4d82db00.tar.xz
including source and precompiled .spec for libwine support
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@8013 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'mplayer_wine.spec.c')
-rw-r--r--mplayer_wine.spec.c178
1 files changed, 178 insertions, 0 deletions
diff --git a/mplayer_wine.spec.c b/mplayer_wine.spec.c
new file mode 100644
index 0000000000..1974b3c699
--- /dev/null
+++ b/mplayer_wine.spec.c
@@ -0,0 +1,178 @@
+/* File generated automatically from mplayer_wine.spec; do not edit! */
+/* This file can be copied, modified and distributed without restriction. */
+
+extern char pe_header[];
+asm(".section .text\n\t"
+ ".align 4096\n"
+ "pe_header:\t.fill 4096,1,0\n\t");
+static const char dllname[] = "mplayer_wine";
+
+extern int __wine_spec_exports[];
+
+#define __stdcall __attribute__((__stdcall__))
+
+
+static struct {
+ struct {
+ void *OriginalFirstThunk;
+ unsigned int TimeDateStamp;
+ unsigned int ForwarderChain;
+ const char *Name;
+ void *FirstThunk;
+ } imp[3];
+ const char *data[8];
+} imports = {
+ {
+ { 0, 0, 0, "kernel32.dll", &imports.data[0] },
+ { 0, 0, 0, "ntdll.dll", &imports.data[5] },
+ { 0, 0, 0, 0, 0 },
+ },
+ {
+ /* kernel32.dll */
+ "\0\0ExitProcess",
+ "\0\0FreeLibrary",
+ "\0\0GetProcAddress",
+ "\0\0LoadLibraryA",
+ 0,
+ /* ntdll.dll */
+ "\0\0RtlRaiseException",
+ "\0\0__wine_get_main_args",
+ 0,
+ }
+};
+
+#ifndef __GNUC__
+static void __asm__dummy_import(void) {
+#endif
+
+asm(".data\n\t.align 8\n"
+ "\t.type ExitProcess,@function\n"
+ "\t.globl ExitProcess\n"
+ "ExitProcess:\n\tjmp *(imports+60)\n\tmovl %esi,%esi\n"
+ "\t.type FreeLibrary,@function\n"
+ "\t.globl FreeLibrary\n"
+ "FreeLibrary:\n\tjmp *(imports+64)\n\tmovl %esi,%esi\n"
+ "\t.type GetProcAddress,@function\n"
+ "\t.globl GetProcAddress\n"
+ "GetProcAddress:\n\tjmp *(imports+68)\n\tmovl %esi,%esi\n"
+ "\t.type LoadLibraryA,@function\n"
+ "\t.globl LoadLibraryA\n"
+ "LoadLibraryA:\n\tjmp *(imports+72)\n\tmovl %esi,%esi\n"
+ "\t.type RtlRaiseException,@function\n"
+ "\t.globl RtlRaiseException\n"
+ "RtlRaiseException:\n\tjmp *(imports+80)\n\tmovl %esi,%esi\n"
+ "\t.type __wine_get_main_args,@function\n"
+ "\t.globl __wine_get_main_args\n"
+ "__wine_get_main_args:\n\tjmp *(imports+84)\n\tmovl %esi,%esi\n"
+".previous");
+#ifndef __GNUC__
+}
+#endif
+
+
+int _ARGC;
+char **_ARGV;
+extern void __stdcall ExitProcess(int);
+static void __wine_exe_main(void)
+{
+ extern int main( int argc, char *argv[] );
+ extern int __wine_get_main_args( char ***argv );
+ _ARGC = __wine_get_main_args( &_ARGV );
+ ExitProcess( main( _ARGC, _ARGV ) );
+}
+
+static const struct image_nt_headers
+{
+ int Signature;
+ struct file_header {
+ short Machine;
+ short NumberOfSections;
+ int TimeDateStamp;
+ void *PointerToSymbolTable;
+ int NumberOfSymbols;
+ short SizeOfOptionalHeader;
+ short Characteristics;
+ } FileHeader;
+ struct opt_header {
+ short Magic;
+ char MajorLinkerVersion, MinorLinkerVersion;
+ int SizeOfCode;
+ int SizeOfInitializedData;
+ int SizeOfUninitializedData;
+ void *AddressOfEntryPoint;
+ void *BaseOfCode;
+ void *BaseOfData;
+ void *ImageBase;
+ int SectionAlignment;
+ int FileAlignment;
+ short MajorOperatingSystemVersion;
+ short MinorOperatingSystemVersion;
+ short MajorImageVersion;
+ short MinorImageVersion;
+ short MajorSubsystemVersion;
+ short MinorSubsystemVersion;
+ int Win32VersionValue;
+ int SizeOfImage;
+ int SizeOfHeaders;
+ int CheckSum;
+ short Subsystem;
+ short DllCharacteristics;
+ int SizeOfStackReserve;
+ int SizeOfStackCommit;
+ int SizeOfHeapReserve;
+ int SizeOfHeapCommit;
+ int LoaderFlags;
+ int NumberOfRvaAndSizes;
+ struct { const void *VirtualAddress; int Size; } DataDirectory[16];
+ } OptionalHeader;
+} nt_header = {
+ 0x4550,
+ { 0x014c,
+ 0, 0, 0, 0,
+ sizeof(nt_header.OptionalHeader),
+ 0x0000 },
+ { 0x010b,
+ 0, 0,
+ 0, 0, 0,
+ __wine_exe_main,
+ 0, 0,
+ pe_header,
+ 4096,
+ 4096,
+ 1, 0,
+ 0, 0,
+ 4, 0,
+ 0,
+ 4096,
+ 4096,
+ 0,
+ 0x0003,
+ 0,
+ 0, 0,
+ 0, 0,
+ 0,
+ 16,
+ {
+ { 0, 0 },
+ { &imports, sizeof(imports) },
+ { 0, 0 },
+ }
+ }
+};
+
+#ifndef __GNUC__
+static void __asm__dummy_dll_init(void) {
+#endif /* defined(__GNUC__) */
+asm("\t.section .init ,\"ax\"\n"
+ "\tcall __wine_spec_mplayer_wine_init\n"
+ "\t.previous\n");
+#ifndef __GNUC__
+}
+#endif /* defined(__GNUC__) */
+
+void __wine_spec_mplayer_wine_init(void)
+{
+ extern void __wine_dll_register( const struct image_nt_headers *, const char * );
+ extern void *__wine_dbg_register( char * const *, int );
+ __wine_dll_register( &nt_header, "mplayer_wine.exe" );
+}