public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/21405] New: Template inlines have global visibility
@ 2005-05-05 21:49 mike at navi dot cx
  2005-05-05 22:27 ` [Bug c++/21405] " pinskia at gcc dot gnu dot org
                   ` (11 more replies)
  0 siblings, 12 replies; 21+ messages in thread
From: mike at navi dot cx @ 2005-05-05 21:49 UTC (permalink / raw)
  To: gcc-bugs

See http://gcc.gnu.org/ml/libstdc++/2005-04/msg00173.html

If you have code like:

std::string b = "bee";
std::string c = "see";

std::string a = b + c;

Then the string + operator overload will appear in the final ELF image with
GLOBAL WEAK visibility, meaning it can be bound to the wrong version of the
symbol at runtime (ie symbol versioning is ignored).

This is serious as it means you can't mix libraries that use different C++ ABIs
into the same image even if they only interact via C ABIs, something that the
GCC docs explicitly say will work!

-- 
           Summary: Template inlines have global visibility
           Product: gcc
           Version: 3.4.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: mike at navi dot cx
                CC: gcc-bugs at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21405


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

* [Bug c++/21405] Template inlines have global visibility
  2005-05-05 21:49 [Bug c++/21405] New: Template inlines have global visibility mike at navi dot cx
@ 2005-05-05 22:27 ` pinskia at gcc dot gnu dot org
  2005-05-05 22:40 ` mike at navi dot cx
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 21+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-05-05 22:27 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2005-05-05 22:27 -------
I don't know if this is really a vaild bug, as the standard requires the inline function as the same so it 
would be undefined if they are different.

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21405


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

* [Bug c++/21405] Template inlines have global visibility
  2005-05-05 21:49 [Bug c++/21405] New: Template inlines have global visibility mike at navi dot cx
  2005-05-05 22:27 ` [Bug c++/21405] " pinskia at gcc dot gnu dot org
@ 2005-05-05 22:40 ` mike at navi dot cx
  2005-05-05 22:40 ` pinskia at gcc dot gnu dot org
                   ` (9 subsequent siblings)
  11 siblings, 0 replies; 21+ messages in thread
From: mike at navi dot cx @ 2005-05-05 22:40 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From mike at navi dot cx  2005-05-05 22:39 -------
I don't understand what you mean. There's definitely a bug here because a
configuration that the docs say should work, causes mysterious crashes due to
mis-binds of symbols. I suspect building with -fvisibility-inlines-hidden can
resolve this problem but why is it not the default?

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21405


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

* [Bug c++/21405] Template inlines have global visibility
  2005-05-05 21:49 [Bug c++/21405] New: Template inlines have global visibility mike at navi dot cx
  2005-05-05 22:27 ` [Bug c++/21405] " pinskia at gcc dot gnu dot org
  2005-05-05 22:40 ` mike at navi dot cx
@ 2005-05-05 22:40 ` pinskia at gcc dot gnu dot org
  2005-05-06  0:17 ` mike at navi dot cx
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 21+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-05-05 22:40 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2005-05-05 22:40 -------
So here is the story really global templates have aways global visibility in C++ so this is not a bug in 
GCC or binutils.  This is a bug in how you think that you can use two different versions. 

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|                            |INVALID


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21405


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

* [Bug c++/21405] Template inlines have global visibility
  2005-05-05 21:49 [Bug c++/21405] New: Template inlines have global visibility mike at navi dot cx
                   ` (2 preceding siblings ...)
  2005-05-05 22:40 ` pinskia at gcc dot gnu dot org
@ 2005-05-06  0:17 ` mike at navi dot cx
  2005-05-08 12:18 ` chris at bubblescope dot net
                   ` (7 subsequent siblings)
  11 siblings, 0 replies; 21+ messages in thread
From: mike at navi dot cx @ 2005-05-06  0:17 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From mike at navi dot cx  2005-05-06 00:17 -------
No, there is very definitely a bug here even if it's just in the documentation.

The GCC docs say in very clear and unambiguous terms that this will work, by
design. Not by accident, by design. That's the whole point of applying symbol
versions to the standard C++ library.

It only affects methods that have been inlined into the headers. Methods that
are defined as external work correctly. So either:

a) No methods should be inlined

or

b) GCC should not emit them as GLOBAL WEAK so they can be overridden by other
definitions elsewhere in the image

The latter is what the new -fvisibility-inlines-hidden switch does. So why is it
not on by default?

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21405


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

* [Bug c++/21405] Template inlines have global visibility
  2005-05-05 21:49 [Bug c++/21405] New: Template inlines have global visibility mike at navi dot cx
                   ` (3 preceding siblings ...)
  2005-05-06  0:17 ` mike at navi dot cx
@ 2005-05-08 12:18 ` chris at bubblescope dot net
  2005-05-08 12:38 ` mike at navi dot cx
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 21+ messages in thread
From: chris at bubblescope dot net @ 2005-05-08 12:18 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From chris at bubblescope dot net  2005-05-08 12:18 -------
Out of interest, where do the docs say that? (I'm not being sarcastic, just interested)

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21405


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

* [Bug c++/21405] Template inlines have global visibility
  2005-05-05 21:49 [Bug c++/21405] New: Template inlines have global visibility mike at navi dot cx
                   ` (4 preceding siblings ...)
  2005-05-08 12:18 ` chris at bubblescope dot net
@ 2005-05-08 12:38 ` mike at navi dot cx
  2005-05-25 23:24 ` [Bug libstdc++/21405] " bkoz at gcc dot gnu dot org
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 21+ messages in thread
From: mike at navi dot cx @ 2005-05-08 12:38 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From mike at navi dot cx  2005-05-08 12:38 -------
http://gcc.gnu.org/onlinedocs/libstdc++/abi.html

See the "testing multi-abi binaries" section at the bottom:

<quote>

A "C" application, dynamically linked to two shared libraries, liba, libb. The
dependent library liba is C++ shared library compiled with gcc-3.3.x, and uses
io, exceptions, locale, etc. The dependent library libb is a C++ shared library
compiled with gcc-3.4.x, and also uses io, exceptions, locale, etc.

[ ... snip ... ]

This resulting binary, when executed, will be able to safely use code from both
liba, and the dependent libstdc++.so.6, and libb, with the dependent libstdc++.so.5.

</quote>

A C++ program linked indirectly (via a C library) against another C++ library is
exactly the same scenario. This is the whole point of symbol versioning.

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21405


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

* [Bug libstdc++/21405] Template inlines have global visibility
  2005-05-05 21:49 [Bug c++/21405] New: Template inlines have global visibility mike at navi dot cx
                   ` (5 preceding siblings ...)
  2005-05-08 12:38 ` mike at navi dot cx
@ 2005-05-25 23:24 ` bkoz at gcc dot gnu dot org
  2005-05-31 13:37 ` mike at navi dot cx
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 21+ messages in thread
From: bkoz at gcc dot gnu dot org @ 2005-05-25 23:24 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From bkoz at gcc dot gnu dot org  2005-05-25 22:49 -------
Changing this to libstdc++, so we remember to track this.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|c++                         |libstdc++


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21405


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

* [Bug libstdc++/21405] Template inlines have global visibility
  2005-05-05 21:49 [Bug c++/21405] New: Template inlines have global visibility mike at navi dot cx
                   ` (6 preceding siblings ...)
  2005-05-25 23:24 ` [Bug libstdc++/21405] " bkoz at gcc dot gnu dot org
@ 2005-05-31 13:37 ` mike at navi dot cx
  2005-05-31 15:29 ` giovannibajo at libero dot it
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 21+ messages in thread
From: mike at navi dot cx @ 2005-05-31 13:37 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From mike at navi dot cx  2005-05-31 13:23 -------
Reopening the bug, as Benjamin wishes to track it.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |UNCONFIRMED
         Resolution|INVALID                     |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21405


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

* [Bug libstdc++/21405] Template inlines have global visibility
  2005-05-05 21:49 [Bug c++/21405] New: Template inlines have global visibility mike at navi dot cx
                   ` (7 preceding siblings ...)
  2005-05-31 13:37 ` mike at navi dot cx
@ 2005-05-31 15:29 ` giovannibajo at libero dot it
  2005-06-01 11:56 ` mike at navi dot cx
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 21+ messages in thread
From: giovannibajo at libero dot it @ 2005-05-31 15:29 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From giovannibajo at libero dot it  2005-05-31 15:10 -------
You can't use -fvisibility-inlines-hidden or otherwise you'll get linker errors 
if the compiler later decides not to inline those functions. I don't think you 
can win.

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21405


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

* [Bug libstdc++/21405] Template inlines have global visibility
  2005-05-05 21:49 [Bug c++/21405] New: Template inlines have global visibility mike at navi dot cx
                   ` (8 preceding siblings ...)
  2005-05-31 15:29 ` giovannibajo at libero dot it
@ 2005-06-01 11:56 ` mike at navi dot cx
  2005-06-03 22:02 ` adam at gimp dot org
  2005-08-02 14:28 ` matze at braunis dot de
  11 siblings, 0 replies; 21+ messages in thread
From: mike at navi dot cx @ 2005-06-01 11:56 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From mike at navi dot cx  2005-06-01 11:56 -------
So this feature is basically terminally broken and never worked in the first place?

How about if GCC supported a new attribute or something that made it emit
inlines for that class with a specific symbol version?

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21405


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

* [Bug libstdc++/21405] Template inlines have global visibility
  2005-05-05 21:49 [Bug c++/21405] New: Template inlines have global visibility mike at navi dot cx
                   ` (9 preceding siblings ...)
  2005-06-01 11:56 ` mike at navi dot cx
@ 2005-06-03 22:02 ` adam at gimp dot org
  2005-08-02 14:28 ` matze at braunis dot de
  11 siblings, 0 replies; 21+ messages in thread
From: adam at gimp dot org @ 2005-06-03 22:02 UTC (permalink / raw)
  To: gcc-bugs



-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |adam at gimp dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21405


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

* [Bug libstdc++/21405] Template inlines have global visibility
  2005-05-05 21:49 [Bug c++/21405] New: Template inlines have global visibility mike at navi dot cx
                   ` (10 preceding siblings ...)
  2005-06-03 22:02 ` adam at gimp dot org
@ 2005-08-02 14:28 ` matze at braunis dot de
  11 siblings, 0 replies; 21+ messages in thread
From: matze at braunis dot de @ 2005-08-02 14:28 UTC (permalink / raw)
  To: gcc-bugs



-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |matze at braunis dot de


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21405


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

* [Bug libstdc++/21405] Template inlines have global visibility
       [not found] <bug-21405-10578@http.gcc.gnu.org/bugzilla/>
                   ` (6 preceding siblings ...)
  2006-03-22  4:51 ` bkoz at gcc dot gnu dot org
@ 2006-03-22 19:11 ` cristipp at excite dot com
  7 siblings, 0 replies; 21+ messages in thread
From: cristipp at excite dot com @ 2006-03-22 19:11 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #18 from cristipp at excite dot com  2006-03-22 19:10 -------
(In reply to comment #17)
> see the solution in 24660

I'm not sure I understand correctly: are all C++ template libraries supposed to
add 24660-style machinery?


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21405


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

* [Bug libstdc++/21405] Template inlines have global visibility
       [not found] <bug-21405-10578@http.gcc.gnu.org/bugzilla/>
                   ` (5 preceding siblings ...)
  2006-03-20 19:35 ` pluto at agmk dot net
@ 2006-03-22  4:51 ` bkoz at gcc dot gnu dot org
  2006-03-22 19:11 ` cristipp at excite dot com
  7 siblings, 0 replies; 21+ messages in thread
From: bkoz at gcc dot gnu dot org @ 2006-03-22  4:51 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #17 from bkoz at gcc dot gnu dot org  2006-03-22 04:51 -------

see the solution in 24660


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21405


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

* [Bug libstdc++/21405] Template inlines have global visibility
       [not found] <bug-21405-10578@http.gcc.gnu.org/bugzilla/>
                   ` (4 preceding siblings ...)
  2006-03-20 19:34 ` pluto at agmk dot net
@ 2006-03-20 19:35 ` pluto at agmk dot net
  2006-03-22  4:51 ` bkoz at gcc dot gnu dot org
  2006-03-22 19:11 ` cristipp at excite dot com
  7 siblings, 0 replies; 21+ messages in thread
From: pluto at agmk dot net @ 2006-03-20 19:35 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #16 from pluto at agmk dot net  2006-03-20 19:35 -------
(In reply to comment #15)
> see PR19664, PR20218, PR20297.

ops, this is the note for C#10.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21405


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

* [Bug libstdc++/21405] Template inlines have global visibility
       [not found] <bug-21405-10578@http.gcc.gnu.org/bugzilla/>
                   ` (3 preceding siblings ...)
  2006-03-20 18:32 ` cristipp at excite dot com
@ 2006-03-20 19:34 ` pluto at agmk dot net
  2006-03-20 19:35 ` pluto at agmk dot net
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 21+ messages in thread
From: pluto at agmk dot net @ 2006-03-20 19:34 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #15 from pluto at agmk dot net  2006-03-20 19:34 -------
see PR19664, PR20218, PR20297.


-- 

pluto at agmk dot net changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |pluto at agmk dot net


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21405


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

* [Bug libstdc++/21405] Template inlines have global visibility
       [not found] <bug-21405-10578@http.gcc.gnu.org/bugzilla/>
                   ` (2 preceding siblings ...)
  2006-03-20 17:30 ` hjl at lucon dot org
@ 2006-03-20 18:32 ` cristipp at excite dot com
  2006-03-20 19:34 ` pluto at agmk dot net
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 21+ messages in thread
From: cristipp at excite dot com @ 2006-03-20 18:32 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #14 from cristipp at excite dot com  2006-03-20 18:32 -------
The problem is not how the dynamic linker treats 'weak' symbols. The problem is
that template originating functions having no version numbers. It just happen
that template originating functions are also marked as weak (if I understand
correctly). In other words, if I have a regular C/C++ function, I can attach
version strings to it, whereas it I have a C++ template function I cannot
attach version strings to it, or more precisely to instances of it. I don't
really care whether symbols are 'weak' or 'strong', I only care of proper
versioning for *all* C++ symbols.

I believe that this situation was clearly described by the original bug
reporter 10 months ago. For some reason nobody seems to acknowledge that there
is a problem, the main line of reasoning so far being that 'C++ standard says
only unique (weak) names are valid'. However, that flies in the face of the
whole synmbol versioning mechanism, weak symbols or not. Afterall, versioning
for symbols was introduced precisely to allow multiple instances of the same
symbol to be valid in a shared object context.

Please feel free to correct me on any g++ internal details on which I am no
expert. However, the root problem is there and is a show-stopper for any
attempt of distributing pre-compiled C++ shared object binaries.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21405


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

* [Bug libstdc++/21405] Template inlines have global visibility
       [not found] <bug-21405-10578@http.gcc.gnu.org/bugzilla/>
  2005-12-30 18:20 ` pinskia at gcc dot gnu dot org
  2006-03-20 17:07 ` cristipp at excite dot com
@ 2006-03-20 17:30 ` hjl at lucon dot org
  2006-03-20 18:32 ` cristipp at excite dot com
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 21+ messages in thread
From: hjl at lucon dot org @ 2006-03-20 17:30 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #13 from hjl at lucon dot org  2006-03-20 17:30 -------
FWIW, the current GNU binutils and glibc treat the weak definition in
shared libraries as strong. There is even a whole set of testsuite for
this in the GNU binutils.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21405


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

* [Bug libstdc++/21405] Template inlines have global visibility
       [not found] <bug-21405-10578@http.gcc.gnu.org/bugzilla/>
  2005-12-30 18:20 ` pinskia at gcc dot gnu dot org
@ 2006-03-20 17:07 ` cristipp at excite dot com
  2006-03-20 17:30 ` hjl at lucon dot org
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 21+ messages in thread
From: cristipp at excite dot com @ 2006-03-20 17:07 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #12 from cristipp at excite dot com  2006-03-20 17:07 -------
(In reply to comment #11)
> There is an one defintion rule in C++ unlike most other languages which have
> weak symbols.  And if you are working around it by using hidden symbols well
> you are asking to run into troubles.

I don't believe that C++ has to say (should say) anything that pertains to
shared libraries. Moreover, symbol versions were added as workarounds for
problems created by the ELF format semantics. This is a platform specific
problem, not a pure C++ problem. However, to have the gnu toolchain to properly
support C++ on ELF platforms, adding proper versioning for *all* symbols,
including template-originated symbols is a must. I'm not sure if this is a task
for g++ of for the linker or for both, but someone should eventually
acknowledge that there is a problem and start looking for solutions...


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21405


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

* [Bug libstdc++/21405] Template inlines have global visibility
       [not found] <bug-21405-10578@http.gcc.gnu.org/bugzilla/>
@ 2005-12-30 18:20 ` pinskia at gcc dot gnu dot org
  2006-03-20 17:07 ` cristipp at excite dot com
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 21+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-12-30 18:20 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #11 from pinskia at gcc dot gnu dot org  2005-12-30 18:20 -------
There is an one defintion rule in C++ unlike most other languages which have
weak symbols.  And if you are working around it by using hidden symbols well
you are asking to run into troubles.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21405



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

end of thread, other threads:[~2006-03-22 19:11 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-05-05 21:49 [Bug c++/21405] New: Template inlines have global visibility mike at navi dot cx
2005-05-05 22:27 ` [Bug c++/21405] " pinskia at gcc dot gnu dot org
2005-05-05 22:40 ` mike at navi dot cx
2005-05-05 22:40 ` pinskia at gcc dot gnu dot org
2005-05-06  0:17 ` mike at navi dot cx
2005-05-08 12:18 ` chris at bubblescope dot net
2005-05-08 12:38 ` mike at navi dot cx
2005-05-25 23:24 ` [Bug libstdc++/21405] " bkoz at gcc dot gnu dot org
2005-05-31 13:37 ` mike at navi dot cx
2005-05-31 15:29 ` giovannibajo at libero dot it
2005-06-01 11:56 ` mike at navi dot cx
2005-06-03 22:02 ` adam at gimp dot org
2005-08-02 14:28 ` matze at braunis dot de
     [not found] <bug-21405-10578@http.gcc.gnu.org/bugzilla/>
2005-12-30 18:20 ` pinskia at gcc dot gnu dot org
2006-03-20 17:07 ` cristipp at excite dot com
2006-03-20 17:30 ` hjl at lucon dot org
2006-03-20 18:32 ` cristipp at excite dot com
2006-03-20 19:34 ` pluto at agmk dot net
2006-03-20 19:35 ` pluto at agmk dot net
2006-03-22  4:51 ` bkoz at gcc dot gnu dot org
2006-03-22 19:11 ` cristipp at excite dot com

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