initial buildroot for linux 5.15
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
From f0bbc17aeed1b636782a4b92e8191d90f310d0a2 Mon Sep 17 00:00:00 2001
|
||||
From: Boris Kolpackov <boris@codesynthesis.com>
|
||||
Date: Mon, 1 Jun 2015 19:08:33 +0200
|
||||
Subject: [PATCH] <tm.h> include in gcc.hxx appears to be no longer necessary
|
||||
|
||||
On MIPS this file pulls in enum processor which conflicts with
|
||||
our class processor.
|
||||
|
||||
[Upstream: f0bbc17aeed1b636782a4b92e8191d90f310d0a2]
|
||||
Signed-off-by: Kamel Bouhara <kamel.bouhara@bootlin.com>
|
||||
---
|
||||
odb/gcc.hxx | 2 --
|
||||
1 file changed, 2 deletions(-)
|
||||
|
||||
diff --git a/odb/gcc.hxx b/odb/gcc.hxx
|
||||
index 504b59b..c953047 100644
|
||||
--- a/odb/gcc.hxx
|
||||
+++ b/odb/gcc.hxx
|
||||
@@ -46,8 +46,6 @@ extern "C"
|
||||
#include <tree.h>
|
||||
#include <real.h>
|
||||
|
||||
-#include <tm.h>
|
||||
-
|
||||
#include <cpplib.h>
|
||||
#include <cp/cp-tree.h>
|
||||
|
||||
--
|
||||
2.26.2
|
||||
|
||||
@@ -0,0 +1,444 @@
|
||||
From 5486c8c85b9cfb92232518b2fadf6d8ed7b332d5 Mon Sep 17 00:00:00 2001
|
||||
From: Boris Kolpackov <boris@codesynthesis.com>
|
||||
Date: Wed, 3 Jun 2015 21:35:43 +0200
|
||||
Subject: [PATCH] Remove gratuitous classes
|
||||
|
||||
In the process also get rid of global class processor which conflicts
|
||||
with enum processor on MIPS.
|
||||
|
||||
[Upstream: bbc39ffe31c67506b4c03fc56fa3adcb925b6325]
|
||||
Signed-off-by: Kamel Bouhara <kamel.bouhara@bootlin.com>
|
||||
---
|
||||
odb/context.hxx | 3 ++-
|
||||
odb/generator.cxx | 24 ++++++++++++------------
|
||||
odb/generator.hxx | 26 ++++++++------------------
|
||||
odb/plugin.cxx | 18 +++++++-----------
|
||||
odb/processor.cxx | 4 ++--
|
||||
odb/processor.hxx | 22 ++++++----------------
|
||||
odb/relational/validator.cxx | 6 +++---
|
||||
odb/relational/validator.hxx | 29 +++++++++--------------------
|
||||
odb/validator.cxx | 13 ++++++-------
|
||||
odb/validator.hxx | 28 +++++++++-------------------
|
||||
10 files changed, 64 insertions(+), 109 deletions(-)
|
||||
|
||||
diff --git a/odb/context.hxx b/odb/context.hxx
|
||||
index 1cf002a..351bc61 100644
|
||||
--- a/odb/context.hxx
|
||||
+++ b/odb/context.hxx
|
||||
@@ -41,7 +41,8 @@ typedef cutl::re::format regex_format;
|
||||
|
||||
typedef std::vector<regexsub> regex_mapping;
|
||||
|
||||
-//
|
||||
+// Generic exception thrown to indicate a failure when diagnostics
|
||||
+// has already been issued (to stderr).
|
||||
//
|
||||
class operation_failed {};
|
||||
|
||||
diff --git a/odb/generator.cxx b/odb/generator.cxx
|
||||
index e165faf..6aa5151 100644
|
||||
--- a/odb/generator.cxx
|
||||
+++ b/odb/generator.cxx
|
||||
@@ -58,7 +58,7 @@ namespace
|
||||
if (!ifs.is_open ())
|
||||
{
|
||||
cerr << "error: unable to open '" << p << "' in read mode" << endl;
|
||||
- throw generator::failed ();
|
||||
+ throw generator_failed ();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -70,7 +70,7 @@ namespace
|
||||
if (!ofs.is_open ())
|
||||
{
|
||||
cerr << "error: unable to open '" << p << "' in write mode" << endl;
|
||||
- throw generator::failed ();
|
||||
+ throw generator_failed ();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -118,7 +118,7 @@ namespace
|
||||
}
|
||||
}
|
||||
|
||||
-void generator::
|
||||
+void
|
||||
generate (options const& ops,
|
||||
features& fts,
|
||||
semantics::unit& unit,
|
||||
@@ -259,7 +259,7 @@ generate (options const& ops,
|
||||
cerr << in_log_path << ": error: wrong database '" <<
|
||||
old_changelog->database () << "', expected '" << db <<
|
||||
"'" << endl;
|
||||
- throw generator::failed ();
|
||||
+ throw generator_failed ();
|
||||
}
|
||||
|
||||
string sn (ops.schema_name ()[db]);
|
||||
@@ -268,18 +268,18 @@ generate (options const& ops,
|
||||
cerr << in_log_path << ": error: wrong schema name '" <<
|
||||
old_changelog->schema_name () << "', expected '" << sn <<
|
||||
"'" << endl;
|
||||
- throw generator::failed ();
|
||||
+ throw generator_failed ();
|
||||
}
|
||||
}
|
||||
catch (const ios_base::failure& e)
|
||||
{
|
||||
cerr << in_log_path << ": read failure" << endl;
|
||||
- throw failed ();
|
||||
+ throw generator_failed ();
|
||||
}
|
||||
catch (const xml::parsing& e)
|
||||
{
|
||||
cerr << e.what () << endl;
|
||||
- throw failed ();
|
||||
+ throw generator_failed ();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -976,12 +976,12 @@ generate (options const& ops,
|
||||
catch (const ios_base::failure& e)
|
||||
{
|
||||
cerr << out_log_path << ": write failure" << endl;
|
||||
- throw failed ();
|
||||
+ throw generator_failed ();
|
||||
}
|
||||
catch (const xml::serialization& e)
|
||||
{
|
||||
cerr << e.what () << endl;
|
||||
- throw failed ();
|
||||
+ throw generator_failed ();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -998,18 +998,18 @@ generate (options const& ops,
|
||||
{
|
||||
// Code generation failed. Diagnostics has already been issued.
|
||||
//
|
||||
- throw failed ();
|
||||
+ throw generator_failed ();
|
||||
}
|
||||
catch (semantics::invalid_path const& e)
|
||||
{
|
||||
cerr << "error: '" << e.path () << "' is not a valid filesystem path"
|
||||
<< endl;
|
||||
- throw failed ();
|
||||
+ throw generator_failed ();
|
||||
}
|
||||
catch (fs::error const&)
|
||||
{
|
||||
// Auto-removal of generated files failed. Ignore it.
|
||||
//
|
||||
- throw failed ();
|
||||
+ throw generator_failed ();
|
||||
}
|
||||
}
|
||||
diff --git a/odb/generator.hxx b/odb/generator.hxx
|
||||
index ce49295..e83d94d 100644
|
||||
--- a/odb/generator.hxx
|
||||
+++ b/odb/generator.hxx
|
||||
@@ -11,23 +11,13 @@
|
||||
#include <odb/features.hxx>
|
||||
#include <odb/semantics/unit.hxx>
|
||||
|
||||
-class generator
|
||||
-{
|
||||
-public:
|
||||
- class failed {};
|
||||
-
|
||||
- void
|
||||
- generate (options const&,
|
||||
- features&,
|
||||
- semantics::unit&,
|
||||
- semantics::path const& file,
|
||||
- std::vector<semantics::path> const& inputs);
|
||||
-
|
||||
- generator () {}
|
||||
-
|
||||
-private:
|
||||
- generator (generator const&);
|
||||
- generator& operator= (generator const&);
|
||||
-};
|
||||
+class generator_failed {};
|
||||
+
|
||||
+void
|
||||
+generate (options const&,
|
||||
+ features&,
|
||||
+ semantics::unit&,
|
||||
+ semantics::path const& file,
|
||||
+ std::vector<semantics::path> const& inputs);
|
||||
|
||||
#endif // ODB_GENERATOR_HXX
|
||||
diff --git a/odb/plugin.cxx b/odb/plugin.cxx
|
||||
index e32f225..51f0cb1 100644
|
||||
--- a/odb/plugin.cxx
|
||||
+++ b/odb/plugin.cxx
|
||||
@@ -199,27 +199,23 @@ gate_callback (void*, void*)
|
||||
parser p (*options_, loc_pragmas_, ns_loc_pragmas_, decl_pragmas_);
|
||||
auto_ptr<unit> u (p.parse (global_namespace, file_));
|
||||
|
||||
-
|
||||
features f;
|
||||
|
||||
// Validate, pass 1.
|
||||
//
|
||||
- validator v;
|
||||
- v.validate (*options_, f, *u, file_, 1);
|
||||
+ validate (*options_, f, *u, file_, 1);
|
||||
|
||||
// Process.
|
||||
//
|
||||
- processor pr;
|
||||
- pr.process (*options_, f, *u, file_);
|
||||
+ process (*options_, f, *u, file_);
|
||||
|
||||
// Validate, pass 2.
|
||||
//
|
||||
- v.validate (*options_, f, *u, file_, 2);
|
||||
+ validate (*options_, f, *u, file_, 2);
|
||||
|
||||
// Generate.
|
||||
//
|
||||
- generator g;
|
||||
- g.generate (*options_, f, *u, file_, inputs_);
|
||||
+ generate (*options_, f, *u, file_, inputs_);
|
||||
}
|
||||
catch (cutl::re::format const& e)
|
||||
{
|
||||
@@ -239,19 +235,19 @@ gate_callback (void*, void*)
|
||||
//
|
||||
r = 1;
|
||||
}
|
||||
- catch (validator::failed const&)
|
||||
+ catch (validator_failed const&)
|
||||
{
|
||||
// Diagnostics has aready been issued.
|
||||
//
|
||||
r = 1;
|
||||
}
|
||||
- catch (processor::failed const&)
|
||||
+ catch (processor_failed const&)
|
||||
{
|
||||
// Diagnostics has aready been issued.
|
||||
//
|
||||
r = 1;
|
||||
}
|
||||
- catch (generator::failed const&)
|
||||
+ catch (generator_failed const&)
|
||||
{
|
||||
// Diagnostics has aready been issued.
|
||||
//
|
||||
diff --git a/odb/processor.cxx b/odb/processor.cxx
|
||||
index a808a52..3a2cb1d 100644
|
||||
--- a/odb/processor.cxx
|
||||
+++ b/odb/processor.cxx
|
||||
@@ -3064,7 +3064,7 @@ namespace
|
||||
};
|
||||
}
|
||||
|
||||
-void processor::
|
||||
+void
|
||||
process (options const& ops,
|
||||
features& f,
|
||||
semantics::unit& unit,
|
||||
@@ -3120,6 +3120,6 @@ process (options const& ops,
|
||||
{
|
||||
// Processing failed. Diagnostics has already been issued.
|
||||
//
|
||||
- throw failed ();
|
||||
+ throw processor_failed ();
|
||||
}
|
||||
}
|
||||
diff --git a/odb/processor.hxx b/odb/processor.hxx
|
||||
index 602b999..e62dd25 100644
|
||||
--- a/odb/processor.hxx
|
||||
+++ b/odb/processor.hxx
|
||||
@@ -9,22 +9,12 @@
|
||||
#include <odb/features.hxx>
|
||||
#include <odb/semantics/unit.hxx>
|
||||
|
||||
-class processor
|
||||
-{
|
||||
-public:
|
||||
- class failed {};
|
||||
+class processor_failed {};
|
||||
|
||||
- void
|
||||
- process (options const&,
|
||||
- features&,
|
||||
- semantics::unit&,
|
||||
- semantics::path const&);
|
||||
-
|
||||
- processor () {}
|
||||
-
|
||||
-private:
|
||||
- processor (processor const&);
|
||||
- processor& operator= (processor const&);
|
||||
-};
|
||||
+void
|
||||
+process (options const&,
|
||||
+ features&,
|
||||
+ semantics::unit&,
|
||||
+ semantics::path const&);
|
||||
|
||||
#endif // ODB_PROCESSOR_HXX
|
||||
diff --git a/odb/relational/validator.cxx b/odb/relational/validator.cxx
|
||||
index 1d51c9a..47f089c 100644
|
||||
--- a/odb/relational/validator.cxx
|
||||
+++ b/odb/relational/validator.cxx
|
||||
@@ -528,7 +528,7 @@ namespace relational
|
||||
};
|
||||
}
|
||||
|
||||
- void validator::
|
||||
+ void
|
||||
validate (options const&,
|
||||
features&,
|
||||
semantics::unit& u,
|
||||
@@ -608,7 +608,7 @@ namespace relational
|
||||
}
|
||||
|
||||
if (!valid)
|
||||
- throw failed ();
|
||||
+ throw operation_failed ();
|
||||
|
||||
if (pass == 1)
|
||||
{
|
||||
@@ -636,6 +636,6 @@ namespace relational
|
||||
}
|
||||
|
||||
if (!valid)
|
||||
- throw failed ();
|
||||
+ throw operation_failed ();
|
||||
}
|
||||
}
|
||||
diff --git a/odb/relational/validator.hxx b/odb/relational/validator.hxx
|
||||
index f0ede53..93360c3 100644
|
||||
--- a/odb/relational/validator.hxx
|
||||
+++ b/odb/relational/validator.hxx
|
||||
@@ -11,26 +11,15 @@
|
||||
|
||||
namespace relational
|
||||
{
|
||||
- class validator
|
||||
- {
|
||||
- public:
|
||||
- struct failed {};
|
||||
-
|
||||
- // The first pass is performed before processing. The second -- after.
|
||||
- //
|
||||
- void
|
||||
- validate (options const&,
|
||||
- features&,
|
||||
- semantics::unit&,
|
||||
- semantics::path const&,
|
||||
- unsigned short pass);
|
||||
-
|
||||
- validator () {}
|
||||
-
|
||||
- private:
|
||||
- validator (validator const&);
|
||||
- validator& operator= (validator const&);
|
||||
- };
|
||||
+ // The first pass is performed before processing. The second -- after.
|
||||
+ // Throws operation_failed to signal a failure.
|
||||
+ //
|
||||
+ void
|
||||
+ validate (options const&,
|
||||
+ features&,
|
||||
+ semantics::unit&,
|
||||
+ semantics::path const&,
|
||||
+ unsigned short pass);
|
||||
}
|
||||
|
||||
#endif // ODB_RELATIONAL_VALIDATOR_HXX
|
||||
diff --git a/odb/validator.cxx b/odb/validator.cxx
|
||||
index e80f4d8..91d91e5 100644
|
||||
--- a/odb/validator.cxx
|
||||
+++ b/odb/validator.cxx
|
||||
@@ -1457,7 +1457,7 @@ namespace
|
||||
};
|
||||
}
|
||||
|
||||
-void validator::
|
||||
+void
|
||||
validate (options const& ops,
|
||||
features& f,
|
||||
semantics::unit& u,
|
||||
@@ -1506,7 +1506,7 @@ validate (options const& ops,
|
||||
}
|
||||
|
||||
if (!valid)
|
||||
- throw failed ();
|
||||
+ throw validator_failed ();
|
||||
|
||||
auto_ptr<context> ctx (create_context (cerr, u, ops, f, 0));
|
||||
|
||||
@@ -1559,7 +1559,7 @@ validate (options const& ops,
|
||||
}
|
||||
|
||||
if (!valid)
|
||||
- throw failed ();
|
||||
+ throw validator_failed ();
|
||||
|
||||
switch (db)
|
||||
{
|
||||
@@ -1575,12 +1575,11 @@ validate (options const& ops,
|
||||
{
|
||||
try
|
||||
{
|
||||
- relational::validator v;
|
||||
- v.validate (ops, f, u, p, pass);
|
||||
+ relational::validate (ops, f, u, p, pass);
|
||||
}
|
||||
- catch (relational::validator::failed const&)
|
||||
+ catch (operation_failed const&)
|
||||
{
|
||||
- throw failed ();
|
||||
+ throw validator_failed ();
|
||||
}
|
||||
|
||||
break;
|
||||
diff --git a/odb/validator.hxx b/odb/validator.hxx
|
||||
index f913049..3ffa470 100644
|
||||
--- a/odb/validator.hxx
|
||||
+++ b/odb/validator.hxx
|
||||
@@ -9,25 +9,15 @@
|
||||
#include <odb/features.hxx>
|
||||
#include <odb/semantics/unit.hxx>
|
||||
|
||||
-class validator
|
||||
-{
|
||||
-public:
|
||||
- struct failed {};
|
||||
+class validator_failed {};
|
||||
|
||||
- // The first pass is performed before processing. The second -- after.
|
||||
- //
|
||||
- void
|
||||
- validate (options const&,
|
||||
- features&,
|
||||
- semantics::unit&,
|
||||
- semantics::path const&,
|
||||
- unsigned short pass);
|
||||
-
|
||||
- validator () {}
|
||||
-
|
||||
-private:
|
||||
- validator (validator const&);
|
||||
- validator& operator= (validator const&);
|
||||
-};
|
||||
+// The first pass is performed before processing. The second -- after.
|
||||
+//
|
||||
+void
|
||||
+validate (options const&,
|
||||
+ features&,
|
||||
+ semantics::unit&,
|
||||
+ semantics::path const&,
|
||||
+ unsigned short pass);
|
||||
|
||||
#endif // ODB_VALIDATOR_HXX
|
||||
--
|
||||
2.25.0
|
||||
|
||||
@@ -0,0 +1,312 @@
|
||||
From bf389fd5185143847b1d91aed423e79c322dba51 Mon Sep 17 00:00:00 2001
|
||||
From: Boris Kolpackov <boris@codesynthesis.com>
|
||||
Date: Fri, 5 Feb 2016 16:01:42 +0200
|
||||
Subject: [PATCH] Initial work to make ODB compatible with GCC 6
|
||||
|
||||
[Upstream: 511dcf67322ad87fb32f97d1cf7725c129e83898]
|
||||
Signed-off-by: Kamel Bouhara <kamel.bouhara@bootlin.com>
|
||||
---
|
||||
odb/cxx-lexer.cxx | 4 ++++
|
||||
odb/gcc-fwd.hxx | 23 ++++++++++++++++++++++-
|
||||
odb/gcc.hxx | 10 ++++++++++
|
||||
odb/include.cxx | 31 +++++++++++++++++++++----------
|
||||
odb/parser.cxx | 8 ++++----
|
||||
odb/plugin.cxx | 29 +++++++++++++++++++++++++++--
|
||||
odb/semantics/elements.cxx | 4 ++--
|
||||
7 files changed, 90 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/odb/cxx-lexer.cxx b/odb/cxx-lexer.cxx
|
||||
index 7029c7e..64df296 100644
|
||||
--- a/odb/cxx-lexer.cxx
|
||||
+++ b/odb/cxx-lexer.cxx
|
||||
@@ -135,8 +135,12 @@ cpp_error_callback (
|
||||
#if BUILDING_GCC_MAJOR > 4 || BUILDING_GCC_MAJOR == 4 && BUILDING_GCC_MINOR > 5
|
||||
int /*reason*/, // Added in GCC 4.6.0.
|
||||
#endif
|
||||
+#if BUILDING_GCC_MAJOR <= 5
|
||||
location_t,
|
||||
unsigned int,
|
||||
+#else
|
||||
+ rich_location*,
|
||||
+#endif
|
||||
char const* msg,
|
||||
va_list *ap)
|
||||
{
|
||||
diff --git a/odb/gcc-fwd.hxx b/odb/gcc-fwd.hxx
|
||||
index a120f05..618b106 100644
|
||||
--- a/odb/gcc-fwd.hxx
|
||||
+++ b/odb/gcc-fwd.hxx
|
||||
@@ -7,6 +7,24 @@
|
||||
|
||||
#include <bversion.h>
|
||||
|
||||
+#if BUILDING_GCC_MAJOR >= 6
|
||||
+
|
||||
+// If we include <system.h> here, it pulls in all kinds of GCC trouble that
|
||||
+// "poisons" standard C/C++ declarations; see safe-ctype.h. So instead we
|
||||
+// are going to "exclude" safe-ctype.h. To compensate, however, we will
|
||||
+// include it first thing in gcc.hxx.
|
||||
+//
|
||||
+# include <config.h>
|
||||
+# define SAFE_CTYPE_H
|
||||
+# include <system.h>
|
||||
+# undef SAFE_CTYPE_H
|
||||
+# include <coretypes.h>
|
||||
+
|
||||
+typedef unsigned int source_location; // <line-map.h>
|
||||
+typedef source_location location_t; // <input.h>
|
||||
+
|
||||
+#else // GCC < 6
|
||||
+
|
||||
#if BUILDING_GCC_MAJOR > 4 || BUILDING_GCC_MAJOR == 4 && BUILDING_GCC_MINOR > 8
|
||||
# include <limits.h> // CHAR_BIT
|
||||
# include <config.h>
|
||||
@@ -33,6 +51,9 @@ extern "C"
|
||||
|
||||
typedef unsigned int source_location; // <line-map.h>
|
||||
typedef source_location location_t; // <input.h>
|
||||
-}
|
||||
+
|
||||
+} // extern "C"
|
||||
+
|
||||
+#endif
|
||||
|
||||
#endif // ODB_GCC_FWD_HXX
|
||||
diff --git a/odb/gcc.hxx b/odb/gcc.hxx
|
||||
index c953047..858d685 100644
|
||||
--- a/odb/gcc.hxx
|
||||
+++ b/odb/gcc.hxx
|
||||
@@ -7,6 +7,10 @@
|
||||
|
||||
#include <odb/gcc-fwd.hxx>
|
||||
|
||||
+#if BUILDING_GCC_MAJOR >= 6
|
||||
+# include <safe-ctype.h> // See gcc-fwd.hxx.
|
||||
+#endif
|
||||
+
|
||||
// GCC header includes to get the plugin and parse tree declarations.
|
||||
// The order is important and doesn't follow any kind of logic.
|
||||
//
|
||||
@@ -145,4 +149,10 @@ gcc_tree_code_name (gcc_tree_code_type tc) {return tree_code_name[tc];}
|
||||
#define DECL_CHAIN(x) TREE_CHAIN(x)
|
||||
#endif
|
||||
|
||||
+// In GCC 6, ANON_AGGRNAME_P became anon_aggrname_p().
|
||||
+//
|
||||
+#if BUILDING_GCC_MAJOR < 6
|
||||
+# define anon_aggrname_p(X) ANON_AGGRNAME_P(X)
|
||||
+#endif
|
||||
+
|
||||
#endif // ODB_GCC_HXX
|
||||
diff --git a/odb/include.cxx b/odb/include.cxx
|
||||
index c397993..08c93ce 100644
|
||||
--- a/odb/include.cxx
|
||||
+++ b/odb/include.cxx
|
||||
@@ -30,9 +30,18 @@ namespace
|
||||
path path_;
|
||||
};
|
||||
|
||||
+#if BUILDING_GCC_MAJOR >= 6
|
||||
+ typedef line_map_ordinary line_map_type;
|
||||
+#else
|
||||
+ typedef line_map line_map_type;
|
||||
+# ifndef linemap_check_ordinary
|
||||
+# define linemap_check_ordinary(X) (X)
|
||||
+# endif
|
||||
+#endif
|
||||
+
|
||||
struct includes
|
||||
{
|
||||
- typedef std::map<line_map const*, include_directive> map_type;
|
||||
+ typedef std::map<line_map_type const*, include_directive> map_type;
|
||||
bool trailing; // Included at the beginning or at the end of the main file.
|
||||
map_type map;
|
||||
};
|
||||
@@ -144,7 +153,9 @@ namespace
|
||||
//
|
||||
if (l > BUILTINS_LOCATION)
|
||||
{
|
||||
- line_map const* lm (linemap_lookup (line_table, l));
|
||||
+ line_map_type const* lm (
|
||||
+ linemap_check_ordinary (
|
||||
+ linemap_lookup (line_table, l)));
|
||||
|
||||
if (lm != 0 && !MAIN_FILE_P (lm))
|
||||
{
|
||||
@@ -537,20 +548,20 @@ namespace
|
||||
//
|
||||
#if BUILDING_GCC_MAJOR == 4 && BUILDING_GCC_MINOR <= 6
|
||||
size_t used (line_table->used);
|
||||
- line_map const* maps (line_table->maps);
|
||||
+ line_map_type const* maps (line_table->maps);
|
||||
#else
|
||||
size_t used (line_table->info_ordinary.used);
|
||||
- line_map const* maps (line_table->info_ordinary.maps);
|
||||
+ line_map_type const* maps (line_table->info_ordinary.maps);
|
||||
#endif
|
||||
|
||||
for (size_t i (0); i < used; ++i)
|
||||
{
|
||||
- line_map const* m (maps + i);
|
||||
+ line_map_type const* m (maps + i);
|
||||
|
||||
if (MAIN_FILE_P (m) || m->reason != LC_ENTER)
|
||||
continue;
|
||||
|
||||
- line_map const* ifm (INCLUDED_FROM (line_table, m));
|
||||
+ line_map_type const* ifm (INCLUDED_FROM (line_table, m));
|
||||
|
||||
#if BUILDING_GCC_MAJOR == 4 && BUILDING_GCC_MINOR <= 6
|
||||
path f (m->to_file);
|
||||
@@ -580,7 +591,7 @@ namespace
|
||||
for (includes::iterator j (i->second.begin ());
|
||||
j != i->second.end (); ++j)
|
||||
{
|
||||
- line_map const* lm (j->first);
|
||||
+ line_map_type const* lm (j->first);
|
||||
cerr << '\t' << lm->to_file << ":" << LAST_SOURCE_LINE (lm) << endl;
|
||||
}
|
||||
*/
|
||||
@@ -589,13 +600,13 @@ namespace
|
||||
// it is preferred over all others. Use the first one if there are
|
||||
// several.
|
||||
//
|
||||
- line_map const* main_lm (0);
|
||||
+ line_map_type const* main_lm (0);
|
||||
include_directive* main_inc (0);
|
||||
|
||||
for (includes::map_type::iterator j (i->second.map.begin ());
|
||||
j != i->second.map.end (); ++j)
|
||||
{
|
||||
- line_map const* lm (j->first);
|
||||
+ line_map_type const* lm (j->first);
|
||||
|
||||
if (MAIN_FILE_P (lm))
|
||||
{
|
||||
@@ -636,7 +647,7 @@ namespace
|
||||
for (includes::map_type::iterator j (i->second.map.begin ());
|
||||
j != i->second.map.end (); ++j)
|
||||
{
|
||||
- line_map const* lm (j->first);
|
||||
+ line_map_type const* lm (j->first);
|
||||
|
||||
#if BUILDING_GCC_MAJOR == 4 && BUILDING_GCC_MINOR <= 6
|
||||
string f (lm->to_file);
|
||||
diff --git a/odb/parser.cxx b/odb/parser.cxx
|
||||
index a8e6a6a..feda9d4 100644
|
||||
--- a/odb/parser.cxx
|
||||
+++ b/odb/parser.cxx
|
||||
@@ -1044,14 +1044,14 @@ emit_type_decl (tree decl)
|
||||
// says that in typedef struct {} S; S becomes struct's
|
||||
// name.
|
||||
//
|
||||
- if (ANON_AGGRNAME_P (decl_name))
|
||||
+ if (anon_aggrname_p (decl_name))
|
||||
{
|
||||
tree d (TYPE_NAME (t));
|
||||
|
||||
if (d != NULL_TREE &&
|
||||
!DECL_ARTIFICIAL (d) &&
|
||||
DECL_NAME (d) != NULL_TREE &&
|
||||
- !ANON_AGGRNAME_P (DECL_NAME (d)))
|
||||
+ !anon_aggrname_p (DECL_NAME (d)))
|
||||
{
|
||||
decl = d;
|
||||
decl_name = DECL_NAME (decl);
|
||||
@@ -1668,7 +1668,7 @@ create_type (tree t,
|
||||
ts << "start anon/stub " << gcc_tree_code_name(tc) << " at "
|
||||
<< file << ":" << line << endl;
|
||||
|
||||
- if (d == NULL_TREE || ANON_AGGRNAME_P (DECL_NAME (d)))
|
||||
+ if (d == NULL_TREE || anon_aggrname_p (DECL_NAME (d)))
|
||||
{
|
||||
if (tc == RECORD_TYPE)
|
||||
r = &emit_class<class_> (t, file, line, clmn);
|
||||
@@ -1765,7 +1765,7 @@ create_type (tree t,
|
||||
ts << "start anon/stub " << gcc_tree_code_name(tc) << " at "
|
||||
<< file << ":" << line << endl;
|
||||
|
||||
- if (d == NULL_TREE || ANON_AGGRNAME_P (DECL_NAME (d)))
|
||||
+ if (d == NULL_TREE || anon_aggrname_p (DECL_NAME (d)))
|
||||
{
|
||||
r = &emit_enum (t, access, file, line, clmn);
|
||||
}
|
||||
diff --git a/odb/plugin.cxx b/odb/plugin.cxx
|
||||
index 51f0cb1..779faed 100644
|
||||
--- a/odb/plugin.cxx
|
||||
+++ b/odb/plugin.cxx
|
||||
@@ -45,14 +45,28 @@ path file_; // File being compiled.
|
||||
paths inputs_; // List of input files in at-once mode or just file_.
|
||||
|
||||
bool (*cpp_error_prev) (
|
||||
- cpp_reader*, int, int, location_t, unsigned int, const char*, va_list*);
|
||||
+ cpp_reader*,
|
||||
+ int,
|
||||
+ int,
|
||||
+#if BUILDING_GCC_MAJOR >= 6
|
||||
+ rich_location*,
|
||||
+#else
|
||||
+ location_t,
|
||||
+ unsigned int,
|
||||
+#endif
|
||||
+ const char*,
|
||||
+ va_list*);
|
||||
|
||||
static bool
|
||||
cpp_error_filter (cpp_reader* r,
|
||||
int level,
|
||||
int reason,
|
||||
+#if BUILDING_GCC_MAJOR >= 6
|
||||
+ rich_location* l,
|
||||
+#else
|
||||
location_t l,
|
||||
unsigned int column_override,
|
||||
+#endif
|
||||
const char* msg,
|
||||
va_list* ap)
|
||||
{
|
||||
@@ -66,7 +80,18 @@ cpp_error_filter (cpp_reader* r,
|
||||
if (strstr (msg, "#pragma once") != 0)
|
||||
return true;
|
||||
|
||||
- return cpp_error_prev (r, level, reason, l, column_override, msg, ap);
|
||||
+ return cpp_error_prev (
|
||||
+ r,
|
||||
+ level,
|
||||
+ reason,
|
||||
+#if BUILDING_GCC_MAJOR >= 6
|
||||
+ l,
|
||||
+#else
|
||||
+ l,
|
||||
+ column_override,
|
||||
+#endif
|
||||
+ msg,
|
||||
+ ap);
|
||||
}
|
||||
|
||||
// A prefix of the _cpp_file struct. This struct is not part of the
|
||||
diff --git a/odb/semantics/elements.cxx b/odb/semantics/elements.cxx
|
||||
index 21e3260..399d5e9 100644
|
||||
--- a/odb/semantics/elements.cxx
|
||||
+++ b/odb/semantics/elements.cxx
|
||||
@@ -59,7 +59,7 @@ namespace semantics
|
||||
if (tree decl = TYPE_NAME (n))
|
||||
name = DECL_NAME (decl);
|
||||
|
||||
- return name != 0 && ANON_AGGRNAME_P (name);
|
||||
+ return name != 0 && anon_aggrname_p (name);
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -108,7 +108,7 @@ namespace semantics
|
||||
if (tree decl = TYPE_NAME (type))
|
||||
{
|
||||
name = DECL_NAME (decl);
|
||||
- if (name != 0 && ANON_AGGRNAME_P (name))
|
||||
+ if (name != 0 && anon_aggrname_p (name))
|
||||
return true;
|
||||
|
||||
tree s (CP_DECL_CONTEXT (decl));
|
||||
--
|
||||
2.25.0
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
From 4584b69c45b701c3689d6a974f1ee560a79a243e Mon Sep 17 00:00:00 2001
|
||||
From: Boris Kolpackov <boris@codesynthesis.com>
|
||||
Date: Mon, 8 Feb 2016 18:39:21 +0200
|
||||
Subject: [PATCH] Make compilable with GCC 6 in C++14 mode
|
||||
|
||||
[Upstream: 61d13eb53ade9f30a64892a901401bda5e42c335]
|
||||
Signed-off-by: Kamel Bouhara <kamel.bouhara@bootlin.com>
|
||||
---
|
||||
odb/gcc.hxx | 9 ++++++---
|
||||
odb/parser.cxx | 2 ++
|
||||
2 files changed, 8 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/odb/gcc.hxx b/odb/gcc.hxx
|
||||
index 858d685..a22357d 100644
|
||||
--- a/odb/gcc.hxx
|
||||
+++ b/odb/gcc.hxx
|
||||
@@ -7,9 +7,12 @@
|
||||
|
||||
#include <odb/gcc-fwd.hxx>
|
||||
|
||||
-#if BUILDING_GCC_MAJOR >= 6
|
||||
-# include <safe-ctype.h> // See gcc-fwd.hxx.
|
||||
-#endif
|
||||
+// Actually, let's keep it out. With it included we can compile in C++98
|
||||
+// but not in C++14 (GCC 6 default).
|
||||
+//
|
||||
+// #if BUILDING_GCC_MAJOR >= 6
|
||||
+// # include <safe-ctype.h> // See gcc-fwd.hxx.
|
||||
+// #endif
|
||||
|
||||
// GCC header includes to get the plugin and parse tree declarations.
|
||||
// The order is important and doesn't follow any kind of logic.
|
||||
diff --git a/odb/parser.cxx b/odb/parser.cxx
|
||||
index feda9d4..a9d22fb 100644
|
||||
--- a/odb/parser.cxx
|
||||
+++ b/odb/parser.cxx
|
||||
@@ -1831,6 +1831,8 @@ create_type (tree t,
|
||||
// the array type. In other words, we view it as "constant array"
|
||||
// rather than "array of constant elements".
|
||||
//
|
||||
+ using semantics::array; // vs std::array.
|
||||
+
|
||||
tree bt (TREE_TYPE (t));
|
||||
tree bt_mv (TYPE_MAIN_VARIANT (bt));
|
||||
type& bt_node (emit_type (bt_mv, access::public_, file, line, clmn));
|
||||
--
|
||||
2.25.0
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
From 029687831099bf1dcc944517f9e48af1db5b0361 Mon Sep 17 00:00:00 2001
|
||||
From: Boris Kolpackov <boris@codesynthesis.com>
|
||||
Date: Fri, 23 Dec 2016 10:18:01 +0200
|
||||
Subject: [PATCH] Fix bug in GCC 6 input_location translation
|
||||
|
||||
[Upstream: ec777147024fde72e4411cc6b1e1e49f4a1d1804]
|
||||
Signed-off-by: Kamel Bouhara <kamel.bouhara@bootlin.com>
|
||||
---
|
||||
odb/cxx-lexer.cxx | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/odb/cxx-lexer.cxx b/odb/cxx-lexer.cxx
|
||||
index 64df296..ae045d9 100644
|
||||
--- a/odb/cxx-lexer.cxx
|
||||
+++ b/odb/cxx-lexer.cxx
|
||||
@@ -106,7 +106,15 @@ next (string& token, tree* node)
|
||||
location_t cxx_pragma_lexer::
|
||||
location () const
|
||||
{
|
||||
+ // Starting from GCC 6 the input location seem to require the same
|
||||
+ // translation as what we do in real_source_location().
|
||||
+ //
|
||||
+#if BUILDING_GCC_MAJOR >= 6
|
||||
+ return linemap_resolve_location (
|
||||
+ line_table, input_location, LRK_MACRO_EXPANSION_POINT, 0);
|
||||
+#else
|
||||
return input_location;
|
||||
+#endif
|
||||
}
|
||||
|
||||
string cxx_pragma_lexer::
|
||||
--
|
||||
2.25.0
|
||||
|
||||
@@ -0,0 +1,228 @@
|
||||
From aca617685045b1984c19c415a474893407578394 Mon Sep 17 00:00:00 2001
|
||||
From: Boris Kolpackov <boris@codesynthesis.com>
|
||||
Date: Tue, 7 Nov 2017 14:58:43 +0200
|
||||
Subject: [PATCH] Adapt to changes in GCC 8
|
||||
|
||||
[Upstream: 356630ced28f3101e8e2d88e3c52f8d3008515c7]
|
||||
Signed-off-by: Kamel Bouhara <kamel.bouhara@bootlin.com>
|
||||
---
|
||||
odb/cxx-lexer.cxx | 16 ++++++++++++++--
|
||||
odb/parser.cxx | 27 ++++++++++++++++++++++++++-
|
||||
odb/processor.cxx | 30 ++++++++++++++++++++++--------
|
||||
odb/semantics/elements.cxx | 8 ++++++++
|
||||
odb/validator.cxx | 10 +++++++++-
|
||||
5 files changed, 79 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/odb/cxx-lexer.cxx b/odb/cxx-lexer.cxx
|
||||
index ae045d9..cfebbb5 100644
|
||||
--- a/odb/cxx-lexer.cxx
|
||||
+++ b/odb/cxx-lexer.cxx
|
||||
@@ -93,7 +93,13 @@ next (string& token, tree* node)
|
||||
// See if this is a keyword using the C++ parser machinery and
|
||||
// the current C++ dialect.
|
||||
//
|
||||
- if (*type_ == CPP_NAME && C_IS_RESERVED_WORD (*token_))
|
||||
+ if (*type_ == CPP_NAME &&
|
||||
+#if BUILDING_GCC_MAJOR >= 8
|
||||
+ IDENTIFIER_KEYWORD_P (*token_)
|
||||
+#else
|
||||
+ C_IS_RESERVED_WORD (*token_)
|
||||
+#endif
|
||||
+ )
|
||||
*type_ = CPP_KEYWORD;
|
||||
|
||||
if (node != 0 && node != token_)
|
||||
@@ -281,7 +287,13 @@ next (string& token, tree* node)
|
||||
//
|
||||
tree id (get_identifier (name));
|
||||
|
||||
- if (C_IS_RESERVED_WORD (id))
|
||||
+ if (
|
||||
+#if BUILDING_GCC_MAJOR >= 8
|
||||
+ IDENTIFIER_KEYWORD_P (id)
|
||||
+#else
|
||||
+ C_IS_RESERVED_WORD (id)
|
||||
+#endif
|
||||
+ )
|
||||
tt = CPP_KEYWORD;
|
||||
|
||||
if (node != 0)
|
||||
diff --git a/odb/parser.cxx b/odb/parser.cxx
|
||||
index a9d22fb..927063b 100644
|
||||
--- a/odb/parser.cxx
|
||||
+++ b/odb/parser.cxx
|
||||
@@ -889,8 +889,23 @@ collect (tree ns)
|
||||
|
||||
// Traverse namespaces.
|
||||
//
|
||||
- for (decl = level->namespaces; decl != NULL_TREE; decl = TREE_CHAIN (decl))
|
||||
+ for (
|
||||
+#if BUILDING_GCC_MAJOR >= 8
|
||||
+ decl = level->names;
|
||||
+#else
|
||||
+ decl = level->namespaces;
|
||||
+#endif
|
||||
+ decl != NULL_TREE;
|
||||
+ decl = TREE_CHAIN (decl))
|
||||
{
|
||||
+#if BUILDING_GCC_MAJOR >= 8
|
||||
+ // Now namespaces are interleaved with other declarations. In fact, we
|
||||
+ // could probably collect everything in a single pass.
|
||||
+ //
|
||||
+ if (TREE_CODE (decl) != NAMESPACE_DECL)
|
||||
+ continue;
|
||||
+#endif
|
||||
+
|
||||
if (!DECL_IS_BUILTIN (decl) || DECL_NAMESPACE_STD_P (decl))
|
||||
{
|
||||
if (trace)
|
||||
@@ -960,9 +975,15 @@ emit ()
|
||||
// approximation for this namespace origin. Also resolve
|
||||
// the tree node for this namespace.
|
||||
//
|
||||
+#if BUILDING_GCC_MAJOR >= 8
|
||||
+ tree tree_node (
|
||||
+ get_namespace_binding (
|
||||
+ scope_->tree_node (), get_identifier (n.c_str ())));
|
||||
+#else
|
||||
tree tree_node (
|
||||
namespace_binding (
|
||||
get_identifier (n.c_str ()), scope_->tree_node ()));
|
||||
+#endif
|
||||
|
||||
namespace_& node (unit_->new_node<namespace_> (f, l, c, tree_node));
|
||||
unit_->new_edge<defines> (*scope_, node, n);
|
||||
@@ -2218,7 +2239,11 @@ fq_scope (tree decl)
|
||||
|
||||
// If this is an inline namespace, pretend it doesn't exist.
|
||||
//
|
||||
+#if BUILDING_GCC_MAJOR >= 8
|
||||
+ if (!is_nested_namespace (prev, scope, true))
|
||||
+#else
|
||||
if (!is_associated_namespace (prev, scope))
|
||||
+#endif
|
||||
{
|
||||
tree n = DECL_NAME (scope);
|
||||
|
||||
diff --git a/odb/processor.cxx b/odb/processor.cxx
|
||||
index 3a2cb1d..bea3624 100644
|
||||
--- a/odb/processor.cxx
|
||||
+++ b/odb/processor.cxx
|
||||
@@ -423,12 +423,17 @@ namespace
|
||||
|
||||
// OVL_* macros work for both FUNCTION_DECL and OVERLOAD.
|
||||
//
|
||||
- for (tree o (BASELINK_FUNCTIONS (decl));
|
||||
- o != 0;
|
||||
- o = OVL_NEXT (o))
|
||||
+#if BUILDING_GCC_MAJOR >= 8
|
||||
+ for (ovl_iterator i (BASELINK_FUNCTIONS (decl)); i; ++i)
|
||||
+#else
|
||||
+ for (tree o (BASELINK_FUNCTIONS (decl)); o != 0; o = OVL_NEXT (o))
|
||||
+#endif
|
||||
{
|
||||
+#if BUILDING_GCC_MAJOR >= 8
|
||||
+ tree f (*i);
|
||||
+#else
|
||||
tree f (OVL_CURRENT (o));
|
||||
-
|
||||
+#endif
|
||||
// We are only interested in public non-static member
|
||||
// functions. Note that TREE_PUBLIC() returns something
|
||||
// other than what we need.
|
||||
@@ -530,12 +535,17 @@ namespace
|
||||
{
|
||||
// OVL_* macros work for both FUNCTION_DECL and OVERLOAD.
|
||||
//
|
||||
- for (tree o (BASELINK_FUNCTIONS (decl));
|
||||
- o != 0;
|
||||
- o = OVL_NEXT (o))
|
||||
+#if BUILDING_GCC_MAJOR >= 8
|
||||
+ for (ovl_iterator i (BASELINK_FUNCTIONS (decl)); i; ++i)
|
||||
+#else
|
||||
+ for (tree o (BASELINK_FUNCTIONS (decl)); o != 0; o = OVL_NEXT (o))
|
||||
+#endif
|
||||
{
|
||||
+#if BUILDING_GCC_MAJOR >= 8
|
||||
+ tree f (*i);
|
||||
+#else
|
||||
tree f (OVL_CURRENT (o));
|
||||
-
|
||||
+#endif
|
||||
// We are only interested in non-static member functions.
|
||||
//
|
||||
if (!DECL_NONSTATIC_MEMBER_FUNCTION_P (f))
|
||||
@@ -2934,7 +2944,11 @@ namespace
|
||||
{
|
||||
tree prev (CP_DECL_CONTEXT (scope));
|
||||
|
||||
+#if BUILDING_GCC_MAJOR >= 8
|
||||
+ if (!is_nested_namespace (prev, scope, true))
|
||||
+#else
|
||||
if (!is_associated_namespace (prev, scope))
|
||||
+#endif
|
||||
break;
|
||||
|
||||
scope = prev;
|
||||
diff --git a/odb/semantics/elements.cxx b/odb/semantics/elements.cxx
|
||||
index 399d5e9..4c380d8 100644
|
||||
--- a/odb/semantics/elements.cxx
|
||||
+++ b/odb/semantics/elements.cxx
|
||||
@@ -126,7 +126,11 @@ namespace semantics
|
||||
{
|
||||
tree prev (CP_DECL_CONTEXT (s));
|
||||
|
||||
+#if BUILDING_GCC_MAJOR >= 8
|
||||
+ if (!is_nested_namespace (prev, s, true))
|
||||
+#else
|
||||
if (!is_associated_namespace (prev, s))
|
||||
+#endif
|
||||
break;
|
||||
|
||||
s = prev;
|
||||
@@ -223,7 +227,11 @@ namespace semantics
|
||||
{
|
||||
// Check if this is an inline namespace and skip it if so.
|
||||
//
|
||||
+#if BUILDING_GCC_MAJOR >= 8
|
||||
+ if (is_nested_namespace (ns, new_ns, true))
|
||||
+#else
|
||||
if (is_associated_namespace (ns, new_ns))
|
||||
+#endif
|
||||
{
|
||||
// Skip also the following scope operator. Strictly speaking
|
||||
// there could be none (i.e., this is a name of an inline
|
||||
diff --git a/odb/validator.cxx b/odb/validator.cxx
|
||||
index 91d91e5..aac52e4 100644
|
||||
--- a/odb/validator.cxx
|
||||
+++ b/odb/validator.cxx
|
||||
@@ -520,9 +520,17 @@ namespace
|
||||
// Figure out if we have a const version of the callback. OVL_*
|
||||
// macros work for both FUNCTION_DECL and OVERLOAD.
|
||||
//
|
||||
+#if BUILDING_GCC_MAJOR >= 8
|
||||
+ for (ovl_iterator i (BASELINK_FUNCTIONS (decl)); i; ++i)
|
||||
+#else
|
||||
for (tree o (BASELINK_FUNCTIONS (decl)); o != 0; o = OVL_NEXT (o))
|
||||
+#endif
|
||||
{
|
||||
+#if BUILDING_GCC_MAJOR >= 8
|
||||
+ tree f (*i);
|
||||
+#else
|
||||
tree f (OVL_CURRENT (o));
|
||||
+#endif
|
||||
if (DECL_CONST_MEMFUNC_P (f))
|
||||
{
|
||||
c.set ("callback-const", true);
|
||||
@@ -1223,7 +1231,7 @@ namespace
|
||||
compiler, get_identifier ("has_lt_operator"), false, false);
|
||||
|
||||
if (has_lt_operator_ != error_mark_node)
|
||||
- has_lt_operator_ = OVL_CURRENT (has_lt_operator_);
|
||||
+ has_lt_operator_ = OVL_FIRST (has_lt_operator_);
|
||||
else
|
||||
{
|
||||
os << unit.file () << ": error: unable to resolve has_lt_operator "
|
||||
--
|
||||
2.25.0
|
||||
|
||||
@@ -0,0 +1,351 @@
|
||||
From c5bea9562929c6b55ca208a530ae80033eeb1614 Mon Sep 17 00:00:00 2001
|
||||
From: Boris Kolpackov <boris@codesynthesis.com>
|
||||
Date: Tue, 7 Nov 2017 10:37:53 +0200
|
||||
Subject: [PATCH] Switch to C++11, get rid of auto_ptr use
|
||||
|
||||
[Upstream: 6e374de9ae2f2978f2fca3390aba4ea3f72bfade]
|
||||
Signed-off-by: Kamel Bouhara <kamel.bouhara@bootlin.com>
|
||||
---
|
||||
odb/Makefile.am | 5 +++++
|
||||
odb/context.cxx | 4 ++--
|
||||
odb/context.hxx | 4 ++--
|
||||
odb/generator.cxx | 18 +++++++++---------
|
||||
odb/options.cli | 4 ++--
|
||||
odb/parser.cxx | 14 ++++++++++----
|
||||
odb/parser.hxx | 7 ++++---
|
||||
odb/plugin.cxx | 10 +++++-----
|
||||
odb/processor.cxx | 6 +++---
|
||||
odb/validator.cxx | 2 +-
|
||||
10 files changed, 43 insertions(+), 31 deletions(-)
|
||||
|
||||
diff --git a/odb/Makefile.am b/odb/Makefile.am
|
||||
index 2f01398..d9e83d7 100644
|
||||
--- a/odb/Makefile.am
|
||||
+++ b/odb/Makefile.am
|
||||
@@ -9,6 +9,11 @@ plugin_LTLIBRARIES = odb.la
|
||||
|
||||
AM_CPPFLAGS = -I'$(top_builddir)' -I'$(top_srcdir)'
|
||||
|
||||
+# Note: not passed by libtool when linking odb.so. Seems to be harmless for
|
||||
+# now.
|
||||
+#
|
||||
+AM_CXXFLAGS = -std=c++0x
|
||||
+
|
||||
EXTRA_DIST = common-query.hxx common.hxx context.hxx context.ixx cxx-lexer.hxx cxx-token.hxx diagnostics.hxx emitter.hxx features.hxx gcc-fwd.hxx gcc.hxx generate.hxx generator.hxx instance.hxx location.hxx lookup.hxx option-functions.hxx option-parsers.hxx option-types.hxx options.hxx options.ixx parser.hxx pragma.hxx processor.hxx profile.hxx relational/common-query.hxx relational/common.hxx relational/common.txx relational/context.hxx relational/context.ixx relational/generate.hxx relational/header.hxx relational/inline.hxx relational/model.hxx relational/mssql/common.hxx relational/mssql/context.hxx relational/mysql/common.hxx relational/mysql/context.hxx relational/oracle/common.hxx relational/oracle/context.hxx relational/pgsql/common.hxx relational/pgsql/context.hxx relational/processor.hxx relational/schema-source.hxx relational/schema.hxx relational/source.hxx relational/sqlite/common.hxx relational/sqlite/context.hxx relational/validator.hxx semantics.hxx semantics/class-template.hxx semantics/class.hxx semantics/derived.hxx semantics/elements.hxx semantics/elements.ixx semantics/enum.hxx semantics/fundamental.hxx semantics/namespace.hxx semantics/relational.hxx semantics/relational/changelog.hxx semantics/relational/changeset.hxx semantics/relational/column.hxx semantics/relational/deferrable.hxx semantics/relational/elements.hxx semantics/relational/elements.txx semantics/relational/foreign-key.hxx semantics/relational/index.hxx semantics/relational/key.hxx semantics/relational/model.hxx semantics/relational/name.hxx semantics/relational/primary-key.hxx semantics/relational/table.hxx semantics/template.hxx semantics/union-template.hxx semantics/union.hxx semantics/unit.hxx sql-lexer.hxx sql-lexer.ixx sql-token.hxx sql-token.ixx traversal.hxx traversal/class-template.hxx traversal/class.hxx traversal/derived.hxx traversal/elements.hxx traversal/enum.hxx traversal/fundamental.hxx traversal/namespace.hxx traversal/relational.hxx traversal/relational/changelog.hxx traversal/relational/changeset.hxx traversal/relational/column.hxx traversal/relational/elements.hxx traversal/relational/foreign-key.hxx traversal/relational/index.hxx traversal/relational/key.hxx traversal/relational/model.hxx traversal/relational/primary-key.hxx traversal/relational/table.hxx traversal/template.hxx traversal/union-template.hxx traversal/union.hxx traversal/unit.hxx validator.hxx version.hxx options.cli
|
||||
|
||||
# Plugin.
|
||||
diff --git a/odb/context.cxx b/odb/context.cxx
|
||||
index d62fa88..87f1c32 100644
|
||||
--- a/odb/context.cxx
|
||||
+++ b/odb/context.cxx
|
||||
@@ -564,14 +564,14 @@ namespace
|
||||
};
|
||||
}
|
||||
|
||||
-auto_ptr<context>
|
||||
+unique_ptr<context>
|
||||
create_context (ostream& os,
|
||||
semantics::unit& unit,
|
||||
options const& ops,
|
||||
features& f,
|
||||
semantics::relational::model* m)
|
||||
{
|
||||
- auto_ptr<context> r;
|
||||
+ unique_ptr<context> r;
|
||||
|
||||
switch (ops.database ()[0])
|
||||
{
|
||||
diff --git a/odb/context.hxx b/odb/context.hxx
|
||||
index 351bc61..10de237 100644
|
||||
--- a/odb/context.hxx
|
||||
+++ b/odb/context.hxx
|
||||
@@ -13,7 +13,7 @@
|
||||
#include <stack>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
-#include <memory> // std::auto_ptr
|
||||
+#include <memory> // std::unique_ptr
|
||||
#include <ostream>
|
||||
#include <cstddef> // std::size_t
|
||||
#include <iostream>
|
||||
@@ -1691,7 +1691,7 @@ private:
|
||||
|
||||
// Create concrete database context.
|
||||
//
|
||||
-std::auto_ptr<context>
|
||||
+std::unique_ptr<context>
|
||||
create_context (std::ostream&,
|
||||
semantics::unit&,
|
||||
options const&,
|
||||
diff --git a/odb/generator.cxx b/odb/generator.cxx
|
||||
index 6aa5151..266b75f 100644
|
||||
--- a/odb/generator.cxx
|
||||
+++ b/odb/generator.cxx
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
#include <cctype> // std::toupper, std::is{alpha,upper,lower}
|
||||
#include <string>
|
||||
-#include <memory> // std::auto_ptr
|
||||
+#include <memory> // std::unique_ptr
|
||||
#include <iomanip>
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
@@ -141,7 +141,7 @@ generate (options const& ops,
|
||||
|
||||
if (gen_schema)
|
||||
{
|
||||
- auto_ptr<context> ctx (create_context (cerr, unit, ops, fts, 0));
|
||||
+ unique_ptr<context> ctx (create_context (cerr, unit, ops, fts, 0));
|
||||
|
||||
switch (db)
|
||||
{
|
||||
@@ -471,7 +471,7 @@ generate (options const& ops,
|
||||
//
|
||||
if (gen_cxx)
|
||||
{
|
||||
- auto_ptr<context> ctx (
|
||||
+ unique_ptr<context> ctx (
|
||||
create_context (hxx, unit, ops, fts, model.get ()));
|
||||
|
||||
sloc_filter sloc (ctx->os);
|
||||
@@ -581,7 +581,7 @@ generate (options const& ops,
|
||||
//
|
||||
if (gen_cxx)
|
||||
{
|
||||
- auto_ptr<context> ctx (
|
||||
+ unique_ptr<context> ctx (
|
||||
create_context (ixx, unit, ops, fts, model.get ()));
|
||||
|
||||
sloc_filter sloc (ctx->os);
|
||||
@@ -641,7 +641,7 @@ generate (options const& ops,
|
||||
//
|
||||
if (gen_cxx && (db != database::common || md == multi_database::dynamic))
|
||||
{
|
||||
- auto_ptr<context> ctx (
|
||||
+ unique_ptr<context> ctx (
|
||||
create_context (cxx, unit, ops, fts, model.get ()));
|
||||
|
||||
sloc_filter sloc (ctx->os);
|
||||
@@ -734,7 +734,7 @@ generate (options const& ops,
|
||||
//
|
||||
if (gen_sep_schema)
|
||||
{
|
||||
- auto_ptr<context> ctx (
|
||||
+ unique_ptr<context> ctx (
|
||||
create_context (sch, unit, ops, fts, model.get ()));
|
||||
|
||||
sloc_filter sloc (ctx->os);
|
||||
@@ -799,7 +799,7 @@ generate (options const& ops,
|
||||
//
|
||||
if (gen_sql_schema)
|
||||
{
|
||||
- auto_ptr<context> ctx (
|
||||
+ unique_ptr<context> ctx (
|
||||
create_context (sql, unit, ops, fts, model.get ()));
|
||||
|
||||
switch (db)
|
||||
@@ -865,7 +865,7 @@ generate (options const& ops,
|
||||
//
|
||||
{
|
||||
ofstream& mig (*mig_pre[i]);
|
||||
- auto_ptr<context> ctx (create_context (mig, unit, ops, fts, 0));
|
||||
+ unique_ptr<context> ctx (create_context (mig, unit, ops, fts, 0));
|
||||
|
||||
switch (db)
|
||||
{
|
||||
@@ -908,7 +908,7 @@ generate (options const& ops,
|
||||
//
|
||||
{
|
||||
ofstream& mig (*mig_post[i]);
|
||||
- auto_ptr<context> ctx (create_context (mig, unit, ops, fts, 0));
|
||||
+ unique_ptr<context> ctx (create_context (mig, unit, ops, fts, 0));
|
||||
|
||||
switch (db)
|
||||
{
|
||||
diff --git a/odb/options.cli b/odb/options.cli
|
||||
index cf278cb..c994975 100644
|
||||
--- a/odb/options.cli
|
||||
+++ b/odb/options.cli
|
||||
@@ -211,10 +211,10 @@ class options
|
||||
\cb{db pointer} pragma will use this pointer by default. The value
|
||||
of this option can be \cb{*} which denotes the raw pointer and is
|
||||
the default, or qualified name of a smart pointer class template,
|
||||
- for example, \cb{std::auto_ptr}. In the latter case, the ODB compiler
|
||||
+ for example, \cb{std::shared_ptr}. In the latter case, the ODB compiler
|
||||
constructs the object or view pointer by adding a single template
|
||||
argument of the object or view type to the qualified name, for example
|
||||
- \cb{std::auto_ptr<object>}. The ODB runtime uses object and view
|
||||
+ \cb{std::shared_ptr<object>}. The ODB runtime uses object and view
|
||||
pointers to return, and, in case of objects, pass and cache
|
||||
dynamically allocated instances of object and view types.
|
||||
|
||||
diff --git a/odb/parser.cxx b/odb/parser.cxx
|
||||
index 927063b..30e45af 100644
|
||||
--- a/odb/parser.cxx
|
||||
+++ b/odb/parser.cxx
|
||||
@@ -26,7 +26,7 @@ public:
|
||||
|
||||
impl (options const&, loc_pragmas&, ns_loc_pragmas&, decl_pragmas&);
|
||||
|
||||
- auto_ptr<unit>
|
||||
+ unique_ptr<unit>
|
||||
parse (tree global_scope, path const& main_file);
|
||||
|
||||
private:
|
||||
@@ -728,10 +728,10 @@ impl (options const& ops,
|
||||
{
|
||||
}
|
||||
|
||||
-auto_ptr<unit> parser::impl::
|
||||
+unique_ptr<unit> parser::impl::
|
||||
parse (tree global_scope, path const& main_file)
|
||||
{
|
||||
- auto_ptr<unit> u (new unit (main_file));
|
||||
+ unique_ptr<unit> u (new unit (main_file));
|
||||
u->insert (global_namespace, *u);
|
||||
process_named_pragmas (global_namespace, *u);
|
||||
|
||||
@@ -2263,6 +2263,12 @@ fq_scope (tree decl)
|
||||
// parser
|
||||
//
|
||||
|
||||
+parser::
|
||||
+~parser ()
|
||||
+{
|
||||
+ // Needs parser::impl definition.
|
||||
+}
|
||||
+
|
||||
parser::
|
||||
parser (options const& ops,
|
||||
loc_pragmas& lp,
|
||||
@@ -2272,7 +2278,7 @@ parser (options const& ops,
|
||||
{
|
||||
}
|
||||
|
||||
-auto_ptr<unit> parser::
|
||||
+unique_ptr<unit> parser::
|
||||
parse (tree global_scope, path const& main_file)
|
||||
{
|
||||
return impl_->parse (global_scope, main_file);
|
||||
diff --git a/odb/parser.hxx b/odb/parser.hxx
|
||||
index 80e4aa4..648337f 100644
|
||||
--- a/odb/parser.hxx
|
||||
+++ b/odb/parser.hxx
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
#include <odb/gcc.hxx>
|
||||
|
||||
-#include <memory> // std::auto_ptr
|
||||
+#include <memory> // std::unique_ptr
|
||||
|
||||
#include <odb/pragma.hxx>
|
||||
#include <odb/options.hxx>
|
||||
@@ -18,9 +18,10 @@ class parser
|
||||
public:
|
||||
class failed {};
|
||||
|
||||
+ ~parser ();
|
||||
parser (options const&, loc_pragmas&, ns_loc_pragmas&, decl_pragmas&);
|
||||
|
||||
- std::auto_ptr<semantics::unit>
|
||||
+ std::unique_ptr<semantics::unit>
|
||||
parse (tree global_scope, semantics::path const& main_file);
|
||||
|
||||
private:
|
||||
@@ -31,7 +32,7 @@ private:
|
||||
|
||||
private:
|
||||
class impl;
|
||||
- std::auto_ptr<impl> impl_;
|
||||
+ std::unique_ptr<impl> impl_;
|
||||
};
|
||||
|
||||
#endif // ODB_PARSER_HXX
|
||||
diff --git a/odb/plugin.cxx b/odb/plugin.cxx
|
||||
index 779faed..0fac632 100644
|
||||
--- a/odb/plugin.cxx
|
||||
+++ b/odb/plugin.cxx
|
||||
@@ -8,7 +8,7 @@
|
||||
#include <sys/types.h> // stat
|
||||
#include <sys/stat.h> // stat
|
||||
|
||||
-#include <memory> // std::auto_ptr
|
||||
+#include <memory> // std::unique_ptr
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <cstring> // std::strcpy, std::strstr
|
||||
@@ -39,7 +39,7 @@ using cutl::fs::invalid_path;
|
||||
typedef vector<path> paths;
|
||||
|
||||
int plugin_is_GPL_compatible;
|
||||
-auto_ptr<options const> options_;
|
||||
+unique_ptr<options const> options_;
|
||||
paths profile_paths_;
|
||||
path file_; // File being compiled.
|
||||
paths inputs_; // List of input files in at-once mode or just file_.
|
||||
@@ -222,7 +222,7 @@ gate_callback (void*, void*)
|
||||
// Parse the GCC tree to semantic graph.
|
||||
//
|
||||
parser p (*options_, loc_pragmas_, ns_loc_pragmas_, decl_pragmas_);
|
||||
- auto_ptr<unit> u (p.parse (global_namespace, file_));
|
||||
+ unique_ptr<unit> u (p.parse (global_namespace, file_));
|
||||
|
||||
features f;
|
||||
|
||||
@@ -377,14 +377,14 @@ plugin_init (plugin_name_args* plugin_info, plugin_gcc_version*)
|
||||
oi[2].arg = &pd;
|
||||
|
||||
cli::argv_file_scanner scan (argc, &argv[0], oi, 3);
|
||||
- auto_ptr<options> ops (
|
||||
+ unique_ptr<options> ops (
|
||||
new options (scan, cli::unknown_mode::fail, cli::unknown_mode::fail));
|
||||
|
||||
// Process options.
|
||||
//
|
||||
process_options (*ops);
|
||||
|
||||
- options_ = ops;
|
||||
+ options_ = move (ops);
|
||||
pragma_db_ = db;
|
||||
pragma_multi_ = options_->multi_database ();
|
||||
}
|
||||
diff --git a/odb/processor.cxx b/odb/processor.cxx
|
||||
index bea3624..c787e0d 100644
|
||||
--- a/odb/processor.cxx
|
||||
+++ b/odb/processor.cxx
|
||||
@@ -120,8 +120,8 @@ namespace
|
||||
// both the wrapper type and the wrapped type must be const.
|
||||
// To see why, consider these possibilities:
|
||||
//
|
||||
- // auto_ptr<const T> - can modify by setting a new pointer
|
||||
- // const auto_ptr<T> - can modify by changing the pointed-to value
|
||||
+ // unique_ptr<const T> - can modify by setting a new pointer
|
||||
+ // const unique_ptr<T> - can modify by changing the pointed-to value
|
||||
//
|
||||
if (const_type (m.type ()) &&
|
||||
!(id (m) || version (m) || m.count ("inverse")))
|
||||
@@ -3086,7 +3086,7 @@ process (options const& ops,
|
||||
{
|
||||
try
|
||||
{
|
||||
- auto_ptr<context> ctx (create_context (cerr, unit, ops, f, 0));
|
||||
+ unique_ptr<context> ctx (create_context (cerr, unit, ops, f, 0));
|
||||
|
||||
// Common processing.
|
||||
//
|
||||
diff --git a/odb/validator.cxx b/odb/validator.cxx
|
||||
index aac52e4..196386c 100644
|
||||
--- a/odb/validator.cxx
|
||||
+++ b/odb/validator.cxx
|
||||
@@ -1516,7 +1516,7 @@ validate (options const& ops,
|
||||
if (!valid)
|
||||
throw validator_failed ();
|
||||
|
||||
- auto_ptr<context> ctx (create_context (cerr, u, ops, f, 0));
|
||||
+ unique_ptr<context> ctx (create_context (cerr, u, ops, f, 0));
|
||||
|
||||
if (pass == 1)
|
||||
{
|
||||
--
|
||||
2.25.0
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
From 8cc165a2f7f945db36a18e462138553a000292cd Mon Sep 17 00:00:00 2001
|
||||
From: Boris Kolpackov <boris@codesynthesis.com>
|
||||
Date: Tue, 7 Nov 2017 16:57:35 +0200
|
||||
Subject: [PATCH] Fix GCC 8 adaptation to be compatible with previous
|
||||
versions
|
||||
|
||||
[Upstream: 006bbc5748a8197d7874550cc9186545f1c55ad8]
|
||||
Signed-off-by: Kamel Bouhara <kamel.bouhara@bootlin.com>
|
||||
---
|
||||
odb/validator.cxx | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/odb/validator.cxx b/odb/validator.cxx
|
||||
index 196386c..f0edaaf 100644
|
||||
--- a/odb/validator.cxx
|
||||
+++ b/odb/validator.cxx
|
||||
@@ -1231,7 +1231,13 @@ namespace
|
||||
compiler, get_identifier ("has_lt_operator"), false, false);
|
||||
|
||||
if (has_lt_operator_ != error_mark_node)
|
||||
+ {
|
||||
+#if BUILDING_GCC_MAJOR >= 8
|
||||
has_lt_operator_ = OVL_FIRST (has_lt_operator_);
|
||||
+#else
|
||||
+ has_lt_operator_ = OVL_CURRENT (has_lt_operator_);
|
||||
+#endif
|
||||
+ }
|
||||
else
|
||||
{
|
||||
os << unit.file () << ": error: unable to resolve has_lt_operator "
|
||||
--
|
||||
2.25.0
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
From 2d37e44753c1e67de4658b6fdf95760432c74ead Mon Sep 17 00:00:00 2001
|
||||
From: Boris Kolpackov <boris@codesynthesis.com>
|
||||
Date: Fri, 5 Oct 2018 07:20:18 +0200
|
||||
Subject: [PATCH] Handle namespace aliases when parsing GCC tree
|
||||
|
||||
[Upstream: 3a1788234bfaa96ee093b68e9ba02cf7d5bdffe6]
|
||||
Signed-off-by: Kamel Bouhara <kamel.bouhara@bootlin.com>
|
||||
---
|
||||
odb/parser.cxx | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/odb/parser.cxx b/odb/parser.cxx
|
||||
index 30e45af..03bcb01 100644
|
||||
--- a/odb/parser.cxx
|
||||
+++ b/odb/parser.cxx
|
||||
@@ -906,6 +906,11 @@ collect (tree ns)
|
||||
continue;
|
||||
#endif
|
||||
|
||||
+ // Ignore namespace aliases.
|
||||
+ //
|
||||
+ if (DECL_NAMESPACE_ALIAS (decl))
|
||||
+ continue;
|
||||
+
|
||||
if (!DECL_IS_BUILTIN (decl) || DECL_NAMESPACE_STD_P (decl))
|
||||
{
|
||||
if (trace)
|
||||
--
|
||||
2.25.0
|
||||
|
||||
@@ -0,0 +1,233 @@
|
||||
From cd9a15f42ef35449a8ad480352f9f5495eb37c30 Mon Sep 17 00:00:00 2001
|
||||
From: Boris Kolpackov <boris@codesynthesis.com>
|
||||
Date: Fri, 15 Mar 2019 17:37:28 +0200
|
||||
Subject: [PATCH] Add initial support for GCC 9
|
||||
|
||||
[Upstream: 841140bbf13ae2bfaa5978a181718cda0a8edae7]
|
||||
Signed-off-by: Kamel Bouhara <kamel.bouhara@bootlin.com>
|
||||
---
|
||||
odb/cxx-lexer.cxx | 33 +++++++++++++++++++++++++++------
|
||||
odb/gcc.hxx | 32 ++++++++++++++++++++++++++++++++
|
||||
odb/include.cxx | 3 +++
|
||||
odb/plugin.cxx | 45 ++++++++++++++++++++++++++++++---------------
|
||||
4 files changed, 92 insertions(+), 21 deletions(-)
|
||||
|
||||
diff --git a/odb/cxx-lexer.cxx b/odb/cxx-lexer.cxx
|
||||
index cfebbb5..acd13be 100644
|
||||
--- a/odb/cxx-lexer.cxx
|
||||
+++ b/odb/cxx-lexer.cxx
|
||||
@@ -143,12 +143,20 @@ translate ()
|
||||
// Diagnostics callback.
|
||||
//
|
||||
extern "C" bool
|
||||
-cpp_error_callback (
|
||||
+cpp_diagnostic_callback (
|
||||
cpp_reader* reader,
|
||||
+#if BUILDING_GCC_MAJOR >= 9
|
||||
+ cpp_diagnostic_level level,
|
||||
+#else
|
||||
int level,
|
||||
+#endif
|
||||
#if BUILDING_GCC_MAJOR > 4 || BUILDING_GCC_MAJOR == 4 && BUILDING_GCC_MINOR > 5
|
||||
+#if BUILDING_GCC_MAJOR >= 9
|
||||
+ cpp_warning_reason,
|
||||
+#else
|
||||
int /*reason*/, // Added in GCC 4.6.0.
|
||||
#endif
|
||||
+#endif
|
||||
#if BUILDING_GCC_MAJOR <= 5
|
||||
location_t,
|
||||
unsigned int,
|
||||
@@ -185,10 +193,14 @@ cpp_error_callback (
|
||||
vfprintf (stderr, msg, *ap);
|
||||
fprintf (stderr, "\n");
|
||||
|
||||
- // By resetting the error callback we indicate to cxx_string_lexer
|
||||
- // that there was an error.
|
||||
+ // By resetting the callback we indicate to cxx_string_lexer that there
|
||||
+ // was an error.
|
||||
//
|
||||
+#if BUILDING_GCC_MAJOR >= 9
|
||||
+ cpp_get_callbacks (reader)->diagnostic = 0;
|
||||
+#else
|
||||
cpp_get_callbacks (reader)->error = 0;
|
||||
+#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -247,7 +259,12 @@ start (string const& data)
|
||||
// The previous lexing session should have popped the buffer.
|
||||
//
|
||||
assert (cpp_get_buffer (reader_) == 0);
|
||||
- callbacks_->error = &cpp_error_callback;
|
||||
+
|
||||
+#if BUILDING_GCC_MAJOR >= 9
|
||||
+ callbacks_->diagnostic = &cpp_diagnostic_callback;
|
||||
+#else
|
||||
+ callbacks_->error = &cpp_diagnostic_callback;
|
||||
+#endif
|
||||
|
||||
data_ = data;
|
||||
buf_ = data;
|
||||
@@ -267,10 +284,14 @@ next (string& token, tree* node)
|
||||
token.clear ();
|
||||
cpp_token const* t (cpp_get_token (reader_));
|
||||
|
||||
- // If there was an error, the error callback will be reset to 0.
|
||||
- // Diagnostics has already been issued.
|
||||
+ // If there was an error, the callback will be reset to 0. Diagnostics has
|
||||
+ // already been issued.
|
||||
//
|
||||
+#if BUILDING_GCC_MAJOR >= 9
|
||||
+ if (callbacks_->diagnostic == 0)
|
||||
+#else
|
||||
if (callbacks_->error == 0)
|
||||
+#endif
|
||||
throw invalid_input ();
|
||||
|
||||
cpp_ttype tt (t->type);
|
||||
diff --git a/odb/gcc.hxx b/odb/gcc.hxx
|
||||
index a22357d..0304192 100644
|
||||
--- a/odb/gcc.hxx
|
||||
+++ b/odb/gcc.hxx
|
||||
@@ -158,4 +158,36 @@ gcc_tree_code_name (gcc_tree_code_type tc) {return tree_code_name[tc];}
|
||||
# define anon_aggrname_p(X) ANON_AGGRNAME_P(X)
|
||||
#endif
|
||||
|
||||
+// In GCC 9:
|
||||
+//
|
||||
+// INCLUDED_FROM Became linemap_included_from_linemap().
|
||||
+// LAST_SOURCE_LINE Was removed apparently as no longer used. Studying
|
||||
+// the line-map.h diff from 8.3 suggests that the old
|
||||
+// implementation should still work.
|
||||
+//
|
||||
+#if BUILDING_GCC_MAJOR >= 9
|
||||
+
|
||||
+inline const line_map_ordinary*
|
||||
+INCLUDED_FROM (line_maps* set, const line_map_ordinary* map)
|
||||
+{
|
||||
+ return linemap_included_from_linemap (set, map);
|
||||
+}
|
||||
+
|
||||
+inline source_location
|
||||
+LAST_SOURCE_LINE_LOCATION (const line_map_ordinary* map)
|
||||
+{
|
||||
+ return (((map[1].start_location - 1
|
||||
+ - map->start_location)
|
||||
+ & ~((1 << map->m_column_and_range_bits) - 1))
|
||||
+ + map->start_location);
|
||||
+}
|
||||
+
|
||||
+inline linenum_type
|
||||
+LAST_SOURCE_LINE (const line_map_ordinary* map)
|
||||
+{
|
||||
+ return SOURCE_LINE (map, LAST_SOURCE_LINE_LOCATION (map));
|
||||
+}
|
||||
+
|
||||
+#endif
|
||||
+
|
||||
#endif // ODB_GCC_HXX
|
||||
diff --git a/odb/include.cxx b/odb/include.cxx
|
||||
index 08c93ce..0082f5e 100644
|
||||
--- a/odb/include.cxx
|
||||
+++ b/odb/include.cxx
|
||||
@@ -584,6 +584,9 @@ namespace
|
||||
|
||||
for (include_map::iterator i (imap.begin ()), e (imap.end ()); i != e; ++i)
|
||||
{
|
||||
+ // Note that the LAST_SOURCE_LINE value of a map that includes another
|
||||
+ // map is the line of that include.
|
||||
+
|
||||
/*
|
||||
cerr << endl
|
||||
<< i->first << " included from" << endl;
|
||||
diff --git a/odb/plugin.cxx b/odb/plugin.cxx
|
||||
index 0fac632..892f27c 100644
|
||||
--- a/odb/plugin.cxx
|
||||
+++ b/odb/plugin.cxx
|
||||
@@ -44,10 +44,15 @@ paths profile_paths_;
|
||||
path file_; // File being compiled.
|
||||
paths inputs_; // List of input files in at-once mode or just file_.
|
||||
|
||||
-bool (*cpp_error_prev) (
|
||||
+bool (*cpp_diagnostic_prev) (
|
||||
cpp_reader*,
|
||||
+#if BUILDING_GCC_MAJOR >= 9
|
||||
+ cpp_diagnostic_level,
|
||||
+ cpp_warning_reason,
|
||||
+#else
|
||||
int,
|
||||
int,
|
||||
+#endif
|
||||
#if BUILDING_GCC_MAJOR >= 6
|
||||
rich_location*,
|
||||
#else
|
||||
@@ -58,17 +63,22 @@ bool (*cpp_error_prev) (
|
||||
va_list*);
|
||||
|
||||
static bool
|
||||
-cpp_error_filter (cpp_reader* r,
|
||||
- int level,
|
||||
- int reason,
|
||||
+cpp_diagnostic_filter (cpp_reader* r,
|
||||
+#if BUILDING_GCC_MAJOR >= 9
|
||||
+ cpp_diagnostic_level level,
|
||||
+ cpp_warning_reason reason,
|
||||
+#else
|
||||
+ int level,
|
||||
+ int reason,
|
||||
+#endif
|
||||
#if BUILDING_GCC_MAJOR >= 6
|
||||
- rich_location* l,
|
||||
+ rich_location* l,
|
||||
#else
|
||||
- location_t l,
|
||||
- unsigned int column_override,
|
||||
+ location_t l,
|
||||
+ unsigned int column_override,
|
||||
#endif
|
||||
- const char* msg,
|
||||
- va_list* ap)
|
||||
+ const char* msg,
|
||||
+ va_list* ap)
|
||||
{
|
||||
// #pragma once in the main file. Note that the message that we get is
|
||||
// potentially translated so we search for the substring (there is
|
||||
@@ -80,7 +90,7 @@ cpp_error_filter (cpp_reader* r,
|
||||
if (strstr (msg, "#pragma once") != 0)
|
||||
return true;
|
||||
|
||||
- return cpp_error_prev (
|
||||
+ return cpp_diagnostic_prev (
|
||||
r,
|
||||
level,
|
||||
reason,
|
||||
@@ -119,15 +129,20 @@ start_unit_callback (void*, void*)
|
||||
//
|
||||
cpp_callbacks* cb (cpp_get_callbacks (parse_in));
|
||||
|
||||
- if (cb->error == 0)
|
||||
+#if BUILDING_GCC_MAJOR >= 9
|
||||
+ cpp_diagnostic_prev = cb->diagnostic;
|
||||
+ cb->diagnostic = &cpp_diagnostic_filter;
|
||||
+#else
|
||||
+ cpp_diagnostic_prev = cb->error;
|
||||
+ cb->error = &cpp_diagnostic_filter;
|
||||
+#endif
|
||||
+
|
||||
+ if (cpp_diagnostic_prev == 0)
|
||||
{
|
||||
- cerr << "ice: expected cpp error callback to be set" << endl;
|
||||
+ cerr << "ice: expected cpp diagnostic callback to be set" << endl;
|
||||
exit (1);
|
||||
}
|
||||
|
||||
- cpp_error_prev = cb->error;
|
||||
- cb->error = &cpp_error_filter;
|
||||
-
|
||||
// Set the directory of the main file (stdin) to that of the orginal
|
||||
// file so that relative inclusion works. Also adjust the path and
|
||||
// re-stat the file so that #pragma once works.
|
||||
--
|
||||
2.25.0
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
From 060bb7eb4d008fbd4a9fa8ef7c5e33c9e483eb52 Mon Sep 17 00:00:00 2001
|
||||
From: Boris Kolpackov <boris@codesynthesis.com>
|
||||
Date: Wed, 17 Jun 2020 11:22:11 +0200
|
||||
Subject: [PATCH] Adjust to changes in GCC 10
|
||||
|
||||
[Upstream: 060bb7eb4d008fbd4a9fa8ef7c5e33c9e483eb52]
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
|
||||
---
|
||||
odb/gcc.hxx | 7 +++++--
|
||||
odb/parser.cxx | 8 ++++----
|
||||
odb/semantics/elements.cxx | 4 ++--
|
||||
3 files changed, 11 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/odb/gcc.hxx b/odb/gcc.hxx
|
||||
index 9b644d7..af0e2a0 100644
|
||||
--- a/odb/gcc.hxx
|
||||
+++ b/odb/gcc.hxx
|
||||
@@ -151,10 +151,13 @@ gcc_tree_code_name (gcc_tree_code_type tc) {return tree_code_name[tc];}
|
||||
#define DECL_CHAIN(x) TREE_CHAIN(x)
|
||||
#endif
|
||||
|
||||
-// In GCC 6, ANON_AGGRNAME_P became anon_aggrname_p().
|
||||
+// In GCC 6 ANON_AGGRNAME_P became anon_aggrname_p().
|
||||
+// In GCC 10 anon_aggrname_p() became IDENTIFIER_ANON_P.
|
||||
//
|
||||
#if BUILDING_GCC_MAJOR < 6
|
||||
-# define anon_aggrname_p(X) ANON_AGGRNAME_P(X)
|
||||
+# define IDENTIFIER_ANON_P(X) ANON_AGGRNAME_P(X)
|
||||
+#elif BUILDING_GCC_MAJOR < 10
|
||||
+# define IDENTIFIER_ANON_P(X) anon_aggrname_p(X)
|
||||
#endif
|
||||
|
||||
// In GCC 9:
|
||||
diff --git a/odb/parser.cxx b/odb/parser.cxx
|
||||
index 69d9b28..58388c9 100644
|
||||
--- a/odb/parser.cxx
|
||||
+++ b/odb/parser.cxx
|
||||
@@ -1103,14 +1103,14 @@ emit_type_decl (tree decl)
|
||||
// says that in typedef struct {} S; S becomes struct's
|
||||
// name.
|
||||
//
|
||||
- if (anon_aggrname_p (decl_name))
|
||||
+ if (IDENTIFIER_ANON_P (decl_name))
|
||||
{
|
||||
tree d (TYPE_NAME (t));
|
||||
|
||||
if (d != NULL_TREE &&
|
||||
!DECL_ARTIFICIAL (d) &&
|
||||
DECL_NAME (d) != NULL_TREE &&
|
||||
- !anon_aggrname_p (DECL_NAME (d)))
|
||||
+ !IDENTIFIER_ANON_P (DECL_NAME (d)))
|
||||
{
|
||||
decl = d;
|
||||
decl_name = DECL_NAME (decl);
|
||||
@@ -1727,7 +1727,7 @@ create_type (tree t,
|
||||
ts << "start anon/stub " << gcc_tree_code_name(tc) << " at "
|
||||
<< file << ":" << line << endl;
|
||||
|
||||
- if (d == NULL_TREE || anon_aggrname_p (DECL_NAME (d)))
|
||||
+ if (d == NULL_TREE || IDENTIFIER_ANON_P (DECL_NAME (d)))
|
||||
{
|
||||
if (tc == RECORD_TYPE)
|
||||
r = &emit_class<class_> (t, file, line, clmn);
|
||||
@@ -1824,7 +1824,7 @@ create_type (tree t,
|
||||
ts << "start anon/stub " << gcc_tree_code_name(tc) << " at "
|
||||
<< file << ":" << line << endl;
|
||||
|
||||
- if (d == NULL_TREE || anon_aggrname_p (DECL_NAME (d)))
|
||||
+ if (d == NULL_TREE || IDENTIFIER_ANON_P (DECL_NAME (d)))
|
||||
{
|
||||
r = &emit_enum (t, access, file, line, clmn);
|
||||
}
|
||||
diff --git a/odb/semantics/elements.cxx b/odb/semantics/elements.cxx
|
||||
index f937f54..2d266cf 100644
|
||||
--- a/odb/semantics/elements.cxx
|
||||
+++ b/odb/semantics/elements.cxx
|
||||
@@ -75,7 +75,7 @@ namespace semantics
|
||||
if (tree decl = TYPE_NAME (n))
|
||||
name = DECL_NAME (decl);
|
||||
|
||||
- return name != 0 && anon_aggrname_p (name);
|
||||
+ return name != 0 && IDENTIFIER_ANON_P (name);
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -124,7 +124,7 @@ namespace semantics
|
||||
if (tree decl = TYPE_NAME (type))
|
||||
{
|
||||
name = DECL_NAME (decl);
|
||||
- if (name != 0 && anon_aggrname_p (name))
|
||||
+ if (name != 0 && IDENTIFIER_ANON_P (name))
|
||||
return true;
|
||||
|
||||
tree s (CP_DECL_CONTEXT (decl));
|
||||
--
|
||||
2.26.2
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
config BR2_PACKAGE_HOST_ODB
|
||||
bool "host-odb"
|
||||
select BR2_NEEDS_HOST_GCC_PLUGIN_SUPPORT
|
||||
help
|
||||
This is a compiler that takes a specially crafted c++ header
|
||||
file and auto-generates a schema that works with libodb and
|
||||
the subsequent libodb-database library.
|
||||
|
||||
https://www.codesynthesis.com/products/odb/
|
||||
@@ -0,0 +1,6 @@
|
||||
# From https://www.codesynthesis.com/products/odb/download.xhtml
|
||||
sha1 810fc02e591429ed19f5a2699d144fb611fb121b odb-2.4.0.tar.bz2
|
||||
|
||||
# Locally computed
|
||||
sha256 6785154fa98ea3977c8c2ab38cec16c4aa78c2c2039e80cd2908347b1c1d4198 odb-2.4.0.tar.bz2
|
||||
sha256 7983b82cb1f1686ac2b55420ded9c0f348f93dd17bf3e048ae3b25c1da51b80e LICENSE
|
||||
@@ -0,0 +1,21 @@
|
||||
################################################################################
|
||||
#
|
||||
# odb
|
||||
#
|
||||
################################################################################
|
||||
|
||||
ODB_VERSION_MAJOR = 2.4
|
||||
ODB_VERSION = $(ODB_VERSION_MAJOR).0
|
||||
ODB_SOURCE = odb-$(ODB_VERSION).tar.bz2
|
||||
ODB_SITE = https://www.codesynthesis.com/download/odb/$(ODB_VERSION_MAJOR)
|
||||
ODB_LICENSE = GPL-3.0
|
||||
ODB_LICENSE_FILES = LICENSE
|
||||
HOST_ODB_DEPENDENCIES = host-libcutl
|
||||
HOST_ODB_CONF_ENV = CXXFLAGS="$(HOST_CXXFLAGS) -std=c++11"
|
||||
|
||||
# Prevent odb from trying to install the gcc plugin into the hosts
|
||||
# gcc plugin directory. Instead, this will install the gcc plugin
|
||||
# into host/libexec/odb
|
||||
HOST_ODB_CONF_OPTS = --with-gcc-plugin-dir=no
|
||||
|
||||
$(eval $(host-autotools-package))
|
||||
Reference in New Issue
Block a user