feat: optionally capture golang binary symbols (#4988)

---------
Signed-off-by: Christopher Phillips <32073428+spiffcs@users.noreply.github.com>
Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>
Co-authored-by: Alex Goodman <wagoodman@users.noreply.github.com>
This commit is contained in:
Christopher Angelo Phillips
2026-07-13 10:30:23 -04:00
committed by GitHub
co-authored by Alex Goodman
parent 3252b6f806
commit 1dcac54b0e
23 changed files with 5414 additions and 45 deletions
+27 -12
View File
@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "anchore.io/schema/syft/json/16.1.8/document",
"$id": "anchore.io/schema/syft/json/16.1.9/document",
"$ref": "#/$defs/Document",
"$defs": {
"AlpmDbEntry": {
@@ -1653,6 +1653,13 @@
},
"type": "array",
"description": "GoExperiments lists experimental Go features enabled during compilation (e.g., \"arenas\", \"cgocheck2\")."
},
"symbols": {
"items": {
"type": "string"
},
"type": "array",
"description": "Symbols are the fully qualified function symbols from this module that are compiled into the binary\n(e.g., \"github.com/foo/bar.(*Type).Method\"), extracted from the binary symbol table (pclntab).\nPopulated only when the golang cataloger's capture-symbols scope covers this package: the \"all\" scope\npopulates every module package plus the synthetic stdlib package, while the \"stdlib\" scope populates\nonly the stdlib package."
}
},
"type": "object",
@@ -4394,39 +4401,47 @@
"items": {
"type": "string"
},
"type": "array"
"type": "array",
"description": "Description is the human-readable description of the package (may be a single string or a list of paragraphs in the manifest)."
},
"documentation": {
"type": "string"
"type": "string",
"description": "Documentation is the URL to the package's documentation."
},
"full-version": {
"type": "string"
"type": "string",
"description": "FullVersion is the complete version string including the port-version suffix (e.g. \"1.2.3#2\")."
},
"version": {
"type": "string"
"type": "string",
"description": "Version is the upstream package version without the port-version suffix (e.g. \"1.2.3\")."
},
"port-version": {
"type": "integer"
"type": "integer",
"description": "PortVersion is the vcpkg-specific packaging revision for a given upstream version."
},
"maintainers": {
"items": {
"type": "string"
},
"type": "array"
"type": "array",
"description": "Maintainers are the people responsible for maintaining the vcpkg port."
},
"name": {
"type": "string"
"type": "string",
"description": "Name is the package name as declared in the manifest."
},
"supports": {
"type": "string"
"type": "string",
"description": "Supports is the platform expression describing which triplets the package can be built for (e.g. \"!windows\")."
},
"registry": {
"$ref": "#/$defs/VcpkgRegistryEntry",
"description": "to show where it came from"
"description": "Registry indicates where the package definition came from."
},
"triplet": {
"type": "string",
"description": "found by looking at build folder to find target. ex. \"x64-linux\""
"description": "Triplet is the build target discovered from the build folder (e.g. \"x64-linux\")."
}
},
"type": "object",
@@ -4436,7 +4451,7 @@
"port-version",
"name"
],
"description": "used for metadata."
"description": "VcpkgManifest summarizes the data found in a vcpkg manifest (vcpkg.json) relevant to a single vcpkg package."
},
"VcpkgRegistryEntry": {
"properties": {