summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2015-02-11 12:16:07 -0800
committerH.J. Lu <hjl.tools@gmail.com>2015-02-11 14:00:51 -0800
commit45e813544eb076dd52fefe7b36e28b088963207d (patch)
treea3954237e7a9dfcf3c529a82eb3007328868fb89
parente3001fd92063282c55ad251d58f112b10a0cf7d6 (diff)
downloadbinutils-gdb-45e813544eb076dd52fefe7b36e28b088963207d.tar.gz
Output "warning:" or "error:" in plugin messages
When plugin generates LDPL_WARNING, LDPL_FATAL and LDPL_ERROR messages, linker should display "warning:" or "error:" in plugin messages like regular linker messages. ld/ * plugin.c (message): Output "warning:" for LDPL_WARNING. Output "error:" for LDPL_FATAL and LDPL_ERROR. * testplug2.c (parse_option): Handle fatal, error and warning. ld/testsuite/ * ld-plugin/plugin-27.d: New. * ld-plugin/plugin-28.d: Likewise. * ld-plugin/plugin-29.d: Likewise. * plugin.exp (plugin_tests): Add tests for LDPL_FATAL, LDPL_ERROR and LDPL_WARNING.
-rw-r--r--ld/ChangeLog6
-rw-r--r--ld/plugin.c12
-rw-r--r--ld/testplug2.c17
-rw-r--r--ld/testsuite/ChangeLog8
-rw-r--r--ld/testsuite/ld-plugin/plugin-27.d1
-rw-r--r--ld/testsuite/ld-plugin/plugin-28.d1
-rw-r--r--ld/testsuite/ld-plugin/plugin-29.d1
-rw-r--r--ld/testsuite/ld-plugin/plugin.exp6
8 files changed, 47 insertions, 5 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 7bd1c01ce83..f46bd9b0175 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,5 +1,11 @@
2015-02-11 H.J. Lu <hongjiu.lu@intel.com>
+ * plugin.c (message): Output "warning:" for LDPL_WARNING. Output
+ "error:" for LDPL_FATAL and LDPL_ERROR.
+ * testplug2.c (parse_option): Handle fatal, error and warning.
+
+2015-02-11 H.J. Lu <hongjiu.lu@intel.com>
+
* testplug2.c (dump_tv_tag): Removed.
(onall_symbols_read): Return LDPS_ERR if the file descriptor isn't
closed.
diff --git a/ld/plugin.c b/ld/plugin.c
index b48ce86a6f1..4fee305b698 100644
--- a/ld/plugin.c
+++ b/ld/plugin.c
@@ -814,15 +814,19 @@ message (int level, const char *format, ...)
putchar ('\n');
break;
case LDPL_WARNING:
- vfinfo (stdout, format, args, TRUE);
- putchar ('\n');
+ {
+ char *newfmt = ACONCAT (("%P: warning: ", format, "\n",
+ (const char *) NULL));
+ vfinfo (stdout, newfmt, args, TRUE);
+ }
break;
case LDPL_FATAL:
case LDPL_ERROR:
default:
{
- char *newfmt = ACONCAT ((level == LDPL_FATAL ? "%P%F: " : "%P%X: ",
- format, "\n", (const char *) NULL));
+ char *newfmt = ACONCAT ((level == LDPL_FATAL ? "%P%F" : "%P%X",
+ ": error: ", format, "\n",
+ (const char *) NULL));
fflush (stdout);
vfinfo (stderr, newfmt, args, TRUE);
fflush (stderr);
diff --git a/ld/testplug2.c b/ld/testplug2.c
index 8cafc516062..10f0efba6cc 100644
--- a/ld/testplug2.c
+++ b/ld/testplug2.c
@@ -318,7 +318,22 @@ set_register_hook (const char *whichhook, bfd_boolean yesno)
static enum ld_plugin_status
parse_option (const char *opt)
{
- if (!strncmp ("fail", opt, 4))
+ if (!strncmp ("fatal", opt, 5))
+ {
+ TV_MESSAGE (LDPL_FATAL, "Fatal error");
+ fflush (NULL);
+ }
+ else if (!strncmp ("error", opt, 5))
+ {
+ TV_MESSAGE (LDPL_ERROR, "Error");
+ fflush (NULL);
+ }
+ else if (!strncmp ("warning", opt, 7))
+ {
+ TV_MESSAGE (LDPL_WARNING, "Warning");
+ fflush (NULL);
+ }
+ else if (!strncmp ("fail", opt, 4))
return set_ret_val (opt + 4, LDPS_ERR);
else if (!strncmp ("pass", opt, 4))
return set_ret_val (opt + 4, LDPS_OK);
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index ea1d5336724..2b963fa391d 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,5 +1,13 @@
2015-02-11 H.J. Lu <hongjiu.lu@intel.com>
+ * ld-plugin/plugin-27.d: New.
+ * ld-plugin/plugin-28.d: Likewise.
+ * ld-plugin/plugin-29.d: Likewise.
+ * plugin.exp (plugin_tests): Add tests for LDPL_FATAL, LDPL_ERROR
+ and LDPL_WARNING.
+
+2015-02-11 H.J. Lu <hongjiu.lu@intel.com>
+
PR ld/17878
* ld-plugin/func.c: Add some comments.
* ld-plugin/plugin-13.d: New file.
diff --git a/ld/testsuite/ld-plugin/plugin-27.d b/ld/testsuite/ld-plugin/plugin-27.d
new file mode 100644
index 00000000000..bae8c2c611e
--- /dev/null
+++ b/ld/testsuite/ld-plugin/plugin-27.d
@@ -0,0 +1 @@
+.*: error: Fatal error
diff --git a/ld/testsuite/ld-plugin/plugin-28.d b/ld/testsuite/ld-plugin/plugin-28.d
new file mode 100644
index 00000000000..9052b7654e7
--- /dev/null
+++ b/ld/testsuite/ld-plugin/plugin-28.d
@@ -0,0 +1 @@
+.*: error: Error
diff --git a/ld/testsuite/ld-plugin/plugin-29.d b/ld/testsuite/ld-plugin/plugin-29.d
new file mode 100644
index 00000000000..c42bdf2024a
--- /dev/null
+++ b/ld/testsuite/ld-plugin/plugin-29.d
@@ -0,0 +1 @@
+.*: warning: Warning
diff --git a/ld/testsuite/ld-plugin/plugin.exp b/ld/testsuite/ld-plugin/plugin.exp
index b83253440d2..35b7bbe5298 100644
--- a/ld/testsuite/ld-plugin/plugin.exp
+++ b/ld/testsuite/ld-plugin/plugin.exp
@@ -168,6 +168,12 @@ set plugin_tests [list \
$testsrcfiles $libs" "" "" "" {{ld plugin-17.d}} "main.x" ] \
[list "load plugin with source not claimed" "-plugin $plugin_path $regclm \
$testsrcfiles $libs" "" "" "" {{ld plugin-26.d}} "main.x" ] \
+ [list "plugin fatal error" "-plugin $plugin2_path -plugin-opt fatal \
+ $testobjfiles $libs" "" "" "" {{ld plugin-27.d}} "main.x" ] \
+ [list "plugin error" "-plugin $plugin2_path -plugin-opt error \
+ $testobjfiles $libs" "" "" "" {{ld plugin-28.d}} "main.x" ] \
+ [list "plugin warning" "-plugin $plugin2_path -plugin-opt warning \
+ $testobjfiles $libs" "" "" "" {{ld plugin-29.d}} "main.x" ] \
]
set plugin_lib_tests [list \