This is the mail archive of the elfutils-devel@sourceware.org mailing list for the elfutils project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Please use attached 0002*patch file, which added my missing email address in the signed-off line. Thanks. On Wed, Oct 21, 2015 at 2:41 PM, Chih-Hung Hsieh <chh@google.com> wrote: > * backends/aarch64_regs.c and backends/ia64_retval.c > should now compile with clang. > > Signed-off-by: Chih-Hung Hsieh > --- > backends/ChangeLog | 6 ++++++ > backends/aarch64_regs.c | 38 ++++++++++++++++++++++---------------- > backends/ia64_retval.c | 20 +++++++++++--------- > 3 files changed, 39 insertions(+), 25 deletions(-) > > diff --git a/backends/ChangeLog b/backends/ChangeLog > index 6ea3dc4..7f0d1c0 100644 > --- a/backends/ChangeLog > +++ b/backends/ChangeLog > @@ -1,3 +1,9 @@ > +2015-10-21 Chih-Hung Hsieh <chh@google.com> > + > + * ia64_retval.c (hfa_type): Move nested function 'hfa' to file > scope. > + * aarch64_regs.c (aarch64_register_info): Move nested function > 'regtype' > + to file scope. > + > 2015-10-16 Mark Wielaard <mjw@redhat.com> > > * ppc_symbol.c (ppc_check_special_symbol): Also allow _SDA_BASE_ > diff --git a/backends/aarch64_regs.c b/backends/aarch64_regs.c > index 7a8a678..23014bf 100644 > --- a/backends/aarch64_regs.c > +++ b/backends/aarch64_regs.c > @@ -38,6 +38,25 @@ > #define BACKEND aarch64_ > #include "libebl_CPU.h" > > +__attribute__ ((format (printf, 7, 8))) > +static ssize_t > +do_regtype (const char *setname, int type, > + const char **setnamep, int *typep, > + char *name, size_t namelen, const char *fmt, ...) > +{ > + *setnamep = setname; > + *typep = type; > + > + va_list ap; > + va_start (ap, fmt); > + int s = vsnprintf (name, namelen, fmt, ap); > + va_end(ap); > + > + if (s < 0 || (unsigned) s >= namelen) > + return -1; > + return s + 1; > +} > + > ssize_t > aarch64_register_info (Ebl *ebl __attribute__ ((unused)), > int regno, char *name, size_t namelen, > @@ -47,26 +66,13 @@ aarch64_register_info (Ebl *ebl __attribute__ > ((unused)), > if (name == NULL) > return 128; > > - __attribute__ ((format (printf, 3, 4))) > - ssize_t > - regtype (const char *setname, int type, const char *fmt, ...) > - { > - *setnamep = setname; > - *typep = type; > - > - va_list ap; > - va_start (ap, fmt); > - int s = vsnprintf (name, namelen, fmt, ap); > - va_end(ap); > - > - if (s < 0 || (unsigned) s >= namelen) > - return -1; > - return s + 1; > - } > > *prefix = ""; > *bits = 64; > > +#define regtype(setname, type, ...) \ > + do_regtype(setname, type, setnamep, typep, name, namelen, __VA_ARGS__) > + > switch (regno) > { > case 0 ... 30: > diff --git a/backends/ia64_retval.c b/backends/ia64_retval.c > index b5928c5..0bb280c 100644 > --- a/backends/ia64_retval.c > +++ b/backends/ia64_retval.c > @@ -89,6 +89,16 @@ static const Dwarf_Op loc_aggregate[] = > #define nloc_aggregate 1 > > > +static inline int > +compute_hfa (const Dwarf_Op *loc, int nregs, int fpregs_used, const > Dwarf_Op **locp) > +{ > + if (fpregs_used == 0) > + *locp = loc; > + else if (*locp != loc) > + return 9; > + return fpregs_used + nregs; > +} > + > /* If this type is an HFA small enough to be returned in FP registers, > return the number of registers to use. Otherwise 9, or -1 for > errors. */ > static int > @@ -100,15 +110,6 @@ hfa_type (Dwarf_Die *typedie, Dwarf_Word size, > If we find a datum that's not the same FP type as the first datum, > punt. > If we count more than eight total homogeneous FP data, punt. */ > > - inline int hfa (const Dwarf_Op *loc, int nregs) > - { > - if (fpregs_used == 0) > - *locp = loc; > - else if (*locp != loc) > - return 9; > - return fpregs_used + nregs; > - } > - > int tag = DWARF_TAG_OR_RETURN (typedie); > switch (tag) > { > @@ -123,6 +124,7 @@ hfa_type (Dwarf_Die *typedie, Dwarf_Word size, > &attr_mem), &encoding) != > 0) > return -1; > > +#define hfa(loc, nregs) compute_hfa(loc, nregs, fpregs_used, locp) > switch (encoding) > { > case DW_ATE_float: > -- > 2.6.0.rc2.230.g3dd15c0 > >
* backends/aarch64_regs.c and backends/ia64_retval.c
 should now compile with clang.
Signed-off-by: Chih-Hung Hsieh
---
 backends/ChangeLog   | 6 ++++++
 backends/aarch64_regs.c | 38 ++++++++++++++++++++++----------------
 backends/ia64_retval.c | 20 +++++++++++---------
 3 files changed, 39 insertions(+), 25 deletions(-)
diff --git a/backends/ChangeLog b/backends/ChangeLog
index 6ea3dc4..7f0d1c0 100644
--- a/backends/ChangeLog
+++ b/backends/ChangeLog
@@ -1,3 +1,9 @@
+2015-10-21 Chih-Hung Hsieh <chh@google.com>
+
+Â Â Â Â * ia64_retval.c (hfa_type): Move nested function 'hfa' to file scope.
+Â Â Â Â * aarch64_regs.c (aarch64_register_info): Move nested function 'regtype'
+Â Â Â Â to file scope.
+
 2015-10-16 Mark Wielaard <mjw@redhat.com>
    * ppc_symbol.c (ppc_check_special_symbol): Also allow _SDA_BASE_
diff --git a/backends/aarch64_regs.c b/backends/aarch64_regs.c
index 7a8a678..23014bf 100644
--- a/backends/aarch64_regs.c
+++ b/backends/aarch64_regs.c
@@ -38,6 +38,25 @@
 #define BACKEND aarch64_
 #include "libebl_CPU.h"
+__attribute__ ((format (printf, 7, 8)))
+static ssize_t
+do_regtype (const char *setname, int type,
+Â Â Â Â Â Â const char **setnamep, int *typep,
+Â Â Â Â Â Â char *name, size_t namelen, const char *fmt, ...)
+{
+Â *setnamep = setname;
+Â *typep = type;
+
+Â va_list ap;
+Â va_start (ap, fmt);
+Â int s = vsnprintf (name, namelen, fmt, ap);
+Â va_end(ap);
+
+Â if (s < 0 || (unsigned) s >= namelen)
+Â Â return -1;
+Â return s + 1;
+}
+
 ssize_t
 aarch64_register_info (Ebl *ebl __attribute__ ((unused)),
            int regno, char *name, size_t namelen,
@@ -47,26 +66,13 @@ aarch64_register_info (Ebl *ebl __attribute__ ((unused)),
  if (name == NULL)
   return 128;
-Â __attribute__ ((format (printf, 3, 4)))
-Â ssize_t
-Â regtype (const char *setname, int type, const char *fmt, ...)
-Â {
-Â Â *setnamep = setname;
-Â Â *typep = type;
-
-Â Â va_list ap;
-Â Â va_start (ap, fmt);
-Â Â int s = vsnprintf (name, namelen, fmt, ap);
-Â Â va_end(ap);
-
-Â Â if (s < 0 || (unsigned) s >= namelen)
-Â Â Â return -1;
-Â Â return s + 1;
-Â }
  *prefix = "";
  *bits = 64;
+#define regtype(setname, type, ...) \
+Â Â do_regtype(setname, type, setnamep, typep, name, namelen, __VA_ARGS__)
+
  switch (regno)
   {
   case 0 ... 30:
diff --git a/backends/ia64_retval.c b/backends/ia64_retval.c
index b5928c5..0bb280c 100644
--- a/backends/ia64_retval.c
+++ b/backends/ia64_retval.c
@@ -89,6 +89,16 @@ static const Dwarf_Op loc_aggregate[] =
 #define nloc_aggregate 1
+static inline int
+compute_hfa (const Dwarf_Op *loc, int nregs, int fpregs_used, const Dwarf_Op **locp)
+{
+Â if (fpregs_used == 0)
+Â Â *locp = loc;
+Â else if (*locp != loc)
+Â Â return 9;
+Â return fpregs_used + nregs;
+}
+
 /* If this type is an HFA small enough to be returned in FP registers,
  return the number of registers to use. Otherwise 9, or -1 for errors. */
 static int
@@ -100,15 +110,6 @@ hfa_type (Dwarf_Die *typedie, Dwarf_Word size,
   If we find a datum that's not the same FP type as the first datum, punt.
   If we count more than eight total homogeneous FP data, punt. */
-Â inline int hfa (const Dwarf_Op *loc, int nregs)
-Â Â {
-Â Â Â if (fpregs_used == 0)
-Â Â Â Â *locp = loc;
-Â Â Â else if (*locp != loc)
-Â Â Â Â return 9;
-Â Â Â return fpregs_used + nregs;
-Â Â }
-
  int tag = DWARF_TAG_OR_RETURN (typedie);
  switch (tag)
   {
@@ -123,6 +124,7 @@ hfa_type (Dwarf_Die *typedie, Dwarf_Word size,
                         &attr_mem), &encoding) != 0)
    return -1;
+#define hfa(loc, nregs) compute_hfa(loc, nregs, fpregs_used, locp)
    switch (encoding)
    {
    case DW_ATE_float:
--
2.6.0.rc2.230.g3dd15c0
Attachment:
0002-Move-nested-functions-in-backends-to-file-scope.patch
Description: Binary data
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |