From 3a5d12fbb4f7888525978f9fba46b977afabe391 Mon Sep 17 00:00:00 2001 From: Fangrui Song Date: Mon, 10 Feb 2020 16:22:00 +0000 Subject: [PATCH] Allow objcopy's --set-section-flags options to add or remove the SHF_EXCLUDE flag of ELF sections. * objcopy.c (parse_flags): Handle "exclude". * doc/binutils.texi: Document the support. --- binutils/ChangeLog | 5 +++++ binutils/doc/binutils.texi | 8 ++++---- binutils/objcopy.c | 3 ++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/binutils/ChangeLog b/binutils/ChangeLog index fc3783e851..06bbf5d6b7 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,8 @@ +2020-02-10 Fangrui Song + + * objcopy.c (parse_flags): Handle "exclude". + * doc/binutils.texi: Document the support. + 2020-02-10 Aaron Merey * binutils/testsuite/binutils-all/debuginfod.exp: diff --git a/binutils/doc/binutils.texi b/binutils/doc/binutils.texi index 669bee968f..289d7b14a3 100644 --- a/binutils/doc/binutils.texi +++ b/binutils/doc/binutils.texi @@ -1644,10 +1644,10 @@ Set the flags for any sections matching @var{sectionpattern}. The @var{flags} argument is a comma separated string of flag names. The recognized names are @samp{alloc}, @samp{contents}, @samp{load}, @samp{noload}, @samp{readonly}, @samp{code}, @samp{data}, @samp{rom}, -@samp{share}, and @samp{debug}. You can set the @samp{contents} flag -for a section which does not have contents, but it is not meaningful -to clear the @samp{contents} flag of a section which does have -contents--just remove the section instead. Not all flags are +@samp{exclude}, @samp{share}, and @samp{debug}. You can set the +@samp{contents} flag for a section which does not have contents, but it +is not meaningful to clear the @samp{contents} flag of a section which +does have contents--just remove the section instead. Not all flags are meaningful for all object file formats. @item --set-section-alignment @var{sectionpattern}=@var{align} diff --git a/binutils/objcopy.c b/binutils/objcopy.c index 212e25144e..fd94d63773 100644 --- a/binutils/objcopy.c +++ b/binutils/objcopy.c @@ -780,6 +780,7 @@ parse_flags (const char *s) PARSE_FLAG ("code", SEC_CODE); PARSE_FLAG ("data", SEC_DATA); PARSE_FLAG ("rom", SEC_ROM); + PARSE_FLAG ("exclude", SEC_EXCLUDE); PARSE_FLAG ("share", SEC_COFF_SHARED); PARSE_FLAG ("contents", SEC_HAS_CONTENTS); PARSE_FLAG ("merge", SEC_MERGE); @@ -794,7 +795,7 @@ parse_flags (const char *s) copy[len] = '\0'; non_fatal (_("unrecognized section flag `%s'"), copy); fatal (_("supported flags: %s"), - "alloc, load, noload, readonly, debug, code, data, rom, share, contents, merge, strings"); + "alloc, load, noload, readonly, debug, code, data, rom, exclude, share, contents, merge, strings"); } s = snext; -- 2.34.1