[PATCH] New darwin linker options

Devang Patel dpatel@apple.com
Wed Sep 1 00:37:00 GMT 2004


This patch adds new darwin linker option support in GCC driver.
Bootstrapped and tested on powerpc-darwin.

OK?

Thanks,
-
Devang


2004-08-31  Devang Patel  <dpatel@apple.com>

         * config/darwin.h  (TARGET_OPTION_TRANSLATE_TABLE): Add 
-segaddr,
         -segs_read_only_addr and -segs_read_write_addr.
         (WORD_SWITCH_TAKES_ARG): Same.
         (LINK_SPEC): Same.
         * doc/invoke.texi: Document -segaddr, -segs_read_only_addr and
         -segs_read_write_addr.

         testsuite:

         * gcc.dg/darwin-ld-20040828-1.c: New test.
         * gcc.dg/darwin-ld-20040828-2.c: New test.
         * gcc.dg/darwin-ld-20040828-3.c: New test.


Index: gcc/config/darwin.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/darwin.h,v
retrieving revision 1.94
diff -Idpatel.pbxuser -c -3 -p -r1.94 darwin.h
*** gcc/config/darwin.h 21 Aug 2004 17:02:52 -0000      1.94
--- gcc/config/darwin.h 1 Sep 2004 00:30:50 -0000
*************** Boston, MA 02111-1307, USA.  */
*** 116,121 ****
--- 116,124 ----
     { "-dynamic", "-Zdynamic" },  \
     { "-dynamiclib", "-Zdynamiclib" },  \
     { "-exported_symbols_list", "-Zexported_symbols_list" },  \
+   { "-segaddr", "-Zsegaddr" }, \
+   { "-segs_read_only_addr", "-Zsegs_read_only_addr" }, \
+   { "-segs_read_write_addr", "-Zsegs_read_write_addr" }, \
     { "-seg_addr_table_filename", "-Zseg_addr_table_filename" }, \
     { "-filelist", "-Xlinker -filelist -Xlinker" },  \
     { "-framework", "-Xlinker -framework -Xlinker" },  \
*************** extern const char *darwin_fix_and_contin
*** 174,183 ****
      !strcmp (STR, "read_only_relocs") ? 1 :      \
      !strcmp (STR, "sectcreate") ? 3 :            \
      !strcmp (STR, "sectorder") ? 3 :             \
      !strcmp (STR, "Zseg_addr_table_filename") ?1 :\
      !strcmp (STR, "seg1addr") ? 1 :              \
      !strcmp (STR, "segprot") ? 3 :               \
-    !strcmp (STR, "seg_addr_table") ? 1 :        \
      !strcmp (STR, "sub_library") ? 1 :           \
      !strcmp (STR, "sub_umbrella") ? 1 :          \
      !strcmp (STR, "umbrella") ? 1 :              \
--- 177,189 ----
      !strcmp (STR, "read_only_relocs") ? 1 :      \
      !strcmp (STR, "sectcreate") ? 3 :            \
      !strcmp (STR, "sectorder") ? 3 :             \
+    !strcmp (STR, "Zsegaddr") ? 2 :              \
+    !strcmp (STR, "Zsegs_read_only_addr") ? 1 :  \
+    !strcmp (STR, "Zsegs_read_write_addr") ? 1 : \
+    !strcmp (STR, "Zseg_addr_table") ? 1 :       \
      !strcmp (STR, "Zseg_addr_table_filename") ?1 :\
      !strcmp (STR, "seg1addr") ? 1 :              \
      !strcmp (STR, "segprot") ? 3 :               \
      !strcmp (STR, "sub_library") ? 1 :           \
      !strcmp (STR, "sub_umbrella") ? 1 :          \
      !strcmp (STR, "umbrella") ? 1 :              \
*************** extern const char *darwin_fix_and_contin
*** 276,281 ****
--- 282,290 ----
      %{prebind} %{noprebind} %{nofixprebinding} 
%{prebind_all_twolevel_modules} \
      %{read_only_relocs} \
      %{sectcreate*} %{sectorder*} %{seg1addr*} %{segprot*} 
%{seg_addr_table*} \
+    %{Zsegaddr*:-segaddr %*} \
+    %{Zsegs_read_only_addr*:-segs_read_only_addr %*} \
+    %{Zsegs_read_write_addr*:-segs_read_write_addr %*} \
      %{Zseg_addr_table_filename*:-seg_addr_table_filename %*} \
      %{sub_library*} %{sub_umbrella*} \
      %{twolevel_namespace} %{twolevel_namespace_hints} \
Index: gcc/doc/invoke.texi
===================================================================
RCS file: /cvs/gcc/gcc/gcc/doc/invoke.texi,v
retrieving revision 1.517
diff -Idpatel.pbxuser -c -3 -p -r1.517 invoke.texi
*** gcc/doc/invoke.texi 28 Aug 2004 02:33:51 -0000      1.517
--- gcc/doc/invoke.texi 1 Sep 2004 00:30:52 -0000
*************** Objective-C and Objective-C++ Dialects}.
*** 422,427 ****
--- 422,428 ----
   -private_bundle  -read_only_relocs  -sectalign @gol
   -sectobjectsymbols  -whyload  -seg1addr @gol
   -sectcreate  -sectobjectsymbols  -sectorder @gol
+ -segaddr -segs_read_only_addr -segs_read_write_addr @gol
   -seg_addr_table  -seg_addr_table_filename  -seglinkedit @gol
   -segprot  -segs_read_only_addr  -segs_read_write_addr @gol
   -single_module  -static  -sub_library  -sub_umbrella @gol
*************** output file being linked. See man ld(1)
*** 7120,7125 ****
--- 7121,7129 ----
   @itemx -sectcreate
   @itemx -sectobjectsymbols
   @itemx -sectorder
+ @itemx -segaddr
+ @itemx -segs_read_only_addr
+ @itemx -segs_read_write_addr
   @itemx -seg_addr_table
   @itemx -seg_addr_table_filename
   @itemx -seglinkedit
*************** output file being linked. See man ld(1)
*** 7179,7184 ****
--- 7183,7191 ----
   @opindex sectcreate
   @opindex sectobjectsymbols
   @opindex sectorder
+ @opindex -segaddr
+ @opindex -segs_read_only_addr
+ @opindex -segs_read_write_addr
   @opindex seg_addr_table
   @opindex seg_addr_table_filename
   @opindex seglinkedit
Index: gcc/testsuite/gcc.dg/darwin-ld-20040828-1.c
===================================================================
RCS file: gcc/testsuite/gcc.dg/darwin-ld-20040828-1.c
diff -N gcc/testsuite/gcc.dg/darwin-ld-20040828-1.c
*** /dev/null   1 Jan 1970 00:00:00 -0000
--- gcc/testsuite/gcc.dg/darwin-ld-20040828-1.c 1 Sep 2004 00:30:55 
-0000
***************
*** 0 ****
--- 1,13 ----
+ /* Test -segaddr.  */
+ /* Contributed by Devang Patel  <dpatel@apple.com>  */
+
+ /* { dg-do compile { target *-*-darwin* } } */
+ /* { dg-options "-segaddr __DATA 4000" } */
+
+
+ int
+ main ()
+ {
+   return 0;
+ }
+
Index: gcc/testsuite/gcc.dg/darwin-ld-20040828-2.c
===================================================================
RCS file: gcc/testsuite/gcc.dg/darwin-ld-20040828-2.c
diff -N gcc/testsuite/gcc.dg/darwin-ld-20040828-2.c
*** /dev/null   1 Jan 1970 00:00:00 -0000
--- gcc/testsuite/gcc.dg/darwin-ld-20040828-2.c 1 Sep 2004 00:30:55 
-0000
***************
*** 0 ****
--- 1,13 ----
+ /* Test -segaddr.  */
+ /* Contributed by Devang Patel  <dpatel@apple.com>  */
+
+ /* { dg-do compile { target *-*-darwin* } } */
+ /* { dg-options "-segs_read_only_addr 4000 -dynamiclib" } */
+
+
+ int
+ main ()
+ {
+   return 0;
+ }
+
Index: gcc/testsuite/gcc.dg/darwin-ld-20040828-3.c
===================================================================
RCS file: gcc/testsuite/gcc.dg/darwin-ld-20040828-3.c
diff -N gcc/testsuite/gcc.dg/darwin-ld-20040828-3.c
*** /dev/null   1 Jan 1970 00:00:00 -0000
--- gcc/testsuite/gcc.dg/darwin-ld-20040828-3.c 1 Sep 2004 00:30:55 
-0000
***************
*** 0 ****
--- 1,13 ----
+ /* Test -segaddr.  */
+ /* Contributed by Devang Patel  <dpatel@apple.com>  */
+
+ /* { dg-do compile { target *-*-darwin* } } */
+ /* { dg-options "-segs_read_only_addr 4000 -segs_read_write_addr 8000 
-dynamiclib" } */
+
+
+ int
+ main ()
+ {
+   return 0;
+ }
+



More information about the Gcc-patches mailing list