Skip to content

Commit

Permalink
config_gotls: refactored to include dynamic symbols in search space
Browse files Browse the repository at this point in the history
  • Loading branch information
h0x0er authored and cfc4n committed Nov 26, 2023
1 parent 71b4d41 commit db7e37a
Showing 1 changed file with 18 additions and 7 deletions.
25 changes: 18 additions & 7 deletions user/config/config_gotls.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,11 @@ import (
"debug/elf"
"errors"
"fmt"
"golang.org/x/arch/arm64/arm64asm"
"golang.org/x/arch/x86/x86asm"
"os"
"runtime"

"golang.org/x/arch/arm64/arm64asm"
"golang.org/x/arch/x86/x86asm"
)

// Arm64armInstSize via : arm64/arm64asm/decode.go:Decode() size = 4
Expand Down Expand Up @@ -103,15 +104,25 @@ func (gc *GoTLSConfig) Check() error {
// which are actually mounted via uprobe on these addresses.
func (gc *GoTLSConfig) findRetOffsets(symbolName string) ([]int, error) {
var err error
var goSymbs []elf.Symbol
goSymbs, err = gc.goElf.Symbols()
if err != nil {
return nil, err
var allSymbs []elf.Symbol

goSymbs, _ := gc.goElf.Symbols()
if len(goSymbs) > 0 {
allSymbs = append(allSymbs, goSymbs...)
}

goDynamicSymbs, _ := gc.goElf.DynamicSymbols()
if len(goDynamicSymbs) > 0 {
allSymbs = append(allSymbs, goDynamicSymbs...)
}

if len(allSymbs) == 0 {
return nil, fmt.Errorf("no symbols found")
}

var found bool
var symbol elf.Symbol
for _, s := range goSymbs {
for _, s := range allSymbs {
if s.Name == symbolName {
symbol = s
found = true
Expand Down

0 comments on commit db7e37a

Please sign in to comment.