| ... | ... | @@ -304,154 +304,156 @@ pub const Target = union(enum) { |
| 304 | 304 | builtin.Os.freebsd => { |
| 305 | 305 | return "/libexec/ld-elf.so.1"; |
| 306 | 306 | }, |
| 307 | | else => {}, |
| 308 | | } |
| 309 | | switch (env) { |
| 310 | | builtin.Environ.android => { |
| 311 | | if (self.is64bit()) { |
| 312 | | return "/system/bin/linker64"; |
| 313 | | } else { |
| 314 | | return "/system/bin/linker"; |
| 307 | builtin.Os.linux => { |
| 308 | switch (env) { |
| 309 | builtin.Environ.android => { |
| 310 | if (self.is64bit()) { |
| 311 | return "/system/bin/linker64"; |
| 312 | } else { |
| 313 | return "/system/bin/linker"; |
| 314 | } |
| 315 | }, |
| 316 | builtin.Environ.gnux32 => { |
| 317 | if (arch == builtin.Arch.x86_64) { |
| 318 | return "/libx32/ld-linux-x32.so.2"; |
| 319 | } |
| 320 | }, |
| 321 | builtin.Environ.musl, |
| 322 | builtin.Environ.musleabi, |
| 323 | builtin.Environ.musleabihf, |
| 324 | => { |
| 325 | if (arch == builtin.Arch.x86_64) { |
| 326 | return "/lib/ld-musl-x86_64.so.1"; |
| 327 | } |
| 328 | }, |
| 329 | else => {}, |
| 315 | 330 | } |
| 316 | | }, |
| 317 | | builtin.Environ.gnux32 => { |
| 318 | | if (arch == builtin.Arch.x86_64) { |
| 319 | | return "/libx32/ld-linux-x32.so.2"; |
| 331 | switch (arch) { |
| 332 | builtin.Arch.i386, |
| 333 | builtin.Arch.sparc, |
| 334 | builtin.Arch.sparcel, |
| 335 | => return "/lib/ld-linux.so.2", |
| 336 | |
| 337 | builtin.Arch.aarch64v8_3a, |
| 338 | builtin.Arch.aarch64v8_2a, |
| 339 | builtin.Arch.aarch64v8_1a, |
| 340 | builtin.Arch.aarch64v8, |
| 341 | builtin.Arch.aarch64v8r, |
| 342 | builtin.Arch.aarch64v8m_baseline, |
| 343 | builtin.Arch.aarch64v8m_mainline, |
| 344 | => return "/lib/ld-linux-aarch64.so.1", |
| 345 | |
| 346 | builtin.Arch.aarch64_bev8_3a, |
| 347 | builtin.Arch.aarch64_bev8_2a, |
| 348 | builtin.Arch.aarch64_bev8_1a, |
| 349 | builtin.Arch.aarch64_bev8, |
| 350 | builtin.Arch.aarch64_bev8r, |
| 351 | builtin.Arch.aarch64_bev8m_baseline, |
| 352 | builtin.Arch.aarch64_bev8m_mainline, |
| 353 | => return "/lib/ld-linux-aarch64_be.so.1", |
| 354 | |
| 355 | builtin.Arch.armv8_3a, |
| 356 | builtin.Arch.armv8_2a, |
| 357 | builtin.Arch.armv8_1a, |
| 358 | builtin.Arch.armv8, |
| 359 | builtin.Arch.armv8r, |
| 360 | builtin.Arch.armv8m_baseline, |
| 361 | builtin.Arch.armv8m_mainline, |
| 362 | builtin.Arch.armv7, |
| 363 | builtin.Arch.armv7em, |
| 364 | builtin.Arch.armv7m, |
| 365 | builtin.Arch.armv7s, |
| 366 | builtin.Arch.armv7k, |
| 367 | builtin.Arch.armv7ve, |
| 368 | builtin.Arch.armv6, |
| 369 | builtin.Arch.armv6m, |
| 370 | builtin.Arch.armv6k, |
| 371 | builtin.Arch.armv6t2, |
| 372 | builtin.Arch.armv5, |
| 373 | builtin.Arch.armv5te, |
| 374 | builtin.Arch.armv4t, |
| 375 | builtin.Arch.thumb, |
| 376 | => return switch (self.getFloatAbi()) { |
| 377 | FloatAbi.Hard => return "/lib/ld-linux-armhf.so.3", |
| 378 | else => return "/lib/ld-linux.so.3", |
| 379 | }, |
| 380 | |
| 381 | builtin.Arch.armebv8_3a, |
| 382 | builtin.Arch.armebv8_2a, |
| 383 | builtin.Arch.armebv8_1a, |
| 384 | builtin.Arch.armebv8, |
| 385 | builtin.Arch.armebv8r, |
| 386 | builtin.Arch.armebv8m_baseline, |
| 387 | builtin.Arch.armebv8m_mainline, |
| 388 | builtin.Arch.armebv7, |
| 389 | builtin.Arch.armebv7em, |
| 390 | builtin.Arch.armebv7m, |
| 391 | builtin.Arch.armebv7s, |
| 392 | builtin.Arch.armebv7k, |
| 393 | builtin.Arch.armebv7ve, |
| 394 | builtin.Arch.armebv6, |
| 395 | builtin.Arch.armebv6m, |
| 396 | builtin.Arch.armebv6k, |
| 397 | builtin.Arch.armebv6t2, |
| 398 | builtin.Arch.armebv5, |
| 399 | builtin.Arch.armebv5te, |
| 400 | builtin.Arch.armebv4t, |
| 401 | builtin.Arch.thumbeb, |
| 402 | => return switch (self.getFloatAbi()) { |
| 403 | FloatAbi.Hard => return "/lib/ld-linux-armhf.so.3", |
| 404 | else => return "/lib/ld-linux.so.3", |
| 405 | }, |
| 406 | |
| 407 | builtin.Arch.mips, |
| 408 | builtin.Arch.mipsel, |
| 409 | builtin.Arch.mips64, |
| 410 | builtin.Arch.mips64el, |
| 411 | => return null, |
| 412 | |
| 413 | builtin.Arch.powerpc => return "/lib/ld.so.1", |
| 414 | builtin.Arch.powerpc64 => return "/lib64/ld64.so.2", |
| 415 | builtin.Arch.powerpc64le => return "/lib64/ld64.so.2", |
| 416 | builtin.Arch.s390x => return "/lib64/ld64.so.1", |
| 417 | builtin.Arch.sparcv9 => return "/lib64/ld-linux.so.2", |
| 418 | builtin.Arch.x86_64 => return "/lib64/ld-linux-x86-64.so.2", |
| 419 | |
| 420 | builtin.Arch.arc, |
| 421 | builtin.Arch.avr, |
| 422 | builtin.Arch.bpfel, |
| 423 | builtin.Arch.bpfeb, |
| 424 | builtin.Arch.hexagon, |
| 425 | builtin.Arch.msp430, |
| 426 | builtin.Arch.nios2, |
| 427 | builtin.Arch.r600, |
| 428 | builtin.Arch.amdgcn, |
| 429 | builtin.Arch.riscv32, |
| 430 | builtin.Arch.riscv64, |
| 431 | builtin.Arch.tce, |
| 432 | builtin.Arch.tcele, |
| 433 | builtin.Arch.xcore, |
| 434 | builtin.Arch.nvptx, |
| 435 | builtin.Arch.nvptx64, |
| 436 | builtin.Arch.le32, |
| 437 | builtin.Arch.le64, |
| 438 | builtin.Arch.amdil, |
| 439 | builtin.Arch.amdil64, |
| 440 | builtin.Arch.hsail, |
| 441 | builtin.Arch.hsail64, |
| 442 | builtin.Arch.spir, |
| 443 | builtin.Arch.spir64, |
| 444 | builtin.Arch.kalimbav3, |
| 445 | builtin.Arch.kalimbav4, |
| 446 | builtin.Arch.kalimbav5, |
| 447 | builtin.Arch.shave, |
| 448 | builtin.Arch.lanai, |
| 449 | builtin.Arch.wasm32, |
| 450 | builtin.Arch.wasm64, |
| 451 | builtin.Arch.renderscript32, |
| 452 | builtin.Arch.renderscript64, |
| 453 | => return null, |
| 320 | 454 | } |
| 321 | 455 | }, |
| 322 | | builtin.Environ.musl, |
| 323 | | builtin.Environ.musleabi, |
| 324 | | builtin.Environ.musleabihf, |
| 325 | | => { |
| 326 | | if (arch == builtin.Arch.x86_64) { |
| 327 | | return "/lib/ld-musl-x86_64.so.1"; |
| 328 | | } |
| 329 | | }, |
| 330 | | else => {}, |
| 331 | | } |
| 332 | | switch (arch) { |
| 333 | | builtin.Arch.i386, |
| 334 | | builtin.Arch.sparc, |
| 335 | | builtin.Arch.sparcel, |
| 336 | | => return "/lib/ld-linux.so.2", |
| 337 | | |
| 338 | | builtin.Arch.aarch64v8_3a, |
| 339 | | builtin.Arch.aarch64v8_2a, |
| 340 | | builtin.Arch.aarch64v8_1a, |
| 341 | | builtin.Arch.aarch64v8, |
| 342 | | builtin.Arch.aarch64v8r, |
| 343 | | builtin.Arch.aarch64v8m_baseline, |
| 344 | | builtin.Arch.aarch64v8m_mainline, |
| 345 | | => return "/lib/ld-linux-aarch64.so.1", |
| 346 | | |
| 347 | | builtin.Arch.aarch64_bev8_3a, |
| 348 | | builtin.Arch.aarch64_bev8_2a, |
| 349 | | builtin.Arch.aarch64_bev8_1a, |
| 350 | | builtin.Arch.aarch64_bev8, |
| 351 | | builtin.Arch.aarch64_bev8r, |
| 352 | | builtin.Arch.aarch64_bev8m_baseline, |
| 353 | | builtin.Arch.aarch64_bev8m_mainline, |
| 354 | | => return "/lib/ld-linux-aarch64_be.so.1", |
| 355 | | |
| 356 | | builtin.Arch.armv8_3a, |
| 357 | | builtin.Arch.armv8_2a, |
| 358 | | builtin.Arch.armv8_1a, |
| 359 | | builtin.Arch.armv8, |
| 360 | | builtin.Arch.armv8r, |
| 361 | | builtin.Arch.armv8m_baseline, |
| 362 | | builtin.Arch.armv8m_mainline, |
| 363 | | builtin.Arch.armv7, |
| 364 | | builtin.Arch.armv7em, |
| 365 | | builtin.Arch.armv7m, |
| 366 | | builtin.Arch.armv7s, |
| 367 | | builtin.Arch.armv7k, |
| 368 | | builtin.Arch.armv7ve, |
| 369 | | builtin.Arch.armv6, |
| 370 | | builtin.Arch.armv6m, |
| 371 | | builtin.Arch.armv6k, |
| 372 | | builtin.Arch.armv6t2, |
| 373 | | builtin.Arch.armv5, |
| 374 | | builtin.Arch.armv5te, |
| 375 | | builtin.Arch.armv4t, |
| 376 | | builtin.Arch.thumb, |
| 377 | | => return switch (self.getFloatAbi()) { |
| 378 | | FloatAbi.Hard => return "/lib/ld-linux-armhf.so.3", |
| 379 | | else => return "/lib/ld-linux.so.3", |
| 380 | | }, |
| 381 | | |
| 382 | | builtin.Arch.armebv8_3a, |
| 383 | | builtin.Arch.armebv8_2a, |
| 384 | | builtin.Arch.armebv8_1a, |
| 385 | | builtin.Arch.armebv8, |
| 386 | | builtin.Arch.armebv8r, |
| 387 | | builtin.Arch.armebv8m_baseline, |
| 388 | | builtin.Arch.armebv8m_mainline, |
| 389 | | builtin.Arch.armebv7, |
| 390 | | builtin.Arch.armebv7em, |
| 391 | | builtin.Arch.armebv7m, |
| 392 | | builtin.Arch.armebv7s, |
| 393 | | builtin.Arch.armebv7k, |
| 394 | | builtin.Arch.armebv7ve, |
| 395 | | builtin.Arch.armebv6, |
| 396 | | builtin.Arch.armebv6m, |
| 397 | | builtin.Arch.armebv6k, |
| 398 | | builtin.Arch.armebv6t2, |
| 399 | | builtin.Arch.armebv5, |
| 400 | | builtin.Arch.armebv5te, |
| 401 | | builtin.Arch.armebv4t, |
| 402 | | builtin.Arch.thumbeb, |
| 403 | | => return switch (self.getFloatAbi()) { |
| 404 | | FloatAbi.Hard => return "/lib/ld-linux-armhf.so.3", |
| 405 | | else => return "/lib/ld-linux.so.3", |
| 406 | | }, |
| 407 | | |
| 408 | | builtin.Arch.mips, |
| 409 | | builtin.Arch.mipsel, |
| 410 | | builtin.Arch.mips64, |
| 411 | | builtin.Arch.mips64el, |
| 412 | | => return null, |
| 413 | | |
| 414 | | builtin.Arch.powerpc => return "/lib/ld.so.1", |
| 415 | | builtin.Arch.powerpc64 => return "/lib64/ld64.so.2", |
| 416 | | builtin.Arch.powerpc64le => return "/lib64/ld64.so.2", |
| 417 | | builtin.Arch.s390x => return "/lib64/ld64.so.1", |
| 418 | | builtin.Arch.sparcv9 => return "/lib64/ld-linux.so.2", |
| 419 | | builtin.Arch.x86_64 => return "/lib64/ld-linux-x86-64.so.2", |
| 420 | | |
| 421 | | builtin.Arch.arc, |
| 422 | | builtin.Arch.avr, |
| 423 | | builtin.Arch.bpfel, |
| 424 | | builtin.Arch.bpfeb, |
| 425 | | builtin.Arch.hexagon, |
| 426 | | builtin.Arch.msp430, |
| 427 | | builtin.Arch.nios2, |
| 428 | | builtin.Arch.r600, |
| 429 | | builtin.Arch.amdgcn, |
| 430 | | builtin.Arch.riscv32, |
| 431 | | builtin.Arch.riscv64, |
| 432 | | builtin.Arch.tce, |
| 433 | | builtin.Arch.tcele, |
| 434 | | builtin.Arch.xcore, |
| 435 | | builtin.Arch.nvptx, |
| 436 | | builtin.Arch.nvptx64, |
| 437 | | builtin.Arch.le32, |
| 438 | | builtin.Arch.le64, |
| 439 | | builtin.Arch.amdil, |
| 440 | | builtin.Arch.amdil64, |
| 441 | | builtin.Arch.hsail, |
| 442 | | builtin.Arch.hsail64, |
| 443 | | builtin.Arch.spir, |
| 444 | | builtin.Arch.spir64, |
| 445 | | builtin.Arch.kalimbav3, |
| 446 | | builtin.Arch.kalimbav4, |
| 447 | | builtin.Arch.kalimbav5, |
| 448 | | builtin.Arch.shave, |
| 449 | | builtin.Arch.lanai, |
| 450 | | builtin.Arch.wasm32, |
| 451 | | builtin.Arch.wasm64, |
| 452 | | builtin.Arch.renderscript32, |
| 453 | | builtin.Arch.renderscript64, |
| 454 | | => return null, |
| 456 | else => return null, |
| 455 | 457 | } |
| 456 | 458 | } |
| 457 | 459 | |