public inbox for gdb@sourceware.org
 help / color / mirror / Atom feed
* warning: Unable to find dynamic linker breakpoint function
@ 2004-12-29 21:33 Adam Richard
  2004-12-29 21:44 ` Daniel Jacobowitz
  0 siblings, 1 reply; 11+ messages in thread
From: Adam Richard @ 2004-12-29 21:33 UTC (permalink / raw)
  To: gdb

I wonder if someone knows what the following warning means?  It appears whenever I use
the "run" command to start my program:

(gdb) run
Starting program: /home/adam/programming/programs/meals/meals
warning: Unable to find dynamic linker breakpoint function.
GDB will be unable to debug shared library initializers
and track explicitly loaded dynamic code.

I found a few posts related to it but few people seem to know what the warning message
itself means.

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

* Re: warning: Unable to find dynamic linker breakpoint function
  2004-12-29 21:33 warning: Unable to find dynamic linker breakpoint function Adam Richard
@ 2004-12-29 21:44 ` Daniel Jacobowitz
  2004-12-31  0:36   ` Adam Richard
  0 siblings, 1 reply; 11+ messages in thread
From: Daniel Jacobowitz @ 2004-12-29 21:44 UTC (permalink / raw)
  To: Adam Richard; +Cc: gdb

On Wed, Dec 29, 2004 at 05:33:04PM -0400, Adam Richard wrote:
> I wonder if someone knows what the following warning means?  It appears whenever I use
> the "run" command to start my program:
> 
> (gdb) run
> Starting program: /home/adam/programming/programs/meals/meals
> warning: Unable to find dynamic linker breakpoint function.
> GDB will be unable to debug shared library initializers
> and track explicitly loaded dynamic code.
> 
> I found a few posts related to it but few people seem to know what the warning message
> itself means.

It means exactly what it says - GDB could not set the breakpoint that
it uses for tracking things like dlopen().

I can't guess at causes, since you didn't tell us what your platform
is.

-- 
Daniel Jacobowitz

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

* Re: warning: Unable to find dynamic linker breakpoint function
  2004-12-29 21:44 ` Daniel Jacobowitz
@ 2004-12-31  0:36   ` Adam Richard
  2004-12-31  0:41     ` Daniel Jacobowitz
  0 siblings, 1 reply; 11+ messages in thread
From: Adam Richard @ 2004-12-31  0:36 UTC (permalink / raw)
  To: gdb

Quoting Daniel Jacobowitz <drow@false.org>:

> On Wed, Dec 29, 2004 at 05:33:04PM -0400, Adam Richard wrote:
> > I wonder if someone knows what the following warning means?  It appears whenever I
> use
> > the "run" command to start my program:
> > 
> > (gdb) run
> > Starting program: /home/adam/programming/programs/meals/meals
> > warning: Unable to find dynamic linker breakpoint function.
> > GDB will be unable to debug shared library initializers
> > and track explicitly loaded dynamic code.
> > 
> > I found a few posts related to it but few people seem to know what the warning
> message
> > itself means.
> 
> It means exactly what it says - GDB could not set the breakpoint that
> it uses for tracking things like dlopen().
> 
> I can't guess at causes, since you didn't tell us what your platform
> is.

Actually, the error message isn't really clear - I just looked up what dlopen does, but
I don't see what it has to do with breakpoints.  As to my platform, I'm using Gentoo
Linux, kernel 2.6.9, on an AMD Athlon XP processor.  I read somewhere that it might
have to do with a stripped gdb but I don't understand why I can't have a stripped gdb
so I'm hoping for an explanation.

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

* Re: warning: Unable to find dynamic linker breakpoint function
  2004-12-31  0:36   ` Adam Richard
@ 2004-12-31  0:41     ` Daniel Jacobowitz
  2004-12-31 13:51       ` Adam Richard
  0 siblings, 1 reply; 11+ messages in thread
From: Daniel Jacobowitz @ 2004-12-31  0:41 UTC (permalink / raw)
  To: Adam Richard; +Cc: gdb

On Thu, Dec 30, 2004 at 08:35:59PM -0400, Adam Richard wrote:
> Quoting Daniel Jacobowitz <drow@false.org>:
> 
> > On Wed, Dec 29, 2004 at 05:33:04PM -0400, Adam Richard wrote:
> > > I wonder if someone knows what the following warning means?  It appears whenever I
> > use
> > > the "run" command to start my program:
> > > 
> > > (gdb) run
> > > Starting program: /home/adam/programming/programs/meals/meals
> > > warning: Unable to find dynamic linker breakpoint function.
> > > GDB will be unable to debug shared library initializers
> > > and track explicitly loaded dynamic code.
> > > 
> > > I found a few posts related to it but few people seem to know what the warning
> > message
> > > itself means.
> > 
> > It means exactly what it says - GDB could not set the breakpoint that
> > it uses for tracking things like dlopen().
> > 
> > I can't guess at causes, since you didn't tell us what your platform
> > is.
> 
> Actually, the error message isn't really clear - I just looked up what dlopen does, but
> I don't see what it has to do with breakpoints.  As to my platform, I'm using Gentoo

Nothing, on its own.  GDB uses a breakpoint to be able to support
debugging programs which use dlopen.

> Linux, kernel 2.6.9, on an AMD Athlon XP processor.  I read somewhere that it might
> have to do with a stripped gdb but I don't understand why I can't have a stripped gdb
> so I'm hoping for an explanation.

Not a stripped GDB, a stripped dynamic linker (/lib/ld-linux.so.2).

-- 
Daniel Jacobowitz

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

* Re: warning: Unable to find dynamic linker breakpoint function
  2004-12-31  0:41     ` Daniel Jacobowitz
@ 2004-12-31 13:51       ` Adam Richard
  2004-12-31 19:09         ` Daniel Jacobowitz
  0 siblings, 1 reply; 11+ messages in thread
From: Adam Richard @ 2004-12-31 13:51 UTC (permalink / raw)
  To: gdb

Quoting Daniel Jacobowitz <drow@false.org>:

> On Thu, Dec 30, 2004 at 08:35:59PM -0400, Adam Richard wrote:
> > Quoting Daniel Jacobowitz <drow@false.org>:
> > 
> > > On Wed, Dec 29, 2004 at 05:33:04PM -0400, Adam Richard wrote:
> > > > I wonder if someone knows what the following warning means?  It appears
> whenever I
> > > use
> > > > the "run" command to start my program:
> > > > 
> > > > (gdb) run
> > > > Starting program: /home/adam/programming/programs/meals/meals
> > > > warning: Unable to find dynamic linker breakpoint function.
> > > > GDB will be unable to debug shared library initializers
> > > > and track explicitly loaded dynamic code.
> > > > 
> > > > I found a few posts related to it but few people seem to know what the warning
> > > message
> > > > itself means.
> > > 
> > > It means exactly what it says - GDB could not set the breakpoint that
> > > it uses for tracking things like dlopen().
> > > 
> > > I can't guess at causes, since you didn't tell us what your platform
> > > is.
> > 
> > Actually, the error message isn't really clear - I just looked up what dlopen does,
> but
> > I don't see what it has to do with breakpoints.  As to my platform, I'm using
> Gentoo
> 
> Nothing, on its own.  GDB uses a breakpoint to be able to support
> debugging programs which use dlopen.
> 
That doesn't really make sense to me.  Setting a breakpoint *is* a debugging task.  Why
does it need to set a breakpoint in order to debug?

> > Linux, kernel 2.6.9, on an AMD Athlon XP processor.  I read somewhere that it
> might
> > have to do with a stripped gdb but I don't understand why I can't have a stripped
> gdb
> > so I'm hoping for an explanation.
> 
> Not a stripped GDB, a stripped dynamic linker (/lib/ld-linux.so.2).

OK, why does a stripped dynamic linker impair debugging?  I noticed that that file is
part of the glibc package, and I can see why stripping it would prevent being able to
step into its functions for any program which depends on it (which is most programs). 
But I still don't understand your explanation.

> -- 
> Daniel Jacobowitz
> 


---
Adam
http://personal.nbnet.nb.ca/aerichar/

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

* Re: warning: Unable to find dynamic linker breakpoint function
  2004-12-31 13:51       ` Adam Richard
@ 2004-12-31 19:09         ` Daniel Jacobowitz
  2005-01-04 23:04           ` Adam Richard
  0 siblings, 1 reply; 11+ messages in thread
From: Daniel Jacobowitz @ 2004-12-31 19:09 UTC (permalink / raw)
  To: Adam Richard; +Cc: gdb

On Fri, Dec 31, 2004 at 09:51:22AM -0400, Adam Richard wrote:
> That doesn't really make sense to me.  Setting a breakpoint *is* a debugging task.  Why
> does it need to set a breakpoint in order to debug?

So that it knows what shared libraries are loaded in the program you're
debugging.  It hits the breakpoint when the list changes.

> > > Linux, kernel 2.6.9, on an AMD Athlon XP processor.  I read somewhere that it
> > might
> > > have to do with a stripped gdb but I don't understand why I can't have a stripped
> > gdb
> > > so I'm hoping for an explanation.
> > 
> > Not a stripped GDB, a stripped dynamic linker (/lib/ld-linux.so.2).
> 
> OK, why does a stripped dynamic linker impair debugging?  I noticed that that file is
> part of the glibc package, and I can see why stripping it would prevent being able to
> step into its functions for any program which depends on it (which is most programs). 
> But I still don't understand your explanation.

Because GDB has trouble finding the list of available shared libraries.

-- 
Daniel Jacobowitz

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

* Re: warning: Unable to find dynamic linker breakpoint function
  2004-12-31 19:09         ` Daniel Jacobowitz
@ 2005-01-04 23:04           ` Adam Richard
  2005-01-04 23:07             ` Daniel Jacobowitz
  0 siblings, 1 reply; 11+ messages in thread
From: Adam Richard @ 2005-01-04 23:04 UTC (permalink / raw)
  To: gdb; +Cc: Daniel Jacobowitz

Quoting Daniel Jacobowitz <drow@false.org>:

> On Fri, Dec 31, 2004 at 09:51:22AM -0400, Adam Richard wrote:

> > > > I read somewhere that it
> > > might
> > > > have to do with a stripped gdb but I don't understand why I can't have a
> stripped
> > > gdb
> > > > so I'm hoping for an explanation.
> > > 
> > > Not a stripped GDB, a stripped dynamic linker (/lib/ld-linux.so.2).
> > 
> > OK, why does a stripped dynamic linker impair debugging?  I noticed that that file
> is
> > part of the glibc package, and I can see why stripping it would prevent being able
> to
> > step into its functions for any program which depends on it (which is most
> programs). 
> > But I still don't understand your explanation.
> 
> Because GDB has trouble finding the list of available shared libraries.

I tried recompiling glibc without stripping it (at least I used the "nostrip" option in
Gentoo) and it didn't make a difference.  Are you sure that's what makes the warning go
away?

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

* Re: warning: Unable to find dynamic linker breakpoint function
  2005-01-04 23:04           ` Adam Richard
@ 2005-01-04 23:07             ` Daniel Jacobowitz
  2005-01-05  3:10               ` Adam Richard
  0 siblings, 1 reply; 11+ messages in thread
From: Daniel Jacobowitz @ 2005-01-04 23:07 UTC (permalink / raw)
  To: Adam Richard; +Cc: gdb

On Tue, Jan 04, 2005 at 07:03:19PM -0400, Adam Richard wrote:
> Quoting Daniel Jacobowitz <drow@false.org>:
> 
> > On Fri, Dec 31, 2004 at 09:51:22AM -0400, Adam Richard wrote:
> 
> > > > > I read somewhere that it
> > > > might
> > > > > have to do with a stripped gdb but I don't understand why I can't have a
> > stripped
> > > > gdb
> > > > > so I'm hoping for an explanation.
> > > > 
> > > > Not a stripped GDB, a stripped dynamic linker (/lib/ld-linux.so.2).
> > > 
> > > OK, why does a stripped dynamic linker impair debugging?  I noticed that that file
> > is
> > > part of the glibc package, and I can see why stripping it would prevent being able
> > to
> > > step into its functions for any program which depends on it (which is most
> > programs). 
> > > But I still don't understand your explanation.
> > 
> > Because GDB has trouble finding the list of available shared libraries.
> 
> I tried recompiling glibc without stripping it (at least I used the "nostrip" option in
> Gentoo) and it didn't make a difference.  Are you sure that's what makes the warning go
> away?
> 

You'll have to debug GDB yourself to figure out why it's being
produced, then.

-- 
Daniel Jacobowitz

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

* Re: warning: Unable to find dynamic linker breakpoint function
  2005-01-04 23:07             ` Daniel Jacobowitz
@ 2005-01-05  3:10               ` Adam Richard
  0 siblings, 0 replies; 11+ messages in thread
From: Adam Richard @ 2005-01-05  3:10 UTC (permalink / raw)
  To: gdb; +Cc: Daniel Jacobowitz

> > > > > > I read somewhere that it
> > > > > might
> > > > > > have to do with a stripped gdb but I don't understand why I can't have a
> > > stripped
> > > > > gdb
> > > > > > so I'm hoping for an explanation.
> > > > > 
> > > > > Not a stripped GDB, a stripped dynamic linker (/lib/ld-linux.so.2).
> > > > 
> > > > OK, why does a stripped dynamic linker impair debugging?  I noticed that that
> file
> > > is
> > > > part of the glibc package, and I can see why stripping it would prevent being
> able
> > > to
> > > > step into its functions for any program which depends on it (which is most
> > > programs). 
> > > > But I still don't understand your explanation.
> > > 
> > > Because GDB has trouble finding the list of available shared libraries.
> > 
> > I tried recompiling glibc without stripping it (at least I used the "nostrip"
> option in
> > Gentoo) and it didn't make a difference.  Are you sure that's what makes the
> warning go
> > away?
> > 
> 
> You'll have to debug GDB yourself to figure out why it's being
> produced, then.

Actually, I just discovered what was wrong.  I didn't have debug info compiled into
glibc.  After including it (with the debug USE flag in Gentoo; I don't know how to do
it normally), the warning went away.

Thanks for all your help.

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

* Re: warning: Unable to find dynamic linker breakpoint function.
  2005-03-11 21:42 Manoj Iyer
@ 2005-03-12  0:14 ` Khem Raj
  0 siblings, 0 replies; 11+ messages in thread
From: Khem Raj @ 2005-03-12  0:14 UTC (permalink / raw)
  To: Manoj Iyer; +Cc: gdb

Hi Manoj,

This is happening because of stripped version of glibc I think. You need 
this patch for glibc and I think the problem should go away.

Index: glibc-2.3.3/elf/Versions
===================================================================
--- glibc-2.3.3.orig/elf/Versions
+++ glibc-2.3.3/elf/Versions
@@ -54,5 +54,7 @@
_dl_get_tls_static_info; _dl_allocate_tls_init;
_dl_tls_setup; _dl_rtld_di_serinfo;
_dl_make_stack_executable;
+ # Only here for gdb while a better method is developed.
+ _dl_debug_state;
}
}


Manoj Iyer wrote:

>latest cvs GDB gives me a warning that it cannot set breakpoint in dynamic
>linker, but GDB from RH sources works ok. Sometihng in GDB changed? I saw
>a similar discussion for AMD64 last year (between Daniel and Adam
>Richard), but it does not make clear why this would happen on cvs version
>and not on older versions of GDB.
>
>Platform: ppc64
>OS: RH 4.
>
>---------------- CVS version of GDB --------------------
>GNU gdb 6.3.50.20050311-cvs
>This GDB was configured as "powerpc64-gnu-linux".
>
>GNU gdb 6.3.50.20050311-cvs
>Copyright 2004 Free Software Foundation, Inc.
>GDB is free software, covered by the GNU General Public License, and you
>are
>welcome to change it and/or distribute copies of it under certain
>conditions.
>Type "show copying" to see the conditions.
>There is absolutely no warranty for GDB.  Type "show warranty" for
>details.
>This GDB was configured as "powerpc64-gnu-linux"...Using host libthread_db
>library "/lib64/tls/libthread_db.so.1".
>
>(gdb) br main
>Breakpoint 1 at 0x100005c4: file ../.././gdb/testsuite/gdb.base/annota1.c,
>line 32.
>(gdb) r
>Starting program: /tmp/manjo/2005-03-11/src/gdb/testsuite/gdb.base/annota1
>warning: Unable to find dynamic linker breakpoint function.
>GDB will be unable to debug shared library initializers
>and track explicitly loaded dynamic code.
>warning: Breakpoint address adjusted from 0x10010ac0 to 0x1000041c.
>
>Breakpoint 1, 0x00000000100005c4 in ?? ()
>(gdb)
>
>----------------------------- end cvs version ------------------
>
>----------- RH source RPM version ---------------------
>But the GDB GNU gdb Red Hat Linux (6.3.0.0-0.13rh)
>This GDB was configured as "powerpc64-unknown-linux-gnu".
>
>GNU gdb Red Hat Linux (6.3.0.0-0.13rh)
>Copyright 2004 Free Software Foundation, Inc.
>GDB is free software, covered by the GNU General Public License, and you
>are
>welcome to change it and/or distribute copies of it under certain
>conditions.
>Type "show copying" to see the conditions.
>There is absolutely no warranty for GDB.  Type "show warranty" for
>details.
>This GDB was configured as "powerpc64-unknown-linux-gnu"...Using host
>libthread_db library "/lib64/tls/libthread_db.so.1".
>
>(gdb) br main
>Breakpoint 1 at 0x100005c4: file ../.././gdb/testsuite/gdb.base/annota1.c,
>line 32.
>(gdb) r
>Starting program: /tmp/manjo/2005-03-11/src/gdb/testsuite/gdb.base/annota1
>
>Breakpoint 1, main () at ../.././gdb/testsuite/gdb.base/annota1.c:32
>32        int my_array[3] = { 1, 2, 3 };
>(gdb)
>GNU gdb Red Hat Linux (6.3.0.0-0.13rh)
>Copyright 2004 Free Software Foundation, Inc.
>GDB is free software, covered by the GNU General Public License, and you
>are
>welcome to change it and/or distribute copies of it under certain
>conditions.
>Type "show copying" to see the conditions.
>There is absolutely no warranty for GDB.  Type "show warranty" for
>details.
>This GDB was configured as "powerpc64-unknown-linux-gnu"...Using host
>libthread_db library "/lib64/tls/libthread_db.so.1".
>
>(gdb) br main
>Breakpoint 1 at 0x100005c4: file ../.././gdb/testsuite/gdb.base/annota1.c,
>line 32.
>(gdb) r
>Starting program: /tmp/manjo/2005-03-11/src/gdb/testsuite/gdb.base/annota1
>
>Breakpoint 1, main () at ../.././gdb/testsuite/gdb.base/annota1.c:32
>32        int my_array[3] = { 1, 2, 3 };
>(gdb)
>
>-------------------- end RH source RPM ------------------
>
>Can some one help?
>
>-----
>manjo
>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>+ Cogito ergo sum                                                          +
>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  
>

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

* warning: Unable to find dynamic linker breakpoint function.
@ 2005-03-11 21:42 Manoj Iyer
  2005-03-12  0:14 ` Khem Raj
  0 siblings, 1 reply; 11+ messages in thread
From: Manoj Iyer @ 2005-03-11 21:42 UTC (permalink / raw)
  To: gdb


latest cvs GDB gives me a warning that it cannot set breakpoint in dynamic
linker, but GDB from RH sources works ok. Sometihng in GDB changed? I saw
a similar discussion for AMD64 last year (between Daniel and Adam
Richard), but it does not make clear why this would happen on cvs version
and not on older versions of GDB.

Platform: ppc64
OS: RH 4.

---------------- CVS version of GDB --------------------
GNU gdb 6.3.50.20050311-cvs
This GDB was configured as "powerpc64-gnu-linux".

GNU gdb 6.3.50.20050311-cvs
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you
are
welcome to change it and/or distribute copies of it under certain
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for
details.
This GDB was configured as "powerpc64-gnu-linux"...Using host libthread_db
library "/lib64/tls/libthread_db.so.1".

(gdb) br main
Breakpoint 1 at 0x100005c4: file ../.././gdb/testsuite/gdb.base/annota1.c,
line 32.
(gdb) r
Starting program: /tmp/manjo/2005-03-11/src/gdb/testsuite/gdb.base/annota1
warning: Unable to find dynamic linker breakpoint function.
GDB will be unable to debug shared library initializers
and track explicitly loaded dynamic code.
warning: Breakpoint address adjusted from 0x10010ac0 to 0x1000041c.

Breakpoint 1, 0x00000000100005c4 in ?? ()
(gdb)

----------------------------- end cvs version ------------------

----------- RH source RPM version ---------------------
But the GDB GNU gdb Red Hat Linux (6.3.0.0-0.13rh)
This GDB was configured as "powerpc64-unknown-linux-gnu".

GNU gdb Red Hat Linux (6.3.0.0-0.13rh)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you
are
welcome to change it and/or distribute copies of it under certain
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for
details.
This GDB was configured as "powerpc64-unknown-linux-gnu"...Using host
libthread_db library "/lib64/tls/libthread_db.so.1".

(gdb) br main
Breakpoint 1 at 0x100005c4: file ../.././gdb/testsuite/gdb.base/annota1.c,
line 32.
(gdb) r
Starting program: /tmp/manjo/2005-03-11/src/gdb/testsuite/gdb.base/annota1

Breakpoint 1, main () at ../.././gdb/testsuite/gdb.base/annota1.c:32
32        int my_array[3] = { 1, 2, 3 };
(gdb)
GNU gdb Red Hat Linux (6.3.0.0-0.13rh)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you
are
welcome to change it and/or distribute copies of it under certain
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for
details.
This GDB was configured as "powerpc64-unknown-linux-gnu"...Using host
libthread_db library "/lib64/tls/libthread_db.so.1".

(gdb) br main
Breakpoint 1 at 0x100005c4: file ../.././gdb/testsuite/gdb.base/annota1.c,
line 32.
(gdb) r
Starting program: /tmp/manjo/2005-03-11/src/gdb/testsuite/gdb.base/annota1

Breakpoint 1, main () at ../.././gdb/testsuite/gdb.base/annota1.c:32
32        int my_array[3] = { 1, 2, 3 };
(gdb)

-------------------- end RH source RPM ------------------

Can some one help?

-----
manjo
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Cogito ergo sum                                                          +
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

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

end of thread, other threads:[~2005-03-12  0:14 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-12-29 21:33 warning: Unable to find dynamic linker breakpoint function Adam Richard
2004-12-29 21:44 ` Daniel Jacobowitz
2004-12-31  0:36   ` Adam Richard
2004-12-31  0:41     ` Daniel Jacobowitz
2004-12-31 13:51       ` Adam Richard
2004-12-31 19:09         ` Daniel Jacobowitz
2005-01-04 23:04           ` Adam Richard
2005-01-04 23:07             ` Daniel Jacobowitz
2005-01-05  3:10               ` Adam Richard
2005-03-11 21:42 Manoj Iyer
2005-03-12  0:14 ` Khem Raj

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