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
next prev parent 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