extractor, utils: dedupe bitcode paths before linking

This commit is contained in:
William Woodruff 2021-07-23 12:09:32 -04:00
parent d01ecad84b
commit 1ac1afd3dc
No known key found for this signature in database
GPG Key ID: 70F70A3979DDCED3
2 changed files with 17 additions and 0 deletions

View File

@ -286,6 +286,9 @@ func handleExecutable(ea ExtractionArgs) (success bool) {
sort.Strings(artifactPaths) sort.Strings(artifactPaths)
} }
// Deduplicate any files to link
dedupeStrings(&filesToLink)
// Write manifest // Write manifest
if ea.WriteManifest { if ea.WriteManifest {
if !writeManifest(ea, filesToLink, artifactPaths) { if !writeManifest(ea, filesToLink, artifactPaths) {

View File

@ -75,3 +75,17 @@ func runCmd(cmdExecName string, args []string) (output string, err error) {
output = outb.String() output = outb.String()
return return
} }
// Deduplicate a potentially unsorted list of strings in-place without changing their order
func dedupeStrings(strings *[]string) {
seen := make(map[string]bool)
count := 0
for _, s := range *strings {
if _, exists := seen[s]; !exists {
seen[s] = true
(*strings)[count] = s
count++
}
}
*strings = (*strings)[:count]
}