Start using some C++ 14 features.

This commit is contained in:
Markus F.X.J. Oberhumer
2020-12-08 05:40:17 +01:00
parent 361a3056cb
commit f7e2266c3f
62 changed files with 971 additions and 960 deletions
+56 -56
View File
@@ -61,10 +61,10 @@ PackVmlinuxBase<T>::PackVmlinuxBase(InputFile *f,
super(f),
my_e_machine(e_machine), my_elfclass(elfclass), my_elfdata(elfdata),
my_boot_label(boot_label),
n_ptload(0), phdri(NULL), shdri(NULL), shstrtab(NULL)
n_ptload(0), phdri(nullptr), shdri(nullptr), shstrtab(nullptr)
{
ElfClass::compileTimeAssertions();
bele = N_BELE_CTP::getRTP((const BeLePolicy*) NULL);
bele = N_BELE_CTP::getRTP((const BeLePolicy*) nullptr);
}
template <class T>
@@ -140,7 +140,7 @@ typename T::Shdr const *PackVmlinuxBase<T>::getElfSections()
return p;
}
}
return 0;
return nullptr;
}
template <class T>
@@ -173,7 +173,7 @@ bool PackVmlinuxBase<T>::canPack()
// A Linux kernel must have a __ksymtab section. [??]
Shdr const *p, *const shstrsec = getElfSections();
if (0==shstrsec) {
if (nullptr==shstrsec) {
return false;
}
{
@@ -230,7 +230,7 @@ void PackVmlinuxBase<T>::pack(OutputFile *fo)
Ehdr ehdro;
TE32 tmp_u32;
// NULL
// nullptr
// .text(PT_LOADs) .note(1st page) .note(rest)
// .shstrtab .symtab .strtab
Shdr shdro[1+3+3];
@@ -313,7 +313,7 @@ void PackVmlinuxBase<T>::pack(OutputFile *fo)
memcpy(&unc_hdr[sizeof(ehdri)], phdri, sizeof(Phdr) * ehdri.e_phnum);
unsigned len_cpr = 0;
int const r = upx_compress(unc_hdr, len_unc, cpr_hdr, &len_cpr,
NULL, ph.method, 10, NULL, NULL );
nullptr, ph.method, 10, nullptr, nullptr );
if (UPX_E_OK!=r || len_unc<=len_cpr) // FIXME: allow no compression
throwInternalError("Ehdr compression failed");
@@ -371,7 +371,7 @@ void PackVmlinuxBase<T>::pack(OutputFile *fo)
}
compressWithFilters(ibuf, ph.u_len, obuf,
f_ptr, f_len, // filter range
NULL, 0, // hdr_ptr, hdr_len
nullptr, 0, // hdr_ptr, hdr_len
&ft, 512, &cconf, getStrategy(ft));
set_be32(&hdr_info.sz_unc, ph.u_len);
@@ -581,12 +581,12 @@ int PackVmlinuxBase<T>::canUnpack()
// find the .shstrtab section
Shdr const *const shstrsec = getElfSections();
if (0==shstrsec) {
if (nullptr==shstrsec) {
return false;
}
// check for .text .note .note and sane (.sh_size + .sh_offset)
p_note0 = p_note1 = p_text = 0;
p_note0 = p_note1 = p_text = nullptr;
int j;
Shdr *p;
for (p= shdri, j= ehdri.e_shnum; --j>=0; ++p) {
@@ -599,15 +599,15 @@ int PackVmlinuxBase<T>::canUnpack()
p_text = p;
}
if (0==strcmp(".note", shstrtab + p->sh_name)) {
if (0==p_note0) {
if (nullptr==p_note0) {
p_note0 = p;
} else
if (0==p_note1) {
if (nullptr==p_note1) {
p_note1 = p;
}
}
}
if (0==p_text || 0==p_note0 || 0==p_note1) {
if (nullptr==p_text || nullptr==p_note0 || nullptr==p_note1) {
return false;
}
@@ -781,21 +781,21 @@ void PackVmlinuxI386::buildLoader(const Filter *ft)
(0x40==(0xf0 & ft->id)) ? "LXCKLLT1" : (ft->id ? "LXCALLT1" : ""),
"LXMOVEUP",
getDecompressorSections(),
NULL
nullptr
);
if (ft->id) {
assert(ft->calls > 0);
if (0x40==(0xf0 & ft->id)) {
addLoader("LXCKLLT9", NULL);
addLoader("LXCKLLT9", nullptr);
}
else {
addLoader("LXCALLT9", NULL);
addLoader("LXCALLT9", nullptr);
}
addFilter32(ft->id);
}
addLoader("LINUX990",
((ph.first_offset_found == 1) ? "LINUX991" : ""),
"LINUX992,IDENTSTR,UPX1HEAD", NULL);
"LINUX992,IDENTSTR,UPX1HEAD", nullptr);
}
void PackVmlinuxAMD64::buildLoader(const Filter *ft)
@@ -806,21 +806,21 @@ void PackVmlinuxAMD64::buildLoader(const Filter *ft)
(0x40==(0xf0 & ft->id)) ? "LXCKLLT1" : (ft->id ? "LXCALLT1" : ""),
"LXMOVEUP",
getDecompressorSections(),
NULL
nullptr
);
if (ft->id) {
assert(ft->calls > 0);
if (0x40==(0xf0 & ft->id)) {
addLoader("LXCKLLT9", NULL);
addLoader("LXCKLLT9", nullptr);
}
else {
addLoader("LXCALLT9", NULL);
addLoader("LXCALLT9", nullptr);
}
addFilter32(ft->id);
}
addLoader("LINUX990",
((ph.first_offset_found == 1) ? "LINUX991" : ""),
"LINUX992,IDENTSTR,UPX1HEAD", NULL);
"LINUX992,IDENTSTR,UPX1HEAD", nullptr);
}
bool PackVmlinuxARMEL::is_valid_e_entry(Addr e_entry)
@@ -868,69 +868,69 @@ void PackVmlinuxARMEL::buildLoader(const Filter *ft)
{
// prepare loader
initLoader(stub_arm_v5a_linux_kernel_vmlinux, sizeof(stub_arm_v5a_linux_kernel_vmlinux));
addLoader("LINUX000", NULL);
addLoader("LINUX000", nullptr);
if (ft->id) {
assert(ft->calls > 0);
addLoader("LINUX010", NULL);
addLoader("LINUX010", nullptr);
}
addLoader("LINUX020", NULL);
addLoader("LINUX020", nullptr);
if (ft->id) {
addFilter32(ft->id);
}
addLoader("LINUX030", NULL);
if (ph.method == M_NRV2E_8) addLoader("NRV2E", NULL);
else if (ph.method == M_NRV2B_8) addLoader("NRV2B", NULL);
else if (ph.method == M_NRV2D_8) addLoader("NRV2D", NULL);
else if (M_IS_LZMA(ph.method)) addLoader("LZMA_ELF00,LZMA_DEC10,LZMA_DEC30", NULL);
addLoader("LINUX030", nullptr);
if (ph.method == M_NRV2E_8) addLoader("NRV2E", nullptr);
else if (ph.method == M_NRV2B_8) addLoader("NRV2B", nullptr);
else if (ph.method == M_NRV2D_8) addLoader("NRV2D", nullptr);
else if (M_IS_LZMA(ph.method)) addLoader("LZMA_ELF00,LZMA_DEC10,LZMA_DEC30", nullptr);
else throwBadLoader();
addLoader("IDENTSTR,UPX1HEAD", NULL);
addLoader("IDENTSTR,UPX1HEAD", nullptr);
}
void PackVmlinuxARMEB::buildLoader(const Filter *ft)
{
// prepare loader
initLoader(stub_armeb_v5a_linux_kernel_vmlinux, sizeof(stub_armeb_v5a_linux_kernel_vmlinux));
addLoader("LINUX000", NULL);
addLoader("LINUX000", nullptr);
if (ft->id) {
assert(ft->calls > 0);
addLoader("LINUX010", NULL);
addLoader("LINUX010", nullptr);
}
addLoader("LINUX020", NULL);
addLoader("LINUX020", nullptr);
if (ft->id) {
addFilter32(ft->id);
}
addLoader("LINUX030", NULL);
if (ph.method == M_NRV2E_8) addLoader("NRV2E", NULL);
else if (ph.method == M_NRV2B_8) addLoader("NRV2B", NULL);
else if (ph.method == M_NRV2D_8) addLoader("NRV2D", NULL);
else if (M_IS_LZMA(ph.method)) addLoader("LZMA_ELF00,LZMA_DEC10,LZMA_DEC30", NULL);
addLoader("LINUX030", nullptr);
if (ph.method == M_NRV2E_8) addLoader("NRV2E", nullptr);
else if (ph.method == M_NRV2B_8) addLoader("NRV2B", nullptr);
else if (ph.method == M_NRV2D_8) addLoader("NRV2D", nullptr);
else if (M_IS_LZMA(ph.method)) addLoader("LZMA_ELF00,LZMA_DEC10,LZMA_DEC30", nullptr);
else throwBadLoader();
addLoader("IDENTSTR,UPX1HEAD", NULL);
addLoader("IDENTSTR,UPX1HEAD", nullptr);
}
void PackVmlinuxPPC32::buildLoader(const Filter *ft)
{
// prepare loader
initLoader(stub_powerpc_linux_kernel_vmlinux, sizeof(stub_powerpc_linux_kernel_vmlinux));
addLoader("LINUX000", NULL);
addLoader("LINUX000", nullptr);
if (ft->id) {
assert(ft->calls > 0);
addLoader("LINUX010", NULL);
addLoader("LINUX010", nullptr);
}
addLoader("LINUX020", NULL);
addLoader("LINUX020", nullptr);
if (ft->id) {
addFilter32(ft->id);
}
addLoader("LINUX030", NULL);
if (ph.method == M_NRV2E_LE32) addLoader("NRV2E,NRV_TAIL", NULL);
else if (ph.method == M_NRV2B_LE32) addLoader("NRV2B,NRV_TAIL", NULL);
else if (ph.method == M_NRV2D_LE32) addLoader("NRV2D,NRV_TAIL", NULL);
else if (M_IS_LZMA(ph.method)) addLoader("LZMA_ELF00,LZMA_DEC10,LZMA_DEC30", NULL);
addLoader("LINUX030", nullptr);
if (ph.method == M_NRV2E_LE32) addLoader("NRV2E,NRV_TAIL", nullptr);
else if (ph.method == M_NRV2B_LE32) addLoader("NRV2B,NRV_TAIL", nullptr);
else if (ph.method == M_NRV2D_LE32) addLoader("NRV2D,NRV_TAIL", nullptr);
else if (M_IS_LZMA(ph.method)) addLoader("LZMA_ELF00,LZMA_DEC10,LZMA_DEC30", nullptr);
else throwBadLoader();
if (hasLoaderSection("CFLUSH"))
addLoader("CFLUSH");
addLoader("IDENTSTR,UPX1HEAD", NULL);
addLoader("IDENTSTR,UPX1HEAD", nullptr);
}
static const
@@ -939,25 +939,25 @@ void PackVmlinuxPPC64LE::buildLoader(const Filter *ft)
{
// prepare loader
initLoader(stub_powerpc64le_linux_kernel_vmlinux, sizeof(stub_powerpc64le_linux_kernel_vmlinux));
addLoader("LINUX000", NULL);
addLoader("LINUX000", nullptr);
if (ft->id) {
assert(ft->calls > 0);
addLoader("LINUX010", NULL);
addLoader("LINUX010", nullptr);
}
addLoader("LINUX020", NULL);
addLoader("LINUX020", nullptr);
if (ft->id) {
addFilter32(ft->id);
}
addLoader("LINUX030", NULL);
if (ph.method == M_NRV2E_LE32) addLoader("NRV2E,NRV_TAIL", NULL);
else if (ph.method == M_NRV2B_LE32) addLoader("NRV2B,NRV_TAIL", NULL);
else if (ph.method == M_NRV2D_LE32) addLoader("NRV2D,NRV_TAIL", NULL);
else if (M_IS_LZMA(ph.method)) addLoader("LZMA_ELF00,LZMA_DEC10,LZMA_DEC30", NULL);
addLoader("LINUX030", nullptr);
if (ph.method == M_NRV2E_LE32) addLoader("NRV2E,NRV_TAIL", nullptr);
else if (ph.method == M_NRV2B_LE32) addLoader("NRV2B,NRV_TAIL", nullptr);
else if (ph.method == M_NRV2D_LE32) addLoader("NRV2D,NRV_TAIL", nullptr);
else if (M_IS_LZMA(ph.method)) addLoader("LZMA_ELF00,LZMA_DEC10,LZMA_DEC30", nullptr);
else throwBadLoader();
if (hasLoaderSection("CFLUSH"))
addLoader("CFLUSH");
addLoader("IDENTSTR,UPX1HEAD", NULL);
addLoader("IDENTSTR,UPX1HEAD", nullptr);
}