wine/dlls/ntdll resource.c

Alexandre Julliard julliard at wine.codeweavers.com
Wed Nov 2 08:18:20 CST 2005


ChangeSet ID:	21046
CVSROOT:	/opt/cvs-commit
Module name:	wine
Changes by:	julliard at winehq.org	2005/11/02 08:18:20

Modified files:
	dlls/ntdll     : resource.c 

Log message:
	Robert Shearman <rob at codeweavers.com>
	Make LdrAccessResource call an internal function to satisfy Shrinker.

Patch: http://cvs.winehq.org/patch.py?id=21046

Old revision  New revision  Changes     Path
 1.15          1.16          +32 -5      wine/dlls/ntdll/resource.c

Index: wine/dlls/ntdll/resource.c
diff -u -p wine/dlls/ntdll/resource.c:1.15 wine/dlls/ntdll/resource.c:1.16
--- wine/dlls/ntdll/resource.c:1.15	2 Nov 2005 14:18:20 -0000
+++ wine/dlls/ntdll/resource.c	2 Nov 2005 14:18:20 -0000
@@ -318,11 +318,14 @@ NTSTATUS WINAPI LdrFindResource_U( HMODU
 }
 
 
-/**********************************************************************
- *	LdrAccessResource  (NTDLL.@)
- */
-NTSTATUS WINAPI LdrAccessResource( HMODULE hmod, const IMAGE_RESOURCE_DATA_ENTRY *entry,
-                                   void **ptr, ULONG *size )
+/* don't penalize other platforms stuff needed on i386 for compatibility */
+#ifdef __i386__
+NTSTATUS WINAPI access_resource( HMODULE hmod, const IMAGE_RESOURCE_DATA_ENTRY *entry,
+                                 void **ptr, ULONG *size )
+#else
+static inline NTSTATUS access_resource( HMODULE hmod, const IMAGE_RESOURCE_DATA_ENTRY *entry,
+                                        void **ptr, ULONG *size )
+#endif
 {
     NTSTATUS status;
 
@@ -355,6 +358,30 @@ NTSTATUS WINAPI LdrAccessResource( HMODU
     return status;
 }
 
+/**********************************************************************
+ *	LdrAccessResource  (NTDLL.@)
+ */
+#ifdef __i386__
+/* Shrinker depends on the "call access_resource" instruction being there */
+__ASM_GLOBAL_FUNC( LdrAccessResource,
+    "pushl %ebp\n"
+    "movl %esp, %ebp\n"
+    "pushl 24(%ebp)\n"
+    "pushl 20(%ebp)\n"
+    "pushl 16(%ebp)\n"
+    "pushl 12(%ebp)\n"
+    "pushl 8(%ebp)\n"
+    "call access_resource\n"
+    "leave\n"
+    "ret\n"
+);
+#else
+NTSTATUS WINAPI LdrAccessResource( HMODULE hmod, const IMAGE_RESOURCE_DATA_ENTRY *entry,
+                                   void **ptr, ULONG *size )
+{
+    return access_resource( hmod, entry, ptr, size );
+}
+#endif
 
 /**********************************************************************
  *	RtlFindMessage  (NTDLL.@)



More information about the wine-cvs mailing list