From: Joel Brobecker <brobecker@adacore.com>
To: gdb-patches@sourceware.org
Subject: Re: [RFA/RFC] libdecnumber/gstdint.h is back :-(
Date: Sat, 13 Sep 2008 17:08:00 -0000 [thread overview]
Message-ID: <20080913170814.GG3714@adacore.com> (raw)
In-Reply-To: <20080913141335.GA3005@caradoc.them.org>
[-- Attachment #1: Type: text/plain, Size: 1601 bytes --]
> Why does ../libdecnumber/gstdint.h exist? Is it because you're
> configuring in the source directory, and if so can we just tell people
> not to do that?
Yes, I like doing my builds in-tree. I tried changing my habits to
building out-of-tree, but having source files and generated files
in different trees is sometimes a pain, so I ended up reverting to
my old habits. If this is going to cause too much trouble, then
I'll try to change my habits again. (Note: If this is the case,
then we need to adjust the README file, which still mentions both
options).
> Another option would be to add a check for _GL_STDINT_H to
> libdecnumber; I suspect they would not mind.
In the same category, here is the temporary change I installed
in our tree. I called it a horrible hack, but maybe that was an
overstatement...
> > What occured to me while thinking about all this is that the
> > root of the problem is that we have two incompatible files that
> > should be identical in practice. Since we are always building
> > libdecnumber, can we use libdecnumber's gstdint.h and ditch
> > gnulib's stdint.h?
>
> This could be a problem if we pulled in gnulib modules that
> include <stdint.h> from a replacement header. We already use
> it in the building of gnulib (str-two-way.h).
And I am also wondering about building gdbserver without configuring
GDB - that might be a problem too.
I can rework a little the comment, but what do you think of the idea?
I think it's similar to your suggestion, except that the knowledge is
kept on the "client" side rather than the library side.
Thanks,
--
Joel
[-- Attachment #2: stdint.diff --]
[-- Type: text/plain, Size: 1795 bytes --]
Modified: gdb/defs.h
===================================================================
--- gdb/defs.h 2008-09-13 01:57:56 UTC (rev 135288)
+++ gdb/defs.h 2008-09-13 04:09:52 UTC (rev 135289)
@@ -30,6 +30,31 @@
#include <limits.h>
#include <stdint.h>
+/* The libdecnumber library, on which GDB depends, includes a header file
+ called gstdint.h instead of relying directly on stdint.h. GDB, on the
+ other hand, includes stdint.h directly, relying on the fact that gnulib
+ generates a copy if the system doesn't provide one or if it is missing
+ some features. Unfortunately, gstdint.h and stdint.h cannot be included
+ at the same time, which may happen when we include a file from
+ libdecnumber.
+
+ The first time we encountered this problem, we thought we had resolved
+ it by having a file named gstdint.h in this directory that would simply
+ contain a #include of stdint.h, thus hoping to "redirect" the gstdint.h
+ include in libdecnumber. Unfortunately, it turns out that this doesn't
+ work after all, mostly because libdecnumber includes gstdint.h using
+ the double quotes as opposed to the angle brackets. The search path
+ in implementation defined, but it seems that the gstdint.h files in
+ libdecnumber is picked up after all, thus defeating our trick.
+
+ The following macro definition is a horrible hack that prevents
+ the effective inclusion of gstdint.h, as all the definitions it
+ provides are guarded against GCC_GENERATED_STDINT_H. We already
+ have gnulib/stdint.h included, so it's ok to blank out gstdint.h.
+ It's horrible but it allows to fix the build issues it gstdint.h
+ causes while we work on a more suitable fix. */
+#define GCC_GENERATED_STDINT_H 1
+
#ifdef HAVE_STDDEF_H
#include <stddef.h>
#endif
next prev parent reply other threads:[~2008-09-13 17:08 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-13 5:01 Joel Brobecker
2008-09-13 14:14 ` Daniel Jacobowitz
2008-09-13 17:08 ` Joel Brobecker [this message]
2008-09-13 17:56 ` Daniel Jacobowitz
2008-09-14 6:48 ` Joel Brobecker
2008-09-14 16:04 ` Joel Brobecker
2008-09-14 17:17 ` Daniel Jacobowitz
2008-09-16 18:22 ` Joel Brobecker
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=20080913170814.GG3714@adacore.com \
--to=brobecker@adacore.com \
--cc=gdb-patches@sourceware.org \
/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