Commit b5449336 authored by cvs2snv's avatar cvs2snv
Browse files

This commit was manufactured by cvs2svn to create tag 'clean-2-2'.

parent 82608058
......@@ -8,7 +8,7 @@ Environments
EnvironmentCodeGen: Tools:CleanCompiler2;C2Co;cg_xo
EnvironmentLinker: tools\StaticLinker.exe
EnvironmentDynLink: tools\DynamicLinker.exe
EnvironmentVersion: 920
EnvironmentVersion: 919
EnvironmentRedirect: False
EnvironmentCompileMethod: Sync
EnvironmentProcessor: PowerPC_Carbon
......@@ -20,7 +20,7 @@ Environments
EnvironmentCodeGen: Tools:CleanCompiler2;C2Co;cg
EnvironmentLinker: tools\StaticLinker.exe
EnvironmentDynLink: tools\DynamicLinker.exe
EnvironmentVersion: 920
EnvironmentVersion: 919
EnvironmentRedirect: False
EnvironmentCompileMethod: Sync
EnvironmentProcessor: PowerPC_Classic
......@@ -32,7 +32,7 @@ Environments
EnvironmentCodeGen: Tools:CleanCompiler2;C2Co;cg_o
EnvironmentLinker:
EnvironmentDynLink: tools\DynamicLinker.exe
EnvironmentVersion: 920
EnvironmentVersion: 919
EnvironmentRedirect: False
EnvironmentCompileMethod: Sync
EnvironmentProcessor: PowerPC_MachO
......@@ -49,7 +49,7 @@ Environments
EnvironmentCodeGen: Tools:CleanCompiler2;C2Co;cg_xo
EnvironmentLinker: tools\StaticLinker.exe
EnvironmentDynLink: tools\DynamicLinker.exe
EnvironmentVersion: 920
EnvironmentVersion: 919
EnvironmentRedirect: False
EnvironmentCompileMethod: Sync
EnvironmentProcessor: PowerPC_Carbon
......@@ -66,7 +66,7 @@ Environments
EnvironmentCodeGen: Tools:CleanCompiler2;C2Co;cg_o
EnvironmentLinker:
EnvironmentDynLink: tools\DynamicLinker.exe
EnvironmentVersion: 920
EnvironmentVersion: 919
EnvironmentRedirect: False
EnvironmentCompileMethod: Sync
EnvironmentProcessor: PowerPC_MachO
......@@ -101,16 +101,11 @@ FileExists name = result==0;
constructor_name_ :: !Int !Int !{#Char} {#Char} -> (!{#Char},!{#Char});
constructor_name_ data_offset arity data text
# descriptor_max_arity_offset = data_offset + (data WORD (data_offset+2));
#! string_offset = descriptor_max_arity_offset+12;
# module_name_offset = data LONG (descriptor_max_arity_offset + 8);
/*
# descriptor_offset=data_offset-(data WORD (data_offset+2));
descriptor_arity=data WORD (descriptor_offset-2);
string_offset=descriptor_offset+4+(descriptor_arity<<3);
module_name_offset = data LONG (descriptor_offset-12);
*/
string_length=data LONG string_offset;
module_name_offset = data LONG (descriptor_offset-12);
module_name_length = data LONG module_name_offset;
= (data % (string_offset+4,string_offset+3+string_length),data % (module_name_offset+4,module_name_offset+3+module_name_length));
......@@ -128,17 +123,10 @@ FileExists name = result==0;
| descriptor_toc_offset bitand 3<>0
= abort "get_closure_name";
# descriptor_offset = data LONG (descriptor_toc_offset-0x8000);
# descriptor_max_arity_offset = descriptor_offset + (data WORD (descriptor_offset+2));
#! string_offset = descriptor_max_arity_offset+12;
# module_name_offset = data LONG (descriptor_max_arity_offset + 8);
/*
descriptor_arity=data WORD (descriptor_offset-2);
string_offset=descriptor_offset+4+(descriptor_arity<<3);
module_name_offset = data LONG (descriptor_offset-12);
*/
string_length=(data LONG string_offset);
module_name_offset = data LONG (descriptor_offset-12);
module_name_length = data LONG module_name_offset;
= (data % (string_offset+4,string_offset+3+string_length),data % (module_name_offset+4,module_name_offset+3+module_name_length));
......
[DEFAULT]
BASEURL=http://clean.cs.ru.nl
BASEURL=http://www.cs.kun.nl/~clean/intra/
[InternetShortcut]
URL=http://clean.cs.ru.nl
URL=http://www.cs.kun.nl/~clean/
Modified=50EDF103F483C1016A
......@@ -27,9 +27,9 @@ newTree :== Leaf { funName= ""
insertIntoTree :: !Definition !Tree -> Tree
inTree :: !String !Tree -> Bool
isLeafEmpty :: !Tree -> Bool
showTree :: !Tree -> String
fillTree :: !Int !Tree -> Tree
inBoom :: !String !Tree -> String
showTree :: !Tree -> !String
fillTree :: !Int !Tree -> !Tree
inBoom :: !String !Tree -> !String
sizeTree :: !Tree -> Int
depthTree :: !Tree -> Int
searchTree :: !String !Tree -> String
searchTree :: !String !Tree -> !String
......@@ -47,7 +47,7 @@ inTree x (Leaf e) = e.funName==x
inTree x (Node l e r) = e.funName==x || (x<e.funName && inTree x l) || (x>e.funName && inTree x r)
// Similar to inTree, more a test-function
inBoom :: !String !Tree -> String
inBoom :: !String !Tree -> !String
inBoom x b=:(Leaf e)
| (inTree x b) = x
| otherwise = "dacht het niet LEAF"
......@@ -61,14 +61,14 @@ isLeafEmpty (Leaf e) = e.funName==""
isLeafEmpty (Node _ e _) = e.funName==""
// Test function... Writes the Tree to stderr
showTree :: !Tree -> String
showTree :: !Tree -> !String
showTree b=:(Node l e r)
| e.funName == "" = "*"
| otherwise = "<<-"+++(showTree l)+++"->>" +++"<<"+++ e.funName +++ ">>" +++ "<<-"+++(showTree r)+++"->>"
showTree b=:(Leaf e) = e.funName
// Test function.. fills the tree with numbers 0 to n
fillTree :: !Int !Tree -> Tree
fillTree :: !Int !Tree -> !Tree
fillTree n b=:(Node _ _ _)
| n==0 = b
| otherwise = fillTree (n-1) (insertIntoTree ({funName=toString n,funDef=toString n +++" def"}) b)
......@@ -87,7 +87,7 @@ depthTree (Leaf _) = 1
depthTree (Node l _ r) = max (depthTree l+1) (depthTree r+1)
// Find a definition-name in the Tree and returns the definition, that should be showed in the tooltip
searchTree :: !String !Tree -> String
searchTree :: !String !Tree -> !String
searchTree x (Leaf e)
| ((x==" ") || (x=="\t") || (x=="")) = "space or tab"
| e.funName==x = e.funDef
......
......@@ -4,4 +4,4 @@ import StdFile, searchtree
import StdString
readFileInTree :: !*env -> (!Tree,!*env) | FileEnv env
spitDclDoor :: !String !*env -> *env | FileEnv env
spitDclDoor :: !String !*env -> !*env | FileEnv env
......@@ -50,7 +50,7 @@ readline f
/* Removes \n character from a line,
if True, check whether the \n is present, if not just remove last character */
removeNl :: !String !Bool -> String
removeNl :: !String !Bool -> !String
removeNl s doCheck
# length = size s
| doCheck = if (s%(length,length)=="\n") (s%(0,length-2)) s
......@@ -97,14 +97,14 @@ findNextLines f s inComment keepNlChar
| otherwise = (s, nextLine, f, inComment)
// returns the definition name from string s
getDefName :: !String -> String
getDefName :: !String -> !String
getDefName s
# n = findFirstBlank 0 s
# s = if (n==(-1)) "" (s%(0,n-1))
= removeBraces 0 s
// removes the ()-braces for infix operators
removeBraces :: !Int !String -> String
removeBraces :: !Int !String -> !String
removeBraces i s
# c = s%(i,i)
| (i>size s) = s
......@@ -164,7 +164,7 @@ isAlphaSpace c
= ((isAlphanum c) || (c==' ') || (c=='\t'))
// Remove the blanks from the string to optimise the layout in the tooltip
removeBlanks :: !Int !String -> String
removeBlanks :: !Int !String -> !String
removeBlanks i s
# c = s%(i,i)
| (i>size s) = s
......@@ -190,7 +190,7 @@ isBlankLine s
/* Run through the dcl-file to collect definitions
Called externally to create a defs.def file.
Currently sends the data to stderr. The generated file can be renamed to defs.def*/
spitDclDoor :: !String !*env -> *env | FileEnv env
spitDclDoor :: !String !*env -> !*env | FileEnv env
spitDclDoor s filesEnv
# (_,filesEnv) = accFiles (openDcl (applicationpath s)) filesEnv
= filesEnv
......@@ -206,7 +206,7 @@ where
# (_,filesEnv) = fclose f filesEnv
= (True,filesEnv)
where
initDcl :: !*File -> *File
initDcl :: !*File -> !*File
initDcl f
# (line,f) = readline f
| (line == "EOF") = f
......@@ -215,7 +215,7 @@ where
= f
// Physically run through the dcl-file
processDcl :: !*File !String !Bool -> *File
processDcl :: !*File !String !Bool -> !*File
processDcl f s inComment
# (s, inComment) = parseDef s inComment
# d = getDefName s
......@@ -228,7 +228,7 @@ processDcl f s inComment
| otherwise = processDcl f nextLine inComment
// Write the found definitions to a file
writeDefToFile :: !*File !String -> *File
writeDefToFile :: !*File !String -> !*File
writeDefToFile f s
# (fn,fd,dl) = validateDefinition s
# fn = if ((fn=="") && (fn=="")) fn fn //(trace_n fd fn)
......@@ -236,7 +236,7 @@ writeDefToFile f s
= f
// Write the classfunctions in the list to file
writeListToFile :: !*File [String] -> *File
writeListToFile :: !*File [String] -> !*File
writeListToFile f []
= f
writeListToFile f [h:t]
......@@ -309,7 +309,7 @@ writeClassFunctions i defList className s
| otherwise = writeClassFunctions (n+2) defList className s
// parse the classfunctions
parseClassFunctions :: !Int !String -> String
parseClassFunctions :: !Int !String -> !String
parseClassFunctions i s
# n = (findInString i s "\n")+1
# cc = s%(n+1,n+2)
......@@ -325,7 +325,7 @@ isSeparator s
| otherwise = False
// Move the code-block one blank left
decreaseLevel :: !Int !String -> String
decreaseLevel :: !Int !String -> !String
decreaseLevel i s
# n = findInString i s "\n"
| (n==(-1)) = s
......@@ -333,7 +333,7 @@ decreaseLevel i s
| otherwise = decreaseLevel (n+3) (s%(0,n+1)+++s%(n+3,size s))
// Move the code-block one blank right
increaseLevel :: !Int !String -> String
increaseLevel :: !Int !String -> !String
increaseLevel i s
# n = findInString i s "\n"
| (n==(-1)) = s
......@@ -341,7 +341,7 @@ increaseLevel i s
| otherwise = increaseLevel (n+3) (s%(0,n+1)+++" "+++s%(n+2,size s))
/* Returns the start-index of fs, if fs is a part of in ss, -1 if it is not */
findInString :: !Int !String !String -> Int
findInString :: !Int !String !String -> !Int
findInString i ss fs
| (i+size fs>size ss) = -1
| ((ss%(i,i+size fs-1)==fs) && (i==0)) = 0
......@@ -349,7 +349,7 @@ findInString i ss fs
| otherwise = findInString (i+1) ss fs
// is the line of a type that must not be searched for, or must be removed.
isSpecialType :: !String -> Bool
isSpecialType :: !String -> !Bool
isSpecialType s
| ((s=="definition") // no definition module name definition
|| (s=="from") // no imports
......
......@@ -208,7 +208,7 @@ mark_used_modules main_symbol_n main_file_n exception_symbols marked_bool_a0 mar
| relocation_string BYTE relocation_index bitand 0x80<>0 // r_scattered
# r_kind = relocation_string BYTE relocation_index;
# r_type=r_kind bitand 0xf;
| r_type==PPC_RELOC_LO16_SECTDIFF || r_type==PPC_RELOC_HA16_SECTDIFF || r_type==PPC_RELOC_SECTDIFF || r_type==PPC_RELOC_LOCAL_SECTDIFF
| r_type==PPC_RELOC_LO16_SECTDIFF || r_type==PPC_RELOC_HA16_SECTDIFF || r_type==PPC_RELOC_SECTDIFF
# relocation_index2=relocation_index+SIZE_OF_RELOCATION;
# r_kind2 = relocation_string BYTE relocation_index2;
| relocation_string BYTE relocation_index2 bitand 0x80==0 || r_kind2 bitand 0xf<>PPC_RELOC_PAIR
......@@ -223,11 +223,8 @@ mark_used_modules main_symbol_n main_file_n exception_symbols marked_bool_a0 mar
= mark_relocations_module (relocation_n+2) n_relocations relocation_string marked_bool_a xcoff_a files;
| r_type==PPC_RELOC_LO16 || r_type==PPC_RELOC_HA16
# relocation_index2=relocation_index+SIZE_OF_RELOCATION;
# r_kind2_scattered = relocation_string BYTE relocation_index2;
# r_kind2_not_scattered = relocation_string BYTE (relocation_index2+7);
| if (relocation_string BYTE relocation_index2 bitand 0x80<>0)
(r_kind2_scattered bitand 0xf<>PPC_RELOC_PAIR)
(r_kind2_not_scattered bitand 0xf<>PPC_RELOC_PAIR)
# r_kind2 = relocation_string BYTE relocation_index2;
| relocation_string BYTE relocation_index2 bitand 0x80==0 || r_kind2 bitand 0xf<>PPC_RELOC_PAIR
= abort ("mark_relocations_module: PPC_RELOC_PAIR expected "+++toString r_type);
# relocation_value=relocation_string ILONG (relocation_index+4);
# (section_offsets,xcoff_a) = xcoff_a![file_n].symbol_table.section_offsets;
......@@ -930,50 +927,14 @@ relocate_text_or_data n_relocations virtual_address aligned_module_offset first_
# new_relocations = store_new_scattered_relocation r_kind new_address new_relocation_index new_relocations;
= relocate_text_or_data (inc relocation_n) (inc new_relocation_n) symbol_a text_a new_relocations;
# relocation_index2=relocation_index+SIZE_OF_RELOCATION;
| r_type==PPC_RELOC_LO16
# r_kind2_scattered = relocations BYTE relocation_index2;
# r_kind2_not_scattered = relocations BYTE (relocation_index2+7);
| if (relocations BYTE relocation_index2 bitand 0x80<>0)
(r_kind2_scattered bitand 0xf<>PPC_RELOC_PAIR)
(r_kind2_not_scattered bitand 0xf<>PPC_RELOC_PAIR)
= abort_relocate_text_or_data_pair_expected PPC_RELOC_LO16;
# r_address2 = relocations IWORD (relocation_index2+2);
# address1 = determine_new_address r_value first_symbol_n section_offsets symbol_a module_offset_a section_addresses;
#! old_lo16 = text_a IWORD (r_address+2);
# old_offset = (r_address2<<16)+old_lo16;
# new_offset = address1+(old_offset-r_value);
# text_a = {text_a & [r_address+2]=toChar (new_offset>>8),[r_address+3]=toChar new_offset };
# new_relocations = store_new_scattered_relocation_and_copy_pair r_kind address1 new_relocation_index relocation_index new_relocations relocations;
# new_relocations = {new_relocations & [new_relocation_index+10]=toChar (new_offset>>24),
[new_relocation_index+11]=toChar (new_offset>>16)};
= relocate_text_or_data (relocation_n+2) (new_relocation_n+2) symbol_a text_a new_relocations;
| r_type==PPC_RELOC_HA16
# r_kind2_scattered = relocations BYTE relocation_index2;
# r_kind2_not_scattered = relocations BYTE (relocation_index2+7);
| if (relocations BYTE relocation_index2 bitand 0x80<>0)
(r_kind2_scattered bitand 0xf<>PPC_RELOC_PAIR)
(r_kind2_not_scattered bitand 0xf<>PPC_RELOC_PAIR)
= abort_relocate_text_or_data_pair_expected PPC_RELOC_HA16;
# r_address2 = relocations IWORD (relocation_index2+2);
# address1 = determine_new_address r_value first_symbol_n section_offsets symbol_a module_offset_a section_addresses;
#! old_ha16 = text_a IWORD (r_address+2);
# old_offset = (old_ha16<<16)+((r_address2<<16)>>16);
# new_offset = address1+(old_offset-r_value);
# new_offset_ha16 = (new_offset-((new_offset<<16)>>16))>>16;
# text_a = {text_a & [r_address+2]=toChar (new_offset_ha16>>8),[r_address+3]=toChar new_offset_ha16 };
# new_relocations = store_new_scattered_relocation_and_copy_pair r_kind address1 new_relocation_index relocation_index new_relocations relocations;
# new_relocations = {new_relocations & [new_relocation_index+10]=toChar (new_offset>>8),
[new_relocation_index+11]=toChar (new_offset)};
= relocate_text_or_data (relocation_n+2) (new_relocation_n+2) symbol_a text_a new_relocations;
# r_kind2 = relocations BYTE relocation_index2;
# r_value2=relocations ILONG (relocation_index2+4);
| relocations BYTE relocation_index2 bitand 0x80==0 || r_kind2 bitand 0xf<>PPC_RELOC_PAIR
= abort_relocate_text_or_data_pair_expected r_type;
# address1 = determine_new_address r_value first_symbol_n section_offsets symbol_a module_offset_a section_addresses;
# address2 = determine_new_address r_value2 first_symbol_n section_offsets symbol_a module_offset_a section_addresses;
= abort ("relocate_text_or_data: PPC_RELOC_PAIR expected "+++toString r_type);
| r_type==PPC_RELOC_HA16_SECTDIFF
# r_address2 = relocations ITBYTE (relocation_index2+1);
# address1 = determine_new_address r_value first_symbol_n section_offsets symbol_a module_offset_a section_addresses;
# address2 = determine_new_address r_value2 first_symbol_n section_offsets symbol_a module_offset_a section_addresses;
#! old_ha16 = text_a IWORD (r_address+2);
# old_diff = (old_ha16<<16)+((r_address2<<16)>>16);
# addend=(r_value-r_value2)-old_diff;
......@@ -990,6 +951,8 @@ relocate_text_or_data n_relocations virtual_address aligned_module_offset first_
= relocate_text_or_data (relocation_n+2) (new_relocation_n+2) symbol_a text_a new_relocations;
| r_type==PPC_RELOC_LO16_SECTDIFF
# r_address2 = relocations ITBYTE (relocation_index2+1);
# address1 = determine_new_address r_value first_symbol_n section_offsets symbol_a module_offset_a section_addresses;
# address2 = determine_new_address r_value2 first_symbol_n section_offsets symbol_a module_offset_a section_addresses;
#! old_lo16 = text_a IWORD (r_address+2);
# old_diff = (r_address2<<16)+old_lo16;
# addend=(r_value-r_value2)-old_diff;
......@@ -1003,7 +966,9 @@ relocate_text_or_data n_relocations virtual_address aligned_module_offset first_
[new_relocation_index+10]=toChar (new_diff>>24),
[new_relocation_index+11]=toChar (new_diff>>16)};
= relocate_text_or_data (relocation_n+2) (new_relocation_n+2) symbol_a text_a new_relocations;
| r_type==PPC_RELOC_SECTDIFF || r_type==PPC_RELOC_LOCAL_SECTDIFF
| r_type==PPC_RELOC_SECTDIFF
# address1 = determine_new_address r_value first_symbol_n section_offsets symbol_a module_offset_a section_addresses;
# address2 = determine_new_address r_value2 first_symbol_n section_offsets symbol_a module_offset_a section_addresses;
#! old_diff = text_a ILONG r_address;
# addend=(r_value-r_value2)-old_diff;
# new_diff = (address1-address2)+addend;
......@@ -1014,6 +979,31 @@ relocate_text_or_data n_relocations virtual_address aligned_module_offset first_
[new_relocation_index+14]=toChar (address2>>8),
[new_relocation_index+15]=toChar address2};
= relocate_text_or_data (relocation_n+2) (new_relocation_n+2) symbol_a text_a new_relocations;
| r_type==PPC_RELOC_LO16
# r_address2 = relocations IWORD (relocation_index2+2);
# address1 = determine_new_address r_value first_symbol_n section_offsets symbol_a module_offset_a section_addresses;
#! old_lo16 = text_a IWORD (r_address+2);
# old_offset = (r_address2<<16)+old_lo16;
# new_offset = address1+(old_offset-r_value);
# text_a = {text_a & [r_address+2]=toChar (new_offset>>8),[r_address+3]=toChar new_offset };
# new_relocations = store_new_scattered_relocation_and_copy_pair r_kind address1 new_relocation_index relocation_index new_relocations relocations;
# new_relocations = {new_relocations & [new_relocation_index+10]=toChar (new_offset>>24),
[new_relocation_index+11]=toChar (new_offset>>16)};
= relocate_text_or_data (relocation_n+2) (new_relocation_n+2) symbol_a text_a new_relocations;
| r_type==PPC_RELOC_HA16
# r_address2 = relocations IWORD (relocation_index2+2);
# address1 = determine_new_address r_value first_symbol_n section_offsets symbol_a module_offset_a section_addresses;
#! old_ha16 = text_a IWORD (r_address+2);
# old_offset = (old_ha16<<16)+((r_address2<<16)>>16);
# new_offset = address1+(old_offset-r_value);
# new_offset_ha16 = (new_offset-((new_offset<<16)>>16))>>16;
# text_a = {text_a & [r_address+2]=toChar (new_offset_ha16>>8),[r_address+3]=toChar new_offset_ha16 };
# new_relocations = store_new_scattered_relocation_and_copy_pair r_kind address1 new_relocation_index relocation_index new_relocations relocations;
# new_relocations = {new_relocations & [new_relocation_index+10]=toChar (new_offset>>8),
[new_relocation_index+11]=toChar (new_offset)};
= relocate_text_or_data (relocation_n+2) (new_relocation_n+2) symbol_a text_a new_relocations;
= abort ("relocate_text_or_data (scattered) "+++toString r_type);
# r_kind = relocations BYTE (relocation_index+7);
# r_type=r_kind bitand 0xf;
......@@ -1231,9 +1221,6 @@ relocate_text_or_data n_relocations virtual_address aligned_module_offset first_
}
= abort ("relocate_text_or_data: PPC_RELOC_BR24 not extern");
= abort ("relocate_text_or_data "+++toString r_type);
abort_relocate_text_or_data_pair_expected r_kind
= abort ("relocate_text_or_data: PPC_RELOC_PAIR expected "+++toString r_kind);
}
store_new_relocation r_kind new_r_symbolnum new_relocation_index new_relocations
......
......@@ -78,7 +78,6 @@ PPC_RELOC_HA16:==6;
PPC_RELOC_SECTDIFF:==8;
PPC_RELOC_LO16_SECTDIFF:==11;
PPC_RELOC_HA16_SECTDIFF:==12;
PPC_RELOC_LOCAL_SECTDIFF:==15;
STUB_SIZE:==36;
......
......@@ -98,8 +98,6 @@ PPC_RELOC_HI16_SECTDIFF:==10;
PPC_RELOC_LO16_SECTDIFF:==11;
PPC_RELOC_HA16_SECTDIFF:==12;
PPC_RELOC_JBSR:==13;
PPC_RELOC_LO14_SECTDIFF:==14;
PPC_RELOC_LOCAL_SECTDIFF:==15;
write_mach_o_headers :: !Int !Int !Int !Int !Int !Int !Int !Int !Int !Int !Int !Int !Int !Int !Int !Int !Int !*File -> *File;
write_mach_o_headers text_section_size_align_4 data_section_size_align_4 bss_section_size_align_4 stubs_section_size_align_4 lazy_pointers_section_size_align_4 non_lazy_pointers_section_size_align_4
......@@ -861,7 +859,7 @@ next_relocation_address relocation_n section_relocations
| section_relocations BYTE relocation_index bitand 0x80<>0 // r_scattered
# r_kind = section_relocations BYTE relocation_index;
# r_type=r_kind bitand 0xf;
| r_type==PPC_RELOC_LO16_SECTDIFF || r_type==PPC_RELOC_HA16_SECTDIFF || r_type==PPC_RELOC_SECTDIFF || r_type==PPC_RELOC_LOCAL_SECTDIFF || r_type==PPC_RELOC_LO16 || r_type==PPC_RELOC_HA16
| r_type==PPC_RELOC_LO16_SECTDIFF || r_type==PPC_RELOC_HA16_SECTDIFF || r_type==PPC_RELOC_SECTDIFF || r_type==PPC_RELOC_LO16 || r_type==PPC_RELOC_HA16
= (section_relocations ITBYTE (relocation_index+1),2);
| r_type==PPC_RELOC_BR24 || r_type==PPC_RELOC_BR14 || (r_type==PPC_RELOC_VANILLA && r_kind bitand 0x30==0x20)
= (section_relocations ITBYTE (relocation_index+1),1);
......@@ -991,7 +989,7 @@ fill_relocations_of_text_or_data_modules relocation_n section_n_relocations firs
| section_relocations BYTE relocation_index bitand 0x80<>0 // r_scattered
# r_kind = section_relocations BYTE relocation_index;
# r_type=r_kind bitand 0xf;
| r_type==PPC_RELOC_LO16_SECTDIFF || r_type==PPC_RELOC_HA16_SECTDIFF || r_type==PPC_RELOC_SECTDIFF || r_type==PPC_RELOC_LOCAL_SECTDIFF || r_type==PPC_RELOC_LO16 || r_type==PPC_RELOC_HA16
| r_type==PPC_RELOC_LO16_SECTDIFF || r_type==PPC_RELOC_HA16_SECTDIFF || r_type==PPC_RELOC_SECTDIFF || r_type==PPC_RELOC_LO16 || r_type==PPC_RELOC_HA16
# r_address = section_relocations ITBYTE (relocation_index+1);
# (module_index,r_address,section_offsets) = determine_module_index_and_new_r_address r_address first_section_symbol_n limit_section_symbol_n section_virtual_address section_offsets;
#! next_relocation_offset = next_relocation_offsets.[module_index];
......@@ -1032,7 +1030,7 @@ fill_relocations_of_modules relocation_n section_n_relocations section_stub_size
| section_relocations BYTE relocation_index bitand 0x80<>0 // r_scattered
# r_kind = section_relocations BYTE relocation_index;
# r_type=r_kind bitand 0xf;
| r_type==PPC_RELOC_LO16_SECTDIFF || r_type==PPC_RELOC_HA16_SECTDIFF || r_type==PPC_RELOC_SECTDIFF || r_type==PPC_RELOC_LOCAL_SECTDIFF
| r_type==PPC_RELOC_LO16_SECTDIFF || r_type==PPC_RELOC_HA16_SECTDIFF || r_type==PPC_RELOC_SECTDIFF
# r_address = section_relocations ITBYTE (relocation_index+1);
# module_index=r_address/section_stub_size;
# r_address=r_address-module_index*section_stub_size;
......@@ -1061,7 +1059,7 @@ fill_relocations_of_pointer_modules relocation_n section_n_relocations section_r
| section_relocations BYTE relocation_index bitand 0x80<>0 // r_scattered
# r_kind = section_relocations BYTE relocation_index;
# r_type=r_kind bitand 0xf;
| r_type==PPC_RELOC_LO16_SECTDIFF || r_type==PPC_RELOC_HA16_SECTDIFF || r_type==PPC_RELOC_SECTDIFF || r_type==PPC_RELOC_LOCAL_SECTDIFF
| r_type==PPC_RELOC_LO16_SECTDIFF || r_type==PPC_RELOC_HA16_SECTDIFF || r_type==PPC_RELOC_SECTDIFF
# r_address = section_relocations ITBYTE (relocation_index+1);
# module_index=r_address>>2;
# r_address=r_address-(module_index<<2);
......
#include <Carbon.r>
data '3PRM' (0, "Owner resource") {
$"00" /* . */
};
......@@ -21521,14 +21518,16 @@ data 'plst' (0) {
$"3C2F 706C 6973 743E 200D 0D0D" /* </plist> ... */
};
 
resource 'vers' (1) {
0x02, 0x20, final, 0x00, verUS,
"2.2",
"2.2, 1987-2006 University of Nijmegen"
data 'vers' (1) {
$"0210 8000 0000 0332 2E31 2732 2E31 2C20" /* ......2.1'2.1, */
$"A920 3139 3837 2D32 3030 3320 556E 6976" /* 1987-2003 Univ */
$"6572 7369 7479 206F 6620 4E69 6A6D 6567" /* ersity of Nijmeg */
$"656E" /* en */
};
 
resource 'vers' (2) {
0x02, 0x20, final, 0x00, verUS,
"2.2",
"(for Clean Programming System 2.2)"
data 'vers' (2) {
$"0210 8000 0000 0332 2E31 2228 666F 7220" /* ......2.1"(for */
$"436C 6561 6E20 5072 6F67 7261 6D6D 696E" /* Clean Programmin */
$"6720 5379 7374 656D 2032 2E31 29" /* g System 2.1) */
};
......@@ -11,14 +11,14 @@ data '3PRM' (0, "Owner resource") {
resource 'vers' (1) {
0x02, 0x10, final, 0x00, verUS,
"2.1.1",
"2.1.1, 1987-2005 University of Nijmegen"
"2.1",
"2.1, 1987-2003 University of Nijmegen"
};
resource 'vers' (2) {
0x02, 0x10, final, 0x00, verUS,
"2.1.1",
"(for Clean Programming System 2.1.1)"
"2.1",
"(for Clean Programming System 2.1)"
};
resource 'SIZE' (-1) {
......
Version: 1.4
Global
Built: True
Target: Everything
Target: Object IO
Exec: {Project}\CleanIDE.exe
CodeGen
CheckStacks: False
......@@ -46,6 +46,8 @@ Global
Path: {Project}\Interfaces\ProverOptions
Path: {Project}\Win\PatchConsoleEvents
Path: {Project}\Registry
Path: {Application}\Libraries\ArgEnvWindows 1.0.3
Path: {Application}\Libraries\Directory 1.1.2
Precompile:
Postlink:
MainModule
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment