99,100c99
< typedef AuxVector<IntType> auxv_t;
< std::vector<auxv_t> auxv;
---
> std::vector<AuxVector<IntType>> auxv;
106c105
< auxv.push_back(auxv_t(M5_AT_PAGESZ, MipsISA::PageBytes));
---
> auxv.emplace_back(M5_AT_PAGESZ, MipsISA::PageBytes);
108c107
< auxv.push_back(auxv_t(M5_AT_CLKTCK, 100));
---
> auxv.emplace_back(M5_AT_CLKTCK, 100);
112,113c111,113
< auxv.push_back(auxv_t(M5_AT_PHDR, elfObject->programHeaderTable()));
< DPRINTF(Loader, "auxv at PHDR %08p\n", elfObject->programHeaderTable());
---
> auxv.emplace_back(M5_AT_PHDR, elfObject->programHeaderTable());
> DPRINTF(Loader, "auxv at PHDR %08p\n",
> elfObject->programHeaderTable());
115c115
< auxv.push_back(auxv_t(M5_AT_PHENT, elfObject->programHeaderSize()));
---
> auxv.emplace_back(M5_AT_PHENT, elfObject->programHeaderSize());
117c117
< auxv.push_back(auxv_t(M5_AT_PHNUM, elfObject->programHeaderCount()));
---
> auxv.emplace_back(M5_AT_PHNUM, elfObject->programHeaderCount());
121c121
< auxv.push_back(auxv_t(M5_AT_BASE, getBias()));
---
> auxv.emplace_back(M5_AT_BASE, getBias());
123c123
< auxv.push_back(auxv_t(M5_AT_ENTRY, objFile->entryPoint()));
---
> auxv.emplace_back(M5_AT_ENTRY, objFile->entryPoint());
125,128c125,128
< auxv.push_back(auxv_t(M5_AT_UID, uid()));
< auxv.push_back(auxv_t(M5_AT_EUID, euid()));
< auxv.push_back(auxv_t(M5_AT_GID, gid()));
< auxv.push_back(auxv_t(M5_AT_EGID, egid()));
---
> auxv.emplace_back(M5_AT_UID, uid());
> auxv.emplace_back(M5_AT_EUID, euid());
> auxv.emplace_back(M5_AT_GID, gid());
> auxv.emplace_back(M5_AT_EGID, egid());
180,184c180,183
< for (typename vector<auxv_t>::size_type x = 0; x < auxv.size(); x++) {
< initVirtMem.writeBlob(auxv_array_base + x * 2 * intSize,
< (uint8_t*)&(auxv[x].getAuxType()), intSize);
< initVirtMem.writeBlob(auxv_array_base + (x * 2 + 1) * intSize,
< (uint8_t*)&(auxv[x].getAuxVal()), intSize);
---
> Addr auxv_array_end = auxv_array_base;
> for (const auto &aux: auxv) {
> initVirtMem.write(auxv_array_end, aux, GuestByteOrder);
> auxv_array_end += sizeof(aux);
188,192c187,189
< for (unsigned i = 0; i < 2; i++) {
< const IntType zero = 0;
< const Addr addr = auxv_array_base + 2 * intSize * (auxv.size() + i);
< initVirtMem.writeBlob(addr, (uint8_t*)&zero, intSize);
< }
---
> const AuxVector<IntType> zero(0, 0);
> initVirtMem.write(auxv_array_end, zero);
> auxv_array_end += sizeof(zero);