Add new command line option "--no-omagic" which undoes the effects of -N.
authorNick Clifton <nickc@redhat.com>
Wed, 23 Oct 2002 13:24:10 +0000 (13:24 +0000)
committerNick Clifton <nickc@redhat.com>
Wed, 23 Oct 2002 13:24:10 +0000 (13:24 +0000)
ld/ChangeLog
ld/NEWS
ld/ld.texinfo
ld/lexsup.c

index 2a4080b..9bbbbf3 100644 (file)
@@ -1,3 +1,11 @@
+2002-10-23  Nick Clifton  <nickc@redhat.com>
+
+       * lexsup.c (OPTION_NO_OMAGIC): Define.
+       (ld_options): Add "no-omagic" option.
+       (parse_args): Parse --no-omagic.
+       * ld.texinfo: Document --no-omagic.
+       * NEWS: Mention new option.
+
 2002-10-21  Danny Smith  <dannysmith@users.sourceforeg.net>
 
        * scripttempl/pe.sc (__RUNTIME_PSEUDO_RELOC_LIST__,
diff --git a/ld/NEWS b/ld/NEWS
index e4edb83..790b263 100644 (file)
--- a/ld/NEWS
+++ b/ld/NEWS
@@ -1,5 +1,7 @@
 -*- text -*-
 
+* Added --no-omagic to undo the effects of the -N option.
+
 * Support for Texas Instruments TMS320C4x and TMS320C3x series of
   DSP's contributed by Michael Hayes and Svein E. Seldal.
   
index 789e894..edf628d 100644 (file)
@@ -660,8 +660,17 @@ Turn off page alignment of sections, and mark the output as
 @item -N
 @itemx --omagic
 Set the text and data sections to be readable and writable.  Also, do
-not page-align the data segment.  If the output format supports Unix
-style magic numbers, mark the output as @code{OMAGIC}.
+not page-align the data segment, and disable linking against shared
+libraries.  If the output format supports Unix style magic numbers,
+mark the output as @code{OMAGIC}.
+
+@kindex --no-omagic
+@cindex OMAGIC
+@item --no-omagic
+This option negates most of the effects of the @option{-N} option.  It
+sets the text section to be read-only, and forces the data segment to
+be page-aligned.  Note - this option does not enable linking against
+shared libraries.  Use @option{-Bdynamic} for this.
 
 @kindex -o @var{output}
 @kindex --output=@var{output}
index bfb0fea..15c7bac 100644 (file)
@@ -132,6 +132,7 @@ int parsing_defsym = 0;
 #define OPTION_SPARE_DYNAMIC_TAGS      (OPTION_DISCARD_NONE + 1)
 #define OPTION_NO_DEFINE_COMMON                (OPTION_SPARE_DYNAMIC_TAGS + 1)
 #define OPTION_NOSTDLIB                        (OPTION_NO_DEFINE_COMMON + 1)
+#define OPTION_NO_OMAGIC               (OPTION_NOSTDLIB + 1)
 
 /* The long options.  This structure is used for both the option
    parsing and the help text.  */
@@ -217,6 +218,8 @@ static const struct ld_option ld_options[] =
   { {"omagic", no_argument, NULL, 'N'},
       'N', NULL, N_("Do not page align data, do not make text readonly"),
       EXACTLY_TWO_DASHES },
+  { {"no-omagic", no_argument, NULL, OPTION_NO_OMAGIC},
+      '\0', NULL, N_("Page align data, make text readonly"), EXACTLY_TWO_DASHES },
   { {"output", required_argument, NULL, 'o'},
       'o', N_("FILE"), N_("Set output file name"), EXACTLY_TWO_DASHES },
   { {NULL, required_argument, NULL, '\0'},
@@ -745,6 +748,12 @@ parse_args (argc, argv)
          config.magic_demand_paged = false;
          config.dynamic_link = false;
          break;
+       case OPTION_NO_OMAGIC:
+         config.text_read_only = true;
+         config.magic_demand_paged = true;
+         /* NB/ Does not set dynamic_link to true.
+            Use --call-shared or -Bdynamic for this.  */
+         break;
        case 'n':
          config.magic_demand_paged = false;
          config.dynamic_link = false;