diff options
Diffstat (limited to 'ld/ld.h')
-rw-r--r-- | ld/ld.h | 41 |
1 files changed, 29 insertions, 12 deletions
@@ -1,12 +1,12 @@ /* ld.h - - Copyright (C) 1991 Free Software Foundation, Inc. + Copyright (C) 1991, 1993 Free Software Foundation, Inc. This file is part of GLD, the Gnu Linker. GLD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 1, or (at your option) + the Free Software Foundation; either version 2, or (at your option) any later version. GLD is distributed in the hope that it will be useful, @@ -26,6 +26,8 @@ #define flag_is_defined(x) (!((x) & (BSF_UNDEFINED))) #define flag_is_global_or_common(x) ((x) & (BSF_GLOBAL | BSF_FORT_COMM)) #define flag_is_undefined_or_global_or_common(x) ((x) & (BSF_UNDEFINED | BSF_GLOBAL | BSF_FORT_COMM)) +#define flag_is_undefined_or_global_or_common_or_constructor(x) ((x) & (BSF_UNDEFINED | BSF_GLOBAL | BSF_FORT_COMM | BSF_CONSTRUCTOR)) +#define flag_is_constructor(x) ((x) & BSF_CONSTRUCTOR) #define flag_is_common(x) ((x) & BSF_FORT_COMM) #define flag_is_global(x) ((x) & (BSF_GLOBAL)) #define flag_is_undefined(x) ((x) & BSF_UNDEFINED) @@ -46,7 +48,7 @@ typedef struct user_section_struct { /* Which symbols should be stripped (omitted from the output): none, all, or debugger symbols. */ -typedef enum { STRIP_NONE, STRIP_ALL, STRIP_DEBUGGER } strip_symbols_type; +typedef enum { STRIP_NONE, STRIP_ALL, STRIP_DEBUGGER, STRIP_SOME } strip_symbols_type; @@ -57,23 +59,26 @@ typedef enum { STRIP_NONE, STRIP_ALL, STRIP_DEBUGGER } strip_symbols_type; typedef enum { DISCARD_NONE, DISCARD_ALL, DISCARD_L } discard_locals_type; +#define BYTE_SIZE (1) +#define SHORT_SIZE (2) +#define LONG_SIZE (4) - - - -#define ALIGN(this, boundary) ((( (this) + ((boundary) -1)) & (~((boundary)-1)))) +/* ALIGN macro changed to ALIGN_N to avoid */ +/* conflict in /usr/include/machine/machparam.h */ +#define ALIGN_N(this, boundary) ((( (this) + ((boundary) -1)) & (~((boundary)-1)))) typedef struct { /* 1 => assign space to common symbols even if `relocatable_output'. */ boolean force_common_definition; - + boolean relax; + } args_type; typedef int token_code_type; typedef struct { - unsigned int specified_data_size; + bfd_size_type specified_data_size; boolean magic_demand_paged; boolean make_executable; /* 1 => write relocation into output file so can re-input it later. */ @@ -81,11 +86,18 @@ typedef struct /* Will we build contstructors, or leave alone ? */ boolean build_constructors; - /* 1 => write relocation such that a UNIX linker can understand it. - This is used mainly to finish of sets that were built. */ - boolean unix_relocate; + + /* If true, warn about merging common symbols with others. */ + boolean warn_common; boolean sort_common; +/* these flags may seem mutually exclusive, but not setting them + allows the back end to decide what would be the best thing to do */ + boolean text_read_only; + + char *map_filename; + FILE *map_file; + } ld_config_type; #define set_asymbol_chain(x,y) ((x)->udata = (PTR)y) #define get_asymbol_chain(x) ((asymbol **)((x)->udata)) @@ -105,3 +117,8 @@ typedef enum { + +int yyparse(); +#define BYTE_SIZE 1 +#define SHORT_SIZE 2 +#define LONG_SIZE 4 |