mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2024-09-20 09:31:47 +00:00
Merge remote-tracking branch 'origin/Ghidra_11.2'
This commit is contained in:
commit
2c0f43abf0
|
@ -33,7 +33,7 @@ ElementId ELEM_DESCRIPTION = ElementId("description",233);
|
||||||
ElementId ELEM_LANGUAGE = ElementId("language",234);
|
ElementId ELEM_LANGUAGE = ElementId("language",234);
|
||||||
ElementId ELEM_LANGUAGE_DEFINITIONS = ElementId("language_definitions",235);
|
ElementId ELEM_LANGUAGE_DEFINITIONS = ElementId("language_definitions",235);
|
||||||
|
|
||||||
map<int4,Sleigh *> SleighArchitecture::translators;
|
map<int4,Sleigh> SleighArchitecture::translators;
|
||||||
vector<LanguageDescription> SleighArchitecture::description;
|
vector<LanguageDescription> SleighArchitecture::description;
|
||||||
|
|
||||||
FileManage SleighArchitecture::specpaths; // Global specfile manager
|
FileManage SleighArchitecture::specpaths; // Global specfile manager
|
||||||
|
@ -174,17 +174,16 @@ bool SleighArchitecture::isTranslateReused(void)
|
||||||
Translate *SleighArchitecture::buildTranslator(DocumentStorage &store)
|
Translate *SleighArchitecture::buildTranslator(DocumentStorage &store)
|
||||||
|
|
||||||
{ // Build a sleigh translator
|
{ // Build a sleigh translator
|
||||||
map<int4,Sleigh *>::const_iterator iter;
|
map<int4,Sleigh>::iterator iter;
|
||||||
Sleigh *sleigh;
|
|
||||||
iter = translators.find(languageindex);
|
iter = translators.find(languageindex);
|
||||||
if (iter != translators.end()) {
|
if (iter != translators.end()) {
|
||||||
sleigh = (*iter).second;
|
iter->second.reset(loader, context);
|
||||||
sleigh->reset(loader,context);
|
return &iter->second;
|
||||||
return sleigh;
|
|
||||||
}
|
}
|
||||||
sleigh = new Sleigh(loader,context);
|
pair<map<int4,Sleigh>::iterator,bool> res;
|
||||||
translators[languageindex] = sleigh;
|
res = translators.emplace(piecewise_construct,forward_as_tuple(languageindex),forward_as_tuple(loader,context));
|
||||||
return sleigh;
|
return &(*res.first).second;
|
||||||
}
|
}
|
||||||
|
|
||||||
PcodeInjectLibrary *SleighArchitecture::buildPcodeInjectLibrary(void)
|
PcodeInjectLibrary *SleighArchitecture::buildPcodeInjectLibrary(void)
|
||||||
|
@ -627,10 +626,6 @@ const vector<LanguageDescription> &SleighArchitecture::getDescriptions(void)
|
||||||
void SleighArchitecture::shutdown(void)
|
void SleighArchitecture::shutdown(void)
|
||||||
|
|
||||||
{
|
{
|
||||||
if (translators.empty()) return; // Already cleared
|
|
||||||
for(map<int4,Sleigh *>::const_iterator iter=translators.begin();iter!=translators.end();++iter)
|
|
||||||
delete (*iter).second;
|
|
||||||
translators.clear();
|
|
||||||
// description.clear(); // static vector is destroyed by the normal exit handler
|
// description.clear(); // static vector is destroyed by the normal exit handler
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,9 +4,9 @@
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
@ -106,7 +106,7 @@ public:
|
||||||
/// Generally a \e language \e id (i.e. x86:LE:64:default) is provided, then this
|
/// Generally a \e language \e id (i.e. x86:LE:64:default) is provided, then this
|
||||||
/// object is able to automatically load in configuration and construct the Translate object.
|
/// object is able to automatically load in configuration and construct the Translate object.
|
||||||
class SleighArchitecture : public Architecture {
|
class SleighArchitecture : public Architecture {
|
||||||
static map<int4,Sleigh *> translators; ///< Map from language index to instantiated translators
|
static map<int4,Sleigh> translators; ///< Map from language index to instantiated translators
|
||||||
static vector<LanguageDescription> description; ///< List of languages we know about
|
static vector<LanguageDescription> description; ///< List of languages we know about
|
||||||
int4 languageindex; ///< Index (within LanguageDescription array) of the active language
|
int4 languageindex; ///< Index (within LanguageDescription array) of the active language
|
||||||
string filename; ///< Name of active load-image file
|
string filename; ///< Name of active load-image file
|
||||||
|
|
Loading…
Reference in New Issue
Block a user