This is the mail archive of the cygwin-apps mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] setup: remove autoload


With XP being the minimum supported version, we can scrap autoload and
link all functions directly; patch attached.


Yaakov
2013-03-04  Yaakov Selkowitz  <yselkowitz@...>

	* Makefile.am (inilint_extras): Remove autoload.c.
	(setup_SOURCES): Ditto.
	(setup_LDADD): Add ntdll and wininet.
	(autoload.o): Remove rule.
	* autoload.c: Remove file.

Index: Makefile.am
===================================================================
RCS file: /cvs/cygwin-apps/setup/Makefile.am,v
retrieving revision 2.93
diff -u -p -r2.93 Makefile.am
--- Makefile.am	3 Mar 2013 10:09:10 -0000	2.93
+++ Makefile.am	4 Mar 2013 07:08:58 -0000
@@ -64,7 +64,6 @@ CLEANFILES = setup_version.c
 
 if MINGWTARGET
 inilint_extras = \
-	autoload.c \
 	mklink2.cc
 else
 inilint_extras =
@@ -105,8 +104,8 @@ inilint_SOURCES = \
 
 regex_SOURCES = regex/regex.c
 setup_LDADD = \
-	libgetopt++/libgetopt++.la -lgcrypt -lgpg-error \
-	-lshlwapi -lcomctl32 -lole32 -lwsock32 -lnetapi32 -lpsapi -luuid -llzma -lbz2 -lz
+	libgetopt++/libgetopt++.la -lgcrypt -lgpg-error -llzma -lbz2 -lz \
+	-lshlwapi -lcomctl32 -lole32 -lwsock32 -lpsapi -luuid -lntdll -lwininet
 setup_LDFLAGS = -mwindows -Wc,-static -static-libtool-libs
 setup_SOURCES = \
 	AntiVirus.cc \
@@ -116,7 +115,6 @@ setup_SOURCES = \
 	archive_tar.cc \
 	archive_tar.h \
 	archive_tar_file.cc \
-	autoload.c \
 	choose.cc \
 	choose.h \
 	compress.cc \
@@ -278,9 +276,6 @@ setup_SOURCES = \
 	csu_util/version_compare.cc \
 	csu_util/version_compare.h
 
-# autoload code does not optimize properly with gcc-4.x
-autoload.o: CFLAGS += -O0
-
 VER := $(shell sed -ne 's/^\$$Revi[s]ion: *\([^ ]*\) *$$.*/\1/p' \
                $(srcdir)/ChangeLog)
 
Index: autoload.c
===================================================================
RCS file: autoload.c
diff -N autoload.c
--- autoload.c	4 Sep 2012 13:55:17 -0000	2.10
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,109 +0,0 @@
-/*
- * Copyright (c) 2000, Red Hat, Inc.
- *
- *     This program is free software; you can redistribute it and/or modify
- *     it under the terms of the GNU General Public License as published by
- *     the Free Software Foundation; either version 2 of the License, or
- *     (at your option) any later version.
- *
- *     A copy of the GNU General Public License can be found at
- *     http://www.gnu.org/
- *
- * Written by DJ Delorie <dj@cygnus.com>
- *
- */
-#if 0
-static const char *cvsid = "\n%%% $Id: autoload.c,v 2.10 2012/09/04 13:55:17 yselkowitz Exp $\n";
-#endif
-
-#define WIN32_LEAN_AND_MEAN
-#define DECLSPEC_IMPORT
-#include <windows.h>
-
-typedef struct {
-  const char *name;
-  HINSTANCE handle;
-} DllInfo;
-
-#define DLL(n) __attribute__ ((used)) static DllInfo n ## _info __asm__ (#n "_info") = { #n, 0}
-
-#define Auto(dll, func, size) \
-	__asm__ ("\t.section .autoload_text,\"wx\""); \
-	__asm__ ("\t.global\t_" #func "@" #size); \
-	__asm__ ("_" #func "@" #size ":"); \
-	__asm__ ("\tcall\tautoload_common"); \
-	__asm__ ("\t.long\t" #dll "_info"); \
-	__asm__ ("\t.ascii\t\"" #func "\\0\"")
-
-DLL (wininet);
-
-Auto (wininet, InternetAttemptConnect, 4);
-Auto (wininet, InternetCloseHandle, 4);
-Auto (wininet, InternetGetLastResponseInfoA, 12);
-Auto (wininet, InternetOpenA, 20);
-Auto (wininet, InternetOpenUrlA, 24);
-Auto (wininet, InternetReadFile, 16);
-Auto (wininet, InternetSetOptionA, 16);
-Auto (wininet, InternetQueryOptionA, 16);
-Auto (wininet, HttpQueryInfoA, 20);
-Auto (wininet, HttpSendRequestA, 20);
-
-DLL (advapi32);
-
-Auto (advapi32, AddAccessAllowedAce, 16);
-Auto (advapi32, AllocateAndInitializeSid, 44);
-Auto (advapi32, FreeSid, 4);
-Auto (advapi32, InitializeAcl, 12);
-Auto (advapi32, OpenProcessToken, 12);
-Auto (advapi32, SetTokenInformation, 16);
-Auto (advapi32, OpenSCManagerA, 16);
-Auto (advapi32, CloseServiceHandle, 4);
-Auto (advapi32, OpenServiceA, 16);
-Auto (advapi32, QueryServiceStatus, 8);
-Auto (advapi32, StartServiceA, 16);
-
-DLL (ntdll);
-
-Auto (ntdll, NtCreateFile, 44);
-Auto (ntdll, NtOpenFile, 24);
-Auto (ntdll, NtClose, 4);
-Auto (ntdll, NtQueryAttributesFile, 8);
-Auto (ntdll, NtQueryInformationFile, 20);
-Auto (ntdll, NtSetInformationFile, 20);
-Auto (ntdll, RtlInitUnicodeString, 8);
-Auto (ntdll, RtlNtStatusToDosError, 4);
-
-typedef struct {
-  DllInfo *dll;
-  char name[100];
-} AutoEntry;
-
-__asm__ ("\t.text");
-
-__attribute__ ((used)) static void autoload_common (int x) __asm__ ("autoload_common");
-
-static void
-autoload_common (int x)
-{
-  int fp, rel;
-  unsigned char *proc;
-  HINSTANCE h;
-  AutoEntry *a;
-  
-  a = *(AutoEntry **)(&x - 1);
-  if (a->dll->handle == 0)
-    {
-      h = LoadLibrary (a->dll->name);
-      a->dll->handle = h;
-    }
-  fp = (int) GetProcAddress (a->dll->handle, a->name);
-  proc = ((unsigned char *)a) - 5;
-  rel = fp - (int)(a); /* now it's a relative call */
-  *proc++ = 0xe9; /* jump near 32-bit relative */
-  *proc++ = rel;
-  *proc++ = rel>>8;
-  *proc++ = rel>>16;
-  *proc++ = rel>>24;
-
-  *(int *)(&x-1) = (int)proc-5;
-}

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]