public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Jakub Jelinek <jakub@redhat.com>
To: Ian Lance Taylor <iant@google.com>
Cc: Nick Clifton <nickc@redhat.com>, Michael Matz <matz@suse.de>,
	       "H.J. Lu" <hjl.tools@gmail.com>,
	Pedro Alves <palves@redhat.com>,
	       Richard Guenther <richard.guenther@gmail.com>,
	sgayou@redhat.com,        Tom Tromey <tom@tromey.com>,
	gcc-patches <gcc-patches@gcc.gnu.org>,
	       Binutils <binutils@sourceware.org>,
	Jason Merrill <jason@redhat.com>
Subject: Re: [PATCH] Set DEMANGLE_RECURSION_LIMIT to 1536
Date: Mon, 10 Dec 2018 18:55:00 -0000	[thread overview]
Message-ID: <20181210185451.GE12380@tucnak> (raw)
In-Reply-To: <CAKOQZ8zJA_bjuZdq+g2rUoQf_EgihsRR5WanG7EuwWbmP=+xGA@mail.gmail.com>

On Mon, Dec 10, 2018 at 10:20:24AM -0800, Ian Lance Taylor wrote:
> > I think it is a bad idea to use the same macro and value for both the
> > recursion limit and essentially stack limit.  For the latter, it should
> > actually compute expected stack size
> > (i.e. di.num_comps * sizeof (*di.comps) + di.num_subs * sizeof (*di.subs))
> > and rather than just giving up should say that memory up to 64KB this
> > way will be handled via alloca, more through say mmap (I'd avoid malloc
> > because some users are using these APIs in cases where malloc isn't usable).
> > And have only much larger limit, like say 1MB for these arrays on which to
> > give up.
> 
> That makes sense.
> 
> We've wanted to avoid malloc in this code because some programs call
> the demangler from a signal handler.  But using mmap should be fine in
> practice.

mmap is not available everywhere, but we could just have a smaller limit
on how big mangled names we handle on targets where mmap isn't available or
if it fails.

And, the other option is just try to parse the string without doing all the
processing first and compute (perhaps upper bound) on how many components
and substitutions we need.  Many components have longish names, or numbers,
etc. so the 2 * strlen is really very upper bound and strlen for number of
substitutions too.

	Jakub

  reply	other threads:[~2018-12-10 18:55 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-30  8:38 RFA/RFC: Add stack recursion limit to libiberty's demangler Nick Clifton
2018-11-30  8:42 ` Jakub Jelinek
2018-11-30 10:27   ` Nick Clifton
2018-11-30 13:46     ` Michael Matz
2018-11-30 14:57       ` Ian Lance Taylor
2018-12-02  0:49         ` Cary Coutant
2018-12-03 14:53           ` Nick Clifton
2018-12-03 22:00           ` Joseph Myers
2018-11-30 13:56     ` Ian Lance Taylor
2018-11-30 14:03       ` Jakub Jelinek
2018-11-30 17:41         ` RFA/RFC: Add stack recursion limit to libiberty's demangler [v3] Nick Clifton
2018-11-30 17:49           ` Jakub Jelinek
2018-11-30 18:19           ` Pedro Alves
2018-12-03 10:28           ` Richard Biener
2018-12-03 14:45             ` Nick Clifton
2018-12-03 18:49               ` Ian Lance Taylor via gcc-patches
2018-12-04 14:00                 ` RFA/RFC: Add stack recursion limit to libiberty's demangler [v4] Nick Clifton
2018-12-04 15:02                   ` Pedro Alves
2018-12-04 16:57                     ` RFA/RFC: Add stack recursion limit to libiberty's demangler [v5] Nick Clifton
2018-12-04 17:08                       ` Pedro Alves
2018-12-06 11:12                         ` Nick Clifton
2018-12-06 18:04                           ` Ian Lance Taylor via gcc-patches
2018-12-07 16:17                             ` H.J. Lu
2018-12-07 16:25                               ` [PATCH] Set DEMANGLE_RECURSION_LIMIT to 1536 H.J. Lu
2018-12-10 14:52                                 ` Michael Matz
2018-12-10 15:10                                   ` Jakub Jelinek
2018-12-10 15:34                                     ` Jason Merrill
2018-12-11  0:33                                       ` Jeff Law
2018-12-11  6:58                                         ` Jakub Jelinek
2018-12-11 11:05                                           ` Pedro Alves
2018-12-11 14:26                                             ` Ian Lance Taylor via gcc-patches
2018-12-11 15:07                                               ` Pedro Alves
2018-12-11 10:34                                         ` Pedro Alves
2018-12-10 15:12                                   ` Nick Clifton
2018-12-10 15:18                                     ` Jakub Jelinek
2018-12-10 15:26                                       ` Nick Clifton
2018-12-10 15:35                                         ` Jakub Jelinek
2018-12-10 18:20                                           ` Ian Lance Taylor via gcc-patches
2018-12-10 18:55                                             ` Jakub Jelinek [this message]
2018-12-10 23:47                                               ` Jason Merrill
2018-12-10 15:18                                   ` David Malcolm
2018-12-10 15:31                                     ` Nick Clifton
2018-12-06 16:14                       ` RFA/RFC: Add stack recursion limit to libiberty's demangler [v5] Jason Merrill
2018-12-06 21:22                         ` RFC: libiberty PATCH to disable demangling of ancient mangling schemes Jason Merrill
2018-12-07 10:27                           ` Nick Clifton
2018-12-07 10:40                             ` Jakub Jelinek
2018-12-07 16:11                               ` Pedro Alves
2018-12-07 17:49                                 ` Tom Tromey
2018-12-07 21:00                                   ` Jason Merrill
2018-12-14 22:39                                     ` Jason Merrill
2018-12-16  4:50                                       ` Simon Marchi
2018-12-07 16:28                               ` Nick Clifton
2018-12-07 11:37                           ` Richard Biener
2018-12-07 15:49                             ` Jason Merrill
2018-12-10  1:04                               ` Eric Gallager

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181210185451.GE12380@tucnak \
    --to=jakub@redhat.com \
    --cc=binutils@sourceware.org \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=hjl.tools@gmail.com \
    --cc=iant@google.com \
    --cc=jason@redhat.com \
    --cc=matz@suse.de \
    --cc=nickc@redhat.com \
    --cc=palves@redhat.com \
    --cc=richard.guenther@gmail.com \
    --cc=sgayou@redhat.com \
    --cc=tom@tromey.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).