*** empty log message ***
authorSteve Chamberlain <steve@cygnus>
Tue, 4 Jun 1991 23:05:54 +0000 (23:05 +0000)
committerSteve Chamberlain <steve@cygnus>
Tue, 4 Jun 1991 23:05:54 +0000 (23:05 +0000)
ld/ldlang.c
ld/ldlex.l
ld/ldsym.c

index d1f4f27..cabcf9d 100644 (file)
@@ -107,7 +107,7 @@ static void
 DEFUN(print_alignment,(value),
       unsigned int value)
 {
-  printf("2**%2u",value);
+  printf("2**%1u",value);
 }
 static void 
 DEFUN(print_fill,(value),
@@ -449,8 +449,11 @@ DEFUN(lang_map,(outfile),
 {
   lang_memory_region_type *m;
   fprintf(outfile,"**MEMORY CONFIGURATION**\n\n");
-
+#ifdef HOST_64_BIT
   fprintf(outfile,"name\t\torigin\t\tlength\t\tattributes\n");
+#else
+  fprintf(outfile,"name\t\torigin   length\t\tattributes\n");
+#endif
   for (m = lang_memory_region_list;
        m != (lang_memory_region_type *)NULL;
        m = m->next) 
@@ -464,8 +467,8 @@ DEFUN(lang_map,(outfile),
       fprintf(outfile,"\n");
     }
   fprintf(outfile,"\n\n**LINK EDITOR MEMORY MAP**\n\n");
-  fprintf(outfile,"output\t\tinput\t\tvirtual\n");
-  fprintf(outfile,"section\t\tsection\t\taddress\tsize\n\n");
+  fprintf(outfile,"output   input     virtual\n");
+  fprintf(outfile,"section  section   address    tsize\n\n");
 
   print_statements();
 
@@ -864,6 +867,10 @@ DEFUN(map_input_to_output_sections,(s, target, output_section_statement),
            lang_output_section_statement_lookup
              (s->address_statement.section_name);
          os->addr_tree = s->address_statement.address;
+         if (os->bfd_section == (asection *)NULL) {
+           info("%P%F can't set the address of undefined section %s\n",
+                s->address_statement.section_name);
+         }
        }
        break;
       case lang_input_statement_enum:
@@ -997,7 +1004,7 @@ DEFUN(print_input_section,(in),
        else {
          printf("%s", abfd->filename);
        }
-       printf("(%d bytes)", (int)bfd_alloc_size(abfd));
+       printf("(overhead %d bytes)", (int)bfd_alloc_size(abfd));
        print_nl();
 
        /* Find all the symbols in this file defined in this section */
@@ -1090,6 +1097,7 @@ DEFUN(print_wild_statement,(w,os),
       lang_wild_statement_type *w AND
       lang_output_section_statement_type *os)
 {
+  printf(" from ");
   if (w->filename != (char *)NULL) {
     printf("%s",w->filename);
   }
index 7d50ccd..9967b69 100644 (file)
@@ -37,7 +37,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 #include "ld.h"
 #include "ldexp.h"
-#include "ldgram.tab.h"
+#include "ldgramtb.h"
 #include "ldmisc.h"
 
 #undef input
@@ -317,6 +317,10 @@ WHITE              [ \t]+
                 yylval.name = ".bss";
                 return OPTION_Texp;
               }
+"\ -O"{FILENAME} {
+               yylval.name = buystring(yytext+3);
+               return OPTION_Texp;
+               }
 
 "\ -T"{FILENAME}  {
                 yylval.name = buystring(yytext+3);
index 4e6bec5..2bdb7a6 100644 (file)
@@ -169,45 +169,46 @@ static void
 print_file_stuff(f)
 lang_input_statement_type *f;
 {
-  fprintf (stdout, "  %s", f->filename);
-  fprintf (stdout, " ");
+  fprintf (stdout, "  %s\n", f->filename);
   if (f->just_syms_flag) 
-    {
-      fprintf (stdout, " symbols only\n");
-    }
+      {
+       fprintf (stdout, " symbols only\n");
+      }
   else 
-    {
-      asection *s;
-      if (true || option_longmap) {
-       for (s = f->the_bfd->sections;
-            s != (asection *)NULL;
-            s = s->next) {
-         print_address(s->output_offset);
-         printf ( "%08x 2**%2ud %s\n",
-                  (unsigned)s->size, s->alignment_power, s->name);
+      {
+       asection *s;
+       if (true || option_longmap) {
+         for (s = f->the_bfd->sections;
+              s != (asection *)NULL;
+              s = s->next) {
+           print_address(s->output_offset);
+           printf (" %08x 2**%2ud %s\n",
+                   (unsigned)s->size, s->alignment_power, s->name);
+         }
        }
-      }
-      else {         
-       for (s = f->the_bfd->sections;
-            s != (asection *)NULL;
-            s = s->next) {
-         printf("%s ", s->name);
-         print_address(s->output_offset);
-         printf("(%x)", (unsigned)s->size);
+       else {        
+         for (s = f->the_bfd->sections;
+              s != (asection *)NULL;
+              s = s->next) {
+           printf("%s ", s->name);
+           print_address(s->output_offset);
+           printf("(%x)", (unsigned)s->size);
+         }
+         printf("hex \n");
        }
-       printf("hex \n");
       }
-    }
+  fprintf (stdout, "\n");
 }
 
 void
 ldsym_print_symbol_table ()
 {
-  fprintf (stdout, "\nFiles:\n\n");
+  fprintf (stdout, "**FILES**\n\n");
 
   lang_for_each_file(print_file_stuff);
 
-  fprintf (stdout, "\nGlobal symbols:\n\n");
+  fprintf(stdout, "**GLOBAL SYMBOLS**\n\n");
+  fprintf(stdout, "offset    section    offset   symbol\n");
   {
     register ldsym_type *sp;
 
@@ -220,11 +221,11 @@ ldsym_print_symbol_table ()
            print_address(defsym->value);
            if (defsec)
              {
-               print_space();
-               print_address(defsym->value+defsec->vma);
-               printf("%7s",
+               printf("  %-10s",
                        bfd_section_name(output_bfd,
                                         defsec));
+               print_space();
+               print_address(defsym->value+defsec->vma);
 
              }
            else 
@@ -233,23 +234,18 @@ ldsym_print_symbol_table ()
              }
 
          }     
-       else {
-         printf("undefined");
-       }
 
 
        if (sp->scoms_chain) {
-         printf(" common size ");
+         printf("common               ");
          print_address((*(sp->scoms_chain))->value);
-         printf("%s ",sp->name);
+         printf(" %s ",sp->name);
        }
-       if (sp->sdefs_chain) {
-         printf(" symbol def ");
-         print_address((*(sp->sdefs_chain))->value);
-         printf("%s ",sp->name);
+       else if (sp->sdefs_chain) {
+         printf(" %s ",sp->name);
        }
        else {
-         printf(" undefined    ");
+         printf("undefined                     ");
          printf("%s ",sp->name);
        }
        print_nl();