From 3734bec8336f6f33927ab99460cb681035c2ca4f Mon Sep 17 00:00:00 2001 From: Martin Liska Date: Thu, 19 Mar 2020 16:55:59 +0100 Subject: [PATCH] Include: Sync lto-symtab.h and plugin-api.h with GCC 2020-03-19 Martin Liska * lto-symtab.h (enum gcc_plugin_symbol_type): New. (enum gcc_plugin_symbol_section_kind): Likewise. 2020-03-19 Martin Liska * plugin-api.h (struct ld_plugin_symbol): Split int def into 4 char fields. (enum ld_plugin_symbol_type): New. (enum ld_plugin_symbol_section_kind): New. (enum ld_plugin_tag): Add LDPT_ADD_SYMBOLS_V2. --- include/ChangeLog | 13 +++++++++++++ include/lto-symtab.h | 13 +++++++++++++ include/plugin-api.h | 32 ++++++++++++++++++++++++++++++-- 3 files changed, 56 insertions(+), 2 deletions(-) diff --git a/include/ChangeLog b/include/ChangeLog index c19d4d4881..16521ea040 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,16 @@ +2020-03-19 Martin Liska + + * lto-symtab.h (enum gcc_plugin_symbol_type): New. + (enum gcc_plugin_symbol_section_kind): Likewise. + +2020-03-19 Martin Liska + + * plugin-api.h (struct ld_plugin_symbol): Split + int def into 4 char fields. + (enum ld_plugin_symbol_type): New. + (enum ld_plugin_symbol_section_kind): New. + (enum ld_plugin_tag): Add LDPT_ADD_SYMBOLS_V2. + 2020-03-13 Kamil Rytarowski * elf/common.h (NT_NETBSDCORE_LWPSTATUS): New define. diff --git a/include/lto-symtab.h b/include/lto-symtab.h index 0ce0de1012..ef2e35f19c 100644 --- a/include/lto-symtab.h +++ b/include/lto-symtab.h @@ -38,4 +38,17 @@ enum gcc_plugin_symbol_visibility GCCPV_HIDDEN }; +enum gcc_plugin_symbol_type +{ + GCCST_UNKNOWN, + GCCST_FUNCTION, + GCCST_VARIABLE, +}; + +enum gcc_plugin_symbol_section_kind +{ + GCCSSK_DEFAULT, + GCCSSK_BSS +}; + #endif /* GCC_LTO_SYMTAB_H */ diff --git a/include/plugin-api.h b/include/plugin-api.h index 09e1202df0..f0f9667bf3 100644 --- a/include/plugin-api.h +++ b/include/plugin-api.h @@ -87,7 +87,19 @@ struct ld_plugin_symbol { char *name; char *version; - int def; + /* This is for compatibility with older ABIs. The older ABI defined + only 'def' field. */ +#ifdef __BIG_ENDIAN__ + char unused; + char section_kind; + char symbol_type; + char def; +#else + char def; + char symbol_type; + char section_kind; + char unused; +#endif int visibility; uint64_t size; char *comdat_key; @@ -123,6 +135,21 @@ enum ld_plugin_symbol_visibility LDPV_HIDDEN }; +/* The type of the symbol. */ + +enum ld_plugin_symbol_type +{ + LDST_UNKNOWN, + LDST_FUNCTION, + LDST_VARIABLE, +}; + +enum ld_plugin_symbol_section_kind +{ + LDSSK_DEFAULT, + LDSSK_BSS +}; + /* How a symbol is resolved. */ enum ld_plugin_symbol_resolution @@ -431,7 +458,8 @@ enum ld_plugin_tag LDPT_GET_INPUT_SECTION_ALIGNMENT = 29, LDPT_GET_INPUT_SECTION_SIZE = 30, LDPT_REGISTER_NEW_INPUT_HOOK = 31, - LDPT_GET_WRAP_SYMBOLS = 32 + LDPT_GET_WRAP_SYMBOLS = 32, + LDPT_ADD_SYMBOLS_V2 = 33 }; /* The plugin transfer vector. */ -- 2.34.1