Patch "gcc-plugins: update gcc-common.h for gcc-7" has been added to the 4.9-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
gcc-plugins: update gcc-common.h for gcc-7
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
gcc-plugins-update-gcc-common.h-for-gcc-7.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
81d873a87114b05dbb74d1fbf0c4322ba4bfdee4Mon Sep 17 00:00:00 2001
From: Kees Cook <[email protected]>
Date: Fri, 16 Dec 2016 11:36:06 -0800
Subject: gcc-plugins: update gcc-common.h for gcc-7
From: Kees Cook <[email protected]>
commit 81d873a87114b05dbb74d1fbf0c4322ba4bfdee4 upstream.
This updates gcc-common.h from Emese Revfy for gcc 7. This fixes issues seen by Kugan and Arnd. Build tested with gcc 5.4 and 7 snapshot.
--- scripts/gcc-plugins/gcc-common.h | 85 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+)
scripts/gcc-plugins/gcc-common.h +85 -0
@@ -39,6 +39,9 @@#include "hash-map.h" #endif +#if BUILDING_GCC_VERSION >=7000 +#include "memmodel.h" +#endif #include "emit-rtl.h" #include "debug.h" #include "target.h"
@@ -91,6 +94,9 @@#include "tree-ssa-alias.h" #include "tree-ssa.h" #include "stringpool.h" +#if BUILDING_GCC_VERSION >=7000 +#include "tree-vrp.h" +#endif #include "tree-ssanames.h" #include "print-tree.h" #include "tree-eh.h"
@@ -287,6 +293,22 @@ static inline struct cgraph_node *cgraphreturn NULL ; } +static inline bool cgraph_for_node_and_aliases (cgraph_node_ptr node,bool (*callback)(cgraph_node_ptr ,void *),void *data,bool include_overwritable) +{ +cgraph_node_ptr alias; + +if (callback (node, data)) +return true; + +for (alias = node->same_body; alias; alias = alias->next) { +if (include_overwritable ||cgraph_function_body_availability (alias) >AVAIL_OVERWRITABLE ) +if (cgraph_for_node_and_aliases (alias, callback, data, include_overwritable)) +return true; + } + +return false; +} +#define FOR_EACH_FUNCTION_WITH_GIMPLE_BODY (node) \ for ((node) = cgraph_first_function_with_gimple_body(); (node); \ (node) = cgraph_next_function_with_gimple_body(node))
@@ -399,6 +421,7 @@ typedef union gimple_statement_d gassigntypedef union gimple_statement_d gcall ;typedef union gimple_statement_d gcond ;typedef union gimple_statement_d gdebug ; +typedef union gimple_statement_d ggoto ;typedef union gimple_statement_d gphi ;typedef union gimple_statement_d greturn ;
@@ -452,6 +475,16 @@ static inline const gdebug *as_a_const_greturn stmt; } +static inline ggoto *as_a_ggoto (gimple stmt) +{ +return stmt; +} + +static inline const ggoto *as_a_const_ggoto (const_gimple stmt) +{ +return stmt; +} +static inline gphi *as_a_gphi (gimple stmt) {return stmt;
@@ -496,6 +529,14 @@ static inline const greturn *as_a_const_typedef struct rtx_def rtx_insn ; +static inline const char *get_decl_section_name (const_tree decl) +{ +if (DECL_SECTION_NAME (decl) ==NULL_TREE ) +return NULL ; + +return TREE_STRING_POINTER (DECL_SECTION_NAME (decl)); +} +static inline void set_decl_section_name (tree node,const char *value) {if (value)
@@ -511,6 +552,7 @@ typedef struct gimple_statement_base gastypedef struct gimple_statement_call gcall ;typedef struct gimple_statement_base gcond ;typedef struct gimple_statement_base gdebug ; +typedef struct gimple_statement_base ggoto ;typedef struct gimple_statement_phi gphi ;typedef struct gimple_statement_base greturn ;
@@ -564,6 +606,16 @@ static inline const gdebug *as_a_const_greturn stmt; } +static inline ggoto *as_a_ggoto (gimple stmt) +{ +return stmt; +} + +static inline const ggoto *as_a_const_ggoto (const_gimple stmt) +{ +return stmt; +} +static inline gphi *as_a_gphi (gimple stmt) {return as_a<gphi>(stmt);
@@ -611,6 +663,11 @@ inline bool is_a_helper<const gassign *>#define INSN_DELETED_P (insn) (insn)->deleted() +static inline const char *get_decl_section_name (const_tree decl) +{ +return DECL_SECTION_NAME (decl); +} +/* symtab/cgraph related */ #define debug_cgraph_node (node) (node)->debug()#define cgraph_get_node (decl) cgraph_node::get(decl)
@@ -619,6 +676,7 @@ inline bool is_a_helper<const gassign *>#define cgraph_n_nodes symtab->cgraph_count#define cgraph_max_uid symtab->cgraph_max_uid#define varpool_get_node (decl) varpool_node::get(decl) +#define dump_varpool_node (file, node) (node)->dump(file)#define cgraph_create_edge (caller, callee, call_stmt, count, freq, nest) \ (caller)->create_edge((callee), (call_stmt), (count), (freq))
@@ -674,6 +732,11 @@ static inline cgraph_node_ptr cgraph_alireturn node->get_alias_target (); } +static inline bool cgraph_for_node_and_aliases (cgraph_node_ptr node,bool (*callback)(cgraph_node_ptr ,void *),void *data,bool include_overwritable) +{ +return node->call_for_symbol_thunks_and_aliases (callback, data, include_overwritable); +} +static inline struct cgraph_node_hook_list *cgraph_add_function_insertion_hook (cgraph_node_hook hook,void *data) {return symtab->add_cgraph_insertion_hook (hook, data);
@@ -731,6 +794,13 @@ static inline gimple gimple_build_assign template <> template <> +inline bool is_a_helper<const ggoto *>::test(const_gimple gs) +{ +return gs->code ==GIMPLE_GOTO ; +} + +template <> +template <> inline bool is_a_helper<const greturn *>::test(const_gimple gs) {return gs->code ==GIMPLE_RETURN ;
@@ -766,6 +836,16 @@ static inline const gcall *as_a_const_gc return as_a<const gcall *>(stmt); } +static inline ggoto *as_a_ggoto (gimple stmt) +{ + return as_a<ggoto *>(stmt); +} + +static inline const ggoto *as_a_const_ggoto (const_gimple stmt) +{ + return as_a<const ggoto *>(stmt); +} +static inline gphi *as_a_gphi (gimple stmt) { return as_a<gphi *>(stmt);
@@ -828,4 +908,9 @@ static inline void debug_gimple_stmt(con#define debug_gimple_stmt (s) debug_gimple_stmt(CONST_CAST_GIMPLE(s))#endif +#if BUILDING_GCC_VERSION >=7000 +#define get_inner_reference (exp, pbitsize, pbitpos, poffset, pmode, punsignedp, preversep, pvolatilep, keep_aligning) \ + get_inner_reference(exp, pbitsize, pbitpos, poffset, pmode, punsignedp, preversep, pvolatilep) +#endif +#endif
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/gcc-plugins-update-gcc-common.h-for-gcc-7.patch