[PATCH] winegcc: On Mac OS, turn -s into -Wl,-x.
Charles Davis
cdavis at mymail.mines.edu
Wed Oct 5 18:07:38 CDT 2011
With the old "classic" ld, if the output file type is MH_BUNDLE, ld will
refuse to link if -s is specified. At least one user complained on
wine-users because of this. He has confirmed that this patch helps.
In the new ld (ld64), this option is obsolete anyway; it is simply
ignored. In fact, in Xcode 4.2, ld will now warn if it is given -s.
The error message the user reported suggested using -x instead. The -Wl
is obviously needed to get the flag past gcc.
---
tools/winegcc/winegcc.c | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/tools/winegcc/winegcc.c b/tools/winegcc/winegcc.c
index 3a7e93a..adb1873 100644
--- a/tools/winegcc/winegcc.c
+++ b/tools/winegcc/winegcc.c
@@ -199,6 +199,7 @@ struct options
int force_pointer_size;
int large_address_aware;
int unwind_tables;
+ int strip;
const char* wine_objdir;
const char* output_name;
const char* image_base;
@@ -1009,6 +1010,8 @@ static void build(struct options* opts)
strarray_add(link_args, "-image_base");
strarray_add(link_args, opts->image_base);
}
+ if (opts->strip)
+ strarray_add(link_args, "-Wl,-x");
break;
case PLATFORM_SOLARIS:
{
@@ -1417,6 +1420,15 @@ int main(int argc, char **argv)
opts.shared = 1;
raw_compiler_arg = raw_linker_arg = 0;
}
+ else if (strcmp("-s", argv[i]) == 0 && opts.target_platform == PLATFORM_APPLE)
+ {
+ /* On Mac, change -s into -Wl,-x. ld's -s switch
+ * is deprecated, and it doesn't work on Tiger with
+ * MH_BUNDLEs anyway
+ */
+ opts.strip = 1;
+ raw_linker_arg = 0;
+ }
break;
case 'v':
if (argv[i][2] == 0) verbose++;
--
1.7.7
More information about the wine-patches
mailing list