Skip to content

Commit 7e7b187

Browse files
committed
Update new option to --exclude-pagezero.
Address code review comments.
1 parent 91ba62d commit 7e7b187

File tree

3 files changed

+15
-20
lines changed

3 files changed

+15
-20
lines changed

llvm/test/tools/llvm-size/macho-pagezero.test

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,16 @@
1-
# Test the -z option to skip __PAGEZERO segment in Mach-O files
1+
## Test the --exclude-pagezero option to skip __PAGEZERO segment in Mach-O files.
22

33
# RUN: yaml2obj %s --docnum=1 -o %t-pagezero.o
44
# RUN: llvm-size %t-pagezero.o | \
5-
# RUN: FileCheck %s --check-prefix=NORMAL --match-full-lines \
6-
# RUN: --strict-whitespace --implicit-check-not={{.}}
7-
# RUN: llvm-size -z %t-pagezero.o | \
8-
# RUN: FileCheck %s --check-prefix=SKIP --match-full-lines \
9-
# RUN: --strict-whitespace --implicit-check-not={{.}}
5+
# RUN: FileCheck %s --check-prefix=NORMAL --match-full-lines
6+
# RUN: llvm-size --exclude-pagezero %t-pagezero.o | \
7+
# RUN: FileCheck %s --check-prefix=SKIP --match-full-lines
108

119
# NORMAL:__TEXT __DATA __OBJC others dec hex
12-
# NORMAL-NEXT:20 100 0 4096 4216 1078
10+
# NORMAL-NEXT:20 100 0 4096 4216 1078
1311

1412
# SKIP:__TEXT __DATA __OBJC others dec hex
15-
# SKIP-NEXT:20 100 0 0 120 78
13+
# SKIP-NEXT:20 100 0 0 120 78
1614

1715
--- !mach-o
1816
FileHeader:

llvm/tools/llvm-size/Opts.td

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,9 @@ def grp_mach_o : OptionGroup<"kind">, HelpText<"OPTIONS (Mach-O specific)">;
2121
def arch_EQ : Joined<["--"], "arch=">, HelpText<"architecture(s) from a Mach-O file to dump">, Group<grp_mach_o>;
2222
def : Separate<["--", "-"], "arch">, Alias<arch_EQ>;
2323
def l : F<"l", "When format is darwin, use long format to include addresses and offsets">, Group<grp_mach_o>;
24-
def z : F<"z", "Do not include __PAGEZERO segment in totals">,
25-
Group<grp_mach_o>;
24+
def exclude_pagezero
25+
: FF<"exclude-pagezero", "Do not include __PAGEZERO segment in totals">,
26+
Group<grp_mach_o>;
2627

2728
def : F<"A", "Alias for --format">, Alias<format_EQ>, AliasArgs<["sysv"]>;
2829
def : F<"B", "Alias for --format">, Alias<format_EQ>, AliasArgs<["berkeley"]>;

llvm/tools/llvm-size/llvm-size.cpp

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ static bool DarwinLongFormat;
7979
static RadixTy Radix = RadixTy::decimal;
8080
static bool TotalSizes;
8181
static bool HasMachOFiles = false;
82-
static bool SkipPageZero = false;
82+
static bool ExcludePageZero = false;
8383

8484
static std::vector<std::string> InputFilenames;
8585

@@ -308,15 +308,13 @@ static void printDarwinSegmentSizes(MachOObjectFile *MachO) {
308308
}
309309
} else {
310310
StringRef SegmentName = StringRef(Seg.segname);
311-
if (SkipPageZero && SegmentName == "__PAGEZERO")
312-
; // Skip __PAGEZERO segment
313-
else if (SegmentName == "__TEXT")
311+
if (SegmentName == "__TEXT")
314312
total_text += Seg.vmsize;
315313
else if (SegmentName == "__DATA")
316314
total_data += Seg.vmsize;
317315
else if (SegmentName == "__OBJC")
318316
total_objc += Seg.vmsize;
319-
else
317+
else if (!ExcludePageZero || SegmentName != "__PAGEZERO")
320318
total_others += Seg.vmsize;
321319
}
322320
} else if (Load.C.cmd == MachO::LC_SEGMENT) {
@@ -336,15 +334,13 @@ static void printDarwinSegmentSizes(MachOObjectFile *MachO) {
336334
}
337335
} else {
338336
StringRef SegmentName = StringRef(Seg.segname);
339-
if (SkipPageZero && SegmentName == "__PAGEZERO")
340-
; // Skip __PAGEZERO segment
341-
else if (SegmentName == "__TEXT")
337+
if (SegmentName == "__TEXT")
342338
total_text += Seg.vmsize;
343339
else if (SegmentName == "__DATA")
344340
total_data += Seg.vmsize;
345341
else if (SegmentName == "__OBJC")
346342
total_objc += Seg.vmsize;
347-
else
343+
else if (!ExcludePageZero || SegmentName != "__PAGEZERO")
348344
total_others += Seg.vmsize;
349345
}
350346
}
@@ -919,7 +915,7 @@ int llvm_size_main(int argc, char **argv, const llvm::ToolContext &) {
919915

920916
ELFCommons = Args.hasArg(OPT_common);
921917
DarwinLongFormat = Args.hasArg(OPT_l);
922-
SkipPageZero = Args.hasArg(OPT_z);
918+
ExcludePageZero = Args.hasArg(OPT_exclude_pagezero);
923919
TotalSizes = Args.hasArg(OPT_totals);
924920
StringRef V = Args.getLastArgValue(OPT_format_EQ, "berkeley");
925921
if (V == "berkeley")

0 commit comments

Comments
 (0)