Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Tom Tromey <tromey@redhat.com>
To: Siddhesh Poyarekar <siddhesh@redhat.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH] Expand bitpos to LONGEST to allow access to large offsets within a struct
Date: Tue, 21 Feb 2012 20:46:00 -0000	[thread overview]
Message-ID: <87d397syts.fsf@fleche.redhat.com> (raw)
In-Reply-To: <20120220132724.GB4753@spoyarek.pnq.redhat.com> (Siddhesh	Poyarekar's message of "Mon, 20 Feb 2012 18:58:24 +0530")

>>>>> "Siddhesh" == Siddhesh Poyarekar <siddhesh@redhat.com> writes:

Siddhesh> If a struct member is at an offset greater than or equal to
Siddhesh> 0x10000000, the resulting bit position within the struct
Siddhesh> overflows and causes an invalid access. The following program
Siddhesh> demonstrates this problem:

Thanks for doing this.  It is a long-needed fix.

Siddhesh> This happens because the bitpos in field_location within the struct
Siddhesh> main_type.field is declared as an int, limiting it to just 4 bytes. I
Siddhesh> have attached a patch that expands this to LONGEST and adjusted this
Siddhesh> change in the code. The testsuite does not report any regressions due
Siddhesh> to this patch and it fixes the problem.

I think this should fix http://sourceware.org/bugzilla/show_bug.cgi?id=7259.
If so, at the top of the ChangeLog, write 'PR symtab/7259:'.

If it does fix this PR then this suggests a simple test case that
doesn't require a huge allocation.


Most of the patch seems perfectly fine -- just the logical consequence
of the core change.  However there are a few issues, mostly minor.

Siddhesh>        printfi_filtered (spaces + 2,
Siddhesh> -			"[%d] bitpos %d bitsize %d type ",
Siddhesh> +			"[%d] bitpos %ld bitsize %d type ",
Siddhesh>  			idx, TYPE_FIELD_BITPOS (type, idx),

You can't really rely on the size of LONGEST.
Instead you have to use %s and 'plongest'.

There are a few instances of this in the patch.

Siddhesh> diff --git a/gdb/value.c b/gdb/value.c
Siddhesh> index 583be33..49a6f43 100644
Siddhesh> --- a/gdb/value.c
Siddhesh> +++ b/gdb/value.c
Siddhesh> @@ -308,7 +308,7 @@ struct value
Siddhesh>       `type', and `embedded_offset' is zero, so everything works
Siddhesh>       normally.  */
Siddhesh>    struct type *enclosing_type;
Siddhesh> -  int embedded_offset;
Siddhesh> +  LONGEST embedded_offset;
Siddhesh>    int pointed_to_offset;

I think you also have to widen the 'offset' field, and probably also
'pointed_to_offset'.  This will probably have other consequences, e.g.,
value_offset will have a different return type.

Tom


  reply	other threads:[~2012-02-21 20:43 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-20 14:53 Siddhesh Poyarekar
2012-02-21 20:46 ` Tom Tromey [this message]
2012-02-22  7:44   ` Siddhesh Poyarekar
2012-02-29 13:55   ` Siddhesh Poyarekar
2012-02-29 13:59     ` Siddhesh Poyarekar
2012-03-01 22:45     ` Jan Kratochvil
2012-03-05  6:34       ` Siddhesh Poyarekar
2012-03-05  8:05         ` Jan Kratochvil
2012-03-21 10:06           ` [PATCH] Allow 64-bit enum values Siddhesh Poyarekar
2012-03-27 17:00             ` Jan Kratochvil
2012-03-28  4:19               ` Siddhesh Poyarekar
2012-03-30 16:15                 ` Jan Kratochvil
2012-04-17 14:01                   ` Jan Kratochvil
2012-04-18  2:53                     ` Siddhesh Poyarekar
2012-04-18  6:58                       ` [commit] " Jan Kratochvil
2012-04-18  7:06                         ` [ChangeLog commit] " Jan Kratochvil
2012-04-19 16:58                         ` [commit] " Ulrich Weigand
2012-04-20  4:23                           ` Siddhesh Poyarekar
2012-04-20  7:50                             ` [obv] Fix python-2.4 compilation compat. [Re: [commit] [PATCH] Allow 64-bit enum values] Jan Kratochvil
2012-04-20 19:00                               ` Tom Tromey
2012-03-28 16:55             ` [PATCH] Allow 64-bit enum values Tom Tromey
2012-03-29 10:56               ` Siddhesh Poyarekar
2012-04-17 13:11             ` [commit] Support 64-bit constants/enums on 32-bit host [Re: [PATCH] Allow 64-bit enum values] Jan Kratochvil
2012-04-17 13:16               ` [patch!] " Jan Kratochvil
2012-04-17 14:33               ` [commit] " Tom Tromey
2012-04-17 14:55                 ` Jan Kratochvil
2012-04-17 15:18                   ` Tom Tromey
2012-04-17 15:32                     ` Jan Kratochvil
2012-04-17 19:32                 ` Jan Kratochvil
2012-04-17 20:51                   ` Tom Tromey
2012-04-18  7:01                     ` [real commit] " Jan Kratochvil
2012-04-17 14:33               ` [patch] " Jan Kratochvil
2012-04-17 15:59                 ` Tom Tromey
2012-04-17 15:42                   ` Jan Kratochvil
2012-04-17 15:52                     ` Tom Tromey
2012-02-21 21:39 ` [PATCH] Expand bitpos to LONGEST to allow access to large offsets within a struct Jan Kratochvil
2012-05-04 13:10   ` [PATCH v2] Expand bitpos and type.length to LONGEST and ULONGEST Siddhesh Poyarekar
2012-05-15  9:46     ` ping: " Siddhesh Poyarekar
2012-05-15  9:49       ` Jan Kratochvil
2012-05-15 10:02         ` Siddhesh Poyarekar
2012-05-15 20:07     ` Jan Kratochvil
2012-05-16  3:50       ` Siddhesh Poyarekar
2012-05-16  7:19         ` Jan Kratochvil
2012-05-16  7:41           ` Siddhesh Poyarekar
2012-05-20 15:43             ` Doug Evans
2012-05-20 20:24               ` Jan Kratochvil
2012-05-20 20:28                 ` Doug Evans
2012-05-23 13:52       ` Siddhesh Poyarekar
2012-05-23 17:46         ` Jan Kratochvil
2012-05-24  1:36           ` Siddhesh Poyarekar
2012-05-24 15:01             ` Jan Kratochvil
2012-05-31 18:15               ` [PATCH v3] " Siddhesh Poyarekar
2012-06-05 22:27                 ` Jan Kratochvil
2012-06-06 18:23                   ` Siddhesh Poyarekar
2012-06-06 21:34                     ` Jan Kratochvil
2012-06-08 14:16                       ` Jan Kratochvil
2012-06-08 15:27                         ` Jan Kratochvil
2012-06-11 12:53                           ` Siddhesh Poyarekar
2012-06-11 13:00                             ` Jan Kratochvil
2012-06-11 18:33                               ` Siddhesh Poyarekar
2012-06-12  9:56                                 ` Jan Kratochvil
2012-06-12 14:35                                   ` Jan Kratochvil
2012-06-18 10:31                                     ` [1/2][PATCH " Siddhesh Poyarekar
2012-06-20 15:47                                       ` Jan Kratochvil
2012-06-20 16:32                                         ` Siddhesh Poyarekar
2012-06-20 17:25                                           ` Jan Kratochvil
2012-06-23  1:59                                         ` Siddhesh Poyarekar
2012-06-18 10:31                                     ` [2/2][PATCH " Siddhesh Poyarekar
2012-05-31  6:39           ` [PATCH v2] " Siddhesh Poyarekar
2012-05-31  9:24             ` Siddhesh Poyarekar

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=87d397syts.fsf@fleche.redhat.com \
    --to=tromey@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --cc=siddhesh@redhat.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