Browse Source

Let go properly link binries in PIC mode
81668e85a416903e82cfa2a2223680f04a3343c7

spreis 7 months ago
parent
commit
bce53150cd
1 changed files with 7 additions and 2 deletions
  1. 7 2
      build/scripts/go_tool.py

+ 7 - 2
build/scripts/go_tool.py

@@ -497,9 +497,14 @@ def do_link_exe(args):
     if args.buildmode:
         cmd.append('-buildmode={}'.format(args.buildmode))
     elif args.mode in ('exe', 'test'):
-        cmd.append('-buildmode=exe')
+        mode = '-buildmode=exe'
         if 'ld.lld' in str(args):
-            extldflags.append('-Wl,-no-pie')
+            if '-fPIE' in str(args) or '-fPIC' in str(args):
+                # support explicit PIE
+                mode = '-buildmode=pie'
+            else:
+                extldflags.append('-Wl,-no-pie')
+        cmd.append(mode)
     elif args.mode == 'dll':
         cmd.append('-buildmode=c-shared')
     else: