This info is a fix for a "FIXME" in gcc-4_2-branch/libobjc/Makefile.in
To create libobjc.dll a fix to /cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/Makefile, is needed. This makefile is created from gcc-4_2-branch/libobjc/Makefile.in There is no author name or e-mail given but these words are enclosed in the file: # # FIXME -- The following part does not fit in the libtool context. # Libtool is supposed to [going to] be able to create a win 32 DLL # without extra code but since I don't have a win machine to test # if it already works, I leave the old code here. # #Origonal: # libobjc_s.a: libobjc.la mv libobjc.a libobjc_s.a # Create a relocatable DLL libobjc.dll: libobjc_s.a libobjc_entry.o $(CC) -mdll -Wl,--base-file -Wl,libobjc.base \ -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32 $(DLLTOOL) --dllname libobjc.dll --def $(srcdir)/libobjc.def \ --base-file libobjc.base --output-exp libobjc.exp $(GCC_FOR_TARGET) -mdll -Wl,--base-file libobjc.base libobjc.exp \ -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32 $(DLLTOOL) --dllname libobjc.dll --def $(srcdir)/libobjc.def \ --base-file libobjc.base --output-exp libobjc.exp $(GCC_FOR_TARGET) libobjc.exp -mdll \ -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32 $(DLLTOOL) --dllname libobjc.dll --def $(srcdir)/libobjc.def \ --output-lib libobjc.a # # #New: (change "mv" to "cp ./libs" and add 3 -lobjc 's # libobjc_s.a: libobjc.la cp .libs/libobjc.a libobjc_s.a # mv libobjc.a libobjc_s.a # Create a relocatable DLL libobjc.dll: libobjc_s.a libobjc_entry.o $(CC) -mdll -Wl,--base-file -Wl,libobjc.base \ -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32 -lobjc $(DLLTOOL) --dllname libobjc.dll --def $(srcdir)/libobjc.def \ --base-file libobjc.base --output-exp libobjc.exp $(GCC_FOR_TARGET) -mdll -Wl,--base-file libobjc.base libobjc.exp \ -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32 -lobjc $(DLLTOOL) --dllname libobjc.dll --def $(srcdir)/libobjc.def \ --base-file libobjc.base --output-exp libobjc.exp $(GCC_FOR_TARGET) libobjc.exp -mdll \ -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32 -lobjc $(DLLTOOL) --dllname libobjc.dll --def $(srcdir)/libobjc.def \ --output-lib libobjc.a # # Then, use these commands to run make and create libobjc_entry.o and libobjc.dll: cd /cygdrive/c/gcc-4_2-branch-build/athlon_xp-pc-cygwin/libobjc make libobjc_entry.lo make -i -k libobjc.dll DLLTOOL=dlltool GCC_FOR_TARGET="/cygdrive/c/gcc-4_2-branch-build/gcc/xgcc -B/cygdrive/c/cygwin/lib/gcc/athlon_xp-pc-cygwin/4.1.1/ -B/cygdrive/c/gcc-4_2-branch-build/gcc/ -B/usr/athlon_xp-pc-cygwin/bin/ -B/usr/athlon_xp-pc-cygwin/lib/ -isystem /usr/athlon_xp-pc-cygwin/include -isystem /usr/athlon_xp-pc-cygwin/sys-include" Result (which is likely to be different depending on your initial ./configure and CFLAGS: /bin/sh ./libtool --mode=compile /cygdrive/c/gcc-4_2-branch-build/./gcc/xgcc -B/cygdrive/c/gcc-4_2-branch-build/./gcc/ -B/usr/athlon_xp-pc-cygwin/bin/ -B/usr/athlon_xp-pc-cygwin/lib/ -isystem /usr/athlon_xp-pc-cygwin/include -isystem /usr/athlon_xp-pc-cygwin/sys-include -c -I. -I/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc -I/usr/include -I/include -I/usr/local/include -O2 -march=athlon-xp -ffast-math -mfancy-math-387 -mmmx -m3dnow -msse -msse2 -msse3 -mfpmath=sse,387 -pipe -mthreads -fno-eliminate-unused-debug-types -W -Wall -Wwrite-strings -Wstrict-prototypes -DIN_GCC -DIN_TARGET_LIBS -fno-strict-aliasing -fexceptions -I/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/objc -I/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/../gcc -I/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/../gcc/config -I../.././gcc -I/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/../include -I/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/../boehm-gc/include -I../boehm-gc/include /cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/libobjc_entry.c /cygdrive/c/gcc-4_2-branch-build/./gcc/xgcc -B/cygdrive/c/gcc-4_2-branch-build/./gcc/ -B/usr/athlon_xp-pc-cygwin/bin/ -B/usr/athlon_xp-pc-cygwin/lib/ -isystem /usr/athlon_xp-pc-cygwin/include -isystem /usr/athlon_xp-pc-cygwin/sys-include -c -I. -I/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc -I/usr/include -I/include -I/usr/local/include -O2 -march=athlon-xp -ffast-math -mfancy-math-387 -mmmx -m3dnow -msse -msse2 -msse3 -mfpmath=sse,387 -pipe -mthreads -fno-eliminate-unused-debug-types -W -Wall -Wwrite-strings -Wstrict-prototypes -DIN_GCC -DIN_TARGET_LIBS -fno-strict-aliasing -fexceptions -I/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/objc -I/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/../gcc -I/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/../gcc/config -I../.././gcc -I/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/../include -I/cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/../boehm-gc/include -I../boehm-gc/include /cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/libobjc_entry.c -o libobjc_entry.o /cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/libobjc_entry.c: In function 'DllMain': /cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/libobjc_entry.c:34: warning: unused parameter 'hInst' /cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/libobjc_entry.c:35: warning: unused parameter 'lpReserved' /cygdrive/c/gcc-4_2-branch-build/./gcc/xgcc -B/cygdrive/c/gcc-4_2-branch-build/./gcc/ -B/usr/athlon_xp-pc-cygwin/bin/ -B/usr/athlon_xp-pc-cygwin/lib/ -isystem /usr/athlon_xp-pc-cygwin/include -isystem /usr/athlon_xp-pc-cygwin/sys-include -mdll -Wl,--base-file -Wl,libobjc.base \ -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32 -lobjc dlltool --dllname libobjc.dll --def /cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/libobjc.def \ --base-file libobjc.base --output-exp libobjc.exp /cygdrive/c/gcc-4_2-branch-build/gcc/xgcc -B/cygdrive/c/cygwin/lib/gcc/athlon_xp-pc-cygwin/4.1.1/ -B/cygdrive/c/gcc-4_2-branch-build/gcc/ -B/usr/athlon_xp-pc-cygwin/bin/ -B/usr/athlon_xp-pc-cygwin/lib/ -isystem /usr/athlon_xp-pc-cygwin/include -isystem /usr/athlon_xp-pc-cygwin/sys-include -mdll -Wl,--base-file libobjc.base libobjc.exp \ -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32 -lobjc dlltool --dllname libobjc.dll --def /cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/libobjc.def \ --base-file libobjc.base --output-exp libobjc.exp /cygdrive/c/gcc-4_2-branch-build/gcc/xgcc -B/cygdrive/c/cygwin/lib/gcc/athlon_xp-pc-cygwin/4.1.1/ -B/cygdrive/c/gcc-4_2-branch-build/gcc/ -B/usr/athlon_xp-pc-cygwin/bin/ -B/usr/athlon_xp-pc-cygwin/lib/ -isystem /usr/athlon_xp-pc-cygwin/include -isystem /usr/athlon_xp-pc-cygwin/sys-include libobjc.exp -mdll \ -o libobjc.dll libobjc_s.a libobjc_entry.o -lkernel32 -lobjc dlltool --dllname libobjc.dll --def /cygdrive/C/makecygwin/gcc-4_2-branch/libobjc/libobjc.def \ --output-lib libobjc.a Note: You DO need to define DLLTOOL and GCC_FOR_TARGET since neither is defined and you MUST use 4.1.1's libobjc.a since 4.2.0's libobjc.a does not seem to have the "hash_*" functions. Failing to add "-B/cygdrive/c/cygwin/lib/gcc/athlon_xp-pc-cygwin/4.1.1/" (or wherever the gcc 4.1.1 libobjc.a file is on YOUR system) gives these errors: libobjc.exp:fake:(.edata+0xb0): undefined reference to `_hash_add' libobjc.exp:fake:(.edata+0xb4): undefined reference to `_hash_delete' libobjc.exp:fake:(.edata+0xb8): undefined reference to `_hash_is_key_in_hash' libobjc.exp:fake:(.edata+0xbc): undefined reference to `_hash_new' libobjc.exp:fake:(.edata+0xc0): undefined reference to `_hash_next' libobjc.exp:fake:(.edata+0xc4): undefined reference to `_hash_remove' libobjc.exp:fake:(.edata+0xc8): undefined reference to `_hash_value_for_key' It may be an omission in the gcc-4_2-branch CVS that these functions are unavailable. They are mentioned in the source code in file gcc-4_2-branch/libobjc/libobjc.def and nowhere else. I imagine we need to add these functions from 4.1.1 so 4.2.0 will be able to make this .dll . -- Summary: Fix for FIXME in gcc-4_2-branch/libobjc/Makefile.in Product: gcc Version: 4.2.0 Status: UNCONFIRMED Severity: minor Priority: P3 Component: libobjc AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: rob1weld at aol dot com GCC build triplet: i686-pc-cygwin GCC host triplet: i686-pc-cygwin GCC target triplet: i686-pc-cygwin http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30445