working commit
This commit is contained in:
+42
@@ -0,0 +1,42 @@
|
||||
package observe
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"log"
|
||||
|
||||
"github.com/tetratelabs/wabin/binary"
|
||||
"github.com/tetratelabs/wabin/wasm"
|
||||
)
|
||||
|
||||
// Parse the names of the functions out of the
|
||||
// names custom section in the wasm binary.
|
||||
func parseNames(data []byte) (map[uint32]string, error) {
|
||||
features := wasm.CoreFeaturesV2
|
||||
m, err := binary.DecodeModule(data, features)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if m.NameSection == nil {
|
||||
return nil, errors.New("Name section not found")
|
||||
}
|
||||
|
||||
names := make(map[uint32]string, len(m.NameSection.FunctionNames))
|
||||
|
||||
for _, v := range m.NameSection.FunctionNames {
|
||||
names[v.Index] = v.Name
|
||||
}
|
||||
|
||||
warnOnDylibsoObserve := true
|
||||
for _, item := range m.ImportSection {
|
||||
if item.Module == "dylibso_observe" {
|
||||
if warnOnDylibsoObserve {
|
||||
warnOnDylibsoObserve = false
|
||||
log.Println("Module uses deprecated namespace \"dylibso_observe\"!\n" +
|
||||
"Please consider reinstrumenting with newer wasm-instr or Observe API!")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return names, nil
|
||||
}
|
||||
Reference in New Issue
Block a user