/* Test plugin for the GNU linker. Check non-object IR file as well as
get_input_file, get_view and release_input_file interfaces.
- Copyright (C) 2015-2016 Free Software Foundation, Inc.
+ Copyright (C) 2015-2022 Free Software Foundation, Inc.
This file is part of the GNU Binutils.
#include "sysdep.h"
#include "bfd.h"
+#if BFD_SUPPORTS_PLUGINS
#include "plugin-api.h"
#include "filenames.h"
/* For ARRAY_SIZE macro only - we don't link the library itself. */
{
struct claim_file *next;
struct ld_plugin_input_file file;
- bfd_boolean claimed;
+ bool claimed;
struct ld_plugin_symbol *symbols;
int n_syms_allocated;
int n_syms_used;
static enum ld_plugin_status claim_file_ret = LDPS_OK;
static enum ld_plugin_status all_symbols_read_ret = LDPS_OK;
static enum ld_plugin_status cleanup_ret = LDPS_OK;
-static bfd_boolean register_claimfile_hook = TRUE;
-static bfd_boolean register_allsymbolsread_hook = FALSE;
-static bfd_boolean register_cleanup_hook = FALSE;
-static bfd_boolean dumpresolutions = FALSE;
-static bfd_boolean allsymbolsread_silent = FALSE;
+static bool register_claimfile_hook = true;
+static bool register_allsymbolsread_hook = false;
+static bool register_cleanup_hook = false;
+static bool dumpresolutions = false;
+static bool allsymbolsread_silent = false;
/* The master list of all claimable/claimed files. */
static claim_file_t *claimfiles_list = NULL;
/* Finally we'll use sscanf to parse the numeric fields, then
we'll split out the strings which we need to allocate separate
storage for anyway so that we can add nul termination. */
- n = sscanf (colon2 + 1, "%i:%i:%lli", &sym->def, &sym->visibility, &size);
+ n = sscanf (colon2 + 1, "%hhi:%i:%lli", &sym->def, &sym->visibility, &size);
if (n != 3)
return LDPS_ERR;
/* Parsed successfully, so allocate strings and fill out fields. */
sym->size = size;
+ sym->unused = 0;
+ sym->section_kind = 0;
+ sym->symbol_type = 0;
sym->resolution = LDPR_UNKNOWN;
sym->name = malloc (colon1 - str + 1);
if (!sym->name)
/* Records hooks which should be registered. */
static enum ld_plugin_status
-set_register_hook (const char *whichhook, bfd_boolean yesno)
+set_register_hook (const char *whichhook, bool yesno)
{
if (!strcmp ("claimfile", whichhook))
register_claimfile_hook = yesno;
else if (!strcmp ("allsymbolsreadsilent", whichhook))
{
register_allsymbolsread_hook = yesno;
- allsymbolsread_silent = TRUE;
+ allsymbolsread_silent = true;
}
else if (!strcmp ("cleanup", whichhook))
register_cleanup_hook = yesno;
else if (!strncmp ("pass", opt, 4))
return set_ret_val (opt + 4, LDPS_OK);
else if (!strncmp ("register", opt, 8))
- return set_register_hook (opt + 8, TRUE);
+ return set_register_hook (opt + 8, true);
else if (!strncmp ("noregister", opt, 10))
- return set_register_hook (opt + 10, FALSE);
+ return set_register_hook (opt + 10, false);
else if (!strncmp ("claim:", opt, 6))
return record_claim_file (opt + 6, 0);
else if (!strncmp ("sym:", opt, 4))
else if (!strncmp ("dir:", opt, 4))
return record_add_file (opt + 4, ADD_DIR);
else if (!strcmp ("dumpresolutions", opt))
- dumpresolutions = TRUE;
+ dumpresolutions = true;
else
return LDPS_ERR;
return LDPS_OK;
size_t len = strlen (file->name);
char *name = xstrdup (file->name);
char *p = name + len;
- bfd_boolean islib;
+ bool islib;
/* Only match the file name without the directory part. */
islib = *p == 'a' && *(p - 1) == '.';
*claimed = (claimfile != 0);
if (claimfile)
{
- claimfile->claimed = TRUE;
+ claimfile->claimed = true;
claimfile->file = *file;
if (claimfile->n_syms_used && !tv_add_symbols)
return LDPS_ERR;
#define EXPECTED_VIEW "/* The first line of this file must match the expectation of"
#define EXPECTED_VIEW_LENGTH (sizeof (EXPECTED_VIEW) - 1)
if (file.filesize != SIZE_OF_FUNC_C
- || SIZE_OF_FUNC_C < sizeof EXPECTED_VIEW_LENGTH
+ || SIZE_OF_FUNC_C < EXPECTED_VIEW_LENGTH
|| memcmp (view, EXPECTED_VIEW, EXPECTED_VIEW_LENGTH) != 0)
{
char result[EXPECTED_VIEW_LENGTH + 1];
fflush (NULL);
return cleanup_ret;
}
+#endif /* BFD_SUPPORTS_PLUGINS */