The only architecture that actually needs special support for scanning the stack is WebAssembly. All others allow raw access to the stack with a small bit of assembly. Therefore, don't manually keep track of all these objects on the stack manually and instead just use conservative stack scanning. This results in a massive code size decrease in the affected targets (only tested linux/amd64 for code size) - sometimes around 33%. It also allows for future improvements such as using proper stackful goroutines.
		
			
				
	
	
		
			33 строки
		
	
	
	
		
			767 Б
		
	
	
	
		
			JSON
		
	
	
	
	
	
			
		
		
	
	
			33 строки
		
	
	
	
		
			767 Б
		
	
	
	
		
			JSON
		
	
	
	
	
	
{
 | 
						|
  "llvm-target": "aarch64",
 | 
						|
  "build-tags": ["nintendoswitch", "arm64"],
 | 
						|
  "goos": "linux",
 | 
						|
  "goarch": "arm64",
 | 
						|
  "compiler": "clang",
 | 
						|
  "linker": "ld.lld",
 | 
						|
  "rtlib": "compiler-rt",
 | 
						|
  "libc": "picolibc",
 | 
						|
  "gc": "conservative",
 | 
						|
  "relocation-model": "pic",
 | 
						|
  "cflags": [
 | 
						|
    "-target", "aarch64-none-linux-gnu",
 | 
						|
    "-mtune=cortex-a57",
 | 
						|
    "-fPIE",
 | 
						|
    "-Werror",
 | 
						|
    "-Qunused-arguments",
 | 
						|
    "-fshort-enums",
 | 
						|
    "-fomit-frame-pointer",
 | 
						|
    "-fno-exceptions", "-fno-unwind-tables",
 | 
						|
    "-ffunction-sections", "-fdata-sections"
 | 
						|
  ],
 | 
						|
  "ldflags": [
 | 
						|
    "-pie",
 | 
						|
    "-z", "notext"
 | 
						|
  ],
 | 
						|
  "linkerscript": "targets/nintendoswitch.ld",
 | 
						|
  "extra-files": [
 | 
						|
    "targets/nintendoswitch.s",
 | 
						|
    "src/runtime/gc_arm64.S",
 | 
						|
    "src/runtime/runtime_nintendoswitch.s"
 | 
						|
  ]
 | 
						|
}
 |