From 9f6c80a76ad56f653b743fe2df3f2296210c90d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pedro=20T=C3=B4rres?= Date: Fri, 20 Dec 2024 06:45:52 +0000 Subject: [PATCH] cmd/go/internal/work: allow single character values in -Wl, linker flags Allow single character values in -Wl, linker flags by modifying the regular expressions to use the star operator instead of the plus operator. Fixes #70924 Change-Id: Ie7940197cc8503440a87c6b29409a13377a20534 GitHub-Last-Rev: 42e8ac87d600239ceff434eb202e2747f2cceb3c GitHub-Pull-Request: golang/go#70937 Reviewed-on: https://go-review.googlesource.com/c/go/+/638035 Auto-Submit: Ian Lance Taylor Reviewed-by: David Chase LUCI-TryBot-Result: Go LUCI Reviewed-by: Ian Lance Taylor --- src/cmd/go/internal/work/security.go | 12 ++++++------ src/cmd/go/internal/work/security_test.go | 7 +++++++ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/cmd/go/internal/work/security.go b/src/cmd/go/internal/work/security.go index 1e2f81b2d4d23e..50bfd0ab705383 100644 --- a/src/cmd/go/internal/work/security.go +++ b/src/cmd/go/internal/work/security.go @@ -201,23 +201,23 @@ var validLinkerFlags = []*lazyregexp.Regexp{ re(`-Wl,--end-group`), re(`-Wl,--(no-)?export-dynamic`), re(`-Wl,-E`), - re(`-Wl,-framework,[^,@\-][^,]+`), + re(`-Wl,-framework,[^,@\-][^,]*`), re(`-Wl,--hash-style=(sysv|gnu|both)`), re(`-Wl,-headerpad_max_install_names`), re(`-Wl,--no-undefined`), re(`-Wl,--pop-state`), re(`-Wl,--push-state`), re(`-Wl,-R,?([^@\-,][^,@]*$)`), - re(`-Wl,--just-symbols[=,]([^,@\-][^,@]+)`), - re(`-Wl,-rpath(-link)?[=,]([^,@\-][^,]+)`), + re(`-Wl,--just-symbols[=,]([^,@\-][^,@]*)`), + re(`-Wl,-rpath(-link)?[=,]([^,@\-][^,]*)`), re(`-Wl,-s`), re(`-Wl,-search_paths_first`), - re(`-Wl,-sectcreate,([^,@\-][^,]+),([^,@\-][^,]+),([^,@\-][^,]+)`), + re(`-Wl,-sectcreate,([^,@\-][^,]*),([^,@\-][^,]*),([^,@\-][^,]*)`), re(`-Wl,--start-group`), re(`-Wl,-?-static`), re(`-Wl,-?-subsystem,(native|windows|console|posix|xbox)`), - re(`-Wl,-syslibroot[=,]([^,@\-][^,]+)`), - re(`-Wl,-undefined[=,]([^,@\-][^,]+)`), + re(`-Wl,-syslibroot[=,]([^,@\-][^,]*)`), + re(`-Wl,-undefined[=,]([^,@\-][^,]*)`), re(`-Wl,-?-unresolved-symbols=[^,]+`), re(`-Wl,--(no-)?warn-([^,]+)`), re(`-Wl,-?-wrap[=,][^,@\-][^,]*`), diff --git a/src/cmd/go/internal/work/security_test.go b/src/cmd/go/internal/work/security_test.go index 63dd569f7d3964..35af62176472b4 100644 --- a/src/cmd/go/internal/work/security_test.go +++ b/src/cmd/go/internal/work/security_test.go @@ -182,6 +182,13 @@ var goodLinkerFlags = [][]string{ {"-Wl,--pop-state"}, {"-Wl,--push-state,--as-needed"}, {"-Wl,--push-state,--no-as-needed,-Bstatic"}, + {"-Wl,--just-symbols,."}, + {"-Wl,-framework,."}, + {"-Wl,-rpath,."}, + {"-Wl,-rpath-link,."}, + {"-Wl,-sectcreate,.,.,."}, + {"-Wl,-syslibroot,."}, + {"-Wl,-undefined,."}, } var badLinkerFlags = [][]string{