Skip to content

Commit 7a36a1d

Browse files
committed
Reject optimizer options as invalid in linker and Standard JSON modes
1 parent b7c1249 commit 7a36a1d

File tree

43 files changed

+52
-4
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+52
-4
lines changed

Changelog.md

+2-1

solc/CommandLineParser.cpp

+20
Original file line numberDiff line numberDiff line change
@@ -940,6 +940,26 @@ General Information)").c_str(),
940940
if (!parseInputPathsAndRemappings())
941941
return false;
942942

943+
if (
944+
m_options.input.mode != InputMode::Compiler &&
945+
m_options.input.mode != InputMode::CompilerWithASTImport &&
946+
m_options.input.mode != InputMode::Assembler
947+
)
948+
{
949+
if (!m_args[g_strOptimizeRuns].defaulted())
950+
{
951+
serr() << "Option --" << g_strOptimizeRuns << " is only valid in compiler and assembler modes." << endl;
952+
return false;
953+
}
954+
955+
for (string const& option: {g_strOptimize, g_strNoOptimizeYul, g_strOptimizeYul, g_strYulOptimizations})
956+
if (m_args.count(option) > 0)
957+
{
958+
serr() << "Option --" << option << " is only valid in compiler and assembler modes." << endl;
959+
return false;
960+
}
961+
}
962+
943963
if (m_options.input.mode == InputMode::StandardJson)
944964
return true;
945965

Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
--no-optimize-yul --link --libraries input.sol:L=0x1234567890123456789012345678901234567890
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Option --no-optimize-yul is only valid in compiler and assembler modes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1

test/cmdlineTests/linker_mode_invalid_option_no_optimize_yul/input.bin

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
--optimize --link --libraries input.sol:L=0x1234567890123456789012345678901234567890
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Option --optimize is only valid in compiler and assembler modes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1

test/cmdlineTests/linker_mode_invalid_option_optimize/input.bin

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
--optimize-runs 1000 --link --libraries input.sol:L=0x1234567890123456789012345678901234567890
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Option --optimize-runs is only valid in compiler and assembler modes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1

test/cmdlineTests/linker_mode_invalid_option_optimize_runs/input.bin

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
--optimize-yul --link --libraries input.sol:L=0x1234567890123456789012345678901234567890
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Option --optimize-yul is only valid in compiler and assembler modes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1

test/cmdlineTests/linker_mode_invalid_option_optimize_yul/input.bin

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
--yul-optimizations a --link --libraries input.sol:L=0x1234567890123456789012345678901234567890
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Option --yul-optimizations is only valid in compiler and assembler modes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1

test/cmdlineTests/linker_mode_invalid_option_yul_optimizations/input.bin

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
--no-optimize-yul
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Option --no-optimize-yul is only valid in compiler and assembler modes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1

test/cmdlineTests/standard_invalid_option_no_optimize_yul/input.json

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
--optimize
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Option --optimize is only valid in compiler and assembler modes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1

test/cmdlineTests/standard_invalid_option_optimize/input.json

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
--optimize-runs 1000
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Option --optimize-runs is only valid in compiler and assembler modes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1

test/cmdlineTests/standard_invalid_option_optimize_runs/input.json

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
--optimize-yul
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Option --optimize-yul is only valid in compiler and assembler modes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1

test/cmdlineTests/standard_invalid_option_optimize_yul/input.json

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
--yul-optimizations a
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Option --yul-optimizations is only valid in compiler and assembler modes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1

test/cmdlineTests/standard_invalid_option_yul_optimizations/input.json

Whitespace-only changes.

test/solc/CommandLineParser.cpp

-3
Original file line numberDiff line numberDiff line change
@@ -368,9 +368,6 @@ BOOST_AUTO_TEST_CASE(standard_json_mode_options)
368368
"--combined-json=abi,bin", // Accepted but has no effect in Standard JSON mode
369369
"--metadata-hash=swarm", // Ignored in Standard JSON mode
370370
"--metadata-literal", // Ignored in Standard JSON mode
371-
"--optimize", // Ignored in Standard JSON mode
372-
"--optimize-runs=1000", // Ignored in Standard JSON mode
373-
"--yul-optimizations=agf",
374371
"--model-checker-contracts=" // Ignored in Standard JSON mode
375372
"contract1.yul:A,"
376373
"contract2.yul:B",

0 commit comments

Comments
 (0)