annobin/annobin-add-riscv-support.p...

143 lines
4.5 KiB
Diff

diff --git a/configure b/configure
index 4ade97a..6028b72 100755
--- a/configure
+++ b/configure
@@ -17807,6 +17807,9 @@ case ${target} in
s390*-*-*)
target_plugin="s390.annobin.lo"
;;
+ riscv*-*-*)
+ target_plugin="riscv.annobin.lo"
+ ;;
*)
target_plugin="dummy.annobin.lo"
;;
diff --git a/configure.ac b/configure.ac
index acbf0a4..10cf53a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -42,6 +42,9 @@ case ${target} in
s390*-*-*)
target_plugin="s390.annobin.lo"
;;
+ riscv*-*-*)
+ target_plugin="riscv.annobin.lo"
+ ;;
*)
target_plugin="dummy.annobin.lo"
;;
diff --git a/gcc-plugin/Makefile.am b/gcc-plugin/Makefile.am
index 4df5c14..b3e061e 100644
--- a/gcc-plugin/Makefile.am
+++ b/gcc-plugin/Makefile.am
@@ -9,7 +9,7 @@ AM_CPPFLAGS = -I'$(top_builddir)' -I'$(top_srcdir)'
AUTOMAKE_OPTIONS = no-dependencies
annobin_la_SOURCES = annobin.cc
-EXTRA_annobin_la_SOURCES = aarch64.annobin.cc dummy.annobin.cc powerpc.annobin.cc s390.annobin.cc x86_64.annobin.cc i686.annobin.cc
+EXTRA_annobin_la_SOURCES = aarch64.annobin.cc dummy.annobin.cc powerpc.annobin.cc s390.annobin.cc x86_64.annobin.cc i686.annobin.cc riscv.annobin.cc
annobin_la_LIBADD = @target_plugin@
annobin_la_DEPENDENCIES = @target_plugin@
diff --git a/gcc-plugin/Makefile.in b/gcc-plugin/Makefile.in
index b273612..159c4de 100644
--- a/gcc-plugin/Makefile.in
+++ b/gcc-plugin/Makefile.in
@@ -352,7 +352,7 @@ plugin_LTLIBRARIES = annobin.la
AM_CPPFLAGS = -I'$(top_builddir)' -I'$(top_srcdir)'
AUTOMAKE_OPTIONS = no-dependencies
annobin_la_SOURCES = annobin.cc
-EXTRA_annobin_la_SOURCES = aarch64.annobin.cc dummy.annobin.cc powerpc.annobin.cc s390.annobin.cc x86_64.annobin.cc i686.annobin.cc
+EXTRA_annobin_la_SOURCES = aarch64.annobin.cc dummy.annobin.cc powerpc.annobin.cc s390.annobin.cc x86_64.annobin.cc i686.annobin.cc riscv.annobin.cc
annobin_la_LIBADD = @target_plugin@
annobin_la_DEPENDENCIES = @target_plugin@
annobin_la_LDFLAGS = -module
diff --git a/gcc-plugin/configure b/gcc-plugin/configure
index 2b9fe61..a0a64ee 100755
--- a/gcc-plugin/configure
+++ b/gcc-plugin/configure
@@ -5158,6 +5158,9 @@ case ${target} in
x86_64-*-*)
target_plugin="x86_64.annobin.lo"
;;
+ riscv*-*-*)
+ target_plugin="riscv.annobin.lo"
+ ;;
*)
target_plugin="dummy.annobin.lo"
;;
diff --git a/gcc-plugin/configure.ac b/gcc-plugin/configure.ac
index 15ecb4a..967fd8f 100644
--- a/gcc-plugin/configure.ac
+++ b/gcc-plugin/configure.ac
@@ -72,6 +72,9 @@ case ${target} in
s390*-*-*)
target_plugin="s390.annobin.lo"
;;
+ riscv*-*-*)
+ target_plugin="riscv.annobin.lo"
+ ;;
*)
target_plugin="dummy.annobin.lo"
;;
diff --git a/gcc-plugin/riscv.annobin.cc b/gcc-plugin/riscv.annobin.cc
new file mode 100644
index 0000000..8a7c641
--- /dev/null
+++ b/gcc-plugin/riscv.annobin.cc
@@ -0,0 +1,54 @@
+/* riscv.annobin - Empty target specific parts of the annobin plugin.
+ Copyright (c) 2019-2020 Red Hat.
+ Created by Nick Clifton.
+
+ This is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version.
+
+ It is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details. */
+
+#include "annobin-global.h"
+#include "annobin.h"
+
+/* The target specific part of the plugin must prodive the
+ following four functions:
+
+ annobin_save_target_specific_information - Called during plugin_init()
+ annobin_target_start_symbol_bias - Called during plugin_init()
+ annobin_record_global_target_notes - Called during PLUGIN_START_UNIT
+ annobin_get_target_pointer_size - Called during PLUGIN_START_UNIT
+ annobin_target_specific_function_notes - Called during PLUGIN_ALL_PASSES_START
+ annobin_target_specific_loader_notes - Called during PLUGIN_FINISH_UNIT. */
+
+signed int
+annobin_target_start_symbol_bias (void)
+{
+ return 0;
+}
+
+unsigned int
+annobin_get_target_pointer_size (void)
+{
+ return GET_INT_OPTION_BY_NAME (riscv_abi) >= ABI_LP64 ? 64 : 32;
+}
+
+int
+annobin_save_target_specific_information (void)
+{
+ return 0;
+}
+
+void
+annobin_record_global_target_notes (annobin_function_info * info ATTRIBUTE_UNUSED)
+{
+}
+
+void
+annobin_target_specific_function_notes (annobin_function_info * info, bool force)
+{
+}