-y support
authorSteve Chamberlain <sac@cygnus>
Mon, 7 Dec 1992 16:49:54 +0000 (16:49 +0000)
committerSteve Chamberlain <sac@cygnus>
Mon, 7 Dec 1992 16:49:54 +0000 (16:49 +0000)
* ld.texinfo: new doc.
* ldgram.y, ldlex.l: understand -y<symbol>
* ldmain.c (Q_enter_file_symbols): if had -y, lookup symbol and
print info. (add_ysym): new function.
* ldsym.h: (ldsym_type): new define SYM_Y.

ld/ChangeLog
ld/ldlex.l
ld/ldsym.h

index 402a6bf952622ce55685309d103d0158dc00edc6..5932cb6df67f6399a9b41fae9615618643884d9f 100644 (file)
@@ -1,3 +1,11 @@
+Mon Dec  7 08:43:41 1992  Steve Chamberlain  (sac@thepub.cygnus.com)
+        -y support
+       * ld.texinfo: new doc.
+       * ldgram.y, ldlex.l: understand -y<symbol>
+       * ldmain.c (Q_enter_file_symbols): if had -y, lookup symbol and
+       print info. (add_ysym): new function.
+       * ldsym.h: (ldsym_type): new define SYM_Y.
+
 Sat Nov 21 03:15:27 1992  John Gilmore  (gnu@cygnus.com)
 
        * ldctor.h, lderror.h, ldexp.h, ldfile.h, ldindr.h, ldlang.c,
index f98e8fd2e61b4b711e234e9b4af7a2cde0a80079..3a4158df98ae90b0afbfdaa434163d0ea7906869 100644 (file)
@@ -43,36 +43,7 @@ char *buystring();
 unsigned int lineno = 1;
 int old;
 
-comment()
-{
-  int c;
-  while (1)
-  {
-    c = input();
-    while (c !='*' && c != EOF) 
-    {
-      if (c == '\n') lineno++;
-      c = input();
-    }
-
-
-    if (c == '*')
-    {
-      c = input();
-      while ( c == '*')
-       c = input();
-      if ( c == '/' )
-       break;                  /* found the end */
-    }
-
-    if ( c == EOF )
-    {
-      einfo( "%F%P :EOF in comment");
-      break;
-    }
-  }
-}
-
+static comment();
 
 #undef YY_INPUT
 #define YY_INPUT(buf,result,max_size) yy_input(buf, &result, max_size)
@@ -105,6 +76,9 @@ FILENAMECHAR [_a-zA-Z0-9\/\.\-\_\+\=\$\:\[\]\\\,\~]
 FILENAME       {FILENAMECHAR}+
 WHITE          [ \t\n]+ 
 
+NOCFILENAMECHAR        [_a-zA-Z0-9\/\.\-\_\+\$\:\[\]\\\~]
+
+
 %s COMMAND
 %s SCRIPT
 %s EXPRESSION
@@ -197,13 +171,20 @@ WHITE             [ \t\n]+
                                 return OPTION_F;
                               }
 
+<COMMAND>"-y"{FILENAME}         {
+                                       yylval.name = buystring(yytext+2);
+                                       return OPTION_y;
+                               }
+                               
 <COMMAND>"-A"{FILENAME}        {
                                        yylval.name = buystring(yytext+2);
                                        return OPTION_Aarch;
                                }
 
+<COMMAND>"-retain-symbols-file"        { return OPTION_RETAIN_SYMBOLS_FILE; }
+
 <MRI,EXPRESSION>"$"([0-9A-Fa-f])+ {
-                               yylval.integer = strtoul(yytext+1, 0,16);       
+                               yylval.integer = strtoul(yytext+1, 0,16);
                                return INT;
                        }
 
@@ -325,9 +306,13 @@ WHITE              [ \t\n]+
 <MRI>"\n"                      { ++ lineno;  RTOKEN(NEWLINE); }
 <MRI>"*".*                     { /* Mri comment line */ }
 <MRI>"END"                      { RTOKEN(ENDWORD); }
+<MRI>"ALIGNMOD"                { RTOKEN(ALIGNMOD);}
+<MRI>"ALIGN"           { RTOKEN(ALIGN_K);}
+
 <MRI>"CHIP"                     { RTOKEN(CHIP); }
 <MRI>"BASE"                     { RTOKEN(BASE); }
 <MRI>"ALIAS"                     { RTOKEN(ALIAS); }
+<MRI>"TRUNCATE"                     { RTOKEN(TRUNCATE); }
 <MRI>"LOAD"                     { RTOKEN(LOAD); }
 <MRI>"PUBLIC"                   { RTOKEN(PUBLIC); }
 <MRI>"ORDER"                    { RTOKEN(ORDER); }
@@ -352,7 +337,14 @@ WHITE              [ \t\n]+
                                }
 
 
-<MRI,BOTH,EXPRESSION>{FILENAMECHAR1}{FILENAMECHAR}*    {
+<MRI>{FILENAMECHAR1}{NOCFILENAMECHAR}* {
+/* Filename without commas, needed to parse mri stuff */
+                                yylval.name = buystring(yytext); 
+                                 return NAME;
+                               }
+
+
+<BOTH,EXPRESSION>{FILENAMECHAR1}{FILENAMECHAR}*        {
                                 yylval.name = buystring(yytext); 
                                  return NAME;
                                }
@@ -527,3 +519,33 @@ int max_size;
   }
 }
 
+static
+comment()
+{
+  int c;
+  while (1)
+  {
+    c = input();
+    while (c !='*' && c != EOF) 
+    {
+      if (c == '\n') lineno++;
+      c = input();
+    }
+
+
+    if (c == '*')
+    {
+      c = input();
+      while ( c == '*')
+       c = input();
+      if ( c == '/' )
+       break;                  /* found the end */
+    }
+
+    if ( c == EOF )
+    {
+      einfo( "%F%P :EOF in comment");
+      break;
+    }
+  }
+}
index db487acb4a4595b547c53f3b03eab488f7b2d1b8..49fcb80e9ba5118345712fabf5949c72d9940165 100644 (file)
@@ -56,6 +56,8 @@ typedef struct user_symbol_struct
   /* If this symbol explicitly should be kept, despite discarding
      most others.  */
 #define SYM_KEEP 8
+  /* If its got -y set */
+#define SYM_Y 16
   int flags;
 } ldsym_type;