First version
This commit is contained in:
parent
726e349092
commit
12bc9774e0
4 changed files with 50 additions and 16 deletions
|
@ -12,6 +12,7 @@ import (
|
|||
"os"
|
||||
"strings"
|
||||
"tools/srcs/binarytool/elf64analyser"
|
||||
"tools/srcs/binarytool/ukManager"
|
||||
u "tools/srcs/common"
|
||||
)
|
||||
|
||||
|
@ -33,24 +34,24 @@ func RunBinaryAnalyser(homeDir string) {
|
|||
}
|
||||
|
||||
// Check if a json file is used or if it is via command line
|
||||
var unikernels *Unikernels
|
||||
manager := new(ukManager.Manager)
|
||||
if len(*args.StringArg[listArg]) > 0 {
|
||||
unikernels = new(Unikernels)
|
||||
unikernels.Unikernel = make([]Unikernel, len(*args.StringArg[listArg]))
|
||||
manager.Unikernels = new(ukManager.Unikernels)
|
||||
manager.Unikernels.Unikernel = make([]ukManager.Unikernel, len(*args.StringArg[listArg]))
|
||||
mapping := false
|
||||
if *args.BoolArg[mappingArg] {
|
||||
mapping = true
|
||||
}
|
||||
list := strings.Split(*args.StringArg[listArg], ",")
|
||||
for i, arg := range list {
|
||||
unikernels.Unikernel[i] = Unikernel{
|
||||
manager.Unikernels.Unikernel[i] = ukManager.Unikernel{
|
||||
BuildPath: arg,
|
||||
DisplayMapping: mapping,
|
||||
}
|
||||
}
|
||||
} else if len(*args.StringArg[filesArg]) > 0 {
|
||||
var err error
|
||||
unikernels, err = ReadJsonFile(*args.StringArg[filesArg])
|
||||
manager.Unikernels, err = ukManager.ReadJsonFile(*args.StringArg[filesArg])
|
||||
if err != nil {
|
||||
u.PrintErr(err)
|
||||
}
|
||||
|
@ -61,7 +62,7 @@ func RunBinaryAnalyser(homeDir string) {
|
|||
var comparison elf64analyser.ComparisonElf
|
||||
comparison.GroupFileSegment = make([]*elf64analyser.ElfFileSegment, 0)
|
||||
|
||||
for i, uk := range unikernels.Unikernel {
|
||||
for i, uk := range manager.Unikernels.Unikernel {
|
||||
|
||||
uk.Analyser = new(elf64analyser.ElfAnalyser)
|
||||
if len(uk.BuildPath) > 0 {
|
||||
|
@ -90,6 +91,15 @@ func RunBinaryAnalyser(homeDir string) {
|
|||
fmt.Println("=====================================================")
|
||||
}
|
||||
|
||||
if uk.ComputeLibsMapping && len(uk.LibsMapping) > 0 {
|
||||
|
||||
if err != nil {
|
||||
u.PrintErr(err)
|
||||
} else {
|
||||
uk.Analyser.ComputeAlignedMapping(uk.ElfFile, uk.LibsMapping)
|
||||
}
|
||||
}
|
||||
|
||||
if uk.DisplayStatSize {
|
||||
uk.Analyser.DisplayStatSize(uk.ElfFile)
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
//
|
||||
// Author: Gaulthier Gain <gaulthier.gain@uliege.be>
|
||||
|
||||
package binarytool
|
||||
package ukManager
|
||||
|
||||
import (
|
||||
"encoding/json"
|
17
srcs/binarytool/ukManager/manager.go
Normal file
17
srcs/binarytool/ukManager/manager.go
Normal file
|
@ -0,0 +1,17 @@
|
|||
package ukManager
|
||||
|
||||
type Manager struct {
|
||||
Unikernels *Unikernels
|
||||
MicroLibs map[string]MicroLibs
|
||||
}
|
||||
|
||||
type MicroLibs struct {
|
||||
Name string
|
||||
StartAddr uint64
|
||||
Size uint64
|
||||
instance int
|
||||
}
|
||||
|
||||
func checkInstance() {
|
||||
|
||||
}
|
|
@ -4,7 +4,7 @@
|
|||
//
|
||||
// Author: Gaulthier Gain <gaulthier.gain@uliege.be>
|
||||
|
||||
package binarytool
|
||||
package ukManager
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
|
@ -33,12 +33,19 @@ type Unikernel struct {
|
|||
SectionSplit string `json:"splitSection"`
|
||||
DisplayMapping bool `json:"displayMapping"`
|
||||
DisplayStatSize bool `json:"displayStatSize"`
|
||||
ComputeLibsMapping bool `json:"computeLibsMapping"`
|
||||
|
||||
IgnoredPlats []string `json:"ignoredPlats"`
|
||||
DisplayElfFile []string `json:"displayElfFile"`
|
||||
DisplaySectionInfo []string `json:"displaySectionInfo"`
|
||||
|
||||
FindSectionByAddress []string `json:"findSectionByAddress"`
|
||||
CompareGroup int `json:"compareGroup"`
|
||||
|
||||
// Used to generate new link.lds file
|
||||
ComputeTextAddr string `json:"computeTextAddr"`
|
||||
LibsMapping []string `json:"LibsMapping"`
|
||||
|
||||
ElfFile *elf64core.ELF64File
|
||||
ListObjs []*elf64core.ELF64File
|
||||
Analyser *elf64analyser.ElfAnalyser
|
Loading…
Add table
Reference in a new issue