aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libctf/ChangeLog9
-rw-r--r--libctf/ctf-link.c92
-rw-r--r--libctf/ctf-lookup.c12
-rw-r--r--libctf/testsuite/libctf-lookup/struct-iteration.c6
-rw-r--r--libctf/testsuite/libctf-regression/type-add-unnamed-struct.c2
5 files changed, 65 insertions, 56 deletions
diff --git a/libctf/ChangeLog b/libctf/ChangeLog
index f095c3e..cf78d8c 100644
--- a/libctf/ChangeLog
+++ b/libctf/ChangeLog
@@ -1,3 +1,12 @@
+2021-03-18 Nick Alcock <nick.alcock@oracle.com>
+
+ * ctf-link.c (ctf_link_lazy_open): Move up in the file, to near
+ ctf_link_add_ctf.
+ * ctf-lookup.c (ctf_lookup_symbol_idx): Repair tabdamage.
+ (ctf_lookup_by_sym_or_name): Likewise.
+ * testsuite/libctf-lookup/struct-iteration.c: Likewise.
+ * testsuite/libctf-regression/type-add-unnamed-struct.c: Likewise.
+
2021-03-02 Nick Alcock <nick.alcock@oracle.com>
* ctf-create.c (symtypetab_density): Report the symbol name as
diff --git a/libctf/ctf-link.c b/libctf/ctf-link.c
index 5471fcc..cc99f81 100644
--- a/libctf/ctf-link.c
+++ b/libctf/ctf-link.c
@@ -189,6 +189,52 @@ ctf_link_add_ctf (ctf_dict_t *fp, ctf_archive_t *ctf, const char *name)
return ctf_link_add (fp, ctf, name, NULL, 0);
}
+/* Lazily open a CTF archive for linking, if not already open.
+
+ Returns the number of files contained within the opened archive (0 for none),
+ or -1 on error, as usual. */
+static ssize_t
+ctf_link_lazy_open (ctf_dict_t *fp, ctf_link_input_t *input)
+{
+ size_t count;
+ int err;
+
+ if (input->clin_arc)
+ return ctf_archive_count (input->clin_arc);
+
+ if (input->clin_fp)
+ return 1;
+
+ /* See ctf_link_add_ctf. */
+#if defined (PIC) || !NOBFD
+ input->clin_arc = ctf_open (input->clin_filename, NULL, &err);
+#else
+ ctf_err_warn (fp, 0, ECTF_NEEDSBFD, _("cannot open %s lazily"),
+ input->clin_filename);
+ ctf_set_errno (fp, ECTF_NEEDSBFD);
+ return -1;
+#endif
+
+ /* Having no CTF sections is not an error. We just don't need to do
+ anything. */
+
+ if (!input->clin_arc)
+ {
+ if (err == ECTF_NOCTFDATA)
+ return 0;
+
+ ctf_err_warn (fp, 0, err, _("opening CTF %s failed"),
+ input->clin_filename);
+ ctf_set_errno (fp, err);
+ return -1;
+ }
+
+ if ((count = ctf_archive_count (input->clin_arc)) == 0)
+ ctf_arc_close (input->clin_arc);
+
+ return (ssize_t) count;
+}
+
/* Return a per-CU output CTF dictionary suitable for the given CU, creating and
interning it if need be. */
@@ -461,52 +507,6 @@ ctf_link_one_variable (ctf_dict_t *fp, ctf_dict_t *in_fp, const char *name,
return 0;
}
-/* Lazily open a CTF archive for linking, if not already open.
-
- Returns the number of files contained within the opened archive (0 for none),
- or -1 on error, as usual. */
-static ssize_t
-ctf_link_lazy_open (ctf_dict_t *fp, ctf_link_input_t *input)
-{
- size_t count;
- int err;
-
- if (input->clin_arc)
- return ctf_archive_count (input->clin_arc);
-
- if (input->clin_fp)
- return 1;
-
- /* See ctf_link_add_ctf. */
-#if defined (PIC) || !NOBFD
- input->clin_arc = ctf_open (input->clin_filename, NULL, &err);
-#else
- ctf_err_warn (fp, 0, ECTF_NEEDSBFD, _("cannot open %s lazily"),
- input->clin_filename);
- ctf_set_errno (fp, ECTF_NEEDSBFD);
- return -1;
-#endif
-
- /* Having no CTF sections is not an error. We just don't need to do
- anything. */
-
- if (!input->clin_arc)
- {
- if (err == ECTF_NOCTFDATA)
- return 0;
-
- ctf_err_warn (fp, 0, err, _("opening CTF %s failed"),
- input->clin_filename);
- ctf_set_errno (fp, err);
- return -1;
- }
-
- if ((count = ctf_archive_count (input->clin_arc)) == 0)
- ctf_arc_close (input->clin_arc);
-
- return (ssize_t) count;
-}
-
typedef struct link_sort_inputs_cb_arg
{
int is_cu_mapped;
diff --git a/libctf/ctf-lookup.c b/libctf/ctf-lookup.c
index 6e17e5f..2e78cf4 100644
--- a/libctf/ctf-lookup.c
+++ b/libctf/ctf-lookup.c
@@ -592,9 +592,9 @@ ctf_lookup_symbol_idx (ctf_dict_t *fp, const char *symname)
cache->ctf_symhash_latest) < 0)
goto oom;
if (strcmp (sym.st_name, symname) == 0)
- return cache->ctf_symhash_latest++;
- }
- break;
+ return cache->ctf_symhash_latest++;
+ }
+ break;
case sizeof (Elf32_Sym):
{
Elf32_Sym *symp = (Elf32_Sym *) sp->cts_data;
@@ -607,8 +607,8 @@ ctf_lookup_symbol_idx (ctf_dict_t *fp, const char *symname)
cache->ctf_symhash_latest) < 0)
goto oom;
if (strcmp (sym.st_name, symname) == 0)
- return cache->ctf_symhash_latest++;
- }
+ return cache->ctf_symhash_latest++;
+ }
break;
default:
ctf_set_errno (fp, ECTF_SYMTAB);
@@ -902,7 +902,7 @@ ctf_lookup_by_sym_or_name (ctf_dict_t *fp, unsigned long symidx,
if (symidx > fp->ctf_dynsymmax)
goto try_parent;
- sym = fp->ctf_dynsymidx[symidx];
+ sym = fp->ctf_dynsymidx[symidx];
err = ECTF_NOTYPEDAT;
if (!sym || (sym->st_shndx != STT_OBJECT && sym->st_shndx != STT_FUNC))
goto try_parent;
diff --git a/libctf/testsuite/libctf-lookup/struct-iteration.c b/libctf/testsuite/libctf-lookup/struct-iteration.c
index 080edfa..005aba1 100644
--- a/libctf/testsuite/libctf-lookup/struct-iteration.c
+++ b/libctf/testsuite/libctf-lookup/struct-iteration.c
@@ -4,13 +4,13 @@
static int
print_struct (const char *name, ctf_id_t membtype, unsigned long offset,
- void *fp_)
+ void *fp_)
{
ctf_dict_t *fp = (ctf_dict_t *) fp_;
char *type_name = ctf_type_aname (fp, membtype);
printf ("iter test: %s, offset %lx, has type %lx/%s\n",
- name, offset, membtype, type_name);
+ name, offset, membtype, type_name);
free (type_name);
return 0;
@@ -54,7 +54,7 @@ main (int argc, char *argv[])
char *type_name = ctf_type_aname (fp, membtype);
printf ("next test: %s, offset %lx, has type %lx/%s\n",
- name, offset, membtype, type_name);
+ name, offset, membtype, type_name);
free (type_name);
}
if (ctf_errno (fp) != ECTF_NEXT_END)
diff --git a/libctf/testsuite/libctf-regression/type-add-unnamed-struct.c b/libctf/testsuite/libctf-regression/type-add-unnamed-struct.c
index 98be257..43c3934 100644
--- a/libctf/testsuite/libctf-regression/type-add-unnamed-struct.c
+++ b/libctf/testsuite/libctf-regression/type-add-unnamed-struct.c
@@ -47,7 +47,7 @@ main (int argc, char *argv[])
for (walk = membs; *walk != NULL; walk++)
{
if (ctf_member_info (dyn, newtype, *walk, &mi) < 0)
- goto lookup_err;
+ goto lookup_err;
printf ("Looked up %s, type %lx, offset %lx\n", *walk, (long) mi.ctm_type, mi.ctm_offset);
}