/** Called prior to unparsing. Updates symbol entries with name offsets */ bool SgAsmElfSymbolSection::reallocate() { bool reallocated = SgAsmElfSection::reallocate(); /* Update parts of the section and segment tables not updated by superclass */ SgAsmElfSectionTableEntry *secent = get_section_entry(); if (secent) secent->set_sh_type(p_is_dynamic ? SgAsmElfSectionTableEntry::SHT_DYNSYM : SgAsmElfSectionTableEntry::SHT_SYMTAB); return reallocated; }
bool SgAsmElfRelocSection::reallocate() { bool reallocated = SgAsmElfSection::reallocate(); /* Update parts of the section and segment tables not updated by superclass */ SgAsmElfSectionTableEntry *secent = get_section_entry(); if (secent) secent->set_sh_type(p_uses_addend ? SgAsmElfSectionTableEntry::SHT_RELA : SgAsmElfSectionTableEntry::SHT_REL); return reallocated; }
/** Reallocate space for the string section if necessary. Note that reallocation is lazy here -- we don't shrink the section, * we only enlarge it (if you want the section to shrink then call SgAsmGenericStrtab::reallocate(bool) with a true value * rather than calling this function. SgAsmElfStringSection::reallocate is called in response to unparsing a file and gives * the string table a chance to extend its container section if it needs to allocate more space for strings. */ bool SgAsmElfStringSection::reallocate() { bool reallocated = SgAsmElfSection::reallocate(); if (get_strtab()->reallocate(false)) reallocated = true; /* Update parts of the section and segment tables not updated by superclass */ SgAsmElfSectionTableEntry *secent = get_section_entry(); if (secent) secent->set_sh_type(SgAsmElfSectionTableEntry::SHT_STRTAB); return reallocated; }