Modifed to care about semi colons again, newlines are ignored - sorry
authorSteve Chamberlain <sac@cygnus>
Mon, 2 Mar 1992 22:22:59 +0000 (22:22 +0000)
committerSteve Chamberlain <sac@cygnus>
Mon, 2 Mar 1992 22:22:59 +0000 (22:22 +0000)
Per.

ld/a29k.sc-sh
ld/aout.sc-sh
ld/ebmon29k.sc-sh
ld/h8300hms.sc-sh
ld/h8300hms.sh
ld/i960.sc-sh
ld/ldexp.c
ld/ldgram.y
ld/m88kbcs.sc-sh

index e58af43..a43a5eb 100755 (executable)
@@ -14,7 +14,7 @@ SECTIONS
 {
   .text : {
     *(.text)
-    ${RELOCATING+ __etext  =  .}
+    ${RELOCATING+ __etext  =  .};
     *(.lit)
     *(.shdata)
   } ${RELOCATING+ > text}
@@ -24,13 +24,13 @@ SECTIONS
   .talias :     { } ${RELOCATING+ > talias}
   .data  : {
     *(.data)
-    ${RELOCATING+ __edata  =  .}
+    ${RELOCATING+ __edata  =  .};
   } ${RELOCATING+ > data}
   .bss   SIZEOF(.data) + ADDR(.data) :
   {                                    
    *(.bss)
    *(COMMON)
-     ${RELOCATING+ __end = ALIGN(0x8)}
+     ${RELOCATING+ __end = ALIGN(0x8)};
   }
   .mstack  : { } ${RELOCATING+ > mstack}
   .rstack  : { } ${RELOCATING+ > rstack}
index e118daf..7fcea05 100755 (executable)
@@ -22,8 +22,8 @@ SECTIONS
   {
    *(.bss)
    *(COMMON)
-   ${RELOCATING+_end = .}
-   ${RELOCATING+__end = .}
+   ${RELOCATING+_end = . };
+   ${RELOCATING+__end = . };
   }
 }
 EOF
index 1b0fa6d..62050ee 100755 (executable)
@@ -6,7 +6,7 @@ SECTIONS {
   .text ${RELOCATING+${TEXT_START_ADDR}} : 
     {
        *(.text);
-       ${RELOCATING+_etext = .}
+       ${RELOCATING+_etext = .};
     }
   data ${RELOCATING+0x80002000} :
     {
@@ -21,7 +21,7 @@ SECTIONS {
     { 
        *(COMMON)       
        *(.bss);
-       ${RELOCATING+_end = .;}
+       ${RELOCATING+_end = .};
     } 
 }
 EOF
index f48b11b..2c66850 100755 (executable)
@@ -1,11 +1,12 @@
 cat <<EOF
-OUTPUT_FORMAT(${OUTPUT_FORMAT})
+OUTPUT_FORMAT("${OUTPUT_FORMAT}")
 OUTPUT_ARCH(${ARCH})
 
 MEMORY {
        rom   : o = 0x0000, l = 0x7fe0 
        duart : o = 0x7fe0, l = 16
-       ram   : o = 0x8000, l = 29k
+       ram   : o = 0x8000, l = 28k
+       topram: o = 0x8000+28k, l = 1k
        hmsram: o = 0xfb80, l = 512
        }
 
@@ -15,17 +16,27 @@ SECTIONS
        {                                       
          *(.text)                              
          *(.strings)
+         _etext = .;
        } ${RELOCATING+ > ram}
 .data  :
        {
        *(.data)
+       _edata = .;
        } ${RELOCATING+ > ram}
 .bss  :
        {
-       ${RELOCATING+ _bss_start = .}
+       ${RELOCATING+ _bss_start = .};
        *(.bss)
        *(COMMON)
-       ${RELOCATING+ _end = .}
+       ${RELOCATING+ _end = .};
        } ${RELOCATING+ >ram}
+.stack : 
+       {
+       *(.stack)
+       } ${RELOCATING+ > topram}
 }
 EOF
+
+
+
+
index 67af09b..fbc2627 100755 (executable)
@@ -1,7 +1,7 @@
 EMULATION_NAME=h8300hms
 SCRIPT_NAME=h8300hms
 OUTPUT_FORMAT="coff-h8300"
-TEXT_START_ADDR=??
-PAGE_SIZE=??
+TEXT_START_ADDR=0x8000
+PAGE_SIZE=128
 ARCH=h8300
 TEMPLATE_NAME=h8300hms
index 0e24bb4..6d778a6 100755 (executable)
@@ -5,19 +5,19 @@ SECTIONS
     { 
        ${GLD_STYLE+ CREATE_OBJECT_SYMBOLS}
        *(.text) 
-       ${RELOCATING+ _etext = .}
+       ${RELOCATING+ _etext = .};
     }  
     .data :
     { 
        *(.data) 
-       ${RELOCATING+ _edata = .}
+       ${RELOCATING+ _edata = .};
     }  
     .bss :
     { 
-       ${RELOCATING+ _bss_start = .}
+       ${RELOCATING+ _bss_start = .};
        *(.bss)  
        *(COMMON) 
-       ${RELOCATING+ _end = .}
+       ${RELOCATING+ _end = .};
     } 
 } 
 EOF
index 247de62..e107110 100644 (file)
@@ -50,7 +50,7 @@ extern ld_config_type config;
 
 extern lang_input_statement_type *script_file;
 extern unsigned int defined_global_sym_count;
-
+  extern lang_output_section_statement_type *abs_output_section;
 extern bfd_vma print_dot;
 
 
@@ -121,21 +121,20 @@ static void
 DEFUN(make_abs,(ptr),
       etree_value_type *ptr)
 {
-  if (ptr->section != (lang_output_section_statement_type *)NULL) {
     asection *s = ptr->section->bfd_section;
     ptr->value += s->vma;
-    ptr->section = (lang_output_section_statement_type *)NULL;
-  }
-
+    ptr->section = abs_output_section;
 }
 
 static
 DEFUN(etree_value_type new_abs,(value),
       bfd_vma value)
 {
+
+  
   etree_value_type new;
   new.valid = true;
-  new.section = (lang_output_section_statement_type *)NULL;
+  new.section = abs_output_section;
   new.value = value;
   return new;
 }
@@ -189,9 +188,9 @@ DEFUN(etree_value_type
   new.valid = true;
   new.value = value;
   new.section = section;
-  if (new.section != (lang_output_section_statement_type *)NULL) {
+
     new.value -= section->bfd_section->vma;
-  }
+
   return new;
 }
 
@@ -216,8 +215,8 @@ DEFUN(fold_binary,(tree, current_section, allocation_done, dot, dotp),
        /* If values are from different sections, or this is an */
        /* absolute expression, make both source args absolute */
       if (result.section !=  other.section ||
-         current_section == (lang_output_section_statement_type *)NULL) {
-
+         current_section == abs_output_section) 
+      {
        make_abs(&result);
        make_abs(&other);
       }
@@ -230,13 +229,13 @@ DEFUN(fold_binary,(tree, current_section, allocation_done, dot, dotp),
          if (other.value == 0) {
            einfo("%F%S % by zero\n");
          }
-         result.value %= other.value;
+         result.value = (int)result.value % (int)other.value;
          break;
        case '/':
          if (other.value == 0) {
            einfo("%F%S / by zero\n");
          }
-         result.value /= other.value;
+         result.value = (int)result.value / (int) other.value;
          break;
 #define BOP(x,y) case x : result.value = result.value y other.value;break;
          BOP('+',+);
@@ -320,11 +319,14 @@ DEFUN(fold_name, (tree, current_section, allocation_done, dot),
 
              if (sdefp) {
                asymbol *sdef = *sdefp;
+#if 0
                if (sdef->section == (asection *)NULL) {
                  /* This is an absolute symbol */
                  result = new_abs(sdef->value);
                }
-               else {
+               else
+#endif
+ {
                  lang_output_section_statement_type *os =
                    lang_output_section_statement_lookup(
                                                         sdef->section->output_section->name);
@@ -334,8 +336,8 @@ DEFUN(fold_name, (tree, current_section, allocation_done, dot),
                  if (sdef->the_bfd->usrdata && 
                      ((lang_input_statement_type*)(sdef->the_bfd->usrdata))->just_syms_flag == true) 
                      {
-                       result = new_abs(sdef->value + (sdef->section ?
-                                                       sdef->section->vma : 0));
+                       result = new_abs(sdef->value +sdef->section->vma);
+
                      }
                  else {
                    result = new_rel(sdef->value + sdef->section->output_offset, os);
@@ -519,36 +521,19 @@ DEFUN(exp_fold_tree,(tree, current_section, allocation_done,
              else 
              {
                def_ptr = (asymbol **)ldmalloc((bfd_size_type)(sizeof(asymbol **)));
-               def = (asymbol
-                      *)bfd_make_empty_symbol(script_file->the_bfd);
+               def = (asymbol   *)bfd_make_empty_symbol(script_file->the_bfd);
 
                  
-                 
+               def->flags = 0;
+               
+               sy->sdefs_chain = def_ptr;
                *def_ptr = def;
              }
 
              def->value = result.value;
-             if (result.section !=
-                 (lang_output_section_statement_type  *)NULL) {
-                 if (current_section !=
-                     (lang_output_section_statement_type *)NULL) {
-                 
+
                      def->section = result.section->bfd_section;
                      def->flags = BSF_GLOBAL | BSF_EXPORT;
-                   }
-                 else {
-                     /* Force to absolute */
-                     def->value += result.section->bfd_section->vma;
-                     def->section = &bfd_abs_section;
-                     def->flags = BSF_GLOBAL | BSF_EXPORT ;
-                   }
-
-
-               }
-             else {
-                 def->section = &bfd_abs_section;
-                 def->flags = BSF_GLOBAL | BSF_EXPORT ;
-               }
 
 
              def->udata = (PTR)NULL;
@@ -597,7 +582,8 @@ DEFUN(exp_binop,(code, lhs, rhs),
   value.binary.lhs = lhs;
   value.binary.rhs = rhs;
   value.type.node_class = etree_binary;
-  r = exp_fold_tree_no_dot(&value,  (lang_output_section_statement_type *)NULL,
+  r = exp_fold_tree_no_dot(&value,
+                          abs_output_section,
                           lang_first_phase_enum );
   if (r.valid)
     {
@@ -669,8 +655,9 @@ DEFUN(exp_nameop,(code, name),
   value.name.type.node_class = etree_name;
 
 
-  r = exp_fold_tree_no_dot(&value,(lang_output_section_statement_type *)NULL,
-               lang_first_phase_enum);
+  r = exp_fold_tree_no_dot(&value,
+                          (lang_output_section_statement_type *)NULL,
+                          lang_first_phase_enum);
   if (r.valid) {
     return exp_intop(r.value);
   }
index 039a07d..ce0f4a1 100644 (file)
@@ -87,7 +87,7 @@ boolean ldgram_had_equals = false;
   char *name;
   int token;
   union etree_union *etree;
-  asection *section;
+struct sec *section;
   struct lang_output_section_statement_struct *output_section_statement;
   union  lang_statement_union **statement_ptr;
   int lineno;
@@ -142,7 +142,7 @@ boolean ldgram_had_equals = false;
 %token <name> OPTION_l OPTION_L  OPTION_T OPTION_Aarch OPTION_Tfile  OPTION_Texp
 %token OPTION_Ur 
 %token ORIGIN FILL OPTION_g
-%token LENGTH    CREATE_OBJECT_SYMBOLS INPUT OUTPUT  CONSTRUCTORS
+%token LENGTH    CREATE_OBJECT_SYMBOLS INPUT OUTPUT  CONSTRUCTORS 
 %type <token> assign_op 
 
 %type <name>  filename
@@ -153,14 +153,12 @@ ld_config_type config;
 
 %%
 
-
-
 file:  command_line  { lang_final(); };
 
-
 filename:
   NAME;
 
+
 command_line:
                command_line command_line_option
        |
@@ -175,12 +173,12 @@ command_line_option:
         |      OPTION_Bstatic { }
        |       OPTION_v
                        {       
-                       ldversion();
+                       ldversion(0);
                        option_v = true;
                        }
        |       OPTION_V
                        {       
-                       ldversion();
+                       ldversion(1);
                        option_v = true;
                        }
        |       OPTION_t {
@@ -361,7 +359,7 @@ ifile_p1:
        |       low_level_library
        |       floating_point_support
        |       statement_anywhere
-        |       ';'
+        |      ';'
        |       TARGET_K '(' NAME ')'
                { lang_add_target($3); }
        |       SEARCH_DIR '(' filename ')'
@@ -392,12 +390,13 @@ input_list:
        ;
 
 sections:
-               SECTIONS '{'sec_or_group_p1  '}' 
+               SECTIONS  '{'sec_or_group_p1  '}' 
        ;
 
 sec_or_group_p1:
                sec_or_group_p1 section
        |       sec_or_group_p1 statement_anywhere
+       |       sec_or_group_p1 
        |
        ;
 
@@ -439,10 +438,11 @@ input_section_spec:
 
 statement:
                statement assignment end
+        |      statement ';'
+        |      statement 
        |       statement CREATE_OBJECT_SYMBOLS
                {
                  lang_add_attribute(lang_object_symbols_statement_enum); }
-        |      statement ';'
         |      statement CONSTRUCTORS
                {
                  lang_add_attribute(lang_constructors_statement_enum); }
@@ -506,7 +506,7 @@ assign_op:
 
        ;
 
-end:   ';' | ','
+end:   ';' | ',' 
        ;
 
 
@@ -528,7 +528,7 @@ opt_comma:
 
 
 memory:
-               MEMORY '{' memory_spec memory_spec_list '}'
+               MEMORY  '{'  memory_spec memory_spec_list '}'
        ;
 
 memory_spec_list:
@@ -613,7 +613,7 @@ floating_point_support:
 exp    :
                '-' exp    %prec UNARY
                        { $$ = exp_unop('-', $2); }
-       |       '(' exp ')'
+       |       '('  exp   ')'
                        { $$ = $2; }
        |       NEXT '(' exp ')' %prec UNARY
                        { $$ = exp_unop($1,$3); }
@@ -702,14 +702,7 @@ opt_type:
        |    { $$ = SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS; }
        ;
 
-opt_things: 
-       {
-
-       }
-       ;
-
-
-
+opt_things:  ;
 
 
 opt_exp:
@@ -719,7 +712,7 @@ opt_exp:
        ;
 
 opt_block:
-               BLOCK '(' exp ')'
+               BLOCK   '('   exp ')'
                { $$ = exp_get_value_int($3,
                                         1L,
                                         "block",
@@ -729,7 +722,7 @@ opt_block:
        ;
   
 memspec_opt:
-               '>' NAME
+               '>'   NAME
                { $$ = $2; }
        |       { $$ = "*default*"; }
        ;
index 65112be..c7fe189 100755 (executable)
@@ -10,32 +10,32 @@ SECTIONS
   .text ${RELOCATING+ 0x10000 + SIZEOF_HEADERS} :
     {
       CREATE_OBJECT_SYMBOLS
-      ${RELOCATING+ __.text.start = .}
-      ${RELOCATING+ __.init.start = .}
+      ${RELOCATING+ __.text.start = .};
+      ${RELOCATING+ __.init.start = .};
       ${RELOCATING+ LONG(0xf400c001)}
-      ${RELOCATING+ __.init.end = .}
+      ${RELOCATING+ __.init.end = .};
       *(.text)                                 
-      ${RELOCATING+ __.tdesc_start = .}
+      ${RELOCATING+ __.tdesc_start = .};
       ${RELOCATING+ *(.tdesc)}
-      ${RELOCATING+ __.text_end = .}   
-      ${RELOCATING+ __.initp.start = .}
-      ${RELOCATING+ __.initp.end =.}
+      ${RELOCATING+ __.text_end = .}   ;
+      ${RELOCATING+ __.initp.start = .};
+      ${RELOCATING+ __.initp.end =.};
 
-      ${RELOCATING+_etext =.}
+      ${RELOCATING+_etext =.};
     }                                          
   .data ${RELOCATING+ SIZEOF(.text) + ADDR(.text) + 0x400000} :
     {                                  
       *(.data)
       ${CONSTRUCTING+CONSTRUCTORS}
       *(.comment)
-      ${RELOCATING+_edata  =  .}
+      ${RELOCATING+_edata  =  .};
     }                                          
   .bss ${RELOCATING+ SIZEOF(.data) + ADDR(.data)} :
     {          
       *(.bss)  
       *(COMMON)        
-      ${RELOCATING+ _end = .}
-      ${RELOCATING+ __end = .}
+      ${RELOCATING+ _end = .};
+      ${RELOCATING+ __end = .};
     }                                  
 }
 EOF