If we are using C++, we might as well use scope-based memory management
for these things, cleaner and less error prone. Also removed
unnecessary gotos.
getting attributes work, setting them (e.g. with mark_boot_successful)
doesn't seem to work properly.
The IOCTL required to set the boot LUN doesn't work, some kernel driver
is missing for it.
This is a port of the Android bootctrl HAL and Qualcomms GPT based
implementation for musl/glibc based systems running mainline linux
Currently it doesn't work because the gpt hdr which is read doesn't
seem to have valid data.