Skip to content

Commit d931cf3

Browse files
committed
[llvm-objcopy] Make section rename/set flags case-insensitive
This fixes https://bugs.llvm.org/show_bug.cgi?id=41305. GNU objcopy --set-section-flags/--rename-section flags are case-insensitive, so this patch updates llvm-objcopy to match. Reviewed by: grimar Differential Revision: https://reviews.llvm.org/D60200 llvm-svn: 357590
1 parent 7f036ab commit d931cf3

File tree

3 files changed

+30
-12
lines changed

3 files changed

+30
-12
lines changed

llvm/test/tools/llvm-objcopy/ELF/rename-section-flag.test

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,14 @@
4949
# Invalid flags:
5050
# RUN: not llvm-objcopy --rename-section=.foo=.bar,xyzzy %t %t.xyzzy 2>&1 | FileCheck %s --check-prefix=BAD-FLAG
5151

52+
# Upper-case flags:
53+
# RUN: llvm-objcopy --rename-section=.foo=.bar,ALLOC,LOAD,NOLOAD,READONLY,DEBUG,CODE,DATA,ROM,CONTENTS,MERGE,STRINGS,SHARE \
54+
# RUN: --rename-section=.baz=.blah,ALLOC,LOAD,NOLOAD,READONLY,DEBUG,CODE,DATA,ROM,CONTENTS,MERGE,STRINGS,SHARE %t %t.upper
55+
# RUN: llvm-readobj --sections %t.upper | FileCheck %s --check-prefixes=CHECK,PROGBITS,ALLOC,EXEC,MERGE,STRINGS
56+
# RUN: llvm-objcopy --rename-section=.foo=.bar,aLlOc,LoAd,NoLoad,rEAdONly,Debug,codE,DaTa,rOm,CoNtEnTs,mErGe,sTRINGs,SharE \
57+
# RUN: --rename-section=.baz=.blah,aLlOc,LoAd,NoLoad,rEAdONly,Debug,codE,DaTa,rOm,CoNtEnTs,mErGe,sTRINGs,SharE %t %t.mixed
58+
# RUN: llvm-readobj --sections %t.mixed | FileCheck %s --check-prefixes=CHECK,PROGBITS,ALLOC,EXEC,MERGE,STRINGS
59+
5260
!ELF
5361
FileHeader:
5462
Class: ELFCLASS64

llvm/test/tools/llvm-objcopy/ELF/set-section-flags.test

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,16 @@
5757
# Setting flags for the same section multiple times:
5858
# RUN: not llvm-objcopy --set-section-flags=.foo=alloc --set-section-flags=.foo=load %t %t2 2>&1 | FileCheck %s --check-prefix=MULTIPLE-SETS
5959

60+
# Upper and mixed-case flags:
61+
# RUN: llvm-objcopy --set-section-flags=.foo=ALLOC,LOAD,NOLOAD,READONLY,DEBUG,CODE,DATA,ROM,CONTENTS,MERGE,STRINGS,SHARE \
62+
# RUN: --set-section-flags=.baz=ALLOC,LOAD,NOLOAD,READONLY,DEBUG,CODE,DATA,ROM,CONTENTS,MERGE,STRINGS,SHARE \
63+
# RUN: --set-section-flags=.rela.baz=ALLOC,LOAD,NOLOAD,READONLY,DEBUG,CODE,DATA,ROM,CONTENTS,MERGE,STRINGS,SHARE %t %t.upper
64+
# RUN: llvm-readobj --sections %t.upper | FileCheck %s --check-prefixes=CHECK,PROGBITS,ALLOC,EXEC,MERGE,STRINGS
65+
# RUN: llvm-objcopy --set-section-flags=.foo=aLlOc,LoAd,NoLoad,rEAdONly,Debug,codE,DaTa,rOm,CoNtEnTs,mErGe,sTRINGs,SharE \
66+
# RUN: --set-section-flags=.baz=aLlOc,LoAd,NoLoad,rEAdONly,Debug,codE,DaTa,rOm,CoNtEnTs,mErGe,sTRINGs,SharE \
67+
# RUN: --set-section-flags=.rela.baz=aLlOc,LoAd,NoLoad,rEAdONly,Debug,codE,DaTa,rOm,CoNtEnTs,mErGe,sTRINGs,SharE %t %t.mixed
68+
# RUN: llvm-readobj --sections %t.mixed | FileCheck %s --check-prefixes=CHECK,PROGBITS,ALLOC,EXEC,MERGE,STRINGS
69+
6070
!ELF
6171
FileHeader:
6272
Class: ELFCLASS64

llvm/tools/llvm-objcopy/CopyConfig.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -94,18 +94,18 @@ class StripOptTable : public opt::OptTable {
9494

9595
static SectionFlag parseSectionRenameFlag(StringRef SectionName) {
9696
return llvm::StringSwitch<SectionFlag>(SectionName)
97-
.Case("alloc", SectionFlag::SecAlloc)
98-
.Case("load", SectionFlag::SecLoad)
99-
.Case("noload", SectionFlag::SecNoload)
100-
.Case("readonly", SectionFlag::SecReadonly)
101-
.Case("debug", SectionFlag::SecDebug)
102-
.Case("code", SectionFlag::SecCode)
103-
.Case("data", SectionFlag::SecData)
104-
.Case("rom", SectionFlag::SecRom)
105-
.Case("merge", SectionFlag::SecMerge)
106-
.Case("strings", SectionFlag::SecStrings)
107-
.Case("contents", SectionFlag::SecContents)
108-
.Case("share", SectionFlag::SecShare)
97+
.CaseLower("alloc", SectionFlag::SecAlloc)
98+
.CaseLower("load", SectionFlag::SecLoad)
99+
.CaseLower("noload", SectionFlag::SecNoload)
100+
.CaseLower("readonly", SectionFlag::SecReadonly)
101+
.CaseLower("debug", SectionFlag::SecDebug)
102+
.CaseLower("code", SectionFlag::SecCode)
103+
.CaseLower("data", SectionFlag::SecData)
104+
.CaseLower("rom", SectionFlag::SecRom)
105+
.CaseLower("merge", SectionFlag::SecMerge)
106+
.CaseLower("strings", SectionFlag::SecStrings)
107+
.CaseLower("contents", SectionFlag::SecContents)
108+
.CaseLower("share", SectionFlag::SecShare)
109109
.Default(SectionFlag::SecNone);
110110
}
111111

0 commit comments

Comments
 (0)