summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/internal/argv/argv.h16
-rw-r--r--src/internal/perk/perk_structs.h2
-rw-r--r--src/object/mdso_objgen_dsometa.c7
-rw-r--r--src/object/mdso_objgen_symentry.c7
-rw-r--r--src/output/mdso_output_expsyms_crc.c4
5 files changed, 28 insertions, 8 deletions
diff --git a/src/internal/argv/argv.h b/src/internal/argv/argv.h
index 0be1d0e..b50e9c7 100644
--- a/src/internal/argv/argv.h
+++ b/src/internal/argv/argv.h
@@ -833,6 +833,7 @@ static void argv_usage_impl(
{
const struct argv_option ** optv;
const struct argv_option * option;
+ int nlong;
bool fshort,flong,fboth;
size_t len,optlen,desclen;
char cache;
@@ -865,7 +866,7 @@ static void argv_usage_impl(
if (header)
argv_dprintf(fd,"%s",header);
- for (optlen=0,optv=options; *optv; optv++) {
+ for (optlen=0,nlong=0,optv=options; *optv; optv++) {
option = *optv;
/* indent + comma */
@@ -884,6 +885,11 @@ static void argv_usage_impl(
/* optlen */
if (len > optlen)
optlen = len;
+
+ /* long (vs. hybrid-only) option? */
+ if (option->long_name)
+ if (!(option->flags & ARGV_OPTION_HYBRID_ONLY))
+ nlong++;
}
if (optlen >= optcap) {
@@ -904,7 +910,7 @@ static void argv_usage_impl(
/* color */
if (fcolor) {
color = (color == ccyan) ? cblue : ccyan;
- argv_dprintf(fd,color);
+ argv_dprintf(fd,color,0);
}
/* description, using either paradigm or argname if applicable */
@@ -916,7 +922,11 @@ static void argv_usage_impl(
/* long/hybrid option prefix (-/--) */
prefix = option->flags & ARGV_OPTION_HYBRID_ONLY
- ? " -" : "--";
+ ? " -" : " --";
+
+ /* avoid extra <stace> when all long opts are hybrid-only */
+ if (nlong == 0)
+ prefix++;
/* option string */
if (fboth && option->short_name && option->long_name)
diff --git a/src/internal/perk/perk_structs.h b/src/internal/perk/perk_structs.h
index b1823b4..9ffb480 100644
--- a/src/internal/perk/perk_structs.h
+++ b/src/internal/perk/perk_structs.h
@@ -332,7 +332,7 @@ struct pe_raw_coff_symbol_name {
struct pe_raw_coff_strtbl {
unsigned char cst_size [0x04]; /* 0x00 */
- unsigned char cst_data [0x01]; /* 0x04 */
+ unsigned char cst_data []; /* 0x04 */
};
diff --git a/src/object/mdso_objgen_dsometa.c b/src/object/mdso_objgen_dsometa.c
index 162c2d2..138a4b3 100644
--- a/src/object/mdso_objgen_dsometa.c
+++ b/src/object/mdso_objgen_dsometa.c
@@ -18,6 +18,11 @@
#include "perk_consts.h"
#include "perk_structs.h"
+struct pe_raw_coff_strtbl_impl {
+ unsigned char cst_size [0x04];
+ unsigned char cst_data [0x10];
+};
+
struct mdso_unified_record {
unsigned char data[80];
};
@@ -28,7 +33,7 @@ struct mdso_dsometa_object {
struct mdso_unified_record rec[1];
struct pe_raw_coff_reloc rel[1];
struct pe_raw_coff_symbol sym[8];
- struct pe_raw_coff_strtbl cst;
+ struct pe_raw_coff_strtbl_impl cst;
};
int mdso_objgen_dsometa(
diff --git a/src/object/mdso_objgen_symentry.c b/src/object/mdso_objgen_symentry.c
index 674272b..9303a1e 100644
--- a/src/object/mdso_objgen_symentry.c
+++ b/src/object/mdso_objgen_symentry.c
@@ -18,6 +18,11 @@
#include "perk_consts.h"
#include "perk_structs.h"
+struct pe_raw_coff_strtbl_impl {
+ unsigned char cst_size [0x04];
+ unsigned char cst_data [0x10];
+};
+
struct mdso_symfn_refs {
unsigned char refs[16];
};
@@ -28,7 +33,7 @@ struct mdso_symentry_object {
struct mdso_symfn_refs ref[1];
struct pe_raw_coff_reloc rel[2];
struct pe_raw_coff_symbol sym[9];
- struct pe_raw_coff_strtbl cst;
+ struct pe_raw_coff_strtbl_impl cst;
};
static void mdso_obj_write_secoff(unsigned char * ch, uint64_t secoff)
diff --git a/src/output/mdso_output_expsyms_crc.c b/src/output/mdso_output_expsyms_crc.c
index 89d866e..75202bf 100644
--- a/src/output/mdso_output_expsyms_crc.c
+++ b/src/output/mdso_output_expsyms_crc.c
@@ -22,7 +22,7 @@ static int pretty_expsym_crc32(
const char * name)
{
return mdso_dprintf(
- fdout,"%" PRIx32 " %s\n",
+ fdout,"%08" PRIx32 " %s\n",
mdso_crc32_mbstr((const unsigned char *)name,0),
name);
}
@@ -32,7 +32,7 @@ static int pretty_expsym_crc64(
const char * name)
{
return mdso_dprintf(
- fdout,"%" PRIx64 " %s\n",
+ fdout,"%016" PRIx64 " %s\n",
mdso_crc64_mbstr((const unsigned char *)name,0),
name);
}