[prev in list] [next in list] [prev in thread] [next in thread] 

List:       squeak-vm-dev
Subject:    [Vm-dev] VM Maker: CogTools-LM.94.mcz
From:       commits () source ! squeak ! org
Date:       2023-11-23 16:13:14
Message-ID: 20231123161317.27564583D0E () mail ! squeak ! org
[Download RAW message or body]

 
Leon Matthes uploaded a new version of CogTools to project VM Maker:
http://source.squeak.org/VMMaker/CogTools-LM.94.mcz

==================== Summary ====================

Name: CogTools-LM.94
Author: LM
Time: 23 November 2023, 5:13:14.611051 pm
UUID: bf8819e7-2069-49db-a7d9-593bfad324c2
Ancestors: CogTools-eem.93

Filter Linux symbols on an image level, not in the primitive.

Follow-up for VMMaker.threaded-LM.3348

This ensures that even if the primitive leaves an entry of the Array empty, the \
Manager just filters it out.

=============== Diff against CogTools-eem.93 ===============

Item was changed:
  ----- Method: VMProfilerLinuxSymbolsManager>>initializeMost (in category \
'initialize-release') -----  initializeMost
  	| shortNames |
  	initialized := false.
  	maxAddressMask := (2 raisedToInteger: 32) - 1.
  	modulesByName := Dictionary new.
  	symbolsByModule := Dictionary new.
  	shortNames := Set new.
  	tempDir := self class tempDirectory.
  	CompatibilityClass ensureExistenceOfDirectory:  tempDir. 
  	modules := self primitiveExecutableModules.
  	modules := (1 to: modules size by: 2) collect:
  					[:i| | fileName shortName counter longName |
  					fileName := modules at: i.
+ 					"The linux-gate.so.1 library may result in an empty entry."
+ 					fileName ifNotNil: [
+ 						(fileName beginsWith: '/dgagent') ifTrue:
+ 							[fileName := fileName allButFirst: 8].
+ 						shortName := CompatibilityClass nameOfFile: fileName in: tempDir.  
+ 						counter := 0.
+ 						[shortNames includes: shortName] whileTrue:
+ 							[counter := counter + 1.
+ 							 shortName := (CompatibilityClass nameOfFile: fileName  in: tempDir), \
counter printString]. + 						shortNames add: shortName.
+ 						longName := (modules at: i + 1)
+ 										ifNil: [fileName]
+ 										ifNotNil:
+ 											[:symlink|
+ 											symlink first = $/
+ 												ifTrue: [symlink]
+ 												ifFalse: [( CompatibilityClass parentPathOfFile: fileName ), '/', \
symlink]]. + 						"some files are off limits (e.g. /dgagent/lib/preload.so)"
+ 						(CompatibilityClass exists: longName) ifTrue:
+ 							[(modulesByName
+ 								at: longName
+ 								put: VMPExecutableModuleSymbol new)
+ 									name: longName;
+ 									shortName: shortName]]].
- 					(fileName beginsWith: '/dgagent') ifTrue:
- 						[fileName := fileName allButFirst: 8].
- 					shortName := CompatibilityClass nameOfFile: fileName in: tempDir.  
- 					counter := 0.
- 					[shortNames includes: shortName] whileTrue:
- 						[counter := counter + 1.
- 						 shortName := (CompatibilityClass nameOfFile: fileName  in: tempDir), counter \
                printString].
- 					shortNames add: shortName.
- 					longName := (modules at: i + 1)
- 									ifNil: [fileName]
- 									ifNotNil:
- 										[:symlink|
- 										symlink first = $/
- 											ifTrue: [symlink]
- 											ifFalse: [( CompatibilityClass parentPathOfFile: fileName ), '/', \
                symlink]].
- 					"some files are off limits (e.g. /dgagent/lib/preload.so)"
- 					(CompatibilityClass exists: longName) ifTrue:
- 						[(modulesByName
- 							at: longName
- 							put: VMPExecutableModuleSymbol new)
- 								name: longName;
- 								shortName: shortName]].
  	"The primitive always answers the VM info in the first entry."
  	vmModule := modules first.
  	"now filter out the files we can't read..."
  	modules := modules select: [:m| m notNil and: [modulesByName includesKey: m \
name]]!


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic