Commit Graph

358 Commits

Author SHA1 Message Date
Alexandre Julliard 5cb97d833a Generate 16-bit spec files as assembly code too. 2005-09-21 14:23:54 +00:00
Alexandre Julliard 2aae74dff0 Factor out a couple of useful helper functions. 2005-09-21 11:50:04 +00:00
Alexandre Julliard 210bd2dd94 Make sure that values of absolute symbols fit in 16 bits. 2005-09-21 11:10:54 +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 c5c6968e96 Fixed stack offset of %eax register. 2005-09-20 11:38:29 +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 7a52190c03 Take into account -noname functions when checking for duplicate export
names. Fixed a couple of issues found by the stricter check.
2005-09-19 14:44:28 +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 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 261e376495 Fixed a number of pointer to integer conversions that wouldn't work
right on a 64-bit platform.
2005-09-12 15:14:06 +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 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 d13b99d5f9 Compute the ordinal base and limit in assign_ordinals instead of doing
it while parsing.
2005-08-29 15:15: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 9c708060d3 Use __wine_unimplemented_stub from crt0 for 16-bit spec files too. 2005-08-29 10:50:26 +00:00
Alexandre Julliard 5f95aa0c53 Get rid of the unused owner_name field. 2005-08-29 09:40:11 +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 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
Alexandre Julliard 88aa4b524d Byteswap the resources if we detect that the header is in the wrong
endianness.
2005-08-10 13:04:23 +00:00
Alexandre Julliard d5d8967f69 Added a warning for DllGetVersion and DllInstall not being declared
private. Also warn when one of the Dll* functions is using a different
internal name.
2005-08-09 10:24:05 +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
Steve Zellers e51ffce568 Fixed leftover import table name in output_import_thunk. 2005-07-13 11:39:12 +00:00
Marcus Meissner 2d7e976eed Fixed signedness warnings. 2005-07-10 17:45:53 +00:00
Alexandre Julliard 7c91993eba Don't depend on ELF features for PIC code.
A couple of optimizations.
2005-07-05 21:06:00 +00:00
Mike McCormack 723ee0a3bc gcc 4.0 -Wpointer-sign fixes. 2005-07-05 14:26:54 +00:00
Alexandre Julliard aeb4e6e5d2 Get rid of the global debugging flag. 2005-07-05 12:52:57 +00:00
Alexandre Julliard 2b33634018 Intercept functions for 16-bit relay debugging by patching the
CALLFROM16 table instead of having the wine_call_from_16 functions
call out the relay functions explicitly.
2005-07-05 12:52:07 +00:00
Alexandre Julliard e56d9deac4 Added vararg argument type so that the relay code can distinguish from
a normal cdecl function.
Don't rely on the relay thunk preserving the stack pointer.
2005-07-05 11:50:40 +00:00
Alexandre Julliard 1a0f2863db Moved all 16-bit relay code to the text section.
Changed a few symbol names for better consistency.
2005-07-03 11:28:44 +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 71914125ce Moved most of the implementation of CALL32_CBClient(Ex) to the C
code.
2005-07-01 16:24:32 +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
Phil Krylov 4f9f7f131c Fixed winebuild operation in Darwin. 2005-06-30 11:00:28 +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
Alexandre Julliard f51496a232 Remove some i386 ifdefs for 16-bit entry points since they are no
longer used by default on other platforms anyway.
2005-06-25 18:34:00 +00:00
Alexandre Julliard 63e9a42b0b Allocate ordinals in the order of the declarations in the spec file. 2005-06-23 16:46:20 +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
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 190f845cb1 Make import thunks position-independent to avoid text relocations. 2005-06-16 20:51:50 +00:00
Alexandre Julliard 27e868e9ad Generate proper PIC code for CALL32_CBClient. 2005-06-16 15:57:36 +00:00
Alexandre Julliard efcc2b83d8 Store a relative pointer for registry entry points to avoid some text
relocations.
2005-06-16 11:04:41 +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 70d0439905 Moved the generated code segment for 16-bit builtins inside the module
structure.
Get rid of the BUILTIN16_DESCRIPTOR structure and directly register
the MZ header instead.
2005-05-23 12:07:15 +00:00
Alexandre Julliard 1970e467d4 Generate 16-bit resources in the proper format inside the module data,
and get rid of the special case for builtins in NE_DefResourceHandler.
2005-05-20 19:19:01 +00:00
Alexandre Julliard dea3a11c6c Use RaiseException instead of RtlRaiseException in 16-bit spec files
since they already depend on kernel32.
2005-05-19 12:51:12 +00:00
Alexandre Julliard 3d5c3609c7 Renamed __wine_(un)register_dll_16 to __wine_dll_(un)register_16 for
consistency with the 32-bit version, and also make the register
function use the same prototype as the 32-bit one.
2005-05-19 12:44:31 +00:00
Alexandre Julliard 67204137ee Generate the 16-bit module header in the standard on-disk format, so
that winebuild doesn't need to know about kernel internal structures.
2005-05-18 18:21:59 +00:00
Alexandre Julliard e8a23c9572 Use the exported IMAGE_OS2_HEADER to generate the module header in the
spec file, and moved the NE_MODULE structure definition to
kernel16_private.h.
2005-05-17 10:21:29 +00:00
Alexandre Julliard 827a69f8ca Avoid referencing stackframe.h from outside kernel32. 2005-05-16 14:20:16 +00:00
Alexandre Julliard 95086f45a4 Moved data structures for 16-bit relay calls to winbase16.h and
removed builtin16.h.
2005-05-16 09:19:18 +00:00
Alexandre Julliard d876893fc1 Store the 16-bit stack pointer in the WOW32Reserved TEB field. 2005-05-14 12:16:46 +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 9b626b7bed Use correct movw instead of movl when handling segment registers. 2005-04-13 11:17:00 +00:00
Jon Griffiths 523d94ae4c -Wunsigned fixes. 2005-03-18 14:04:07 +00:00
Alexandre Julliard b98d045e02 Don't crash on xrealloc(0) (found by Jon Griffiths). 2005-03-18 14:03:38 +00:00
Alexandre Julliard 300240bf96 Use the correct file name in the "generated automatically" comments. 2005-03-15 15:42:32 +00:00
Dimitrie O. Paun c02dd0a902 Add support for .exe's with exported functions. 2005-03-08 16:55:26 +00:00
Francois Gouget fbb3343547 Assorted spelling fixes. 2005-03-02 13:53:50 +00:00
Francois Gouget 4d801b66e6 Assorted spelling fixes. 2005-02-10 19:19:35 +00:00
Marcus Meissner 87f27ffe08 Put generated import table code into .text segment. 2005-02-09 14:06:32 +00:00
Paul Millar 10a6c56071 Check for features missing in mingw environment, allowing tools
subdirectory to be cross-built again.
2004-12-07 17:19:54 +00:00
Alexandre Julliard 7bfda49772 Clean up temp files also when killed by a signal. 2004-12-02 18:22:48 +00:00
Eric Frias f23b358b0d Handle a def file where the names of the exported functions are listed
without being followed by an equals sign and an alias.
2004-11-21 15:39:51 +00:00
Alexandre Julliard a7094d8e5a winebuild shouldn't depend on the NO_TRACE_MSGS define. 2004-10-19 23:09:02 +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
Vincent Béron b07dec4634 Only compile BuildCallFrom16Func on x86. 2004-10-14 00:25:44 +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
Alexandre Julliard 86d4a70baa Fill in the proper offsets in the resource directory instead of
relying on the compiler to do it.
2004-09-07 20:45:03 +00:00