@@ -417,30 +417,32 @@ func (b2g *bpf2go) convert(tgt gen.Target, goarches gen.GoArches) (err error) {
417
417
var allDeps []dependency
418
418
var tmpObjFileNames []string
419
419
for _ , source := range b2g .sourceFiles {
420
- deps , err := b2g .compileOne (tgt , cwd , source , objFileName )
421
- if err != nil {
422
- return err
423
- }
424
-
425
- if len (deps ) > 0 {
426
- // There is always at least a dependency for the main file.
427
- deps [0 ].file = goFileName
428
- allDeps = append (allDeps , deps ... )
429
- }
430
-
431
- // For multiple source files, we need to move the compiled object to a temporary file
420
+ // Determine the target object file name
421
+ var targetObjFileName string
432
422
if len (b2g .sourceFiles ) > 1 {
423
+ // For multiple source files, use a temporary file
433
424
tmpObj , err := os .CreateTemp ("" , filepath .Base (source ))
434
425
if err != nil {
435
426
return fmt .Errorf ("create temporary object file: %w" , err )
436
427
}
437
428
tmpObj .Close ()
438
429
defer os .Remove (tmpObj .Name ())
430
+ targetObjFileName = tmpObj .Name ()
431
+ tmpObjFileNames = append (tmpObjFileNames , targetObjFileName )
432
+ } else {
433
+ // For single source file, use the final object file name
434
+ targetObjFileName = objFileName
435
+ }
439
436
440
- if err := os .Rename (objFileName , tmpObj .Name ()); err != nil {
441
- return fmt .Errorf ("move object file: %w" , err )
442
- }
443
- tmpObjFileNames = append (tmpObjFileNames , tmpObj .Name ())
437
+ deps , err := b2g .compileOne (tgt , cwd , source , targetObjFileName )
438
+ if err != nil {
439
+ return err
440
+ }
441
+
442
+ if len (deps ) > 0 {
443
+ // There is always at least a dependency for the main file.
444
+ deps [0 ].file = goFileName
445
+ allDeps = append (allDeps , deps ... )
444
446
}
445
447
}
446
448
0 commit comments