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"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
"tools/srcs/binarytool/elf64analyser"
|
"tools/srcs/binarytool/elf64analyser"
|
||||||
|
"tools/srcs/binarytool/ukManager"
|
||||||
u "tools/srcs/common"
|
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
|
// 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 {
|
if len(*args.StringArg[listArg]) > 0 {
|
||||||
unikernels = new(Unikernels)
|
manager.Unikernels = new(ukManager.Unikernels)
|
||||||
unikernels.Unikernel = make([]Unikernel, len(*args.StringArg[listArg]))
|
manager.Unikernels.Unikernel = make([]ukManager.Unikernel, len(*args.StringArg[listArg]))
|
||||||
mapping := false
|
mapping := false
|
||||||
if *args.BoolArg[mappingArg] {
|
if *args.BoolArg[mappingArg] {
|
||||||
mapping = true
|
mapping = true
|
||||||
}
|
}
|
||||||
list := strings.Split(*args.StringArg[listArg], ",")
|
list := strings.Split(*args.StringArg[listArg], ",")
|
||||||
for i, arg := range list {
|
for i, arg := range list {
|
||||||
unikernels.Unikernel[i] = Unikernel{
|
manager.Unikernels.Unikernel[i] = ukManager.Unikernel{
|
||||||
BuildPath: arg,
|
BuildPath: arg,
|
||||||
DisplayMapping: mapping,
|
DisplayMapping: mapping,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if len(*args.StringArg[filesArg]) > 0 {
|
} else if len(*args.StringArg[filesArg]) > 0 {
|
||||||
var err error
|
var err error
|
||||||
unikernels, err = ReadJsonFile(*args.StringArg[filesArg])
|
manager.Unikernels, err = ukManager.ReadJsonFile(*args.StringArg[filesArg])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
u.PrintErr(err)
|
u.PrintErr(err)
|
||||||
}
|
}
|
||||||
|
@ -61,7 +62,7 @@ func RunBinaryAnalyser(homeDir string) {
|
||||||
var comparison elf64analyser.ComparisonElf
|
var comparison elf64analyser.ComparisonElf
|
||||||
comparison.GroupFileSegment = make([]*elf64analyser.ElfFileSegment, 0)
|
comparison.GroupFileSegment = make([]*elf64analyser.ElfFileSegment, 0)
|
||||||
|
|
||||||
for i, uk := range unikernels.Unikernel {
|
for i, uk := range manager.Unikernels.Unikernel {
|
||||||
|
|
||||||
uk.Analyser = new(elf64analyser.ElfAnalyser)
|
uk.Analyser = new(elf64analyser.ElfAnalyser)
|
||||||
if len(uk.BuildPath) > 0 {
|
if len(uk.BuildPath) > 0 {
|
||||||
|
@ -90,6 +91,15 @@ func RunBinaryAnalyser(homeDir string) {
|
||||||
fmt.Println("=====================================================")
|
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 {
|
if uk.DisplayStatSize {
|
||||||
uk.Analyser.DisplayStatSize(uk.ElfFile)
|
uk.Analyser.DisplayStatSize(uk.ElfFile)
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
//
|
//
|
||||||
// Author: Gaulthier Gain <gaulthier.gain@uliege.be>
|
// Author: Gaulthier Gain <gaulthier.gain@uliege.be>
|
||||||
|
|
||||||
package binarytool
|
package ukManager
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"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>
|
// Author: Gaulthier Gain <gaulthier.gain@uliege.be>
|
||||||
|
|
||||||
package binarytool
|
package ukManager
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
@ -28,17 +28,24 @@ type Unikernels struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type Unikernel struct {
|
type Unikernel struct {
|
||||||
BuildPath string `json:"buildPath"`
|
BuildPath string `json:"buildPath"`
|
||||||
Kernel string `json:"kernel"`
|
Kernel string `json:"kernel"`
|
||||||
SectionSplit string `json:"splitSection"`
|
SectionSplit string `json:"splitSection"`
|
||||||
DisplayMapping bool `json:"displayMapping"`
|
DisplayMapping bool `json:"displayMapping"`
|
||||||
DisplayStatSize bool `json:"displayStatSize"`
|
DisplayStatSize bool `json:"displayStatSize"`
|
||||||
IgnoredPlats []string `json:"ignoredPlats"`
|
ComputeLibsMapping bool `json:"computeLibsMapping"`
|
||||||
DisplayElfFile []string `json:"displayElfFile"`
|
|
||||||
DisplaySectionInfo []string `json:"displaySectionInfo"`
|
IgnoredPlats []string `json:"ignoredPlats"`
|
||||||
|
DisplayElfFile []string `json:"displayElfFile"`
|
||||||
|
DisplaySectionInfo []string `json:"displaySectionInfo"`
|
||||||
|
|
||||||
FindSectionByAddress []string `json:"findSectionByAddress"`
|
FindSectionByAddress []string `json:"findSectionByAddress"`
|
||||||
CompareGroup int `json:"compareGroup"`
|
CompareGroup int `json:"compareGroup"`
|
||||||
|
|
||||||
|
// Used to generate new link.lds file
|
||||||
|
ComputeTextAddr string `json:"computeTextAddr"`
|
||||||
|
LibsMapping []string `json:"LibsMapping"`
|
||||||
|
|
||||||
ElfFile *elf64core.ELF64File
|
ElfFile *elf64core.ELF64File
|
||||||
ListObjs []*elf64core.ELF64File
|
ListObjs []*elf64core.ELF64File
|
||||||
Analyser *elf64analyser.ElfAnalyser
|
Analyser *elf64analyser.ElfAnalyser
|
Loading…
Add table
Reference in a new issue