Commit Graph

220 Commits

Author SHA1 Message Date
Alexandre Julliard a999a990fe Create an assembly file with all undefined symbols and add it to the
link command so that the symbols show up in the final undefined list.
Use that list to create thunks for all exported but undefined symbols,
to make sure all export RVAs point somewhere inside the module.
2005-09-19 17:04:43 +00:00
Alexandre Julliard 89024a63d3 Make the users of wine_call_from_32_regs save %eax so that we don't
need a special hack in the import thunk.
Added a get_pc_thunk_eax function to simplify the code a bit.
2005-09-18 11:13:54 +00:00
Alexandre Julliard 80083b18f8 Store RVAs instead of pointers wherever possible in the generated NT
header and directories.
2005-09-17 14:39:51 +00:00
Alexandre Julliard 13baa7b364 Added a common function to declare global symbols, and make them
hidden on platforms that support it.
2005-09-15 18:48:39 +00:00
Alexandre Julliard 9f49889188 Now that everything is done in assembly in the spec file, directly
generate a .s file to bypass gcc inefficiency with large data
structures.
2005-09-15 15:01:30 +00:00
Alexandre Julliard 41177ca0bd Output the resource data in assembly too. 2005-09-15 09:42:22 +00:00
Alexandre Julliard 8aba0897bd Output constant strings in a more appropriate section than .text. 2005-09-14 19:18:05 +00:00
Alexandre Julliard 3fa5678ea9 Generate stub functions directly in assembly. 2005-09-14 15:49:45 +00:00
Alexandre Julliard 43bd5512c3 Added support for 64-bit format NT header and export/import tables. 2005-09-08 11:35:19 +00:00
Alexandre Julliard c382ed06d3 Added a bit of framework for future x86_64 support. 2005-09-07 13:31:37 +00:00
Alexandre Julliard e6c7669226 Generate the NT header in assembly instead of using a C structure. 2005-09-07 11:44:16 +00:00
Alexandre Julliard 2aa9e201b2 Output the delayed import table using assembly too. 2005-09-03 15:39:13 +00:00
Alexandre Julliard 932ecb24eb Output the import directory using assembly instead of C structures. 2005-09-02 15:36:03 +00:00
Alexandre Julliard ce20722109 Moved the spec file init function and constructor to winecrt0. 2005-09-02 14:43:03 +00:00
Alexandre Julliard 68f177364d Avoid using common symbols, they are broken on Mac OS. 2005-08-29 21:49:57 +00:00
Alexandre Julliard 0628c7eba6 Moved more of the spec initialization code to the winecrt0 library,
and get rid of implicit kernel32 imports.
2005-08-29 14:16:27 +00:00
Alexandre Julliard d4098549bb Moved the delay loading support code to the winecrt0 library. 2005-08-25 19:37:51 +00:00
Alexandre Julliard b6b180a16d Moved the implementation of spec file stubs to the winecrt0 library. 2005-08-25 15:27:44 +00:00
Alexandre Julliard 71ae2d7bed Beginnings of a crt0 library. 2005-08-25 11:41:05 +00:00
Alexandre Julliard 5370981e06 The exported name strings should be inside the export directory (found
by Vitaliy Margolen).
2005-08-23 20:08:37 +00:00
Alexandre Julliard 6d8567824f Print a warning when a generated import library doesn't export
anything useful.
2005-07-26 18:57:19 +00:00
Alexandre Julliard aeb4e6e5d2 Get rid of the global debugging flag. 2005-07-05 12:52:57 +00:00
Alexandre Julliard 706a0a9e59 Replace configure macros by explicit platform checks (probably not
correct on all platforms yet).
2005-06-29 20:18:58 +00:00
Alexandre Julliard 445fb59802 Replaced all uses of the __ASM_NAME macro by the asm_name function to
allow run-time determination of the correct format.
2005-06-27 18:59:54 +00:00
Alexandre Julliard 803c8d9693 Beginnings of an infrastructure to allow specifying the target CPU and
platform at run-time.
2005-06-27 11:23:24 +00:00
Wolfgang Thaller 84c8bf5340 Winebuild darwin/x86-specific fixes:
- Assembler interprets .align as power-of-two
- Add .weak_reference to output where gcc 3.3 swallows it
2005-06-20 11:43:16 +00:00
Alexandre Julliard 399300a143 Output the exported names as a C string so that they end up in the
correct section.
2005-06-16 10:43:19 +00:00
Pierre d'Herbemont db134ece39 Use .mod_*_func sections on Mac OS X/i386 instead of the elf
constructor/destructor.
2005-06-10 19:58:26 +00:00
Alexandre Julliard 25c5fe33ba Reuse output_dll_init for the constructor of debug files. 2005-06-10 19:56:05 +00:00
Alexandre Julliard 5c9b7cf55f Moved all assembly code to the end of the generated C files to avoid
conflicting with the compiler over section changes.
2005-06-06 15:59:50 +00:00
Alexandre Julliard 520a7af933 Switch back to .data at the end of asm sections to work around an
optimization in recent gcc versions.
2005-06-05 21:08:51 +00:00
Alexandre Julliard a583b2570b Generate the resource data directly inside the resource directory. 2005-06-05 18:36:24 +00:00
Alexandre Julliard 5ea0dd6d5f Free delayed import modules on PROCESS_DETACH. 2005-05-24 10:13:30 +00:00
Alexandre Julliard c0d2377565 Removed no longer used support for 32-bit register entry points. 2005-05-07 18:47:22 +00:00
Alexandre Julliard 300240bf96 Use the correct file name in the "generated automatically" comments. 2005-03-15 15:42:32 +00:00
Francois Gouget 4d801b66e6 Assorted spelling fixes. 2005-02-10 19:19:35 +00:00
Vincent Béron 2c1b35dd17 Add some more Alpha asm code and Alpha-specific parts. 2004-10-18 21:27:52 +00:00
Pierre d'Herbemont 75c3c37b17 Darwin/Mac OS X Weak import workaround. 2004-07-15 18:58:42 +00:00
Pierre d'Herbemont 3d60a19287 Hide the _init and _fini wrappers on darwin. 2004-06-17 19:58:59 +00:00
Alexandre Julliard 32e31ac7c4 Automatically detect whether the entry point is main or WinMain
instead of depending on the subsystem type.
2004-04-08 04:41:14 +00:00
Alexandre Julliard 4cf091ab09 Replaced the --mode winebuild option by a --subsystem option for
better compatibility with the PE binutils.
2004-03-25 00:40:52 +00:00
Alexandre Julliard d1e0782c9e Removed the Unicode exe modes, and instead detect automatically which
mode to use based on the existence of main or wmain.
2004-03-24 03:39:57 +00:00
Pierre d'Herbemont 0ba5ade849 Darwin support for _init/_fini functions and _end symbol. 2004-03-22 21:12:23 +00:00
Marcus Meissner d496eb08e7 No need to check for DllEntryPoint style constants. 2004-02-16 20:24:32 +00:00
Alexandre Julliard 5e4a5beccb Added native mode dll support (based on a patch by Marcus Meissner). 2004-02-13 22:42:13 +00:00
Alexandre Julliard 8611e654fc Store all information about the current dll in a structure instead of
using global variables to make it easier to reuse the parsing
routines.
2004-02-11 06:41:01 +00:00
Alexandre Julliard f33de52f5e Tweaked the init code so that it works properly no matter what linker
options are used.
2004-01-15 04:58:17 +00:00
Alexandre Julliard 3604824262 If supported by the linker, prevent the ELF loader from calling the
dll constructors at load time and call them from the dll entry point
instead.
2004-01-08 03:36:53 +00:00
Alexandre Julliard 18b4cbf12a Put better values for code and data sizes in the NT header of builtin
dlls.
2003-11-03 22:19:44 +00:00
Alexandre Julliard 03711317de Better defaults for heap and stack sizes. 2003-10-30 22:49:01 +00:00
Pierre d'Herbemont 6661f30409 Change mctr PowerPC asm instruction to mtctr. Add Support for the
.text section and the .space section of darwin's ld.
2003-10-24 00:27:27 +00:00
Alexandre Julliard 60c857e19c Store the dll name for the export directory inside the exported names
list.
2003-09-26 04:36:46 +00:00
Alexandre Julliard e37c6e18d0 Fixed header dependencies to be fully compatible with the Windows
headers (with help from Dimitrie O. Paun).
2003-09-05 23:08:26 +00:00
Alexandre Julliard e547e10be0 Make sure dllname doesn't get optimized out (spotted by Marcus
Meissner).
2003-08-02 00:45:34 +00:00
Alexandre Julliard 152b98fa63 Added -private flag for entry points that shouldn't be imported from
other dlls.
Support PRIVATE flag in .def files (based on a patch by Jon
Griffiths).
2003-07-28 19:19:48 +00:00
Alexandre Julliard 08dfb8c91a Don't output register function code if it's a forwarded entry point. 2003-04-03 18:05:17 +00:00
Alexandre Julliard 9e4fc4c9b6 Converted winebuild option parsing to use getopt_long. Added a number
of long aliases for the existing short options.
2003-03-23 01:12:30 +00:00
Christian Costa f814cf87af Make use of .half and/or .asciiz assembler keywords when necessary. 2003-03-23 00:18:26 +00:00
Alexandre Julliard 49edd19650 Handle end of line as a syntactic element in the spec file parser;
backslashes can be used to continue lines. This allows us to skip over
errors to continue parsing, and also to make specification of an entry
point link name optional.
2003-03-18 05:30:54 +00:00
Alexandre Julliard f489a272d2 Removed support for the 'forward' ordinal type. 2003-03-17 04:56:10 +00:00
Alexandre Julliard 52ec0a3ff3 Disable 'variable' in Win32 spec files.
Added support for forwarded 'extern' ordinals.
2003-03-17 00:02:11 +00:00
Alexandre Julliard 470cbf2757 Added support for defining forward functions as stdcall so that we can
get the proper number of arguments for stdcall decoration.
2002-12-15 01:22:40 +00:00
Alexandre Julliard ada5e6521b Implemented import libraries; on Unix we import the .def file
directly, on Mingw we use it to build the .a library.
2002-12-12 22:03:14 +00:00
Alexandre Julliard b42dc56fce Made stdcall decoration in .def files the default, and added -k option
to switch it off.
2002-12-12 04:06:28 +00:00
Alexandre Julliard 72e1c64345 Added list of symbols to ignore by default in winebuild.
Made the -i option support removing ignored symbols too.
Removed the -noimport flag in spec files.
2002-12-12 02:20:47 +00:00
Alexandre Julliard 1e1313d54c Made the dll entry point default to DllMain and removed most of the
'init' spec file declarations.
2002-11-04 23:53:41 +00:00
Alexandre Julliard 07f736bc3d Hack to detect register functions automatically so that relay debug
also works for functions using the DEFINE_REGS_ENTRY_POINT macros.
2002-11-04 22:50:24 +00:00
Alexandre Julliard 4ce72031a0 Don't list register functions in the .def file. 2002-10-09 20:28:06 +00:00
François Gouget ebd110bc6a Fix command-line parsing for Winelib applications. 2002-08-15 23:21:03 +00:00
Marcus Meissner f0b8fe562e The text section alignment should be default, not 1. 2002-08-15 21:47:27 +00:00
Alexandre Julliard 124eaf809c Builtin modules must be aligned on 64K boundary. 2002-08-14 21:09:55 +00:00
Alexandre Julliard 1862a67d2d In -spec and -exe mode, accept multiple object files and link them
together internally to find the undefined symbols.
In -glue mode, accept multiple C files and generate a single glue
file for all of them.
2002-08-01 18:34:12 +00:00
Alexandre Julliard 15a75259bd Added support for importing by ordinal. 2002-07-28 17:54:31 +00:00
Alexandre Julliard d25878f28e Put correct ordinal hints in the import table. 2002-07-25 00:25:40 +00:00
Alexandre Julliard 65c6d38581 Replace all uses of PREFIX and @function by the __ASM_NAME and
__ASM_FUNC macros.
2002-07-22 20:47:11 +00:00
Gregg Mattinson 803eb16dfa - Replaced .previous with a .section statement for the appropriate
section.
- '.section .text' is incorrect.  It should be '.section ".text"'.
2002-07-05 00:20:42 +00:00
Alexandre Julliard 77afd6c47e Made some more spec file entries optional or unnecessary.
Fixed a few DLLName/DLLFileName mismatches.
2002-06-21 19:15:45 +00:00
Alexandre Julliard cceab98642 Unregister 16-bit dlls on module unload. 2002-06-14 23:42:53 +00:00
Alexandre Julliard 476aabc95a Do not output stubs in the .def file. 2002-05-19 22:29:34 +00:00
Alexandre Julliard bf90f4db87 Adapted to use the argc/argv variables from libwine.
Automatically import libraries that contain the symbols that the
.spec.c file is using.
2002-05-16 23:17:37 +00:00
Alexandre Julliard ad53383f9b Added winebuild support for generating a .dbg.c file containing the
debug channels definitions.
Made win32 the default type for spec files.
Ignore C compiler in winebuild so we can simply pass it $(DEFS).
Removed type win32 and debug_channels from spec files.
Fixed winebuild to always generate correct C identifiers (reported by
Vincent Béron).
2002-05-14 20:54:58 +00:00
Alexandre Julliard 894b188fcf Moved __ASM_GLOBAL_FUNC macros and interlocked functions to port.[ch] 2002-04-25 21:40:56 +00:00
Alexandre Julliard c1bfca04e1 Changed builtin dlls file names to make it clear they are not normal
Unix libraries, and install them in $libdir/wine instead of $libdir to
avoid name conflicts in /usr/lib.
2002-03-20 22:19:06 +00:00
Patrik Stridvall 235da7975b Made winebuild (almost) compile and work on Windows. 2002-03-11 05:09:02 +00:00
Alexandre Julliard 0799c1a780 Added LGPL standard comment, and copyright notices where necessary.
Global replacement of debugtools.h by wine/debug.h.
2002-03-09 23:29:33 +00:00
Dmitry Timoshkov 93a5b8681d Support for generation of .def files from .spec files. 2002-02-04 18:48:18 +00:00
Alexandre Julliard 7662ea1004 Made register and interrupt flags instead of entry point types, so
that we can have both stdcall and cdecl register functions.
Changed 16-bit .spec.c file generation to avoid including builtin16.h.
2001-12-14 23:14:22 +00:00
Alexandre Julliard eb9a863116 Exported CALL32_Regs from ntdll, renamed to __wine_call_from_32_regs
to follow the naming convention for this type of functions.
Split 16 and 32-bit relay functions into separate files, and moved the
32-bit ones to dlls/ntdll.
2001-12-11 00:50:33 +00:00
James Juran 49c779a862 Prevent warnings about labels at end of switch statements when
compiling with gcc-3.x.
2001-11-19 02:24:14 +00:00
Francois Gouget e5ddd26dd7 When including config.h, include it first. 2001-10-14 16:18:52 +00:00
Alexandre Julliard 5b1e934218 Avoid including winbase.h in generated .spec.c files. 2001-10-02 20:32:58 +00:00
Alexandre Julliard 3581865229 Support for specifying stack size of Winelib apps. 2001-06-07 22:29:03 +00:00
Dmitry Timoshkov 3724de93d7 Fixed some issues. 2001-05-22 19:55:51 +00:00
Jeff Garzik f46eb1db43 Added some inclusions of string.h where necessary. 2001-03-21 20:30:46 +00:00
Josh DuBois 0b64cfb3f7 More portable .align directive.
Ignore -delay directive on ppc only.
Added code to call the dll constructors.
2001-02-13 02:06:38 +00:00
Ulrich Weigand 0108d83818 Fixed winebuild to work on non-Intel architectures. 2000-12-29 05:17:33 +00:00
Jon Griffiths 38e5a6c425 Allow stubs for exports that are not legal C identifiers. 2000-12-29 03:26:27 +00:00
Alexandre Julliard 66fed8cb2d Allocate entry points dynamically to allow for a larger number of
ordinals.
2000-12-15 23:04:40 +00:00
Alexandre Julliard 909eff9932 Added support for Unicode applications in winebuild.
Removed cuiexe_no_main hack.
Avoid stdcall function declarations inside functions because of gcc bug.
2000-12-15 03:38:11 +00:00
Alexandre Julliard 2a37decc39 Output the exports table in assembly code to make it possible to
export C++ mangled names.
2000-12-11 03:42:20 +00:00
Alexandre Julliard 9fd831f68a Don't make the spec file constructors static so that they don't get
optimized out.
2000-12-06 20:18:35 +00:00
Alexandre Julliard 218188c2d2 Always put the dll constructor in the .init section, and like the
.spec.o file first to ensure correct calling order of the constructors.
2000-12-02 20:38:47 +00:00
Dimitrie O. Paun 31b6d090df Modified winebuild to use the __ASM_FUNC macro for greater portability. 2000-12-01 21:27:43 +00:00
Alexandre Julliard 1a5e22f558 Set debugging option based on NO_TRACE_MSGS define. Only output 32-bit
relay stubs if debugging is on.
2000-11-27 23:48:08 +00:00
Alexandre Julliard 39b3195ce6 Added entry point flags -noimport, -norelay, -ret64 and -i386.
Replaced 'byte', 'word' and 'long' by 'variable' and made it work for
Win32 too.
Made parser more robust against truncated files.
2000-11-26 04:31:48 +00:00
Alexandre Julliard 3570bfd41f Do not warn for unused imported dlls when forwards to the same dlls
are present.
2000-11-13 04:46:34 +00:00
Alexandre Julliard f3a15607ad Don't include wine internal functions in the relay debugging table. 2000-11-13 04:17:25 +00:00
Alexandre Julliard 0a8114c152 Raise an exception for unimplemented 16-bit entry points too.
Added check for duplicate names in 16-bit spec files.
2000-11-12 03:45:55 +00:00
Joerg Mayer abe635cfd7 Get rid of some warnings about unused variables, signed/unsigned
comparisons and incomplete initializations.
2000-11-11 00:38:37 +00:00
Alexandre Julliard 000c13a0da Added support in winebuild for resolving function imports (-sym option).
Added -L option for locating imported dlls.
Changed generated exe init code to use __wine_get_main_args.
2000-11-09 20:31:18 +00:00
Alexandre Julliard e087508f57 Moved builtin dll registration to libwine.
Changed process initialization to not load imported dlls too early.
2000-11-08 04:33:20 +00:00
Alexandre Julliard 9a634693e7 Added debug_channels support. 2000-11-05 04:49:13 +00:00
Alexandre Julliard 634824be58 Raise an exception when a stub entry point is called. 2000-10-26 22:03:34 +00:00
Alexandre Julliard 003e24cadc Added support for loading Win32 .res files. 2000-10-23 21:33:06 +00:00
Joerg Mayer 959d73e8dd Reduce the number of warnings about missing initializers. 2000-10-22 23:56:32 +00:00
Alexandre Julliard a83784944b Added stdcall64 entry point type to allow correct relay debugging
support for functions that return 64-bit values.
2000-10-01 01:33:50 +00:00
Alexandre Julliard c585a501d9 Changed the Win32 dll descriptor to be in IMAGE_NT_HEADERS format.
Generate the import table directly in PE format.
Added gui/cuiexe_no_main modes in EXE spec files, and use this for the
main wine binary.
2000-09-27 23:40:43 +00:00
Alexandre Julliard a80d8c6cf0 Generate Win32 dll descriptor structure in the .spec.c file so that we
don't need to depend on builtin32.h.
2000-09-27 01:20:01 +00:00
Hidenori Takeshima 34e10ee30f GetCommandLine should return non-const strings. 2000-06-24 13:37:05 +00:00
Alexandre Julliard e482eebf2f Split the build program in several files.
Renamed it 'winebuild' to avoid possible conflicts.
Cleaned up command-line parsing.
Make it understand -fPIC instead of -pic.
Merged call16.s and call32.s generated files.
2000-06-23 20:15:35 +00:00