From 52db8d18861c36f843db5ff3e7592fc10428beae Mon Sep 17 00:00:00 2001 From: Kemal Akkoyun Date: Sun, 25 Feb 2024 16:36:27 +0100 Subject: [PATCH 1/2] Unify libc layouts Format Signed-off-by: Kemal Akkoyun --- .github/workflows/build.yml | 4 ++-- cmd/apkdownload/apkdownload.go | 29 ++++++++++++-------------- cmd/debdownload/debdownload.go | 16 +++++++-------- cmd/debuginfofind/debuginfofind.go | 4 +--- cmd/structlayout/structlayout.go | 8 +++----- pkg/libc/glibc/datamap.go | 7 +++++-- pkg/libc/glibc/glibc.go | 15 +++++++------- pkg/libc/glibc/glibc_test.go | 33 ++++++++++++++++++++---------- pkg/libc/{glibc => }/layout.go | 4 ++-- pkg/libc/musl/datamap.go | 14 +++++++++---- pkg/libc/musl/layout.go | 25 ---------------------- pkg/libc/musl/musl.go | 16 ++++++++------- pkg/libc/musl/musl_test.go | 30 +++++++++++++-------------- pkg/python/python_test.go | 6 ++++-- pkg/ruby/datamap.go | 4 ++-- 15 files changed, 103 insertions(+), 112 deletions(-) rename pkg/libc/{glibc => }/layout.go (97%) delete mode 100644 pkg/libc/musl/layout.go diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f771e69..1a8fd4a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -41,8 +41,8 @@ jobs: - name: Check run: make check - - name: Format - run: make format + - name: Lint + run: make lint - name: Build run: make build diff --git a/cmd/apkdownload/apkdownload.go b/cmd/apkdownload/apkdownload.go index 9ab5c1d..39d21b1 100644 --- a/cmd/apkdownload/apkdownload.go +++ b/cmd/apkdownload/apkdownload.go @@ -94,7 +94,7 @@ func main() { } interimDir := filepath.Join(*tempDir, *pkgName) - if err := os.MkdirAll(interimDir, 0755); err != nil { + if err := os.MkdirAll(interimDir, 0o755); err != nil { logger.Error("failed to create temp directory", "err", err) os.Exit(1) } @@ -109,7 +109,7 @@ func main() { } targetDir := filepath.Join(*outputDir, *pkgName) - if err := os.MkdirAll(targetDir, 0755); err != nil { + if err := os.MkdirAll(targetDir, 0o755); err != nil { logger.Error("failed to create output directory", "err", err) os.Exit(1) } @@ -136,21 +136,18 @@ type cli struct { logger *slog.Logger } -var ( - allowedVariants = map[string]struct{}{ - "dbg": {}, - // "dev": {}, - // "fts": {}, - // "legacy": {}, - // "libintl": {}, - // "locales": {}, - // "obstack": {}, - // "utils": {}, - } -) +var allowedVariants = map[string]struct{}{ + "dbg": {}, + // "dev": {}, + // "fts": {}, + // "legacy": {}, + // "libintl": {}, + // "locales": {}, + // "obstack": {}, + // "utils": {}, +} func (c *cli) list(ctx context.Context, pkgUrl, pkgName string, architectures []string, versionConstraint string) ([]*pkg, error) { - packages := map[string]*pkg{} for _, arch := range architectures { pkgUrl, err := url.JoinPath(pkgUrl, convertArch(arch)) @@ -371,7 +368,7 @@ func (c *cli) extract(ctx context.Context, packages []*pkg, outputDir string) er target := filepath.Join(targetDir, hdr.Name) if hdr.FileInfo().IsDir() { - if err := os.MkdirAll(target, 0755); err != nil { + if err := os.MkdirAll(target, 0o755); err != nil { return fmt.Errorf("failed to create directory: %w", err) } continue diff --git a/cmd/debdownload/debdownload.go b/cmd/debdownload/debdownload.go index ee92d23..6863608 100644 --- a/cmd/debdownload/debdownload.go +++ b/cmd/debdownload/debdownload.go @@ -43,12 +43,10 @@ const ( DownloadSinglePackageTimeout = 90 * time.Second ) -var ( - allowedVariants = map[string]struct{}{ - "dbg": {}, - // "dev": {}, - } -) +var allowedVariants = map[string]struct{}{ + "dbg": {}, + // "dev": {}, +} type packageSourceVariant int @@ -123,7 +121,7 @@ func main() { } interimDir := filepath.Join(*tempDir, *pkgName) - if err := os.MkdirAll(interimDir, 0755); err != nil { + if err := os.MkdirAll(interimDir, 0o755); err != nil { logger.Error("failed to create temp directory", "err", err) os.Exit(1) } @@ -138,7 +136,7 @@ func main() { } targetDir := filepath.Join(*outputDir, *pkgName) - if err := os.MkdirAll(targetDir, 0755); err != nil { + if err := os.MkdirAll(targetDir, 0o755); err != nil { logger.Error("failed to create output directory", "err", err) os.Exit(1) } @@ -415,7 +413,7 @@ func (c *cli) extract(_ context.Context, packages []*pkg, outputDir string) erro target := filepath.Join(targetDir, hdr.Name) if hdr.FileInfo().IsDir() { - if err := os.MkdirAll(target, 0755); err != nil { + if err := os.MkdirAll(target, 0o755); err != nil { return fmt.Errorf("failed to create directory: %w", err) } continue diff --git a/cmd/debuginfofind/debuginfofind.go b/cmd/debuginfofind/debuginfofind.go index 34a5b6a..ba0cbc5 100644 --- a/cmd/debuginfofind/debuginfofind.go +++ b/cmd/debuginfofind/debuginfofind.go @@ -25,9 +25,7 @@ func main() { })) fSet := ff.NewFlagSet("debdownload") - var ( - debuginfoDir = fSet.String('d', "debuginfo-dir", "", "directory to write the downloaded debuginfo files") - ) + debuginfoDir := fSet.String('d', "debuginfo-dir", "", "directory to write the downloaded debuginfo files") if err := ff.Parse(fSet, os.Args[1:]); err != nil { fmt.Printf("%s\n", ffhelp.Flags(fSet)) if !errors.Is(err, ff.ErrHelp) { diff --git a/cmd/structlayout/structlayout.go b/cmd/structlayout/structlayout.go index 9595ec6..d4d6f45 100644 --- a/cmd/structlayout/structlayout.go +++ b/cmd/structlayout/structlayout.go @@ -93,9 +93,7 @@ func main() { os.Exit(1) } - var ( - input = fSet.Arg(0) - ) + input := fSet.Arg(0) dwarfData, err := dwarfDataFromELF(input) if err != nil { logger.Error("failed to read DWARF data", "err", err) @@ -137,7 +135,7 @@ func processAndWriteLayout(dwarfData *dwarf.Data, output string, version string, return fmt.Errorf("failed to extract struct layout from DWARF data: %w", err) } - if err := os.MkdirAll(filepath.Dir(output), 0755); err != nil { + if err := os.MkdirAll(filepath.Dir(output), 0o755); err != nil { return fmt.Errorf("failed to create output directory: %w", err) } @@ -174,7 +172,7 @@ func processAndWriteInitialState(dwarfData *dwarf.Data, output string, version s return fmt.Errorf("failed to extract struct layout from DWARF data: %w", err) } - if err := os.MkdirAll(filepath.Dir(output), 0755); err != nil { + if err := os.MkdirAll(filepath.Dir(output), 0o755); err != nil { return fmt.Errorf("failed to create output directory: %w", err) } diff --git a/pkg/libc/glibc/datamap.go b/pkg/libc/glibc/datamap.go index 96eec8e..a8525c0 100644 --- a/pkg/libc/glibc/datamap.go +++ b/pkg/libc/glibc/datamap.go @@ -1,6 +1,9 @@ package glibc -import "github.com/parca-dev/runtime-data/pkg/runtimedata" +import ( + "github.com/parca-dev/runtime-data/pkg/libc" + "github.com/parca-dev/runtime-data/pkg/runtimedata" +) type glibc struct { PThreadSpecific1stblock int64 `offsetof:"pthread.specific_1stblock" yaml:"pthread_specific_1stblock"` @@ -10,7 +13,7 @@ type glibc struct { } func (g *glibc) Layout() runtimedata.RuntimeData { - return &Layout{ + return &libc.Layout{ PThreadSpecific1stblock: g.PThreadSpecific1stblock, PThreadSize: g.PThreadSize, PThreadKeyData: g.PThreadKeyData, diff --git a/pkg/libc/glibc/glibc.go b/pkg/libc/glibc/glibc.go index 1c40a9e..af9cf20 100644 --- a/pkg/libc/glibc/glibc.go +++ b/pkg/libc/glibc/glibc.go @@ -9,6 +9,7 @@ import ( "sync" "github.com/Masterminds/semver/v3" + "github.com/parca-dev/runtime-data/pkg/libc" "gopkg.in/yaml.v3" ) @@ -22,7 +23,7 @@ type Key struct { var ( //go:embed layout/*/*.yaml generatedLayouts embed.FS - structLayouts = map[Key]*Layout{} + structLayouts = map[Key]*libc.Layout{} once = &sync.Once{} ) @@ -34,7 +35,7 @@ func init() { } } -func loadLayouts() (map[Key]*Layout, error) { +func loadLayouts() (map[Key]*libc.Layout, error) { var err error once.Do(func() { entries, err := generatedLayouts.ReadDir(filepath.Join(layoutDir, runtime.GOARCH)) @@ -56,7 +57,7 @@ func loadLayouts() (map[Key]*Layout, error) { if ext != ".yaml" && ext != ".yml" { continue } - var lyt Layout + var lyt libc.Layout if err = yaml.Unmarshal(data, &lyt); err != nil { return } @@ -73,7 +74,7 @@ func loadLayouts() (map[Key]*Layout, error) { return structLayouts, err } -func getLayoutForArch(v *semver.Version, arch string) (Key, *Layout, error) { +func getLayoutForArch(v *semver.Version, arch string) (Key, *libc.Layout, error) { entries, err := generatedLayouts.ReadDir(filepath.Join(layoutDir, arch)) if err != nil { return Key{}, nil, err @@ -92,7 +93,7 @@ func getLayoutForArch(v *semver.Version, arch string) (Key, *Layout, error) { if ext != ".yaml" && ext != ".yml" { continue } - var lyt Layout + var lyt libc.Layout if err = yaml.Unmarshal(data, &lyt); err != nil { return Key{}, nil, err } @@ -110,7 +111,7 @@ func getLayoutForArch(v *semver.Version, arch string) (Key, *Layout, error) { } // GetLayout returns the layout for the given version. -func GetLayout(v *semver.Version) (Key, *Layout, error) { +func GetLayout(v *semver.Version) (Key, *libc.Layout, error) { for k, l := range structLayouts { constr, err := semver.NewConstraint(k.Constraint) if err != nil { @@ -124,6 +125,6 @@ func GetLayout(v *semver.Version) (Key, *Layout, error) { } // GetLayouts returns all the layouts. -func GetLayouts() (map[Key]*Layout, error) { +func GetLayouts() (map[Key]*libc.Layout, error) { return structLayouts, nil } diff --git a/pkg/libc/glibc/glibc_test.go b/pkg/libc/glibc/glibc_test.go index 6a8ea1b..60699a3 100644 --- a/pkg/libc/glibc/glibc_test.go +++ b/pkg/libc/glibc/glibc_test.go @@ -5,34 +5,45 @@ import ( "github.com/Masterminds/semver/v3" "github.com/google/go-cmp/cmp" + "github.com/parca-dev/runtime-data/pkg/libc" ) func Test_getLayoutForArch(t *testing.T) { - tests := []struct { name string v *semver.Version arch string - want *Layout + want *libc.Layout wantErr bool }{ { name: "2.29.0", v: semver.MustParse("2.29.0"), arch: "amd64", - want: &Layout{ - PThreadSpecific1stblock: 784, + want: &libc.Layout{ + PThreadSpecific1stblock: 0x310, PThreadSize: 2304, PThreadKeyData: 0x08, PThreadKeyDataSize: 0x10, }, }, + { + name: "2.39.0", + v: semver.MustParse("2.39.0"), + arch: "amd64", + want: &libc.Layout{ + PThreadSpecific1stblock: 0x310, + PThreadSize: 2368, + PThreadKeyData: 0x08, + PThreadKeyDataSize: 0x10, + }, + }, { name: "2.29.0", v: semver.MustParse("2.29.0"), arch: "arm64", - want: &Layout{ - PThreadSpecific1stblock: 272, + want: &libc.Layout{ + PThreadSpecific1stblock: 0x110, PThreadSize: 1792, PThreadKeyData: 0x08, PThreadKeyDataSize: 0x10, @@ -42,8 +53,8 @@ func Test_getLayoutForArch(t *testing.T) { name: "2.37.0", v: semver.MustParse("2.37.0"), arch: "amd64", - want: &Layout{ - PThreadSpecific1stblock: 784, + want: &libc.Layout{ + PThreadSpecific1stblock: 0x310, PThreadSize: 2368, PThreadKeyData: 0x08, PThreadKeyDataSize: 0x10, @@ -53,8 +64,8 @@ func Test_getLayoutForArch(t *testing.T) { name: "2.37.0", v: semver.MustParse("2.37.0"), arch: "arm64", - want: &Layout{ - PThreadSpecific1stblock: 272, + want: &libc.Layout{ + PThreadSpecific1stblock: 0x110, PThreadSize: 1856, PThreadKeyData: 0x08, PThreadKeyDataSize: 0x10, @@ -68,7 +79,7 @@ func Test_getLayoutForArch(t *testing.T) { t.Errorf("getLayoutForArch(%s) on %s error = %v, wantErr %v", tt.name, tt.arch, err, tt.wantErr) return } - if diff := cmp.Diff(tt.want, got, cmp.AllowUnexported(Layout{})); diff != "" { + if diff := cmp.Diff(tt.want, got, cmp.AllowUnexported(libc.Layout{})); diff != "" { t.Errorf("getLayoutForArch(%s) on %s mismatch (-want +got):\n%s", tt.name, tt.arch, diff) } }) diff --git a/pkg/libc/glibc/layout.go b/pkg/libc/layout.go similarity index 97% rename from pkg/libc/glibc/layout.go rename to pkg/libc/layout.go index 32bdbb9..71ffa16 100644 --- a/pkg/libc/glibc/layout.go +++ b/pkg/libc/layout.go @@ -1,4 +1,4 @@ -package glibc +package libc import ( "bytes" @@ -9,8 +9,8 @@ import ( ) type Layout struct { - PThreadSpecific1stblock int64 `yaml:"pthread_specific_1stblock"` PThreadSize int64 `yaml:"pthread_size"` + PThreadSpecific1stblock int64 `yaml:"pthread_specific_1stblock"` PThreadKeyData int64 `yaml:"pthread_key_data"` PThreadKeyDataSize int64 `yaml:"pthread_key_data_size"` } diff --git a/pkg/libc/musl/datamap.go b/pkg/libc/musl/datamap.go index d96e77d..1e1eff5 100644 --- a/pkg/libc/musl/datamap.go +++ b/pkg/libc/musl/datamap.go @@ -1,6 +1,9 @@ package musl -import "github.com/parca-dev/runtime-data/pkg/runtimedata" +import ( + "github.com/parca-dev/runtime-data/pkg/libc" + "github.com/parca-dev/runtime-data/pkg/runtimedata" +) type musl struct { PThreadSize int64 `sizeof:"__pthread" yaml:"pthread_size"` @@ -8,9 +11,12 @@ type musl struct { } func (m *musl) Layout() runtimedata.RuntimeData { - return &Layout{ - PthreadSize: m.PThreadSize, - PthreadTSD: m.PThreadTSD, + return &libc.Layout{ + PThreadSize: m.PThreadSize, + PThreadSpecific1stblock: m.PThreadTSD, + // TODO(kakkoyun): Extract. + PThreadKeyData: 8, + PThreadKeyDataSize: 16, } } diff --git a/pkg/libc/musl/layout.go b/pkg/libc/musl/layout.go deleted file mode 100644 index 2244130..0000000 --- a/pkg/libc/musl/layout.go +++ /dev/null @@ -1,25 +0,0 @@ -package musl - -import ( - "bytes" - "encoding/binary" - "unsafe" - - "github.com/parca-dev/runtime-data/pkg/byteorder" -) - -type Layout struct { - PthreadSize int64 `yaml:"pthread_size"` - PthreadTSD int64 `yaml:"pthread_tsd"` -} - -func (m Layout) Data() ([]byte, error) { - buf := new(bytes.Buffer) - buf.Grow(int(unsafe.Sizeof(&m))) - - if err := binary.Write(buf, byteorder.GetHostByteOrder(), &m); err != nil { - return nil, err - } - - return buf.Bytes(), nil -} diff --git a/pkg/libc/musl/musl.go b/pkg/libc/musl/musl.go index 8bc787f..afebd94 100644 --- a/pkg/libc/musl/musl.go +++ b/pkg/libc/musl/musl.go @@ -10,6 +10,8 @@ import ( "github.com/Masterminds/semver/v3" "gopkg.in/yaml.v3" + + "github.com/parca-dev/runtime-data/pkg/libc" ) const layoutDir = "layout" @@ -22,7 +24,7 @@ type Key struct { var ( //go:embed layout/*/*.yaml generatedLayouts embed.FS - structLayouts = map[Key]*Layout{} + structLayouts = map[Key]*libc.Layout{} once = &sync.Once{} ) @@ -34,7 +36,7 @@ func init() { } } -func loadLayouts() (map[Key]*Layout, error) { +func loadLayouts() (map[Key]*libc.Layout, error) { var err error once.Do(func() { entries, err := generatedLayouts.ReadDir(filepath.Join(layoutDir, runtime.GOARCH)) @@ -56,7 +58,7 @@ func loadLayouts() (map[Key]*Layout, error) { if ext != ".yaml" && ext != ".yml" { continue } - var lyt Layout + var lyt libc.Layout if err = yaml.Unmarshal(data, &lyt); err != nil { return } @@ -73,7 +75,7 @@ func loadLayouts() (map[Key]*Layout, error) { return structLayouts, err } -func getLayoutForArch(v *semver.Version, arch string) (Key, *Layout, error) { +func getLayoutForArch(v *semver.Version, arch string) (Key, *libc.Layout, error) { entries, err := generatedLayouts.ReadDir(filepath.Join(layoutDir, arch)) if err != nil { return Key{}, nil, err @@ -92,7 +94,7 @@ func getLayoutForArch(v *semver.Version, arch string) (Key, *Layout, error) { if ext != ".yaml" && ext != ".yml" { continue } - var lyt Layout + var lyt libc.Layout if err = yaml.Unmarshal(data, &lyt); err != nil { return Key{}, nil, err } @@ -110,7 +112,7 @@ func getLayoutForArch(v *semver.Version, arch string) (Key, *Layout, error) { } // GetLayout returns the layout for the given version. -func GetLayout(v *semver.Version) (Key, *Layout, error) { +func GetLayout(v *semver.Version) (Key, *libc.Layout, error) { for k, l := range structLayouts { constr, err := semver.NewConstraint(k.Constraint) if err != nil { @@ -124,6 +126,6 @@ func GetLayout(v *semver.Version) (Key, *Layout, error) { } // GetLayouts returns all the layouts. -func GetLayouts() (map[Key]*Layout, error) { +func GetLayouts() (map[Key]*libc.Layout, error) { return structLayouts, nil } diff --git a/pkg/libc/musl/musl_test.go b/pkg/libc/musl/musl_test.go index c4fcced..455dde0 100644 --- a/pkg/libc/musl/musl_test.go +++ b/pkg/libc/musl/musl_test.go @@ -5,51 +5,51 @@ import ( "github.com/Masterminds/semver/v3" "github.com/google/go-cmp/cmp" + "github.com/parca-dev/runtime-data/pkg/libc" ) func Test_getLayoutForArch(t *testing.T) { - tests := []struct { name string v *semver.Version arch string - want *Layout + want *libc.Layout wantErr bool }{ { name: "1.2.2", v: semver.MustParse("1.2.2"), arch: "amd64", - want: &Layout{ - PthreadSize: 200, - PthreadTSD: 128, + want: &libc.Layout{ + PThreadSize: 200, + PThreadSpecific1stblock: 128, }, }, { name: "1.2.2", v: semver.MustParse("1.2.2"), arch: "arm64", - want: &Layout{ - PthreadSize: 200, - PthreadTSD: 112, + want: &libc.Layout{ + PThreadSize: 200, + PThreadSpecific1stblock: 112, }, }, { name: "1.1.19", v: semver.MustParse("1.1.19"), arch: "amd64", - want: &Layout{ - PthreadSize: 280, - PthreadTSD: 152, + want: &libc.Layout{ + PThreadSize: 280, + PThreadSpecific1stblock: 152, }, }, { name: "1.1.19", v: semver.MustParse("1.1.19"), arch: "arm64", - want: &Layout{ - PthreadSize: 280, - PthreadTSD: 152, + want: &libc.Layout{ + PThreadSize: 280, + PThreadSpecific1stblock: 152, }, }, } @@ -60,7 +60,7 @@ func Test_getLayoutForArch(t *testing.T) { t.Errorf("getLayoutForArch(%s) on %s error = %v, wantErr %v", tt.name, tt.arch, err, tt.wantErr) return } - if diff := cmp.Diff(tt.want, got, cmp.AllowUnexported(Layout{})); diff != "" { + if diff := cmp.Diff(tt.want, got, cmp.AllowUnexported(libc.Layout{})); diff != "" { t.Errorf("getLayoutForArch(%s) on %s mismatch (-want +got):\n%s", tt.name, tt.arch, diff) } }) diff --git a/pkg/python/python_test.go b/pkg/python/python_test.go index bbcd31d..f75e944 100644 --- a/pkg/python/python_test.go +++ b/pkg/python/python_test.go @@ -46,12 +46,14 @@ func TestGetLayout(t *testing.T) { CoFilename: 80, CoName: 88, CoVarnames: 56, - CoFirstlineno: 96}, + CoFirstlineno: 96, + }, PyFrameObject: PyFrameObject{ FBack: 24, FCode: 32, FLineno: 124, - FLocalsplus: 376}, + FLocalsplus: 376, + }, PyInterpreterState: PyInterpreterState{TStateHead: 8}, PyObject: PyObject{ObType: 8}, PyRuntimeState: PyRuntimeState{InterpMain: -1}, diff --git a/pkg/ruby/datamap.go b/pkg/ruby/datamap.go index 62f0b3a..3420c39 100644 --- a/pkg/ruby/datamap.go +++ b/pkg/ruby/datamap.go @@ -74,7 +74,7 @@ func (r ruby30) Layout() runtimedata.RuntimeData { LineInfoSizeOffset: r.LineInfoTableOffset + r.LineInfoIseqInfoSizeOffset, // TODO(kakkoyun): This is a temporary fix, we need to find a better way to get the main thread. // - https://github.com/javierhonduco/rbperf/issues/78 - MainThreadOffset: r.MainThreadOffset - 8, // ruby_current_vm_ptr->ractor->main_thread - EcOffset: r.EcOffset, // ruby_current_vm_ptr->ractor->main_thread->ractor(->threads)->running_ec + MainThreadOffset: r.MainThreadOffset - 8, // ruby_current_vm_ptr->ractor->main_thread + EcOffset: r.EcOffset, // ruby_current_vm_ptr->ractor->main_thread->ractor(->threads)->running_ec } } From 1ab42995ed9cc427aeb0da27fff647f4e37a0868 Mon Sep 17 00:00:00 2001 From: Kemal Akkoyun Date: Sun, 25 Feb 2024 16:40:19 +0100 Subject: [PATCH 2/2] Musl generate Signed-off-by: Kemal Akkoyun --- pkg/libc/musl/layout/amd64/1.1.11 - 1.1.15.yaml | 4 +++- pkg/libc/musl/layout/amd64/1.1.16 - 1.1.19.yaml | 4 +++- pkg/libc/musl/layout/amd64/1.1.22 - 1.1.24.yaml | 4 +++- pkg/libc/musl/layout/amd64/1.2.2 - 1.2.4.yaml | 4 +++- pkg/libc/musl/layout/amd64/= 1.1.20.yaml | 4 +++- pkg/libc/musl/layout/amd64/= 1.1.4.yaml | 4 +++- pkg/libc/musl/layout/amd64/= 1.1.5.yaml | 4 +++- pkg/libc/musl/layout/arm64/1.1.16 - 1.1.19.yaml | 4 +++- pkg/libc/musl/layout/arm64/1.1.22 - 1.1.24.yaml | 4 +++- pkg/libc/musl/layout/arm64/1.2.2 - 1.2.4.yaml | 4 +++- pkg/libc/musl/layout/arm64/= 1.1.15.yaml | 4 +++- pkg/libc/musl/layout/arm64/= 1.1.20.yaml | 4 +++- pkg/libc/musl/musl_test.go | 8 ++++++++ 13 files changed, 44 insertions(+), 12 deletions(-) diff --git a/pkg/libc/musl/layout/amd64/1.1.11 - 1.1.15.yaml b/pkg/libc/musl/layout/amd64/1.1.11 - 1.1.15.yaml index 6d6d41e..d524428 100644 --- a/pkg/libc/musl/layout/amd64/1.1.11 - 1.1.15.yaml +++ b/pkg/libc/musl/layout/amd64/1.1.11 - 1.1.15.yaml @@ -1,2 +1,4 @@ +pthread_key_data: 8 +pthread_key_data_size: 16 pthread_size: 336 -pthread_tsd: 152 +pthread_specific_1stblock: 152 diff --git a/pkg/libc/musl/layout/amd64/1.1.16 - 1.1.19.yaml b/pkg/libc/musl/layout/amd64/1.1.16 - 1.1.19.yaml index d867693..f9da311 100644 --- a/pkg/libc/musl/layout/amd64/1.1.16 - 1.1.19.yaml +++ b/pkg/libc/musl/layout/amd64/1.1.16 - 1.1.19.yaml @@ -1,2 +1,4 @@ +pthread_key_data: 8 +pthread_key_data_size: 16 pthread_size: 280 -pthread_tsd: 152 +pthread_specific_1stblock: 152 diff --git a/pkg/libc/musl/layout/amd64/1.1.22 - 1.1.24.yaml b/pkg/libc/musl/layout/amd64/1.1.22 - 1.1.24.yaml index 50b1d07..e984445 100644 --- a/pkg/libc/musl/layout/amd64/1.1.22 - 1.1.24.yaml +++ b/pkg/libc/musl/layout/amd64/1.1.22 - 1.1.24.yaml @@ -1,2 +1,4 @@ +pthread_key_data: 8 +pthread_key_data_size: 16 pthread_size: 224 -pthread_tsd: 136 +pthread_specific_1stblock: 136 diff --git a/pkg/libc/musl/layout/amd64/1.2.2 - 1.2.4.yaml b/pkg/libc/musl/layout/amd64/1.2.2 - 1.2.4.yaml index 96ed5ea..d0ba477 100644 --- a/pkg/libc/musl/layout/amd64/1.2.2 - 1.2.4.yaml +++ b/pkg/libc/musl/layout/amd64/1.2.2 - 1.2.4.yaml @@ -1,2 +1,4 @@ +pthread_key_data: 8 +pthread_key_data_size: 16 pthread_size: 200 -pthread_tsd: 128 +pthread_specific_1stblock: 128 diff --git a/pkg/libc/musl/layout/amd64/= 1.1.20.yaml b/pkg/libc/musl/layout/amd64/= 1.1.20.yaml index 9d9a553..885caa9 100644 --- a/pkg/libc/musl/layout/amd64/= 1.1.20.yaml +++ b/pkg/libc/musl/layout/amd64/= 1.1.20.yaml @@ -1,2 +1,4 @@ +pthread_key_data: 8 +pthread_key_data_size: 16 pthread_size: 240 -pthread_tsd: 152 +pthread_specific_1stblock: 152 diff --git a/pkg/libc/musl/layout/amd64/= 1.1.4.yaml b/pkg/libc/musl/layout/amd64/= 1.1.4.yaml index 82519d5..4eddef7 100644 --- a/pkg/libc/musl/layout/amd64/= 1.1.4.yaml +++ b/pkg/libc/musl/layout/amd64/= 1.1.4.yaml @@ -1,2 +1,4 @@ +pthread_key_data: 8 +pthread_key_data_size: 16 pthread_size: 288 -pthread_tsd: 144 +pthread_specific_1stblock: 144 diff --git a/pkg/libc/musl/layout/amd64/= 1.1.5.yaml b/pkg/libc/musl/layout/amd64/= 1.1.5.yaml index b6409f2..3602bf3 100644 --- a/pkg/libc/musl/layout/amd64/= 1.1.5.yaml +++ b/pkg/libc/musl/layout/amd64/= 1.1.5.yaml @@ -1,2 +1,4 @@ +pthread_key_data: 8 +pthread_key_data_size: 16 pthread_size: 296 -pthread_tsd: 144 +pthread_specific_1stblock: 144 diff --git a/pkg/libc/musl/layout/arm64/1.1.16 - 1.1.19.yaml b/pkg/libc/musl/layout/arm64/1.1.16 - 1.1.19.yaml index d867693..f9da311 100644 --- a/pkg/libc/musl/layout/arm64/1.1.16 - 1.1.19.yaml +++ b/pkg/libc/musl/layout/arm64/1.1.16 - 1.1.19.yaml @@ -1,2 +1,4 @@ +pthread_key_data: 8 +pthread_key_data_size: 16 pthread_size: 280 -pthread_tsd: 152 +pthread_specific_1stblock: 152 diff --git a/pkg/libc/musl/layout/arm64/1.1.22 - 1.1.24.yaml b/pkg/libc/musl/layout/arm64/1.1.22 - 1.1.24.yaml index 50b1d07..e984445 100644 --- a/pkg/libc/musl/layout/arm64/1.1.22 - 1.1.24.yaml +++ b/pkg/libc/musl/layout/arm64/1.1.22 - 1.1.24.yaml @@ -1,2 +1,4 @@ +pthread_key_data: 8 +pthread_key_data_size: 16 pthread_size: 224 -pthread_tsd: 136 +pthread_specific_1stblock: 136 diff --git a/pkg/libc/musl/layout/arm64/1.2.2 - 1.2.4.yaml b/pkg/libc/musl/layout/arm64/1.2.2 - 1.2.4.yaml index bb23f1e..20d00ff 100644 --- a/pkg/libc/musl/layout/arm64/1.2.2 - 1.2.4.yaml +++ b/pkg/libc/musl/layout/arm64/1.2.2 - 1.2.4.yaml @@ -1,2 +1,4 @@ +pthread_key_data: 8 +pthread_key_data_size: 16 pthread_size: 200 -pthread_tsd: 112 +pthread_specific_1stblock: 112 diff --git a/pkg/libc/musl/layout/arm64/= 1.1.15.yaml b/pkg/libc/musl/layout/arm64/= 1.1.15.yaml index 6d6d41e..d524428 100644 --- a/pkg/libc/musl/layout/arm64/= 1.1.15.yaml +++ b/pkg/libc/musl/layout/arm64/= 1.1.15.yaml @@ -1,2 +1,4 @@ +pthread_key_data: 8 +pthread_key_data_size: 16 pthread_size: 336 -pthread_tsd: 152 +pthread_specific_1stblock: 152 diff --git a/pkg/libc/musl/layout/arm64/= 1.1.20.yaml b/pkg/libc/musl/layout/arm64/= 1.1.20.yaml index 9d9a553..885caa9 100644 --- a/pkg/libc/musl/layout/arm64/= 1.1.20.yaml +++ b/pkg/libc/musl/layout/arm64/= 1.1.20.yaml @@ -1,2 +1,4 @@ +pthread_key_data: 8 +pthread_key_data_size: 16 pthread_size: 240 -pthread_tsd: 152 +pthread_specific_1stblock: 152 diff --git a/pkg/libc/musl/musl_test.go b/pkg/libc/musl/musl_test.go index 455dde0..e790f97 100644 --- a/pkg/libc/musl/musl_test.go +++ b/pkg/libc/musl/musl_test.go @@ -23,6 +23,8 @@ func Test_getLayoutForArch(t *testing.T) { want: &libc.Layout{ PThreadSize: 200, PThreadSpecific1stblock: 128, + PThreadKeyData: 8, + PThreadKeyDataSize: 16, }, }, { @@ -32,6 +34,8 @@ func Test_getLayoutForArch(t *testing.T) { want: &libc.Layout{ PThreadSize: 200, PThreadSpecific1stblock: 112, + PThreadKeyData: 8, + PThreadKeyDataSize: 16, }, }, { @@ -41,6 +45,8 @@ func Test_getLayoutForArch(t *testing.T) { want: &libc.Layout{ PThreadSize: 280, PThreadSpecific1stblock: 152, + PThreadKeyData: 8, + PThreadKeyDataSize: 16, }, }, { @@ -50,6 +56,8 @@ func Test_getLayoutForArch(t *testing.T) { want: &libc.Layout{ PThreadSize: 280, PThreadSpecific1stblock: 152, + PThreadKeyData: 8, + PThreadKeyDataSize: 16, }, }, }