This is the mail archive of the
mailing list for the GDB project.
Re: [PATCH] Fix building gdb-7.0 on x86_64-*-freebsd
> Thank you for this patch. I believe you could add a comment explaining what
> this number means (just like you did above). What do you think?
> Just my two cents, as usual :-).
I just applied the following patch (head only)
2009-10-19 Joel Brobecker <firstname.lastname@example.org>
* amd64fbsd-nat.c (amd64fbsd_supply_pcb): Add comment.
Writing the comment made me think that we may have chosen the wrong
version number, depending on the angle we look at things from: If we
want to always be able to build, then we should have chosen version
74, since there are a few days where version 74 is missing the field
and yet the GDB code still tries to access it for that versio number.
However, if we're trying to have our code always use these fields
whenver possible, then 75 is the right choice. Although we'll fail
to build for any sources that's in between the moment the fields were
removed and the moment the version was bumped to 75 (a time period
of about a few days), we'll be able use these fields for the rest
of version 74 of the sources.
Based on the number of days this window is open, I would say that this
situation is highly unlikely, and so we don't really need to worry about
RCS file: /cvs/src/src/gdb/amd64fbsd-nat.c,v
retrieving revision 1.23
diff -u -p -r1.23 amd64fbsd-nat.c
--- amd64fbsd-nat.c 16 Oct 2009 23:18:27 -0000 1.23
+++ amd64fbsd-nat.c 19 Oct 2009 19:47:18 -0000
@@ -125,6 +125,11 @@ amd64fbsd_supply_pcb (struct regcache *r
regcache_raw_supply (regcache, 14, &pcb->pcb_r14);
regcache_raw_supply (regcache, 15, &pcb->pcb_r15);
#if (__FreeBSD_version < 800075)
+ /* struct pcb provides the pcb_ds/pcb_es/pcb_fs/pcb_gs fields only
+ up until __FreeBSD_version 800074: The removal of these fields
+ occurred on 2009-04-01 while the __FreeBSD_version number was
+ bumped to 800075 on 2009-04-06. So 800075 is the closest version
+ number where we should not try to access these fields. */
regcache_raw_supply (regcache, AMD64_DS_REGNUM, &pcb->pcb_ds);
regcache_raw_supply (regcache, AMD64_ES_REGNUM, &pcb->pcb_es);
regcache_raw_supply (regcache, AMD64_FS_REGNUM, &pcb->pcb_fs);