From e20873a7bf7864a7cc33095c755b49dabe1e51fd Mon Sep 17 00:00:00 2001 From: John Gilmore Date: Sat, 21 Nov 1992 11:18:00 +0000 Subject: [PATCH] * ldctor.h, lderror.h, ldexp.h, ldfile.h, ldindr.h, ldlang.c, ldlang.h, ldlex.h, ldmain.h, ldmisc.h, ldsym.h, ldver.h, ldwarn.h, ldwrite.h, relax.h: Replace all uses of EXFUN and PROTO ansi-glue macros with PARAMS. Recreational cleanup. Update copyrights. --- ld/ChangeLog | 11 ++++ ld/lderror.h | 5 +- ld/ldindr.h | 6 +-- ld/ldlang.c | 142 ++++++++++++++++++++++++++++++++++----------------- ld/ldsym.h | 14 ++--- ld/ldwarn.h | 11 ++-- ld/relax.h | 6 +-- 7 files changed, 123 insertions(+), 72 deletions(-) diff --git a/ld/ChangeLog b/ld/ChangeLog index 547631e4cf..402a6bf952 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,14 @@ +Sat Nov 21 03:15:27 1992 John Gilmore (gnu@cygnus.com) + + * ldctor.h, lderror.h, ldexp.h, ldfile.h, ldindr.h, ldlang.c, + ldlang.h, ldlex.h, ldmain.h, ldmisc.h, ldsym.h, ldver.h, ldwarn.h, + ldwrite.h, relax.h: Replace all uses of EXFUN and PROTO ansi-glue + macros with PARAMS. Recreational cleanup. Update copyrights. + +Tue Nov 10 00:23:37 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com) + + * Makefile.in: pass down the bfd source directory for includes + Thu Nov 5 15:41:55 1992 Ian Lance Taylor (ian@cygnus.com) * ldlang.c (lang_size_sections): don't change size and address for diff --git a/ld/lderror.h b/ld/lderror.h index 870f4d0e41..7209a49e07 100644 --- a/ld/lderror.h +++ b/ld/lderror.h @@ -1,4 +1 @@ - - -void EXFUN(init_bfd_error_vector,(void)); - +void init_bfd_error_vector PARAMS ((void)); diff --git a/ld/ldindr.h b/ld/ldindr.h index cadccbbbf4..3d71d4d3d9 100644 --- a/ld/ldindr.h +++ b/ld/ldindr.h @@ -1,4 +1,2 @@ - - -void EXFUN(do_indirect, (ldsym_type *)); -void EXFUN(add_indirect,(asymbol **)); +void do_indirect PARAMS ((ldsym_type *)); +void add_indirect PARAMS ((asymbol **)); diff --git a/ld/ldlang.c b/ld/ldlang.c index f73f260abf..9db07f304c 100644 --- a/ld/ldlang.c +++ b/ld/ldlang.c @@ -1,4 +1,5 @@ -/* Copyright (C) 1991 Free Software Foundation, Inc. +/* Linker command language support. + Copyright 1991, 1992 Free Software Foundation, Inc. This file is part of GLD, the Gnu Linker. @@ -32,8 +33,8 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "ldindr.h" #include "ldctor.h" /* FORWARDS */ -PROTO (static void, print_statements, (void)); -PROTO (static void, print_statement, (lang_statement_union_type *, +static void print_statements PARAMS ((void)); +static void print_statement PARAMS ((lang_statement_union_type *, lang_output_section_statement_type *)); /* LOCALS */ @@ -107,7 +108,7 @@ extern boolean write_map; #define outside_symbol_address(q) ((q)->value + outside_section_address(q->section)) -void EXFUN (lang_add_data, (int type, union etree_union * exp)); +void lang_add_data PARAMS ((int type, union etree_union * exp)); PTR DEFUN (stat_alloc, (size), @@ -621,6 +622,11 @@ DEFUN (wild_doit, (ptr, section, output, file), { output->bfd_section->alignment_power = section->alignment_power; } + /* If supplied an aligmnet, then force it */ + if (output->section_alignment != -1) + { + output->bfd_section->alignment_power = output->section_alignment; + } } } @@ -1033,39 +1039,55 @@ DEFUN (print_output_section_statement, (output_section_statement), print_nl (); print_section (output_section_statement->name); - if (section) - { - print_dot = section->vma; - print_space (); - print_section (""); - print_space (); - print_address (section->vma); - print_space (); - print_size (section->_raw_size); - print_space(); - print_size(section->_cooked_size); - print_space (); - print_alignment (section->alignment_power); - print_space (); -#if 0 - fprintf (config.map_file, "%s flags", output_section_statement->region->name); - print_flags (stdout, &output_section_statement->flags); -#endif - if (section->flags & SEC_LOAD) - fprintf (config.map_file, "load "); - if (section->flags & SEC_ALLOC) - fprintf (config.map_file, "alloc "); - if (section->flags & SEC_RELOC) - fprintf (config.map_file, "reloc "); - if (section->flags & SEC_HAS_CONTENTS) - fprintf (config.map_file, "contents "); - } + if (section) + { + print_dot = section->vma; + print_space (); + print_section (""); + print_space (); + print_address (section->vma); + print_space (); + print_size (section->_raw_size); + print_space(); + print_size(section->_cooked_size); + print_space (); + print_alignment (section->alignment_power); + print_space (); +#if 0 + fprintf (config.map_file, "%s flags", output_section_statement->region->name); + print_flags (stdout, &output_section_statement->flags); +#endif + if (section->flags & SEC_LOAD) + fprintf (config.map_file, "load "); + if (section->flags & SEC_ALLOC) + fprintf (config.map_file, "alloc "); + if (section->flags & SEC_RELOC) + fprintf (config.map_file, "reloc "); + if (section->flags & SEC_HAS_CONTENTS) + fprintf (config.map_file, "contents "); + + } else - { - fprintf (config.map_file, "No attached output section"); - } + { + fprintf (config.map_file, "No attached output section"); + } print_nl (); + if (output_section_statement->section_alignment >= 0 + || output_section_statement->section_alignment >= 0) + { + printf("\t\t\t\t\tforced alignment "); + if ( output_section_statement->section_alignment >= 0) + { + printf("section 2**%d ",output_section_statement->section_alignment ); + } + if ( output_section_statement->subsection_alignment >= 0) + { + printf("subsection 2**%d ",output_section_statement->subsection_alignment ); + } + + print_nl (); + } print_statement (output_section_statement->children.head, output_section_statement); @@ -1348,7 +1370,7 @@ DEFUN (print_statement, (s, os), case lang_output_statement_enum: fprintf (config.map_file, "OUTPUT(%s %s)\n", s->output_statement.name, - output_target); + output_target ? output_target : ""); break; case lang_input_statement_enum: print_input_statement (&s->input_statement); @@ -1431,6 +1453,10 @@ DEFUN (size_input_section, (this_ptr, output_section_statement, fill, if (is->ifile->just_syms_flag == false) { + if (output_section_statement->subsection_alignment != -1) + i->alignment_power = + output_section_statement->subsection_alignment; + dot = insert_pad (this_ptr, fill, i->alignment_power, output_section_statement->bfd_section, dot); @@ -1495,9 +1521,9 @@ DEFUN (lang_size_sections, (s, output_section_statement, prev, fill, bfd_vma after; lang_output_section_statement_type *os = &s->output_section_statement; - /* If this section is never loaded, don't change the size and - address. */ - if (os->bfd_section->flags & SEC_NEVER_LOAD) + /* If this is a shared library section, don't change the size + and address. */ + if (os->bfd_section->flags & SEC_SHARED_LIBRARY) break; if (os->bfd_section == &bfd_abs_section) @@ -2177,7 +2203,7 @@ DEFUN (lang_set_flags, (ptr, flags), void DEFUN (lang_for_each_file, (func), - PROTO (void, (*func), (lang_input_statement_type *))) + void (*func) PARAMS ((lang_input_statement_type *))) { lang_input_statement_type *f; @@ -2192,7 +2218,7 @@ DEFUN (lang_for_each_file, (func), void DEFUN (lang_for_each_input_section, (func), - PROTO (void, (*func), (bfd * ab, asection * as))) + void (*func) PARAMS ((bfd * ab, asection * as))) { lang_input_statement_type *f; @@ -2237,21 +2263,36 @@ DEFUN (lang_add_output, (name), static lang_output_section_statement_type *current_section; +static int topower(x) + int x; +{ + unsigned int i = 1; + int l; + if (x < 0) return -1; + for (l = 0; l < 32; l++) + { + if (i >= x) return l; + i<<=1; + } +} void DEFUN (lang_enter_output_section_statement, (output_section_statement_name, address_exp, flags, - block_value), + block_value, + align, subalign), char *output_section_statement_name AND etree_type * address_exp AND int flags AND - bfd_vma block_value) + bfd_vma block_value AND + etree_type *align AND + etree_type *subalign) { lang_output_section_statement_type *os; current_section = - os = + os = lang_output_section_statement_lookup (output_section_statement_name); @@ -2263,10 +2304,10 @@ DEFUN (lang_enter_output_section_statement, if (os->addr_tree == (etree_type *) NULL) - { - os->addr_tree = - address_exp; - } + { + os->addr_tree = + address_exp; + } os->flags = flags; if (flags & SEC_NEVER_LOAD) os->loadable = 0; @@ -2275,6 +2316,13 @@ DEFUN (lang_enter_output_section_statement, os->block_value = block_value; stat_ptr = &os->children; + os->subsection_alignment = topower( + exp_get_value_int(subalign, -1, + "subsection alignment", + 0)); + os->section_alignment = topower( + exp_get_value_int(align, -1, + "section alignment", 0)); } void diff --git a/ld/ldsym.h b/ld/ldsym.h index fdd24dae9b..db487acb4a 100644 --- a/ld/ldsym.h +++ b/ld/ldsym.h @@ -62,15 +62,15 @@ typedef struct user_symbol_struct extern CONST char *keepsyms_file; extern int kept_syms; -PROTO(ldsym_type *, ldsym_get, (CONST char *)); -PROTO(ldsym_type *, ldsym_get_soft, (CONST char *)); -PROTO(void, ldsym_print_symbol_table,(void)); -PROTO(void, ldsym_write, (void)); -PROTO(boolean, ldsym_undefined, (CONST char *)); +ldsym_type *ldsym_get PARAMS ((CONST char *)); +ldsym_type *ldsym_get_soft PARAMS ((CONST char *)); +void ldsym_print_symbol_table PARAMS ((void)); +void ldsym_write PARAMS ((void)); +boolean ldsym_undefined PARAMS ((CONST char *)); + #define FOR_EACH_LDSYM(x) \ extern ldsym_type *symbol_head; \ ldsym_type *x; \ for (x = symbol_head; x != (ldsym_type *)NULL; x = x->next) - -void EXFUN(ldsym_init,(void)); +void ldsym_init PARAMS ((void)); diff --git a/ld/ldwarn.h b/ld/ldwarn.h index 955ae9d948..b841ca5829 100644 --- a/ld/ldwarn.h +++ b/ld/ldwarn.h @@ -1,5 +1,5 @@ -/* - Copyright (C) 1991 Free Software Foundation, Inc. +/* Warning support for the GNU Linker. + Copyright 1991, 1992 Free Software Foundation, Inc. Written by Steve Chamberlain of Cygnus Support. This file is part of GLD, the GNU linker. @@ -18,7 +18,6 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -void EXFUN(add_warning,(asymbol *)); -CONST char * EXFUN(fetch_warning,(asymbol *)); -void EXFUN(produce_warnings,(ldsym_type *, asymbol *)); +void add_warning PARAMS ((asymbol *)); +CONST char *fetch_warning PARAMS ((asymbol *)); +void produce_warnings PARAMS ((ldsym_type *, asymbol *)); diff --git a/ld/relax.h b/ld/relax.h index a280b97036..7c7d36b426 100644 --- a/ld/relax.h +++ b/ld/relax.h @@ -1,4 +1,2 @@ -void EXFUN(write_relaxnorel,( bfd *output_bfd, PTR data)); -boolean EXFUN(relax_section,( lang_statement_union_type **this_ptr)); - - +void write_relaxnorel PARAMS ((bfd *output_bfd, PTR data)); +boolean relax_section PARAMS ((lang_statement_union_type **this_ptr));