public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* Ada, treelang needs to be converted to --enable-mapped-location
@ 2004-09-29 23:32 Per Bothner
  2004-09-30  1:27 ` Zack Weinberg
  2004-09-30  1:37 ` Matt Austern
  0 siblings, 2 replies; 60+ messages in thread
From: Per Bothner @ 2004-09-29 23:32 UTC (permalink / raw)
  To: gcc

I'm close to checking in patches to support --enable-mapped-location
for Java.  At that point all of the default-enabled languages work
more-or-less (i.e. with a small number of testsuite regressions).
If we can fix the regressions, and there are clear benefits (e.g.
measurable compilation-speed improvements or better errors reporting)
we might make --enable-mapped-location the default for 4.0; if not it
will at the very latest become the default in stage1 of 4.1.

However, we can't rip out the old --disable-mapped-location code
until the remaining front-ends are converted, and in any case they
should be fixed soon.  The remaining ones in CVS are treelang and
Ada.  It's on the treelang "to-do" list.  Please consider this a
request to make this high-priority on the Ada "to-do" list.

Converting the treelang or Ada front-ends doesn't look difficult.
It didn't take me long to convert (with Paul Brooks's help) the
Fortran front-end, even though I was unfamilar with it.  When I
look at the Ada front-end it looks straight-forward too.  I can
sketch out what is needed and/or provide advice, but I think it is
best the respective front-end maintainers make and test the actual
changes.

Here for illustration is the patch to convert the Fortran front-end:
http://gcc.gnu.org/ml/gcc-patches/2004-09/msg00635.html
The basic constraint is you cannot set filename or line independently
in input_location, DECL_SOURCE_LOCATION, or EXPR_LOCATION, but must
get them from the line_table.  And it recommended that you "allocate"
the source_location integers during initial lexing.  Note you can
optionally also remember column numbers of declarations and expressions.
-- 
	--Per Bothner
per@bothner.com   http://per.bothner.com/

^ permalink raw reply	[flat|nested] 60+ messages in thread
* Re:  Ada, treelang needs to be converted to --enable-mapped-location
@ 2004-09-30  0:57 Richard Kenner
  2004-09-30  2:09 ` Per Bothner
  0 siblings, 1 reply; 60+ messages in thread
From: Richard Kenner @ 2004-09-30  0:57 UTC (permalink / raw)
  To: per; +Cc: gcc

    When I look at the Ada front-end it looks straight-forward too.  I can
    sketch out what is needed and/or provide advice, but I think it is
    best the respective front-end maintainers make and test the actual
    changes.

Indeed the sketch would help.

    The basic constraint is you cannot set filename or line independently
    in input_location, DECL_SOURCE_LOCATION, or EXPR_LOCATION, but must
    get them from the line_table.  And it recommended that you "allocate"
    the source_location integers during initial lexing.  Note you can
    optionally also remember column numbers of declarations and
    expressions. 

Note that Ada uses it own lexer and does the inverse operation:
setting "input_location" to the values it obtained in its scan.  With
the exception of that code, every other place does what you mention.

So indeed I suspect the changes are tiny, but would appreciate a little more
details about what needs to be done.

^ permalink raw reply	[flat|nested] 60+ messages in thread
* Re: Ada, treelang needs to be converted to --enable-mapped-location
@ 2004-09-30 11:00 Richard Kenner
  2004-10-01  2:58 ` Per Bothner
  0 siblings, 1 reply; 60+ messages in thread
From: Richard Kenner @ 2004-09-30 11:00 UTC (permalink / raw)
  To: per; +Cc: gcc

    * When starting to parse a new source file do:
       linemap_add (&line_table, LC_ENTER, false, filename, 1);
    but if it's the first/main source file it's probably better to
    use LC_RENAME instead of LC_ENTER, since otherwise the code will
    think that filename is "included" from <built-in>.  (The compile
    server branch tries to do things a little differently, btw.)

Remember that Ada is not using the lexer, so these (and subsequent) calls
make no sense to me.  Can you look at the existing code and tell me what
has to be changed?

^ permalink raw reply	[flat|nested] 60+ messages in thread
* Re: Ada, treelang needs to be converted to --enable-mapped-location
@ 2004-10-03  7:13 Richard Kenner
  2004-10-04 11:44 ` Per Bothner
  0 siblings, 1 reply; 60+ messages in thread
From: Richard Kenner @ 2004-10-03  7:13 UTC (permalink / raw)
  To: per; +Cc: gcc

    To summarize:  you can create the Source_Ptr -> source_location
    mapping in two basic ways:  interleaved with lexing, or as a
    mapping when the Source_Buffer is read in.  Whichever you prefer.

I guess the question is what does "read" mean in the context of a 
compiler that doesn't call the lexer library.

It's tricky to make calls from the Ada part of the code since, as Geert
pointed out, that code is also used wiht non-GCC back-ends.

Moreover, it's quite common for the Ada front-end to read a file and
no item in the file is in the produced tree.

So I'd interpret "read" as meaning "being asked to convert the first
GNAT tree node using this file into a GCC node".  Is there a way to find
out if a filename has been seen already or do we need a separate hash table
just for that purpose?

^ permalink raw reply	[flat|nested] 60+ messages in thread
* Re: Ada, treelang needs to be converted to --enable-mapped-location
@ 2004-10-06 13:17 Richard Kenner
  2004-10-06 14:05 ` Zack Weinberg
  2004-10-06 21:37 ` Per Bothner
  0 siblings, 2 replies; 60+ messages in thread
From: Richard Kenner @ 2004-10-06 13:17 UTC (permalink / raw)
  To: per; +Cc: gcc

    My intention by the word "read" was when when the character of the
    source file are read into the compiler's Source_Buffer, which from
    what I gather happens *before* lexing.

    My suggestion that one option is to create thr Source_Ptr ->
    source_location mapping (i.e. data structures to make the mapping
    reasonably efficient) be done more-or-less at the same time as the
    source file is read into a Source_Buffer and Source_Ptr mapping is
    updated.

The problem is that that code is not dependent on the back-end being GCC.
So it's the wrong place to put callbacks into routines that are in the
GCC hierarchy.

The right place for any such code is in ada/trans.c:Sloc_to_locus.  Indeed
I believe that might be the *only* routine that needs to be modified.

Can you take a close look at that function and suggest needed changes to it?

    Yes, but that doesn't preclude using the line_map structure, even with
    non- GCC back-ends.  There is no reason why the Ada front-end can't use
    line_map for a program that say just does analysis and never touches a
    tree or an rtx.

Yes, there is because the Ada front end is also used with back-ends other
than GCC.

^ permalink raw reply	[flat|nested] 60+ messages in thread
* Re: Ada, treelang needs to be converted to --enable-mapped-location
@ 2004-10-06 17:00 Richard Kenner
  2004-10-06 19:11 ` Zack Weinberg
  0 siblings, 1 reply; 60+ messages in thread
From: Richard Kenner @ 2004-10-06 17:00 UTC (permalink / raw)
  To: zack; +Cc: gcc

    line-map.[ch] should not be considered part of GCC in this context.
    The proper analogy is to code in libiberty, which is shared among many
    projects.  There is no reason the Ada front end cannot make use of it
    when linked to some other back-end (modulo source packaging issues).

But it doesn't use libiberty either!  Although Ada supports
interfacing with other languages relatively easily, it isn't free and
doing that does indeed complicate packaging issues for the non-GCC
backends (which are written purely in Ada).  The point is that there's
no reason to have to go outside the front-end until the transition
point from Slocs to whatever the middle-end uses and Sloc_to_locus
seems to me to be the right place to do that.

^ permalink raw reply	[flat|nested] 60+ messages in thread
* Re: Ada, treelang needs to be converted to --enable-mapped-location
@ 2004-10-06 17:46 Richard Kenner
  0 siblings, 0 replies; 60+ messages in thread
From: Richard Kenner @ 2004-10-06 17:46 UTC (permalink / raw)
  To: zack; +Cc: gcc

    Do you have the same complaint, then, about hashtab.c?  What about
    xmalloc?

I miss your point.  There is no requirement that a GCC front end use those.

^ permalink raw reply	[flat|nested] 60+ messages in thread
* Re: Ada, treelang needs to be converted to --enable-mapped-location
@ 2004-10-06 22:03 Richard Kenner
  2004-10-06 22:35 ` Per Bothner
  0 siblings, 1 reply; 60+ messages in thread
From: Richard Kenner @ 2004-10-06 22:03 UTC (permalink / raw)
  To: per; +Cc: gcc

    As Zack and have I've patiently tried to explain: line-map.[ch] is not
    part of or dependent on GCC or its back-end.

No, but it's part of the GCC tree.  Which means that it's inappropriate to
include it in files that have nothing to do with the GCC tree (e.g., GNAT
targeted for the AAMP).

    Yet it was fairly straightforward to modify the Fortran front-end to
    use the *standard* line-map.[ch] data structure.  Java was more
    complicated, mainly because I used the opportunity to streamline the
    lexer.  Why is it such a problem for Ada?

Because there is a lot of code in the Ada front end dealing with
source files and line numbers and rewriting it all to deal with
different data structures is a tremendous amount of work.  All of
which is competely unnecessary.

To give you an idea of the complexity, this is the data structure that
the Ada front end uses to store information about each file.  I've deleted
the comments.  See sinput.ads for more details.

   type Source_File_Record is record

      File_Name         : File_Name_Type;
      File_Type         : Type_Of_File;
      Reference_Name    : File_Name_Type;
      Debug_Source_Name : File_Name_Type;
      Full_Debug_Name   : File_Name_Type;
      Full_File_Name    : File_Name_Type;
      Full_Ref_Name     : File_Name_Type;
      Inlined_Body      : Boolean;
      License           : License_Type;
      Num_SRef_Pragmas  : Nat;
      First_Mapped_Line : Logical_Line_Number;
      Source_Text       : Source_Buffer_Ptr;
      Source_First      : Source_Ptr;
      Source_Last       : Source_Ptr;
      Time_Stamp        : Time_Stamp_Type;
      Source_Checksum   : Word;
      Last_Source_Line  : Physical_Line_Number;
      Keyword_Casing    : Casing_Type;
      Identifier_Casing : Casing_Type;
      Instantiation     : Source_Ptr;
      Template          : Source_File_Index;
      Sloc_Adjust : Source_Ptr;
      Lines_Table : Lines_Table_Ptr;
      Logical_Lines_Table : Logical_Lines_Table_Ptr;
      Lines_Table_Max : Physical_Line_Number;
   end record;

There is no point in duplicating all of this code.

    I'm guessing Ada uses its own routines for diagnostics 

Yes.

    this may need to change at some point.  

Highly unlikely given the specialization of that code.

    Your approach is to keep the Ada front-end as self-contained and "pure
    Ada" as possible.  That may be in conflict with what to us are more
    important goals: consistency between languages in things like option
    handling, and diagnostic handling.  These things are important to
    higher-level tools, such as IDEs.

The best way of handling such consistency is defining a specification for
the error messages and having each language be consistent with that
specification.

^ permalink raw reply	[flat|nested] 60+ messages in thread
* Re: Ada, treelang needs to be converted to --enable-mapped-location
@ 2004-10-06 22:54 Richard Kenner
  2004-10-06 23:25 ` Per Bothner
  0 siblings, 1 reply; 60+ messages in thread
From: Richard Kenner @ 2004-10-06 22:54 UTC (permalink / raw)
  To: per; +Cc: gcc

    So?  gcc/ada is part of the GCC tree.  How is line-map.[ch] different?

The point is that when you aren't using GCC as a backend all you need is
that single directory and you don't have to go into outside of that
directory.  Adding the complexity of that reference to share a few
hundred lines of code does not seem worthwhile, especially since ...

    *Just* the implementation of the Source_Ptr type.

The point is that sinfo.ads and sinfo.adb is a huge and complex piece of
code, far larger than linemap.c.  It's going to be a tremendous amout
of work to do the type of surgery you suggest and I don't see *any*
gain in doing do.

In another thread I proposed a very simple solution.  Can you please
comment on whether it's workable or not?

    > The best way of handling such consistency is defining a specification for
    > the error messages and having each language be consistent with that
    > specification.

    Even better is for each language to use the same library.

Not at all.  The terminology and style issues are totally different
between languages.  Giving high-quality diagnostic error messages is a
very difficult task.  Sometimes you want to reference a language
standard, for example.  The way you refer to language items (such as
the case you use to mention keywords) can depend on subtle things in
the program in some languages.  Creating one common routine for
diagnostics will mean teaching that routine the details of *all*
languages and unnecessarily complicates that routine.

^ permalink raw reply	[flat|nested] 60+ messages in thread
* Re: Ada, treelang needs to be converted to --enable-mapped-location
@ 2004-10-06 23:25 Richard Kenner
  2004-10-07  5:16 ` Mark Mitchell
  0 siblings, 1 reply; 60+ messages in thread
From: Richard Kenner @ 2004-10-06 23:25 UTC (permalink / raw)
  To: Joe.Buck; +Cc: gcc

    So is the objection really to its placement in libcpp, a library that
    is otherwise unused?  Maybe this is just a code organization issue.
    What if it were in libiberty instead?  Would that calm people down
    and make clear that it's not part of the GCC backend?

No, that isn't the issue.

The issue is that there's already *a lot* of code in the Ada front-end
(approximately 2,000 lines) dealing with source file issues.  That code deals
with numerous issues unique to Ada and GNAT (such as tracking casing of
identifiers and keywords, computing checksums and timestamps, and looking at
licenses).

Linking Ada code to C is not hard, but has a cost, both in clarity and in
losing the ability to inline the code being called.  It's worth doing that
linkage if (and only if!) there is some benefit in code sharing obtained from
that linkage.  The GCC backend is a perfect example of such a gain.  Hashing
code is a good example where it's a bad idea because the code is small enough
that the benefit of sharing is outweighed by losing the ability to inline.

In this case, if sinput.ad{s,b} used line-map, it's very doubtful we'd
actually save any code because of the need to map all the extra information
into the data structure used by line-map.  We'd also lose inlining.
Moreover, the complexity of the interfacing would make the code much less
clear.  And for what gain, to share 500 lines of code?

When the file/line structure isn't being used for significant amounts of
data, such as in the C and C++ front ends and the language that the code
using line-map is the same as line-map (C), the sharing does have a benefit.

I still haven't heard any reason why we simply can't use the existing Ada
Sloc as the source_location within GCC for Ada.

^ permalink raw reply	[flat|nested] 60+ messages in thread
* Re: Ada, treelang needs to be converted to --enable-mapped-location
@ 2004-10-07  0:44 Richard Kenner
  2004-10-07  1:07 ` Robert Dewar
  2004-10-07  1:42 ` Per Bothner
  0 siblings, 2 replies; 60+ messages in thread
From: Richard Kenner @ 2004-10-07  0:44 UTC (permalink / raw)
  To: per; +Cc: gcc

    Are you thinking of some other file?  sinfo.ad[sb] barely mentions
    Source_Ptr at all:  Only in two functions to get/set the End_Span,
    neither of looks like they would need to be changed when converting
    to source_location!

Sorry, indeed I was: sinput.ad[bs].

    The gain is that alternative solutions require mapping between two
    encodings for source locations.  Plus better integration between Ada
    and the rest of the compilers, which *we* think is desirable.  Plus
    using source_location is probably faster, considering what you have to
    go through in Sloc_to_locus (even *before* switching to
    source_location.

But that seems the advantage of what I proposed (see below).

    > In another thread I proposed a very simple solution.  Can you please
    > comment on whether it's workable or not?

    IRC you proposed making a localized change in Sloc_to_locus.  

No.  What I'm talking about is the proposal to use Ada's Sloc as the
source_location and make a language hook that calls expand_location by
default but for Ada, calls a function that's essentially Sloc_to_locus
and expands out the Sloc into (file, line, column).  That way there's
exactly one representation of source location in use and one file name
table.

^ permalink raw reply	[flat|nested] 60+ messages in thread
* Re: Ada, treelang needs to be converted to --enable-mapped-location
@ 2004-10-07  5:07 Richard Kenner
  2004-10-07  7:19 ` Steven Bosscher
  0 siblings, 1 reply; 60+ messages in thread
From: Richard Kenner @ 2004-10-07  5:07 UTC (permalink / raw)
  To: per; +Cc: gcc

    It can certainly be made to work.  I am not in favor of this change,
    though, as it requires adding call-back hooks, which are generally to
    be avoided, and which in this case are unnecessary, even if they make
    it easier in the short term.

Hook, singular.  It means that there's a language-dependent version of
expand_location, that's all.  The advantage is that it requires *no other
change* anywhere except to make Sloc_to_locus a nop in the Ada front end.

^ permalink raw reply	[flat|nested] 60+ messages in thread
* Re: Ada, treelang needs to be converted to --enable-mapped-location
@ 2004-10-07  5:56 Richard Kenner
  2004-10-07  6:24 ` Mark Mitchell
  2004-10-07  6:42 ` Robert Dewar
  0 siblings, 2 replies; 60+ messages in thread
From: Richard Kenner @ 2004-10-07  5:56 UTC (permalink / raw)
  To: mark; +Cc: gcc

    The problem here is that we cannot make a decision for Ada independently 
    of the rest of GCC because the data structures (*_DECL tree nodes) in 
    question are shared among all GCC  front ends.  There is a clear benefit 
    to the other front ends from using this new approach: the compiler 
    itself goes faster with no loss in functionality.

But that's not the issue here. We aren't talking about the tree nodes, but
about the meaning of what a "source location" is: as far as the tree nodes
are concerned it's an opaque data type.

    If that means translating from the current Ada representation to the
    GCC representation at the last minute, when the Ada front end
    translates all its other data structures, that's fine.  I don't
    understand how that can be impossible.  It might be difficult for the
    Ada maintainers, but that may be the price paid for being independent
    of the core GCC data structures, and thereby providing the ability to
    reuse the Ada front end with other back ends.

The issues are the following:

(1) Source location handling is done very early in the Ada front end and with
a lot of Ada-specific processing.  Using line-map at this point creates two
problems:

(1a) Linking to that file in a context where the rest of GCC isn't used and
it's the only file from that tree and also the only C file creates a
build/packaging issue.

(1b) Because there's so much additional file and line handling, superimposing
that on top of the existing line-map routines adds significant complexity to
the existing code and more than wipes out the benefits of sharing that small
piece of code.

(2) If we do it in Gigi, the issue is that the line-map code expects to see
locations created in increasing order, but there's no guarantee that the
nodes will be processed in that order.  What we can do is add a pre-pass that
walks the the tree and converts each Ada Sloc into a (file, line, column)
triple and then sorts all the triples.  We can then call the line-map code
for each such triple and make a hash table to be used later to map an Ada
Sloc to a GCC source_location.

However, what the above code does is make a mapping from one 32-bit opaque
datatype that encodes a (file, line, column) triple to a different 32-bit
opaque datatype that encodes *exactly the same thing* in a different way.
This seems pointless.


My proposal is basically to take the view that source_location is an unsigned
int that's an opaque datatype used to encode a (file, line column) triple.
This datatype can either be defined in the front end (in which case it
provides a language hook to produce that triple from the encoding) or it can
use routines provided in line-map.c to generate the encoding.

^ permalink raw reply	[flat|nested] 60+ messages in thread
* Re: Ada, treelang needs to be converted to --enable-mapped-location
@ 2004-10-07 12:57 Richard Kenner
  2004-10-07 18:08 ` Mark Mitchell
  0 siblings, 1 reply; 60+ messages in thread
From: Richard Kenner @ 2004-10-07 12:57 UTC (permalink / raw)
  To: mark; +Cc: gcc

    If you can do this in a way that does not make the non-Ada case go 
    measuably slower, that seems OK.  If the indirection required is costly, 
    then your proposal is lessa ttractive.

It seems highly unlikely that changing a direct call to expand_location into
an indirect call via a lang hook would be a measurable difference given the
relative rarity of those calls.

    I think that if Ada wants to have its own source location machinery
    and its own diagnostic machinery, that's your business, so long as it
    doesn't impact the rest of the compiler adversely.  In the long run,
    having code that duplicates stuff that is common to the other front
    ends may lead to other problems for Ada, but I think that's up to the
    Ada maintainership to evaluate.

Right.  In my mind, the tradeoffs relate to the specialization of the code vs
the amount of code being shared and the issues are somewhat different between
diagnostic and source location machinery.  For the latter, there's simply not
enough code sharing going on to justify complicating the large existing
source file mechanisms in the Ada front end.

For diagnostic output, the major difference is in the other direction:
it is worth adding Ada-specific functionality to the existing
diagnostic code in order to enable it to be shared?  That's more a question
for the maintainers of the diagnostic machinery, though there is still the
issue of using code outside of the Ada tree in those cases when GCC is not
the backend since the current diagnostic code includes significantly more GCC
code than the source location machinery, as I understand it.

^ permalink raw reply	[flat|nested] 60+ messages in thread
* Re: Ada, treelang needs to be converted to --enable-mapped-location
@ 2004-10-07 13:15 Richard Kenner
  0 siblings, 0 replies; 60+ messages in thread
From: Richard Kenner @ 2004-10-07 13:15 UTC (permalink / raw)
  To: stevenb; +Cc: gcc

    It requires *lots* of changes all over the place in all
    other front ends.

Certainly not.  The default value for the langhook would be expand_location,
so the other front ends would work exactly as they do now.

^ permalink raw reply	[flat|nested] 60+ messages in thread
* Re: Ada, treelang needs to be converted to --enable-mapped-location
@ 2004-10-07 19:39 Richard Kenner
  0 siblings, 0 replies; 60+ messages in thread
From: Richard Kenner @ 2004-10-07 19:39 UTC (permalink / raw)
  To: mark; +Cc: gcc

    Usually, we do try to operate by some kind of consensus, so I'm not 
    trying to overrule other maintainers here.  If other people still object 
    to your plan, then we'll have to work that out.

Certainly.

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

end of thread, other threads:[~2004-10-11  4:34 UTC | newest]

Thread overview: 60+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-09-29 23:32 Ada, treelang needs to be converted to --enable-mapped-location Per Bothner
2004-09-30  1:27 ` Zack Weinberg
2004-09-30  1:37 ` Matt Austern
2004-09-30  5:48   ` Per Bothner
2004-09-30  0:57 Richard Kenner
2004-09-30  2:09 ` Per Bothner
2004-09-30  6:58   ` James A. Morrison
2004-09-30  8:03   ` Geert Bosch
2004-09-30  8:17     ` Per Bothner
2004-09-30 17:10       ` Geert Bosch
2004-09-30 19:56         ` Per Bothner
2004-09-30 20:02           ` Geert Bosch
     [not found]             ` <415C664B.6030905@bothner.com>
2004-10-06 15:36               ` Geert Bosch
2004-09-30 11:00 Richard Kenner
2004-10-01  2:58 ` Per Bothner
2004-10-03  7:13 Richard Kenner
2004-10-04 11:44 ` Per Bothner
2004-10-06 13:17 Richard Kenner
2004-10-06 14:05 ` Zack Weinberg
2004-10-06 15:45   ` Geert Bosch
2004-10-06 15:52     ` Zack Weinberg
2004-10-06 16:09       ` Geert Bosch
2004-10-06 16:34         ` Zack Weinberg
2004-10-06 16:58           ` Geert Bosch
2004-10-06 18:52             ` Zack Weinberg
2004-10-06 21:58               ` Laurent GUERBY
2004-10-06 21:37 ` Per Bothner
2004-10-06 23:15   ` Joe Buck
2004-10-06 17:00 Richard Kenner
2004-10-06 19:11 ` Zack Weinberg
2004-10-06 17:46 Richard Kenner
2004-10-06 22:03 Richard Kenner
2004-10-06 22:35 ` Per Bothner
2004-10-06 22:54 Richard Kenner
2004-10-06 23:25 ` Per Bothner
2004-10-07  1:06   ` Robert Dewar
2004-10-07  1:42     ` Per Bothner
2004-10-06 23:25 Richard Kenner
2004-10-07  5:16 ` Mark Mitchell
2004-10-07  0:44 Richard Kenner
2004-10-07  1:07 ` Robert Dewar
2004-10-07  1:42 ` Per Bothner
2004-10-07  5:07 Richard Kenner
2004-10-07  7:19 ` Steven Bosscher
2004-10-07  9:52   ` Robert Dewar
2004-10-07  5:56 Richard Kenner
2004-10-07  6:24 ` Mark Mitchell
2004-10-07  8:33   ` Steven Bosscher
2004-10-07  9:03     ` Mark Mitchell
2004-10-07 10:07     ` Florian Weimer
2004-10-07 17:04       ` Daniel Jacobowitz
2004-10-08  0:35         ` Florian Weimer
2004-10-07  6:42 ` Robert Dewar
2004-10-07  6:50   ` Robert Dewar
2004-10-07 10:04   ` Laurent GUERBY
2004-10-11  7:33   ` Per Bothner
2004-10-07 12:57 Richard Kenner
2004-10-07 18:08 ` Mark Mitchell
2004-10-07 13:15 Richard Kenner
2004-10-07 19:39 Richard Kenner

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).