improve documenation about auto-import

This commit is contained in:
Nick Clifton 2001-09-24 16:17:46 +00:00
parent 72358f6568
commit 2f8d8971c6
2 changed files with 20 additions and 3 deletions

View File

@ -1,3 +1,13 @@
2001-09-24 Charles Wilson <cwilson@ece.gatech.edu>
* ld.texinfo(enable-auto-import): Clarify the explanation.
2001-09-24 Nick Clifton <nickc@cambridge.redhat.com>
* pe-dll.c (pe_create_import_fixup): Revert previous patch.
* emultemp/pe.em (pe_data_import_dll): Move definition outside of
DLL_SUPPORT controlled code.
2001-09-24 Charles Wilson <cwilson@ece.gatech.edu>
* emultempl/pe.em(pe_data_import_dll): Make static.

View File

@ -1738,8 +1738,14 @@ This message occurs when some (sub)expression accesses an address
ultimately given by the sum of two constants (Win32 import tables only
allow one). Instances where this may occur include accesses to member
fields of struct variables imported from a DLL, as well as using a
constant index into an array variable imported from a DLL. There are
several ways to address this difficulty.
constant index into an array variable imported from a DLL. Any
multiword variable (arrays, structs, long long, etc) may trigger
this error condition. However, regardless of the exact data type
of the offending exported variable, ld will always detect it, issue
the warning, and exit.
There are several ways to address this difficulty, regardless of the
data type of the exported variable:
One solution is to force one of the 'constants' to be a variable --
that is, unknown and un-optimizable at compile time. For arrays,
@ -1760,7 +1766,8 @@ extern_array[1] -->
@{ volatile int t=1; extern_array[t] @}
@end example
For structs, the only option is to make the struct itself variable:
For structs (and most other multiword data types) the only option
is to make the struct itself (or the long long, or the ...) variable:
@example
extern struct s extern_struct;