diff --git a/binfmt/libnxflat/libnxflat_bind.c b/binfmt/libnxflat/libnxflat_bind.c index 1d0c8d661f3..4489ebfcd83 100644 --- a/binfmt/libnxflat/libnxflat_bind.c +++ b/binfmt/libnxflat/libnxflat_bind.c @@ -220,7 +220,7 @@ static inline int nxflat_gotrelocs(FAR struct nxflat_loadinfo_s *loadinfo) /* From this, we can get the offset to the list of relocation entries */ offset = ntohl(hdr->h_relocstart); - nrelocs = ntohl(hdr->h_reloccount); + nrelocs = ntohs(hdr->h_reloccount); /* The value of the relocation list that we get from the header is a * file offset. We will have to convert this to an offset into the diff --git a/binfmt/libnxflat/libnxflat_init.c b/binfmt/libnxflat/libnxflat_init.c index 8bc9aef9908..6a7a987482a 100644 --- a/binfmt/libnxflat/libnxflat_init.c +++ b/binfmt/libnxflat/libnxflat_init.c @@ -168,7 +168,7 @@ int nxflat_init(const char *filename, struct nxflat_hdr_s *header, */ loadinfo->relocstart = ntohl(header->h_relocstart); - loadinfo->reloccount = ntohl(header->h_reloccount); + loadinfo->reloccount = ntohs(header->h_reloccount); return 0; } diff --git a/binfmt/nxflat.c b/binfmt/nxflat.c index 8aee2fdd064..534f18caeda 100644 --- a/binfmt/nxflat.c +++ b/binfmt/nxflat.c @@ -123,7 +123,7 @@ static void nxflat_dumploadinfo(struct nxflat_loadinfo_s *loadinfo) bdbg(" RELOCS:\n"); bdbg(" relocstart: %08lx\n", loadinfo->relocstart); - bdbg(" reloccount: %08lx\n", loadinfo->reloccount); + bdbg(" reloccount: %04lx\n", loadinfo->reloccount); bdbg(" HANDLES:\n"); bdbg(" filfd: %d\n", loadinfo->filfd); diff --git a/include/nuttx/nxflat.h b/include/nuttx/nxflat.h index 779d1ade8f1..8c43917ce30 100644 --- a/include/nuttx/nxflat.h +++ b/include/nuttx/nxflat.h @@ -81,7 +81,7 @@ struct nxflat_loadinfo_s /* This is temporary memory where relocation records will be loaded. */ uint32 relocstart; /* Start of array of struct flat_reloc */ - uint32 reloccount; /* Number of elements in reloc array */ + uint16 reloccount; /* Number of elements in reloc array */ /* File descriptors */ diff --git a/include/nxflat.h b/include/nxflat.h index f65310244d5..8e551b25260 100644 --- a/include/nxflat.h +++ b/include/nxflat.h @@ -109,11 +109,9 @@ struct nxflat_hdr_s * h_relocstart - Offset to the beginning of an array of relocation * records (struct nxflat_reloc). The offset is * relative to the start of the file - * h_reloccount - The number of relocation records in the arry */ uint32 h_relocstart; /* Offset of relocation records */ - uint32 h_reloccount; /* Number of relocation records */ /* Imported symbol table (NOTE no symbols are exported): * @@ -124,10 +122,17 @@ struct nxflat_hdr_s * array contains an uint32 offset (again from * the beginning of the file) to the name of * a symbol string. This string is null-terminated. - * h_importcount - The number of records in the h_exportsymbols array. */ uint32 h_importsymbols; /* Offset to list of imported symbols */ + + /* 16-bit counts + * + * h_reloccount - The number of relocation records in the arry + * h_importcount - The number of records in the h_importsymbols array. + */ + + uint16 h_reloccount; /* Number of relocation records */ uint16 h_importcount; /* Number of imported symbols */ };