diff --git a/compiler/ogomf.pas b/compiler/ogomf.pas index 75eebdb0f1..8a2f240b6a 100644 --- a/compiler/ogomf.pas +++ b/compiler/ogomf.pas @@ -147,6 +147,7 @@ interface FPubDefs: TFPHashObjectList; FRawRecord: TOmfRawRecord; FCaseSensitiveSegments: Boolean; + FCaseSensitiveSymbols: Boolean; function PeekNextRecordType: Byte; @@ -163,9 +164,10 @@ interface property ExtDefs: TFPHashObjectList read FExtDefs; property PubDefs: TFPHashObjectList read FPubDefs; - { 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. } + { Specifies whether we're case sensitive in regards to segment, class, overlay and group names. } 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 constructor create;override; destructor destroy;override; @@ -1205,6 +1207,7 @@ implementation ExtDefElem: TOmfExternalNameElement; OldCount,NewCount,i: Integer; objsym: TObjSymbol; + symname: TSymStr; begin Result:=False; ExtDefRec:=TOmfRecord_EXTDEF.Create; @@ -1215,7 +1218,10 @@ implementation for i:=OldCount to NewCount-1 do begin 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.typ:=AT_FUNCTION; objsym.objsection:=nil; @@ -1234,6 +1240,7 @@ implementation basegroup: TObjSectionGroup; objsym: TObjSymbol; objsec: TOmfObjSection; + symname: TSymStr; begin Result:=False; PubDefRec:=TOmfRecord_PUBDEF.Create; @@ -1267,7 +1274,10 @@ implementation for i:=OldCount to NewCount-1 do begin 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.typ:=AT_FUNCTION; objsym.group:=basegroup; @@ -1703,6 +1713,7 @@ implementation FPubDefs:=TFPHashObjectList.Create; FRawRecord:=TOmfRawRecord.Create; CaseSensitiveSegments:=False; + CaseSensitiveSymbols:=True; end; destructor TOmfObjInput.destroy;