/* A list of symbols to explicitly strip out, or to keep. A linked
list is good enough for a small number from the command line, but
this will slow things down a lot if many symbols are being
- deleted. */
+ deleted. */
struct symlist
{
static int copy_byte = -1;
static int interleave = 4;
-static boolean verbose; /* Print file and target names. */
+static boolean verbose; /* Print file and target names. */
static boolean preserve_dates; /* Preserve input file timestamp. */
static int status = 0; /* Exit status. */
STRIP_ALL /* strip all symbols */
};
-/* Which symbols to remove. */
+/* Which symbols to remove. */
static enum strip_action strip_symbols;
enum locals_action
/* This flag distinguishes between strip and objcopy:
1 means this is 'strip'; 0 means this is 'objcopy'.
- -1 means if we should use argv[0] to decide. */
+ -1 means if we should use argv[0] to decide. */
extern int is_strip;
/* The maximum length of an S record. This variable is declared in srec.c
*list = tmp_list;
}
-/* Add symbols listed in `filename' to strip_specific_list. */
+/* Add symbols listed in `filename' to strip_specific_list. */
#define IS_WHITESPACE(c) ((c) == ' ' || (c) == '\t')
#define IS_LINE_TERMINATOR(c) ((c) == '\n' || (c) == '\r' || (c) == '\0')
char * line;
char * buffer;
unsigned int line_count;
-
+
if (stat (filename, & st) < 0)
fatal (_("cannot stat: %s: %s"), filename, strerror (errno));
if (st.st_size == 0)
buffer [st.st_size + 1] = '\0';
line_count = 1;
-
+
for (line = buffer; * line != '\0'; line ++)
{
char * eol;
++ eol;
finished = true;
break;
-
+
case '\r':
* eol = '\0';
/* Cope with \r\n. */
++ eol;
finished = true;
break;
-
+
case 0:
finished = true;
break;
-
+
case '#':
/* Line comment, Terminate the line here, in case a
name is present and then allow the rest of the
loop to find the real end of the line. */
* eol = '\0';
break;
-
+
default:
break;
}
for (name_end = name;
(! IS_WHITESPACE (* name_end))
&& (! IS_LINE_TERMINATOR (* name_end));
- name_end ++)
- ;
+ name_end ++)
+ ;
if (! IS_LINE_TERMINATOR (* name_end))
{
non_fatal (_("Ignoring rubbish found on line %d of %s"),
line_count, filename);
}
-
+
* name_end = '\0';
if (name_end > name)
&& ((*bfd_get_section (sym)->symbol_ptr_ptr)->flags
& BSF_KEEP) != 0))
keep = 1;
- else if (relocatable /* Relocatable file. */
+ else if (relocatable /* Relocatable file. */
&& (flags & (BSF_GLOBAL | BSF_WEAK)) != 0)
keep = 1;
else if (bfd_decode_symclass (sym) == 'I')
start = bfd_get_start_address (ibfd);
start += change_start;
- /* Neither the start address nor the flags
- need to be set for a core file. */
+ /* Neither the start address nor the flags
+ need to be set for a core file. */
if (bfd_get_format (obfd) != bfd_core)
{
if (!bfd_set_start_address (obfd, start)
size + (gap_stop - gap_start)))
{
non_fatal (_("Can't fill gap after %s: %s"),
- bfd_get_section_name (obfd, osections[i]),
- bfd_errmsg (bfd_get_error ()));
+ bfd_get_section_name (obfd, osections[i]),
+ bfd_errmsg (bfd_get_error ()));
status = 1;
break;
}
pad_to - lma))
{
non_fatal (_("Can't add padding to %s: %s"),
- bfd_get_section_name (obfd, osections[c - 1]),
- bfd_errmsg (bfd_get_error ()));
+ bfd_get_section_name (obfd, osections[c - 1]),
+ bfd_errmsg (bfd_get_error ()));
status = 1;
}
else
if (!bfd_close (output_bfd))
{
bfd_nonfatal (bfd_get_filename (output_bfd));
- /* Error in new object file. Don't change archive. */
+ /* Error in new object file. Don't change archive. */
status = 1;
}
if (strcmp (rename->new_name, new_name) == 0
&& rename->flags == flags)
return;
-
+
fatal (_("Multiple renames of section %s"), old_name);
}
rename->new_name = new_name;
rename->flags = flags;
rename->next = section_rename_list;
-
+
section_rename_list = rename;
}
flagword flags;
const char *err;
const char * name;
-
+
if ((bfd_get_section_flags (ibfd, isection) & SEC_DEBUGGING) != 0
&& (strip_symbols == STRIP_DEBUG
|| strip_symbols == STRIP_UNNEEDED
/* Get the, possibly new, name of the output section. */
name = find_section_rename (ibfd, isection, & flags);
-
+
osection = bfd_make_section_anyway (obfd, name);
if (osection == NULL)
sec_ptr osection;
bfd_size_type size;
long relsize;
+ flagword flags;
/* If we have already failed earlier on,
do not keep on generating complaints now. */
if (status != 0)
return;
- if ((bfd_get_section_flags (ibfd, isection) & SEC_DEBUGGING) != 0
+ flags = bfd_get_section_flags (ibfd, isection);
+ if ((flags & SEC_DEBUGGING) != 0
&& (strip_symbols == STRIP_DEBUG
|| strip_symbols == STRIP_UNNEEDED
|| strip_symbols == STRIP_ALL
|| convert_debugging))
return;
+ if ((flags & SEC_GROUP) != 0)
+ return;
+
p = find_section_list (bfd_section_name (ibfd, isection), false);
if (sections_removed && p != NULL && p->remove)
if (size == 0 || osection == 0)
return;
- /* Core files do not need to be relocated. */
+ /* Core files do not need to be relocated. */
if (bfd_get_format (obfd) == bfd_core)
relsize = 0;
else
if (strip_symbols == STRIP_ALL)
{
/* Remove relocations which are not in
- keep_strip_specific_list. */
+ keep_strip_specific_list. */
arelent **temp_relpp;
long temp_relcount = 0;
long i;
isection->_cooked_size = isection->_raw_size;
isection->reloc_done = true;
- if (bfd_get_section_flags (ibfd, isection) & SEC_HAS_CONTENTS
+ if (bfd_get_section_flags (ibfd, isection) & SEC_HAS_CONTENTS
&& bfd_get_section_flags (obfd, osection) & SEC_HAS_CONTENTS)
{
PTR memhunk = (PTR) xmalloc ((unsigned) size);
fatal (_("byte number must be non-negative"));
break;
- case 'B':
- binary_architecture = optarg;
- break;
+ case 'B':
+ binary_architecture = optarg;
+ break;
case 'i':
interleave = atoi (optarg);
set_start_set = true;
break;
- case OPTION_SREC_LEN:
- Chunk = parse_vma (optarg, "--srec-len");
- break;
+ case OPTION_SREC_LEN:
+ Chunk = parse_vma (optarg, "--srec-len");
+ break;
- case OPTION_SREC_FORCES3:
+ case OPTION_SREC_FORCES3:
S3Forced = true;
- break;
+ break;
case OPTION_STRIP_SYMBOLS:
add_specific_symbols (optarg, &strip_specific_list);
if (binary_architecture != (char *) NULL)
{
if (input_target && strcmp (input_target, "binary") == 0)
- {
- const bfd_arch_info_type * temp_arch_info;
+ {
+ const bfd_arch_info_type * temp_arch_info;
temp_arch_info = bfd_scan_arch (binary_architecture);
- if (temp_arch_info != NULL)
- bfd_external_binary_architecture = temp_arch_info->arch;
- else
- fatal (_("architecture %s unknown"), binary_architecture);
- }
+ if (temp_arch_info != NULL)
+ bfd_external_binary_architecture = temp_arch_info->arch;
+ else
+ fatal (_("architecture %s unknown"), binary_architecture);
+ }
else
{
non_fatal (_("Warning: input target 'binary' required for binary architecture parameter."));