+ added property to the omf object reader, specifying whether symbol names

should be case sensitive (on by default, for now)

git-svn-id: trunk@32435 -
This commit is contained in:
nickysn 2015-11-21 15:35:42 +00:00
parent 79336c59de
commit b9ca24d4df

View File

@ -147,6 +147,7 @@ interface
FPubDefs: TFPHashObjectList; FPubDefs: TFPHashObjectList;
FRawRecord: TOmfRawRecord; FRawRecord: TOmfRawRecord;
FCaseSensitiveSegments: Boolean; FCaseSensitiveSegments: Boolean;
FCaseSensitiveSymbols: Boolean;
function PeekNextRecordType: Byte; function PeekNextRecordType: Byte;
@ -163,9 +164,10 @@ interface
property ExtDefs: TFPHashObjectList read FExtDefs; property ExtDefs: TFPHashObjectList read FExtDefs;
property PubDefs: TFPHashObjectList read FPubDefs; property PubDefs: TFPHashObjectList read FPubDefs;
{ Specifies whether we're case sensitive in regards to segment, class, overlay and group names. { Specifies whether we're case sensitive in regards to segment, class, overlay and group names. }
Symbols (in EXTDEF and PUBDEF records) are always case sensitive, regardless of the value of this property. }
property CaseSensitiveSegments: Boolean read FCaseSensitiveSegments write FCaseSensitiveSegments; property CaseSensitiveSegments: Boolean read FCaseSensitiveSegments write FCaseSensitiveSegments;
{ Specifies whether symbol names (in EXTDEF and PUBDEF records) are case sensitive. }
property CaseSensitiveSymbols: Boolean read FCaseSensitiveSymbols write FCaseSensitiveSymbols;
public public
constructor create;override; constructor create;override;
destructor destroy;override; destructor destroy;override;
@ -1205,6 +1207,7 @@ implementation
ExtDefElem: TOmfExternalNameElement; ExtDefElem: TOmfExternalNameElement;
OldCount,NewCount,i: Integer; OldCount,NewCount,i: Integer;
objsym: TObjSymbol; objsym: TObjSymbol;
symname: TSymStr;
begin begin
Result:=False; Result:=False;
ExtDefRec:=TOmfRecord_EXTDEF.Create; ExtDefRec:=TOmfRecord_EXTDEF.Create;
@ -1215,7 +1218,10 @@ implementation
for i:=OldCount to NewCount-1 do for i:=OldCount to NewCount-1 do
begin begin
ExtDefElem:=TOmfExternalNameElement(ExtDefs[i]); ExtDefElem:=TOmfExternalNameElement(ExtDefs[i]);
objsym:=objdata.CreateSymbol(ExtDefElem.Name); symname:=ExtDefElem.Name;
if not CaseSensitiveSymbols then
symname:=UpCase(symname);
objsym:=objdata.CreateSymbol(symname);
objsym.bind:=AB_EXTERNAL; objsym.bind:=AB_EXTERNAL;
objsym.typ:=AT_FUNCTION; objsym.typ:=AT_FUNCTION;
objsym.objsection:=nil; objsym.objsection:=nil;
@ -1234,6 +1240,7 @@ implementation
basegroup: TObjSectionGroup; basegroup: TObjSectionGroup;
objsym: TObjSymbol; objsym: TObjSymbol;
objsec: TOmfObjSection; objsec: TOmfObjSection;
symname: TSymStr;
begin begin
Result:=False; Result:=False;
PubDefRec:=TOmfRecord_PUBDEF.Create; PubDefRec:=TOmfRecord_PUBDEF.Create;
@ -1267,7 +1274,10 @@ implementation
for i:=OldCount to NewCount-1 do for i:=OldCount to NewCount-1 do
begin begin
PubDefElem:=TOmfPublicNameElement(PubDefs[i]); PubDefElem:=TOmfPublicNameElement(PubDefs[i]);
objsym:=objdata.CreateSymbol(PubDefElem.Name); symname:=PubDefElem.Name;
if not CaseSensitiveSymbols then
symname:=UpCase(symname);
objsym:=objdata.CreateSymbol(symname);
objsym.bind:=AB_GLOBAL; objsym.bind:=AB_GLOBAL;
objsym.typ:=AT_FUNCTION; objsym.typ:=AT_FUNCTION;
objsym.group:=basegroup; objsym.group:=basegroup;
@ -1703,6 +1713,7 @@ implementation
FPubDefs:=TFPHashObjectList.Create; FPubDefs:=TFPHashObjectList.Create;
FRawRecord:=TOmfRawRecord.Create; FRawRecord:=TOmfRawRecord.Create;
CaseSensitiveSegments:=False; CaseSensitiveSegments:=False;
CaseSensitiveSymbols:=True;
end; end;
destructor TOmfObjInput.destroy; destructor TOmfObjInput.destroy;