public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* RE: ordinal linking for cygwin ld
@ 2002-04-27 11:02 Robert Collins
  2002-04-27 11:27 ` Ralf Habacker
  0 siblings, 1 reply; 37+ messages in thread
From: Robert Collins @ 2002-04-27 11:02 UTC (permalink / raw)
  To: Ralf Habacker, Charles Wilson; +Cc: Kde-Cygwin, Binutils, Cygwin-Apps



> -----Original Message-----
> From: Ralf Habacker [mailto:Ralf.Habacker@freenet.de] 
> Sent: Saturday, April 27, 2002 10:17 PM
> To: Robert Collins; Charles Wilson
> Cc: Kde-Cygwin; Binutils; Cygwin-Apps
> Subject: RE: ordinal linking for cygwin ld
> 
> 
> >A patch to use hint ordinals when linking by name would be _very_ 
> >useful though, as that would
> >a) give the performance benefit you are looking for
> >b) allow backward compatible library versioning as link-by-name does.
> 
> But as I stated already, this needs an ld switch to 
> enable/disable ordinal linking and allow limiting of used libs or path

Hangon, lets go back a bit. Why do you want ordinal-only linking? For
runtime or link-time performance? Or for on-disk import library size?
Or....

Rob

^ permalink raw reply	[flat|nested] 37+ messages in thread
* RE: ordinal linking for cygwin ld
@ 2002-04-28  5:22 Robert Collins
  2002-04-28 10:10 ` Ralf Habacker
  0 siblings, 1 reply; 37+ messages in thread
From: Robert Collins @ 2002-04-28  5:22 UTC (permalink / raw)
  To: Ralf Habacker, kde-cygwin, Charles Wilson; +Cc: Binutils, Cygwin-Apps



> -----Original Message-----
> From: Ralf Habacker [mailto:Ralf.Habacker@freenet.de] 
> Sent: Sunday, April 28, 2002 10:18 PM

> Firstthunk points to 0x401064, the symbol <__fu0__var0000>, 
> which is the address part of the mov instruction. After run 
> time linking the loader has relocated this address to the 
> propper value.

Ok, I see what it does. Doesn't it have to do that for each reference to
the auto-imported variable? If so, then heavy use of an imported
variable could make the INT and IAT quite large - and lots of fixups
needed. However, binding could still work, as we effectively have a
pointer to each address reference in the binary.

Rob

^ permalink raw reply	[flat|nested] 37+ messages in thread
* RE: ordinal linking for cygwin ld
@ 2002-04-27 11:43 Robert Collins
  2002-04-28  5:12 ` Ralf Habacker
  0 siblings, 1 reply; 37+ messages in thread
From: Robert Collins @ 2002-04-27 11:43 UTC (permalink / raw)
  To: Ralf Habacker, Charles Wilson; +Cc: Kde-Cygwin, Binutils, Cygwin-Apps



> -----Original Message-----
> From: Ralf Habacker [mailto:Ralf.Habacker@freenet.de] 
> Sent: Sunday, April 28, 2002 4:28 AM
> > 
> > Hangon, lets go back a bit. Why do you want ordinal-only 
> linking? For 
> > runtime or link-time performance? Or for on-disk import 
> library size? 
> > Or....
> runtime performance 

Ok, well then check this :
http://msdn.microsoft.com/msdnmag/issues/0500/hood/hood0500.asp article
out.

Linking by ordinal only gives a 2%-4% improvement. rebinding and
rebasing gives up to 18%.

So linking by ordinal only will help you a little. rebinding and
rebasing your .dll's will help much much more.

And infact, rebasing and rebinding makes the INT obsolete - because the
IAT is precalculated, so you can't get 22% by linking by ordinal and
rebinding and rebasing.

Rob

^ permalink raw reply	[flat|nested] 37+ messages in thread
* RE: ordinal linking for cygwin ld
@ 2002-04-27 11:27 Robert Collins
  2002-04-28  5:13 ` Ralf Habacker
  2002-04-28  5:17 ` Ralf Habacker
  0 siblings, 2 replies; 37+ messages in thread
From: Robert Collins @ 2002-04-27 11:27 UTC (permalink / raw)
  To: Ralf Habacker, kde-cygwin, Charles Wilson; +Cc: Binutils, Cygwin-Apps



> -----Original Message-----
> From: Ralf Habacker [mailto:Ralf.Habacker@freenet.de] 
> Sent: Saturday, April 27, 2002 10:47 PM
> To: kde-cygwin@mail.kde.org; Charles Wilson; Robert Collins
> Cc: Binutils; Cygwin-Apps
> Subject: RE: ordinal linking for cygwin ld
> 
> 
> > Well then, this is only half the puzzle. I can see what you 
> gain from 
> > such a patch, but as Chuck as indicated, it will cause -major- 
> > difficulties in management.
> 
> Do you have read the rules I have stated for kde ?

Yes.
 
> > We'd probably also need to ensure that strip leaves the 
> names in the 
> > IAT (I wasn't clear from your other email whether it does that or 
> > not).
> >
> Yes it does. See some parts about my auto-import documentation.

Cool.
 
> $ objdump -x client.exe
> FirstThunk (2) points to the import address table (IAT), 
> which entries are identifed by corresponding _imp_... symbols.

The IAT is an array of IMAGE_THUNK_DATA, that gets overwritten by the
physical PE header of the linked image by the win32 .exe load process.
 
> HintTab (3) point to a rva (relative virtual address = offset 
> from image start) vector pointing to IMAGE_IMPORT_BY_NAME unions.

Huh? The Hinttab->hintname array is an array of IMAGE_THUNK_DATA. 
 
> (4) shows an IMAGE_IMPORT_BY_NAME union for a named link. It 
> is identifed by the _nm_<smbol> name . In this structure the 
> symbol name string is stored independed from the regular 
> symbol name, which can be only stripped.

Hmm. the diagram above is a little misleading. The IMAGE_IMPORT_BY_NAME
struct is not a union. It's IMAGE_THUNK_DATA that is a union, and for
named imports contains that RVA of the IMAGE_IMPORT_BY_NAME struct,
which has both the ordinal and the member name. Lastly there is _no_
requirement for the INT and IAT to share IMAGE_IMPORT_BY_NAME structs,
and they definitely won't share IMAGE_THUNK_DATA elements.

> (5) shows a IMAGE_IMPORT_BY_NAME union for a ordinal link.

Again, this is wrong, it stores a IMAGE_THUNK_DATA union.
 
> No see this for an auto-imported data
> 
...

> Hope that helps

Mostly. I'm a bit rusty - it's been a while since I grokked the
auto-import stuff. I'm getting back into it at the moment. The thing
that I don't follow at the moment is the how the linker fixup places the
exported data -variable- at a fixed rva at dll load time. The IAT is
-meant- to point straight to functions after the fixup occurs, so
pointing at an address in the .dll .text segment is fine. I'll re-read
Paul's explanation when I get to looking at your patch anyway.

Cheers,
Rob

^ permalink raw reply	[flat|nested] 37+ messages in thread
* RE: ordinal linking for cygwin ld
@ 2002-04-26 17:59 Robert Collins
  2002-04-27  5:16 ` Ralf Habacker
  2002-04-27  5:47 ` Ralf Habacker
  0 siblings, 2 replies; 37+ messages in thread
From: Robert Collins @ 2002-04-26 17:59 UTC (permalink / raw)
  To: Ralf Habacker, Charles Wilson; +Cc: Kde-Cygwin, Binutils, Cygwin-Apps



> -----Original Message-----
> From: Ralf Habacker [mailto:Ralf.Habacker@freenet.de] 
> Sent: Saturday, April 27, 2002 10:55 AM

> > > Or ld has a switch to explicit use ordinals (see other mails from 
> > > me)
> >
> > I don't see what such a switch gains. The hint ordinal 
> should provide 
> > the same performance as an ordinal-only-link.
> 
> By default ld does not use ordinals or linking. Only when an 
> import lib does not contain names in the _nm_vector, ld takes 
> the ordinal for linking (identified by flag_noname in 
> pe-dll.c/ei386pe.c). Thats what I have used. I have patched 
> ld to write the import library only with ordinals and ld does 
> the rest. Only an additional patch for auto-imported date was 
> necessary. (see the patch)

Well then, this is only half the puzzle. I can see what you gain from
such a patch, but as Chuck as indicated, it will cause -major-
difficulties in management. 

A patch to use hint ordinals when linking by name would be _very_ useful
though, as that would
a) give the performance benefit you are looking for
b) allow backward compatible library versioning as link-by-name does.

We'd probably also need to ensure that strip leaves the names in the IAT
(I wasn't clear from your other email whether it does that or not).

Rob

^ permalink raw reply	[flat|nested] 37+ messages in thread
* RE: ordinal linking for cygwin ld
@ 2002-04-26 17:44 Ralf Habacker
  0 siblings, 0 replies; 37+ messages in thread
From: Ralf Habacker @ 2002-04-26 17:44 UTC (permalink / raw)
  To: Charles Wilson, Robert Collins; +Cc: Kde-Cygwin, Binutils, Cygwin-Apps

Ld rules: 
> 1. By default ordinal linking is disabled 
> 
> 2. Add an ld option to enable ordinal linking. 
>    As ordinal the hint number is used. (Could this have any unknown 
> side effect ??) 
>    ordinal = hint number + 1. 
>    How should such an option be named ? 

--enable-ordinal-link ? 

Now, I'm going to bed, it is 2:43am in germany. God night. 

Ralf 

^ permalink raw reply	[flat|nested] 37+ messages in thread
* RE: ordinal linking for cygwin ld
@ 2002-04-26 17:25 Robert Collins
  2002-04-26 17:55 ` Ralf Habacker
  0 siblings, 1 reply; 37+ messages in thread
From: Robert Collins @ 2002-04-26 17:25 UTC (permalink / raw)
  To: Ralf Habacker, Charles Wilson; +Cc: Kde-Cygwin, Binutils, Cygwin-Apps



> -----Original Message-----
> From: Ralf Habacker [mailto:Ralf.Habacker@freenet.de] 
> Sent: Saturday, April 27, 2002 10:23 AM
> To: Robert Collins; Charles Wilson
> Cc: Kde-Cygwin; Binutils; Cygwin-Apps
> Subject: RE: ordinal linking for cygwin ld
> 
> 
> > The PE spec (as I read it) indicates that as long as a name is 
> > included (ie it's not link-only-by-ordinal) then ordinals 
> can change 
> > and nothing will break.
> > 
> > It's only when the only link information is the ordinal 
> that problems 
> > will appear.
> 
> Or ld has a switch to explicit use ordinals (see other mails from me)

I don't see what such a switch gains. The hint ordinal should provide
the same performance as an ordinal-only-link.
Rob

^ permalink raw reply	[flat|nested] 37+ messages in thread
* RE: ordinal linking for cygwin ld
@ 2002-04-26 16:08 Robert Collins
  2002-04-26 17:39 ` Ralf Habacker
  0 siblings, 1 reply; 37+ messages in thread
From: Robert Collins @ 2002-04-26 16:08 UTC (permalink / raw)
  To: Charles Wilson; +Cc: Ralf Habacker, Kde-Cygwin, Binutils, Cygwin-Apps



> -----Original Message-----
> From: Charles Wilson [mailto:cwilson@ece.gatech.edu] 
> Sent: Saturday, April 27, 2002 9:04 AM
> To: Robert Collins
> Cc: Ralf Habacker; Kde-Cygwin; Binutils; Cygwin-Apps
> Subject: Re: ordinal linking for cygwin ld
> 
> 
> Robert Collins wrote:
> 
> > 
> > The PE spec (as I read it) indicates that as long as a name is 
> > included (ie it's not link-only-by-ordinal) then ordinals 
> can change 
> > and nothing will break.
> > 
> > It's only when the only link information is the ordinal 
> that problems 
> > will appear.
> 
> 
> That's what I thought, too, until I got bit.  Check the 
> cygwin(-apps?) 
> ml archives during spring/summer 2000.  At the time, the 
> symptoms seemed 
> like a smoking gun: link by ordinal == link ONLY by ordinal.  OTOH, 
> binutils on cygwin was royally broken at the time, DJ was 
> transitioning 
> away from cygwin, Mumit had been gone for half a year or 
> more, and bit 
> rot was setting in.

Yup. I was part of that conversation too :}.
 
> Perhaps the problems that burned me then were due to broken 
> binutils/maintainerless cygwin-gcc, and it wasn't the smoking gun I 
> thought it was.

IIRC it was never conclusively identified.
 
> OTOH, if you've linked by ordinal, and then you strip symbols 
> -- are the 
> names of the imports still retained?

Search me. 

Rob (cygwin sortof-binutils
maintainer-it-would-help-if-I-knew-these-things).

^ permalink raw reply	[flat|nested] 37+ messages in thread
* RE: ordinal linking for cygwin ld
@ 2002-04-26 15:58 Robert Collins
  2002-04-26 16:04 ` Charles Wilson
  2002-04-26 17:22 ` Ralf Habacker
  0 siblings, 2 replies; 37+ messages in thread
From: Robert Collins @ 2002-04-26 15:58 UTC (permalink / raw)
  To: Charles Wilson, Ralf Habacker; +Cc: Kde-Cygwin, Binutils, Cygwin-Apps



> -----Original Message-----
> From: Charles Wilson [mailto:cwilson@ece.gatech.edu] 
> Sent: Saturday, April 27, 2002 8:55 AM
> To: Ralf Habacker
> Cc: Kde-Cygwin; Binutils; Cygwin-Apps
> Subject: Re: ordinal linking for cygwin ld
> 
> 
> Ralf Habacker wrote:
> 
> >>
> >>Since your app linked by ordinal, it will break if you try 
> to run it 
> >>with the new DLL, without re-linking.
> >>
> > 
> > accepted
> > 
> > 
> >>So how does the vendor ensure that he doesn't unnecessarily break 
> >>backwards compatibility, and keep the ordinals the same?  
> By using a 
> >>def file.
> >>
> > 
> > Or be relinking all the libs.
> 
> 
> If *you* release new "compatible" libs with the ordinals 
> different from 
> the current libs, *my* application breaks.  Or, you might get ripple 
> effects: what if I distribute a dll that depends on KDE's 
> libs, and Bob 
> has an app that depends on my dll?  Bob's app breaks because 
> my dll is 
> broken because you released new "compatible" libs.  Not good 
> -- and it'd 
> take a while to track the problem down too: (a) I need to 
> relink my dll, 
> and give it to Bob, and then (and only then) (b) Bob can 
> relink his app.
> 
> Blech.

The PE spec (as I read it) indicates that as long as a name is included
(ie it's not link-only-by-ordinal) then ordinals can change and nothing
will break.

It's only when the only link information is the ordinal that problems
will appear.

Rob

^ permalink raw reply	[flat|nested] 37+ messages in thread
* ordinal linking for cygwin ld
@ 2002-04-26 13:36 Ralf Habacker
  2002-04-26 13:42 ` Ralf Habacker
  2002-04-26 14:09 ` Charles Wilson
  0 siblings, 2 replies; 37+ messages in thread
From: Ralf Habacker @ 2002-04-26 13:36 UTC (permalink / raw)
  To: Kde-Cygwin, Binutils, Cygwin-Apps

[-- Attachment #1: Type: text/plain, Size: 3123 bytes --]

Hi all,

one of the biggest problems with kde 2.2.x currently is the very bad loading
time of applications and dll's, I've investigated some time to analyse this. On
this way I recognized, that runtime linking using symbol names is one of the
major time eater.

At first I have tried to estimate the influence of symbol name to the runtime
linking time. So I have build a dll 5000 functions and a client app, which uses
this functions.

This dll/apps are compiled in two variants, 1. with a symbolname lenght of a 13
characters and 2. with a symbolname lenght of 403 characters (should simulate
long c++ names).

cd shortname
time ./client.exe
real    0m0.772s
user    0m0.030s
sys     0m0.030s

$ cd longname
$ time ./client.exe
real    0m15.182s
user    0m0.060s
sys     0m0.040s

The result shows that this has a great effect of app/dll loading time (about 20
times more).

After thinking a while about this, I remembered, that the windows pe format
allows two runtime linking types. The first, usually used, is linking by the
symbol name, the second is linking by symbols ordinal.

A look in the last official cygwin ld (20011002) source shows, that linking by
ordinal seems to be prepared with one limitation.
There is no command line switch to create an import library for ordinal linking
on dll building, so I've added a switch --out-implib-ordinal <filename>.

(BTW: Another possibibily was automatic ordinal linking. See later)

Now I've tried a second test. 5000 functions with symbolname lenght of 403
characters linked 1. with names and 2. with ordinals.

5000 functions with symbol name linking (symbols not stripped)

$ time ./client.exe
real    0m15.182s
user    0m0.060s
sys     0m0.040s

5000 functions with ordinal linking (symbols not stripped)

$ time ./client.exe
real    0m0.572s
user    0m0.020s
sys     0m0.030s

Wow, thats great.

1. Currently I' have a working solution for binutils 20011002 using a specific
import library create with an -out-implib-ordinal option, which contains only
ordinals and no symbols in the IMPORT_DESCRIPTOR_BY_NAME structure. (The patches
and testcase are appended)

2. Another possibility is using the regular import libraries hint number for
ordinal linking (hint number = Ordinal number-1), but currently I don't know if
this is always true.

Solution 1 has an advantage on building big c++ libs, because the import library
are smaller (about 20-50%). See the following example. The amount depends on the
symbols count and length.

old
-rwxr-xr-x    1 1002     Kein      1682944 Apr 22 09:42
/opt/kde2/bin/cygkdecore-3.dll
-rwxr-xr-x    1 1002     Kein      3190016 Apr 20 19:12
/opt/kde2/lib/libkdecore.dll.a

new
-rwxrwxrwx    1 1002     Kein      1956812 Apr 26 22:03 libkdecore.dll.a
-rwxrwxrwx    1 1002     Kein      1608192 Apr 26 22:28 cygkdecore-3.dll

Solution 2 is full compatible to dll's builded with previous ld, because the dll
and import lib are still the same. Compiling an app with new ld will
automatically use ordinal linking. The only necessary point seems to me a
command line switch to switch of this behavior.

Any comments ?

Regards
Ralf


[-- Attachment #2: ld_ordinal_linking_2.patch --]
[-- Type: application/octet-stream, Size: 5559 bytes --]

--- pe-dll.c.orig	Fri Apr 26 17:23:34 2002
+++ pe-dll.c	Fri Apr 26 21:55:42 2002
@@ -120,6 +120,8 @@
 
     See also: ld/emultempl/pe.em.  */
 
+extern int pe_implib_ordinal;
+
 static void
 add_bfd_to_link PARAMS ((bfd *, const char *, struct bfd_link_info *));
 
@@ -1895,6 +1897,8 @@ make_one (exp, parent)
   return abfd;
 }
 
+extern long pe_data_import_ordinal;
+
 static bfd *
 make_singleton_name_thunk (import, parent)
      const char *import;
@@ -1927,6 +1931,14 @@ make_singleton_name_thunk (import, paren
   d4 = (unsigned char *) xmalloc (4);
   id4->contents = d4;
   memset (d4, 0, 8);
+  
+  /* handle ordinal linking */ 
+  if (pe_data_import_ordinal) {
+    d4[0]= pe_data_import_ordinal;
+    d4[1]= pe_data_import_ordinal>>8;
+    d4[3]= 0x80;
+  }
+  else 
   quick_reloc (abfd, 0, BFD_RELOC_RVA, 2);
   save_relocs (id4);
 
@@ -2121,6 +2133,10 @@ pe_dll_generate_implib (def, impfilename
       bfd *n;
 
       def->exports[i].internal_name = def->exports[i].name;
+
+      if (pe_implib_ordinal) {
+         def->exports[i].flag_noname = 1;
+      }
       n = make_one (def->exports + i, outarch);
       n->next = head;
       head = n;
--- emultempl/pe.em.orig	Tue Apr 23 13:47:55 2002
+++ emultempl/pe.em	Fri Apr 26 22:20:13 2002
@@ -153,6 +153,7 @@ static char *pe_out_def_filename = NULL;
 static char *pe_implib_filename = NULL;
 static int pe_enable_auto_image_base = 0;
 static char *pe_dll_search_prefix = NULL;
+int pe_implib_ordinal = 0;
 #endif
 
 extern const char *output_filename;
@@ -221,6 +222,7 @@ gld_${EMULATION_NAME}_before_parse()
 #define OPTION_DLL_ENABLE_AUTO_IMPORT	(OPTION_NO_DEFAULT_EXCLUDES + 1)
 #define OPTION_DLL_DISABLE_AUTO_IMPORT	(OPTION_DLL_ENABLE_AUTO_IMPORT + 1)
 #define OPTION_ENABLE_EXTRA_PE_DEBUG	(OPTION_DLL_DISABLE_AUTO_IMPORT + 1)
+#define OPTION_IMPLIB_ORDINAL		(OPTION_ENABLE_EXTRA_PE_DEBUG + 1)
 
 static struct option longopts[] = {
   /* PE options */
@@ -252,6 +254,7 @@ static struct option longopts[] = {
   {"enable-stdcall-fixup", no_argument, NULL, OPTION_ENABLE_STDCALL_FIXUP},
   {"disable-stdcall-fixup", no_argument, NULL, OPTION_DISABLE_STDCALL_FIXUP},
   {"out-implib", required_argument, NULL, OPTION_IMPLIB_FILENAME},
+  {"out-implib-ordinal", required_argument, NULL, OPTION_IMPLIB_ORDINAL},
   {"warn-duplicate-exports", no_argument, NULL, OPTION_WARN_DUPLICATE_EXPORTS},
   {"compat-implib", no_argument, NULL, OPTION_IMP_COMPAT},
   {"enable-auto-image-base", no_argument, NULL, OPTION_ENABLE_AUTO_IMAGE_BASE},
@@ -336,6 +339,8 @@ gld_${EMULATION_NAME}_list_options (file
   fprintf (file, _("  --export-all-symbols               Automatically export all globals to DLL\n"));
   fprintf (file, _("  --kill-at                          Remove @nn from exported symbols\n"));
   fprintf (file, _("  --out-implib <file>                Generate import library\n"));
+  fprintf (file, _("  --out-implib-ordinal <file>        Generate import library using ordinals \n"));
+  fprintf (file, _("                                       instead of names\n"));
   fprintf (file, _("  --output-def <file>                Generate a .DEF file for the built DLL\n"));
   fprintf (file, _("  --warn-duplicate-exports           Warn about duplicate exports.\n"));
   fprintf (file, _("  --compat-implib                    Create backward compatible import libs;\n"));
@@ -630,6 +635,10 @@ gld_${EMULATION_NAME}_parse_args(argc, a
     case OPTION_ENABLE_EXTRA_PE_DEBUG:
       pe_dll_extra_pe_debug = 1;
       break;
+    case OPTION_IMPLIB_ORDINAL:
+      pe_implib_filename = xstrdup (optarg);
+      pe_implib_ordinal = 1;
+      break;
 #endif
     }
   return 1;
@@ -885,6 +894,57 @@ make_import_fixup (rel, s)
 
   return 1;
 }
+void get_data_import_ordinal(bfd *b)
+{
+	struct sec *s = bfd_get_section_by_name (b, ".idata$5");
+	if (s)
+	{
+	  int size = bfd_get_section_size_before_reloc (s);
+	  char *buf = xmalloc (size);
+	
+	  bfd_get_section_contents (b, s, buf, 0, size);
+	  pe_data_import_ordinal = *(unsigned short *)buf;
+	  if (pe_dll_extra_pe_debug)
+	    printf("#%04x\n",pe_data_import_ordinal);
+	  free (buf);
+	}
+	else 
+	  pe_data_import_ordinal = 0;
+}
+
+
+/* ordinal linking 
+
+ordinal import library object file 
+
+d001500.o:     file format pe-i386
+
+Contents of section .idata$7:
+ 0000 00000000                             ....
+Contents of section .idata$5:
+ 0000 dc050080                             ....
+      ^^^^^
+  This value is used 
+      
+Contents of section .idata$4:
+ 0000 dc050080                             ....
+
+
+regular import library object file 
+
+d001500.o:     file format pe-i386
+
+Contents of section .idata$7:
+ 0000 00000000                             ....
+Contents of section .idata$5:
+ 0000 00000000                             ....
+Contents of section .idata$4:
+ 0000 00000000                             ....
+Contents of section .idata$6:
+ 0000 db057661 72303439 39000000           ..var0499...
+      ^^^^
+      This value seems also be usable (not implemented yet)
+*/
 
 static void
 pe_find_data_imports ()
@@ -916,6 +976,8 @@ pe_find_data_imports ()
                 symbols = (asymbol **) xmalloc (symsize);
                 nsyms = bfd_canonicalize_symtab (b, symbols);
 
+		get_data_import_ordinal(b);
+
                 for (i = 0; i < nsyms; i++)
                   {
                     if (memcmp(symbols[i]->name, "__head_",

[-- Attachment #3: ld_ordinal_linking_testcase.tar.bz2 --]
[-- Type: application/octet-stream, Size: 5272 bytes --]

^ permalink raw reply	[flat|nested] 37+ messages in thread

end of thread, other threads:[~2002-04-30 15:39 UTC | newest]

Thread overview: 37+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-04-27 11:02 ordinal linking for cygwin ld Robert Collins
2002-04-27 11:27 ` Ralf Habacker
  -- strict thread matches above, loose matches on Subject: below --
2002-04-28  5:22 Robert Collins
2002-04-28 10:10 ` Ralf Habacker
2002-04-27 11:43 Robert Collins
2002-04-28  5:12 ` Ralf Habacker
2002-04-29  1:22   ` Ralf Habacker
2002-04-29  7:00     ` Ralf Habacker
2002-04-29  7:07       ` Robert Collins
2002-04-29  9:00         ` Ralf Habacker
2002-04-30  8:39           ` Ralf Habacker
2002-04-27 11:27 Robert Collins
2002-04-28  5:13 ` Ralf Habacker
2002-04-28  5:17 ` Ralf Habacker
2002-04-28  5:26   ` Ralf Habacker
2002-04-26 17:59 Robert Collins
2002-04-27  5:16 ` Ralf Habacker
2002-04-27  5:47 ` Ralf Habacker
2002-04-26 17:44 Ralf Habacker
2002-04-26 17:25 Robert Collins
2002-04-26 17:55 ` Ralf Habacker
2002-04-26 16:08 Robert Collins
2002-04-26 17:39 ` Ralf Habacker
2002-04-26 15:58 Robert Collins
2002-04-26 16:04 ` Charles Wilson
2002-04-26 17:22 ` Ralf Habacker
2002-04-26 13:36 Ralf Habacker
2002-04-26 13:42 ` Ralf Habacker
2002-04-26 14:09 ` Charles Wilson
     [not found]   ` <3CC9C689.9020108@sun.com>
2002-04-26 14:36     ` Charles Wilson
2002-04-26 15:11   ` Ralf Habacker
2002-04-26 15:24     ` Ralf Habacker
2002-04-26 15:59       ` Charles Wilson
2002-04-26 15:55     ` Charles Wilson
2002-04-26 17:20       ` Ralf Habacker
2002-04-26 17:11     ` Ralf Habacker
2002-04-26 17:17     ` Ralf Habacker

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).