Commit Graph

282 Commits

Author SHA1 Message Date
Alexandre Julliard 1abf809099 winebuild: Generate MS-style imports using the OriginalFirstThunk field. 2008-09-04 21:52:58 +02:00
Simon Richter 238e1868b2 winebuild: Fix import stub on ppc.
The address calculation was wrong, as the addition of the lower 16 bits
is a signed addition, so if bit 15 is set, the upper 16 bits need to be
incremented by one (so the hi portion of the symbol always references
the symbol + 0x8000).
2008-06-02 12:33:47 +02:00
Alexandre Julliard 195356c098 winebuild: Also optimize out imports that are only used for forwards. 2007-12-06 21:44:45 +01:00
Alexandre Julliard e6fe7341f5 winebuild: Improved checks for missing forward entry point targets. 2007-12-06 21:43:41 +01:00
Alexandre Julliard 32fc1acb1c winebuild: Print a warning when failing to import a data export. 2007-12-06 21:43:41 +01:00
Alexandre Julliard c32e02e48d winebuild: Add a few nops to stub entry points to make Safedisc happy. 2007-11-07 20:36:04 +01:00
Rob Shearman 5fcc5d3f62 winebuild: Refer to strings used in generated stubs by symbol rather than by offset to avoid problems when the compiler aligns the strings by 2 or more bytes. 2007-04-25 12:44:16 +02:00
Dmitry Timoshkov d57872567d winebuild: Check if a given forward does exist in one of the imported dlls, fix a couple of problems detected. 2007-04-09 12:19:31 +02:00
Andrew Talbot 5df3ff13e7 winebuild: Replace inline static with static inline. 2007-03-17 20:05:12 +01:00
Joris Huizer c9f1452233 winebuild: sign-compare fixes. 2007-03-05 15:31:48 +01:00
Andrew Talbot 80294709c5 winebuild: Cast-qual warning fix. 2006-10-12 11:33:09 +02:00
Alexandre Julliard 715804999e winebuild: Added output() function to properly deal with write errors. 2006-08-11 20:41:29 +02:00
Ge van Geldorp 7a15278504 winebuild: Save registers which might contain parameters for the function to be called. 2006-07-11 17:16:06 +02:00
Jonathan Ernst 360a3f9142 Update the address of the Free Software Foundation. 2006-05-23 14:11:13 +02:00
Alexandre Julliard 88bf4d61c3 winebuild: Disable linking to external symbols by default. 2006-04-18 20:49:29 +02:00
Alexandre Julliard 02a9bc0094 winebuild: Fixed index in module table for delayed imports. 2006-04-18 11:23:49 +02:00
Alexandre Julliard 433bbdf08a winebuild: Get rid of the default ignored symbols list. 2006-01-24 12:29:31 +01:00
Alexandre Julliard 3f0a473fb7 winebuild: Always import atof, the MS version is different. 2006-01-23 11:27:04 +01:00
Alexandre Julliard 5dc6d95952 ntdll: New implementation of relay thunks.
New implementation of relay thunks that doesn't require modifying code
on the fly, so that the thunks can be put in the text section.
Some performance improvements.
2005-12-18 10:45:01 +01:00
Alexandre Julliard cc01e8ff05 Preserve 16-byte stack alignment in the various assembly
functions. Needed for MacOSX.
2005-11-23 19:55:06 +01:00
Simon Richter 9aa432346c Fix winebuild's ppc assembly generation. 2005-10-24 15:01:18 +00:00
Alexandre Julliard 2aae74dff0 Factor out a couple of useful helper functions. 2005-09-21 11:50:04 +00:00
Alexandre Julliard 3cd7379d26 Moved stub function generation to import.c. Added a get_stub_name
function to ensure naming consistency.
2005-09-21 10:57:04 +00:00
Alexandre Julliard 5173234ea8 Now that we have to be able to run the assembler from winebuild, added
an option to generate a .spec.o file in a single step.
Added --save-temps and --verbose options for easier debugging.
2005-09-21 10:22:28 +00:00
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 87c347b18e Don't remove ignored symbols from the undefined list, simply skip them
when resolving imports.
Added get_temp_file_name utility function.
2005-09-19 15:24:13 +00:00
Alexandre Julliard 96508ad686 Moved return value handling to the individual relay thunks so that we
only need one version of wine_call_from_16.
Patch the wine_call_from_16 address along with the cs value directly
in the 16-bit code segment to avoid the need for special magic in the
import thunks.
2005-09-18 12:25:22 +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 8c6649e457 Implemented import thunks for x86-64. 2005-09-16 19:39:42 +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 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 d1c5f68dca Added an entry point routine for native drivers. 2005-09-02 15:19:42 +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 2b87c82e76 Added a --undefined option to allow forcing some symbols to be
resolved by the linker.
2005-08-19 11:28:56 +00:00
Alexandre Julliard ec1cdfd12b Added some general purpose routines for managing list of symbol
names.
2005-08-19 10:25:22 +00:00
Alexandre Julliard 646f17f249 Implemented DelayLoadFailureHook and use it in the winebuild-generated
delay load code.
2005-08-12 16:00:42 +00:00
Steve Zellers e51ffce568 Fixed leftover import table name in output_import_thunk. 2005-07-13 11:39:12 +00:00
Alexandre Julliard deaec125ca Don't use the full 32 bits of %esp when called from 16-bit code. 2005-07-01 19:18:46 +00:00
Alexandre Julliard 89503c182a Added a --target option to allow cross-compilation. 2005-07-01 16:17:44 +00:00
Alexandre Julliard 47286920b6 Improve a bit the assembly generated for import thunks. 2005-07-01 15:49:39 +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 32984a640e Use __ASM_NAME and HAVE_ASM_DOT_SIZE in a few places in winebuild
where they have been missing (needed for Darwin/x86).
2005-06-20 13:38:39 +00:00
Alexandre Julliard 190f845cb1 Make import thunks position-independent to avoid text relocations. 2005-06-16 20:51:50 +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 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 c700f90e63 Use RaiseException instead of RtlRaiseException for delayed entry
points load failure to avoid creating a dependency on ntdll.
2005-05-07 15:06:30 +00:00
Alexandre Julliard 2dabac08ee Added support in winebuild for specifying import libraries directly on
the command line without the -l option.
Changed the -d option to only mark the library as delayed, the actual
loading is now done separately.
2005-05-06 15:54:41 +00:00
Marcus Meissner 87f27ffe08 Put generated import table code into .text segment. 2005-02-09 14:06:32 +00:00
Vincent Béron 2c1b35dd17 Add some more Alpha asm code and Alpha-specific parts. 2004-10-18 21:27:52 +00:00
Vincent Béron baeec1f404 Don't use magic sizes, actually calculate them. 2004-10-14 00:26:08 +00:00
Alexandre Julliard b4c7e6c7e2 Added --ld-cmd and --nm-cmd options in winebuild, and make winegcc
pass the proper ld command.
2004-10-08 21:11:18 +00:00
Marcus Meissner b2c9c61561 Use "LD" instead of "ld" in winebuild to be able to use a different ld
or ld options.
2004-07-29 02:34:15 +00:00
Pierre d'Herbemont c5cbf7157c - Be more accurate on Darwin stack size.
- Delay import fix on PowerPC hosts.
2004-07-15 18:57:57 +00:00
Pierre d'Herbemont 390f97a0e6 Delayed import fix for Darwin and PowerPC Host. 2004-07-14 21:42:18 +00:00
Pierre d'Herbemont 68467db6c6 - Detection of .size instruction.
- Detection of the assembler name prefix.
2004-06-18 19:36:26 +00:00
Eric Pouech d3f8f78c3a - added size information about most of the generated thunks (import,
16/32 relay...)
- marked the wine thunks by inserting specific symbols (to be managed
  by wine's dbghelp)
- removed the stabs generation:
  + mostly used by winedbg, and the previous item will replace it for
    dbghelp
  + still broken for gdb anyway
- enhanced const correctness
2004-05-18 21:27:44 +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
Richard Cohen b9a12ad3b7 Remove . from default library search path. 2004-03-17 20:48:44 +00:00
Alexandre Julliard 492ac292b9 Added support for building a dll from a .def file for cases where we
don't want to write a full .spec.
Renamed --spec option to --dll for consistency.
2004-02-17 20:36:16 +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
Robert Shearman 932a102dcd Fix proc name reported in delay load failure. 2004-02-09 20:58:42 +00:00
Alexandre Julliard 0b19a6f7bc Better support for div and ldiv in Winelib apps. 2003-11-28 23:17:28 +00:00
Pierre d'Herbemont e961418bcf Fix PowerPC assembler syntax mistakes. 2003-10-27 22:04:54 +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 346ca95af6 Support for Mac OS X powerpc register names (based on a patch by
Pierre d'Herbemont).
2003-08-13 21:57:42 +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 28b64db6d5 Only print warning on nm failure because it fails on darwin if there
are no symbols (reported by Pierre d'Herbemont).
2003-05-14 19:36:28 +00:00
Alexandre Julliard 6d1f9b037d Ignore "U " in nm -u output. 2003-04-10 18:36:40 +00:00
Alexandre Julliard 2ee8b5bb13 Replaced mkstemp by mkstemps from libiberty.
Removed a couple of unnecessary portability functions.
2003-03-20 21:07:49 +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 daecaba4a3 Don't enter an imported dll in the import table at all if we didn't
need to import any symbol from it.
2003-03-16 23:59:48 +00:00
Alexandre Julliard 9ba2e89ae5 Don't ignore sprintf/sscanf imports, semantics are not exactly the
same on Windows.
2002-12-20 00:36:18 +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 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
Eric Frias 1046fe3051 Added quotes to assembly language output. 2002-11-06 22:07:38 +00:00
Alexandre Julliard f08b186373 Try to derive temp file names from output file names for better
portability.
2002-08-27 22:29:26 +00:00
Marcus Meissner 7678791d92 Implemented delayed import assembler thunks for PPC. 2002-08-20 00:00:49 +00:00
Dmitry Timoshkov c63d98038a Include protection for <unistd.h>, <sys/types.h> and <sys/stat.h>. 2002-08-17 18:28:43 +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
Vincent Béron 9a62491660 Removed trailing whitespace. 2002-05-31 23:06:46 +00:00
Alexandre Julliard 5e47acbc6d Only add extra symbols if they are not already exported by this dll. 2002-05-25 21:09:15 +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 67371bcc8d Added -res option to specify resources on winebuild command-line.
Added -exe mode to generate a .spec.c for an exe without having to
provide a .spec.
Removed some no longer needed spec files.
Removed .dll extension in makefiles import specifications.
2002-05-11 23:06:32 +00:00
Alexandre Julliard 32459912dc Moved imports specification from the .spec into the Makefile so that
it can be used on platforms that don't build a .spec.c file.
2002-05-09 00:05:48 +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
Clemens 37d960faee Should process the .dynsym of shared libraries instead of the .stab. 2002-01-29 02:58:20 +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
Francois Gouget e5ddd26dd7 When including config.h, include it first. 2001-10-14 16:18:52 +00:00
Dmitry Timoshkov 3724de93d7 Fixed some issues. 2001-05-22 19:55:51 +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
Jon Griffiths 4ab1558d8a - Remove <string.h> from winnt.h.
- ntdll: complete crt functions, prevent libc imports, fix sscanf.
2001-01-22 02:17:29 +00:00
Ulrich Weigand 3e08d4608e Delayed import thunks for Sparc. 2001-01-02 22:22:12 +00:00
Ulrich Weigand 775fc630da Fixed builtin imports broken by latest change. 2000-12-29 17:44:40 +00:00
Ulrich Weigand 0108d83818 Fixed winebuild to work on non-Intel architectures. 2000-12-29 05:17:33 +00:00
Eric Pouech 5e32d16628 Added ability to delay loading of an imported DLL until it's needed
(new -delay option for import directive in spec file).
2000-12-26 01:22:34 +00:00
Patrik Stridvall 35d288bca1 Solaris fixes. 2000-12-18 03:13:52 +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
Jon Griffiths 4f12e61ca7 Added "ignore" directive for skipping individual symbol resolution. 2000-12-14 22:18:22 +00:00
Eric Pouech 0335095f5d Now prints line number for 'x.dll imported but no symbols used' warning. 2000-12-06 03:32:26 +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
Marcus Meissner c9ea5f1aeb The __wine_call_from_16_ calls in the import table should use a valid
segment for dereferencing their pointer (using CS).
2000-11-26 04:02:09 +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 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
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 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