Use DECL_ASSEMBLER_NAME for symbol references (#1519165)
This commit is contained in:
parent
611217200d
commit
a11e44bf67
@ -1,7 +1,7 @@
|
|||||||
Name: annobin
|
Name: annobin
|
||||||
Summary: Binary annotation plugin for GCC
|
Summary: Binary annotation plugin for GCC
|
||||||
Version: 2.5.1
|
Version: 2.5.1
|
||||||
Release: 2%{?dist}
|
Release: 3%{?dist}
|
||||||
|
|
||||||
License: GPLv3+
|
License: GPLv3+
|
||||||
URL: https://fedoraproject.org/wiki/Toolchain/Watermark
|
URL: https://fedoraproject.org/wiki/Toolchain/Watermark
|
||||||
@ -12,6 +12,8 @@ URL: https://fedoraproject.org/wiki/Toolchain/Watermark
|
|||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
Source: https://nickc.fedorapeople.org/annobin-%{version}.tar.xz
|
Source: https://nickc.fedorapeople.org/annobin-%{version}.tar.xz
|
||||||
|
|
||||||
|
Patch1: funname.patch
|
||||||
|
|
||||||
# This is a gcc plugin, hence gcc is required.
|
# This is a gcc plugin, hence gcc is required.
|
||||||
Requires: gcc
|
Requires: gcc
|
||||||
|
|
||||||
@ -69,6 +71,9 @@ make check
|
|||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Nov 30 2017 Florian Weimer <fweimer@redhat.com> - 2.5.1-3
|
||||||
|
- Use DECL_ASSEMBLER_NAME for symbol references (#1519165)
|
||||||
|
|
||||||
* Tue Oct 03 2017 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 2.5.1-2
|
* Tue Oct 03 2017 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 2.5.1-2
|
||||||
- Cleanups in spec
|
- Cleanups in spec
|
||||||
|
|
||||||
|
169
funname.patch
Normal file
169
funname.patch
Normal file
@ -0,0 +1,169 @@
|
|||||||
|
diff --git a/plugin/aarch64.annobin.cc b/plugin/aarch64.annobin.cc
|
||||||
|
index ce06b1c..b88ea59 100644
|
||||||
|
--- a/plugin/aarch64.annobin.cc
|
||||||
|
+++ b/plugin/aarch64.annobin.cc
|
||||||
|
@@ -45,9 +45,11 @@ annobin_target_specific_function_notes (void)
|
||||||
|
annobin_inform (1, "TLS dialect has changed from %d to %d for %s",
|
||||||
|
saved_tls_dialect, aarch64_tls_dialect, current_function_name ());
|
||||||
|
|
||||||
|
- annobin_output_numeric_note (GNU_BUILD_ATTRIBUTE_ABI, aarch64_tls_dialect,
|
||||||
|
- "numeric: ABI: TLS dialect", current_function_name (),
|
||||||
|
- NT_GNU_BUILD_ATTRIBUTE_FUNC);
|
||||||
|
+ const char *name = function_asm_name ();
|
||||||
|
+ if (name != NULL)
|
||||||
|
+ annobin_output_numeric_note (GNU_BUILD_ATTRIBUTE_ABI, aarch64_tls_dialect,
|
||||||
|
+ "numeric: ABI: TLS dialect", name,
|
||||||
|
+ NT_GNU_BUILD_ATTRIBUTE_FUNC);
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
diff --git a/plugin/annobin.cc b/plugin/annobin.cc
|
||||||
|
index 8e73b24..bb4282f 100644
|
||||||
|
--- a/plugin/annobin.cc
|
||||||
|
+++ b/plugin/annobin.cc
|
||||||
|
@@ -484,9 +484,11 @@ record_GOW_settings (unsigned int gow, bool local)
|
||||||
|
if (local)
|
||||||
|
{
|
||||||
|
annobin_inform (1, "Record a change in -g/-O/-Wall status for %s", current_function_name ());
|
||||||
|
- annobin_output_note (buffer, i + 1, false, "numeric: -g/-O/-Wall",
|
||||||
|
- current_function_name (), annobin_is_64bit ? 8 : 4, true,
|
||||||
|
- NT_GNU_BUILD_ATTRIBUTE_FUNC);
|
||||||
|
+ const char *name = function_asm_name ();
|
||||||
|
+ if (name != NULL)
|
||||||
|
+ annobin_output_note (buffer, i + 1, false, "numeric: -g/-O/-Wall",
|
||||||
|
+ name, annobin_is_64bit ? 8 : 4, true,
|
||||||
|
+ NT_GNU_BUILD_ATTRIBUTE_FUNC);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
@@ -509,17 +511,21 @@ annobin_create_function_notes (void * gcc_data, void * user_data)
|
||||||
|
annobin_inform (1, "Recording change in stack protection status for %s (from %d to %d)",
|
||||||
|
current_function_name (), global_stack_prot_option, flag_stack_protect);
|
||||||
|
|
||||||
|
- annobin_output_numeric_note (GNU_BUILD_ATTRIBUTE_STACK_PROT, flag_stack_protect,
|
||||||
|
- "numeric: -fstack-protector status",
|
||||||
|
- current_function_name (), NT_GNU_BUILD_ATTRIBUTE_FUNC);
|
||||||
|
+ const char *name = function_asm_name ();
|
||||||
|
+ if (name != NULL)
|
||||||
|
+ annobin_output_numeric_note (GNU_BUILD_ATTRIBUTE_STACK_PROT, flag_stack_protect,
|
||||||
|
+ "numeric: -fstack-protector status",
|
||||||
|
+ name, NT_GNU_BUILD_ATTRIBUTE_FUNC);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (global_pic_option != compute_pic_option ())
|
||||||
|
{
|
||||||
|
annobin_inform (1, "Recording change in PIC status for %s", current_function_name ());
|
||||||
|
- annobin_output_numeric_note (GNU_BUILD_ATTRIBUTE_PIC, compute_pic_option (),
|
||||||
|
- "numeric: pic type", current_function_name (),
|
||||||
|
- NT_GNU_BUILD_ATTRIBUTE_FUNC);
|
||||||
|
+ const char *name = function_asm_name ();
|
||||||
|
+ if (name != NULL)
|
||||||
|
+ annobin_output_numeric_note (GNU_BUILD_ATTRIBUTE_PIC, compute_pic_option (),
|
||||||
|
+ "numeric: pic type", name,
|
||||||
|
+ NT_GNU_BUILD_ATTRIBUTE_FUNC);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (global_GOWall_options != compute_GOWall_options ())
|
||||||
|
@@ -528,9 +534,11 @@ annobin_create_function_notes (void * gcc_data, void * user_data)
|
||||||
|
if (global_short_enums != flag_short_enums)
|
||||||
|
{
|
||||||
|
annobin_inform (1, "Recording change in enum size for %s", current_function_name ());
|
||||||
|
- annobin_output_bool_note (GNU_BUILD_ATTRIBUTE_SHORT_ENUM, flag_short_enums,
|
||||||
|
- flag_short_enums ? "bool: short-enums: on" : "bool: short-enums: off",
|
||||||
|
- current_function_name (), NT_GNU_BUILD_ATTRIBUTE_FUNC);
|
||||||
|
+ const char *name = function_asm_name ();
|
||||||
|
+ if (name != NULL)
|
||||||
|
+ annobin_output_bool_note (GNU_BUILD_ATTRIBUTE_SHORT_ENUM, flag_short_enums,
|
||||||
|
+ flag_short_enums ? "bool: short-enums: on" : "bool: short-enums: off",
|
||||||
|
+ name, NT_GNU_BUILD_ATTRIBUTE_FUNC);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -541,9 +549,11 @@ annobin_create_function_notes (void * gcc_data, void * user_data)
|
||||||
|
annobin_inform (1, "Recording stack usage of %lu for %s",
|
||||||
|
current_function_static_stack_size, current_function_name ());
|
||||||
|
|
||||||
|
- annobin_output_numeric_note (GNU_BUILD_ATTRIBUTE_STACK_SIZE, current_function_static_stack_size,
|
||||||
|
- "numeric: stack-size", current_function_name (),
|
||||||
|
- NT_GNU_BUILD_ATTRIBUTE_FUNC);
|
||||||
|
+ const char *name = function_asm_name ();
|
||||||
|
+ if (name != NULL)
|
||||||
|
+ annobin_output_numeric_note (GNU_BUILD_ATTRIBUTE_STACK_SIZE, current_function_static_stack_size,
|
||||||
|
+ "numeric: stack-size", name,
|
||||||
|
+ NT_GNU_BUILD_ATTRIBUTE_FUNC);
|
||||||
|
}
|
||||||
|
|
||||||
|
annobin_total_static_stack_usage += current_function_static_stack_size;
|
||||||
|
diff --git a/plugin/annobin.h b/plugin/annobin.h
|
||||||
|
index 5f8bd64..1957c94 100644
|
||||||
|
--- a/plugin/annobin.h
|
||||||
|
+++ b/plugin/annobin.h
|
||||||
|
@@ -35,6 +35,7 @@ extern struct plugin_gcc_version gcc_version ATTRIBUTE_UNUSED;
|
||||||
|
#include <toplev.h>
|
||||||
|
#include <function.h>
|
||||||
|
#include <defaults.h>
|
||||||
|
+#include <tree.h>
|
||||||
|
|
||||||
|
#include <elf.h>
|
||||||
|
|
||||||
|
@@ -97,3 +98,15 @@ extern bool annobin_is_64bit;
|
||||||
|
extern bool annobin_enable_stack_size_notes;
|
||||||
|
extern unsigned long annobin_total_static_stack_usage;
|
||||||
|
extern unsigned long annobin_max_stack_size;
|
||||||
|
+
|
||||||
|
+inline const char *
|
||||||
|
+function_asm_name (void)
|
||||||
|
+{
|
||||||
|
+ if (current_function_decl)
|
||||||
|
+ {
|
||||||
|
+ tree name = DECL_ASSEMBLER_NAME (current_function_decl);
|
||||||
|
+ if (name)
|
||||||
|
+ return IDENTIFIER_POINTER (name);
|
||||||
|
+ }
|
||||||
|
+ return NULL;
|
||||||
|
+}
|
||||||
|
diff --git a/plugin/powerpc.annobin.cc b/plugin/powerpc.annobin.cc
|
||||||
|
index ba85d2d..0057920 100644
|
||||||
|
--- a/plugin/powerpc.annobin.cc
|
||||||
|
+++ b/plugin/powerpc.annobin.cc
|
||||||
|
@@ -41,11 +41,15 @@ annobin_target_specific_function_notes (void)
|
||||||
|
if (saved_tls_size == rs6000_tls_size)
|
||||||
|
return;
|
||||||
|
|
||||||
|
+ const char *name = function_asm_name ();
|
||||||
|
+ if (name == NULL)
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
annobin_inform (1, "TLS size has changed from %d to %d for %s",
|
||||||
|
- saved_tls_size, rs6000_tls_size, current_function_name ());
|
||||||
|
+ saved_tls_size, rs6000_tls_size, name);
|
||||||
|
|
||||||
|
annobin_output_numeric_note (GNU_BUILD_ATTRIBUTE_ABI, rs6000_tls_size,
|
||||||
|
- "numeric: ABI: TLS size", current_function_name (),
|
||||||
|
+ "numeric: ABI: TLS size", name,
|
||||||
|
NT_GNU_BUILD_ATTRIBUTE_FUNC);
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/plugin/x86_64.annobin.cc b/plugin/x86_64.annobin.cc
|
||||||
|
index f9c5b03..a03fe94 100644
|
||||||
|
--- a/plugin/x86_64.annobin.cc
|
||||||
|
+++ b/plugin/x86_64.annobin.cc
|
||||||
|
@@ -63,13 +63,16 @@ annobin_record_global_target_notes (void)
|
||||||
|
void
|
||||||
|
annobin_target_specific_function_notes (void)
|
||||||
|
{
|
||||||
|
+ const char *name = function_asm_name ();
|
||||||
|
+ if (name == NULL)
|
||||||
|
+ return;
|
||||||
|
if ((unsigned long) ix86_isa_flags != global_x86_isa)
|
||||||
|
{
|
||||||
|
annobin_inform (1, "ISA value has changed from %lx to %lx for %s",
|
||||||
|
- global_x86_isa, ix86_isa_flags, current_function_name ());
|
||||||
|
+ global_x86_isa, ix86_isa_flags, name);
|
||||||
|
|
||||||
|
annobin_output_numeric_note (GNU_BUILD_ATTRIBUTE_ABI, ix86_isa_flags,
|
||||||
|
- "numeric: ABI", current_function_name (),
|
||||||
|
+ "numeric: ABI", name,
|
||||||
|
NT_GNU_BUILD_ATTRIBUTE_FUNC);
|
||||||
|
|
||||||
|
if ((unsigned long) ix86_isa_flags < min_x86_isa)
|
Loading…
Reference in New Issue
Block a user