Title: [282949] branches/safari-612-branch/Source/_javascript_Core
Revision
282949
Author
[email protected]
Date
2021-09-22 23:06:00 -0700 (Wed, 22 Sep 2021)

Log Message

Cherry-pick r281972. rdar://problem/83429723

    [JSC] Fix WebKitAdditions directory traversal in offlineasm
    https://bugs.webkit.org/show_bug.cgi?id=229841

    Reviewed by Mark Lam.

    When DEPLOYMENT_LOCATION is YES, WebKitAdditions directory becomes /usr/local/include/WebKitAdditions.
    This patch adds --use-deployment-location option to generate_offset_extractor.rb, generate_settings_extractor.rb,
    and asm.rb. And they pass it to parser to change the include directory.

    * _javascript_Core.xcodeproj/project.pbxproj:
    * offlineasm/asm.rb:
    * offlineasm/generate_offset_extractor.rb:
    * offlineasm/generate_settings_extractor.rb:
    * offlineasm/parser.rb:

    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@281972 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Modified Paths

Diff

Modified: branches/safari-612-branch/Source/_javascript_Core/ChangeLog (282948 => 282949)


--- branches/safari-612-branch/Source/_javascript_Core/ChangeLog	2021-09-23 05:50:37 UTC (rev 282948)
+++ branches/safari-612-branch/Source/_javascript_Core/ChangeLog	2021-09-23 06:06:00 UTC (rev 282949)
@@ -1,5 +1,43 @@
 2021-09-22  Alan Coon  <[email protected]>
 
+        Cherry-pick r281972. rdar://problem/83429723
+
+    [JSC] Fix WebKitAdditions directory traversal in offlineasm
+    https://bugs.webkit.org/show_bug.cgi?id=229841
+    
+    Reviewed by Mark Lam.
+    
+    When DEPLOYMENT_LOCATION is YES, WebKitAdditions directory becomes /usr/local/include/WebKitAdditions.
+    This patch adds --use-deployment-location option to generate_offset_extractor.rb, generate_settings_extractor.rb,
+    and asm.rb. And they pass it to parser to change the include directory.
+    
+    * _javascript_Core.xcodeproj/project.pbxproj:
+    * offlineasm/asm.rb:
+    * offlineasm/generate_offset_extractor.rb:
+    * offlineasm/generate_settings_extractor.rb:
+    * offlineasm/parser.rb:
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@281972 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2021-09-02  Yusuke Suzuki  <[email protected]>
+
+            [JSC] Fix WebKitAdditions directory traversal in offlineasm
+            https://bugs.webkit.org/show_bug.cgi?id=229841
+
+            Reviewed by Mark Lam.
+
+            When DEPLOYMENT_LOCATION is YES, WebKitAdditions directory becomes /usr/local/include/WebKitAdditions.
+            This patch adds --use-deployment-location option to generate_offset_extractor.rb, generate_settings_extractor.rb,
+            and asm.rb. And they pass it to parser to change the include directory.
+
+            * _javascript_Core.xcodeproj/project.pbxproj:
+            * offlineasm/asm.rb:
+            * offlineasm/generate_offset_extractor.rb:
+            * offlineasm/generate_settings_extractor.rb:
+            * offlineasm/parser.rb:
+
+2021-09-22  Alan Coon  <[email protected]>
+
         Cherry-pick r282707. rdar://problem/83429953
 
     [JSC] Add fast property enumeration mode for JSON.stringify

Modified: branches/safari-612-branch/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj (282948 => 282949)


--- branches/safari-612-branch/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj	2021-09-23 05:50:37 UTC (rev 282948)
+++ branches/safari-612-branch/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj	2021-09-23 06:06:00 UTC (rev 282949)
@@ -10122,6 +10122,7 @@
 				86D446EA25B2125300ECAE75 /* JITOpaqueByproducts.h in Headers */,
 				E3CA3A4E2527AB2F004802BF /* JITOperationList.h in Headers */,
 				0F24E54D17EE274900ABB217 /* JITOperations.h in Headers */,
+				6B2360CE26C6253D0054AEEC /* JITOperationValidation.h in Headers */,
 				726B91B726581653008E6F82 /* JITPlan.h in Headers */,
 				72131BFA26587EF2007114CF /* JITPlanStage.h in Headers */,
 				FE3A06C01C11041A00390FDD /* JITRightShiftGenerator.h in Headers */,
@@ -11179,7 +11180,7 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			shellPath = /bin/sh;
-			shellScript = "set -e\n\nmkdir -p \"${BUILT_PRODUCTS_DIR}/LLIntOffsets/${ARCHS}\"\n\n/usr/bin/env ruby \"${SRCROOT}/offlineasm/generate_offset_extractor.rb\" \"-I${BUILT_PRODUCTS_DIR}/DerivedSources/_javascript_Core\" \"${SRCROOT}/llint/LowLevelInterpreter.asm\"  \"${BUILT_PRODUCTS_DIR}/JSCLLIntSettingsExtractor\" \"${BUILT_PRODUCTS_DIR}/LLIntOffsets/${ARCHS}/LLIntDesiredOffsets.h\" \"${ARCHS} C_LOOP\" \"${BUILD_VARIANTS}\"\n";
+			shellScript = "set -e\n\nOFFLINEASM_ARGS=\"\"\nif [[ \"${DEPLOYMENT_LOCATION}\" == \"YES\" ]]; then\n    OFFLINEASM_ARGS=\"${OFFLINEASM_ARGS} --use-deployment-location\"\nfi\n\nmkdir -p \"${BUILT_PRODUCTS_DIR}/LLIntOffsets/${ARCHS}\"\n\n/usr/bin/env ruby \"${SRCROOT}/offlineasm/generate_offset_extractor.rb\" \"-I${BUILT_PRODUCTS_DIR}/DerivedSources/_javascript_Core\" \"${SRCROOT}/llint/LowLevelInterpreter.asm\"  \"${BUILT_PRODUCTS_DIR}/JSCLLIntSettingsExtractor\" \"${BUILT_PRODUCTS_DIR}/LLIntOffsets/${ARCHS}/LLIntDesiredOffsets.h\" \"${ARCHS} C_LOOP\" \"${BUILD_VARIANTS}\" ${OFFLINEASM_ARGS}\n";
 		};
 		14BD6892215191450050DAFF /* Generate Derived Sources */ = {
 			isa = PBXShellScriptBuildPhase;
@@ -11193,7 +11194,7 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			shellPath = /bin/sh;
-			shellScript = "set -e\n\nmkdir -p \"${BUILT_PRODUCTS_DIR}/LLIntOffsets/${ARCHS}\"\n\n/usr/bin/env ruby \"${SRCROOT}/offlineasm/generate_settings_extractor.rb\" \"-I${BUILT_PRODUCTS_DIR}/DerivedSources/_javascript_Core\" \"${SRCROOT}/llint/LowLevelInterpreter.asm\" \"${BUILT_PRODUCTS_DIR}/LLIntOffsets/${ARCHS}/LLIntDesiredSettings.h\" \"${ARCHS} C_LOOP\"\n";
+			shellScript = "set -e\n\nOFFLINEASM_ARGS=\"\"\nif [[ \"${DEPLOYMENT_LOCATION}\" == \"YES\" ]]; then\n    OFFLINEASM_ARGS=\"${OFFLINEASM_ARGS} --use-deployment-location\"\nfi\n\nmkdir -p \"${BUILT_PRODUCTS_DIR}/LLIntOffsets/${ARCHS}\"\n\n/usr/bin/env ruby \"${SRCROOT}/offlineasm/generate_settings_extractor.rb\" \"-I${BUILT_PRODUCTS_DIR}/DerivedSources/_javascript_Core\" \"${SRCROOT}/llint/LowLevelInterpreter.asm\" \"${BUILT_PRODUCTS_DIR}/LLIntOffsets/${ARCHS}/LLIntDesiredSettings.h\" \"${ARCHS} C_LOOP\" ${OFFLINEASM_ARGS}\n";
 		};
 		1A02D9A81B34A882000D1522 /* Add Symlink in /System/Library/PrivateFrameworks */ = {
 			isa = PBXShellScriptBuildPhase;
@@ -11439,7 +11440,7 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			shellPath = /bin/sh;
-			shellScript = "if [[ \"${ACTION}\" == \"installhdrs\" ]]; then\n    exit 0\nfi\n\ncd \"${BUILT_PRODUCTS_DIR}/DerivedSources/_javascript_Core\"\n\n/usr/bin/env ruby _javascript_Core/offlineasm/asm.rb \"-I${BUILT_PRODUCTS_DIR}/DerivedSources/_javascript_Core\" _javascript_Core/llint/LowLevelInterpreter.asm \"${BUILT_PRODUCTS_DIR}/JSCLLIntOffsetsExtractor\" LLIntAssembly.h \"${BUILD_VARIANTS}\" || exit 1\n";
+			shellScript = "if [[ \"${ACTION}\" == \"installhdrs\" ]]; then\n    exit 0\nfi\n\nOFFLINEASM_ARGS=\"\"\nif [[ \"${DEPLOYMENT_LOCATION}\" == \"YES\" ]]; then\n    OFFLINEASM_ARGS=\"${OFFLINEASM_ARGS} --use-deployment-location\"\nfi\n\ncd \"${BUILT_PRODUCTS_DIR}/DerivedSources/_javascript_Core\"\n\n/usr/bin/env ruby _javascript_Core/offlineasm/asm.rb \"-I${BUILT_PRODUCTS_DIR}/DerivedSources/_javascript_Core\" _javascript_Core/llint/LowLevelInterpreter.asm \"${BUILT_PRODUCTS_DIR}/JSCLLIntOffsetsExtractor\" LLIntAssembly.h \"${BUILD_VARIANTS}\" ${OFFLINEASM_ARGS} || exit 1\n";
 		};
 		65FB3F6509D11E9100F49DEB /* Generate Derived Sources */ = {
 			isa = PBXShellScriptBuildPhase;

Modified: branches/safari-612-branch/Source/_javascript_Core/offlineasm/asm.rb (282948 => 282949)


--- branches/safari-612-branch/Source/_javascript_Core/offlineasm/asm.rb	2021-09-23 05:50:37 UTC (rev 282948)
+++ branches/safari-612-branch/Source/_javascript_Core/offlineasm/asm.rb	2021-09-23 06:06:00 UTC (rev 282949)
@@ -335,11 +335,14 @@
 
 $options = {}
 OptionParser.new do |opts|
-    opts.banner = "Usage: asm.rb asmFile offsetsFile outputFileName [--assembler=<ASM>]"
+    opts.banner = "Usage: asm.rb asmFile offsetsFile outputFileName [--assembler=<ASM>] [--use-deployment-location]"
     # This option is currently only used to specify the masm assembler
     opts.on("--assembler=[ASM]", "Specify an assembler to use.") do |assembler|
         $options[:assembler] = assembler
     end
+    opts.on("--use-deployment-location", "Flag to use deployment location.") do |flag|
+        $options[:use_deployment_location] = flag
+    end
 end.parse!
 
 begin
@@ -358,7 +361,7 @@
 $commentPrefix = $emitWinAsm ? ";" : "//"
 
 inputHash =
-    $commentPrefix + " offlineasm input hash: " + parseHash(asmFile) +
+    $commentPrefix + " offlineasm input hash: " + parseHash(asmFile, $options) +
     " " + Digest::SHA1.hexdigest(configurationList.map{|v| (v[0] + [v[1]]).join(' ')}.join(' ')) +
     " " + selfHash +
     " " + Digest::SHA1.hexdigest($options.has_key?(:assembler) ? $options[:assembler] : "")
@@ -387,7 +390,7 @@
 
     $asm = Assembler.new($output)
     
-    ast = parse(asmFile)
+    ast = parse(asmFile, $options)
     settingsCombinations = computeSettingsCombinations(ast)
 
     configurationList.each {

Modified: branches/safari-612-branch/Source/_javascript_Core/offlineasm/generate_offset_extractor.rb (282948 => 282949)


--- branches/safari-612-branch/Source/_javascript_Core/offlineasm/generate_offset_extractor.rb	2021-09-23 05:50:37 UTC (rev 282948)
+++ branches/safari-612-branch/Source/_javascript_Core/offlineasm/generate_offset_extractor.rb	2021-09-23 06:06:00 UTC (rev 282949)
@@ -29,6 +29,7 @@
 require "backends"
 require "digest/sha1"
 require "offsets"
+require 'optparse'
 require "parser"
 require "self_hash"
 require "settings"
@@ -45,6 +46,14 @@
 
 variants = ARGV.shift.split(/[,\s]+/)
 
+$options = {}
+OptionParser.new do |opts|
+    opts.banner = "Usage: generate_offset_extractor.rb asmFile settingFile outputFileName backends variants [--use-deployment-location]"
+    opts.on("--use-deployment-location", "Flag to use deployment location.") do |flag|
+        $options[:use_deployment_location] = flag
+    end
+end.parse!
+
 begin
     configurationList = configurationIndicesForVariants(settingsFlnm, variants)
 rescue MissingMagicValuesException
@@ -60,7 +69,7 @@
 end
 
 configurationHash = Digest::SHA1.hexdigest(configurationList.join(' '))
-inputHash = "// OffsetExtractor input hash: #{parseHash(inputFlnm)} #{configurationHash} #{selfHash}"
+inputHash = "// OffsetExtractor input hash: #{parseHash(inputFlnm, $options)} #{configurationHash} #{selfHash}"
 
 if FileTest.exist? outputFlnm
     File.open(outputFlnm, "r") {
@@ -73,7 +82,7 @@
     }
 end
 
-ast = parse(inputFlnm)
+ast = parse(inputFlnm, $options)
 settingsCombinations = computeSettingsCombinations(ast)
 
 File.open(outputFlnm, "w") {

Modified: branches/safari-612-branch/Source/_javascript_Core/offlineasm/generate_settings_extractor.rb (282948 => 282949)


--- branches/safari-612-branch/Source/_javascript_Core/offlineasm/generate_settings_extractor.rb	2021-09-23 05:50:37 UTC (rev 282948)
+++ branches/safari-612-branch/Source/_javascript_Core/offlineasm/generate_settings_extractor.rb	2021-09-23 06:06:00 UTC (rev 282949)
@@ -29,6 +29,7 @@
 require "backends"
 require "digest/sha1"
 require "offsets"
+require 'optparse'
 require "parser"
 require "self_hash"
 require "settings"
@@ -42,8 +43,16 @@
 validBackends = canonicalizeBackendNames(ARGV.shift.split(/[,\s]+/))
 includeOnlyBackends(validBackends)
 
-inputHash = "// SettingsExtractor input hash: #{parseHash(inputFlnm)} #{selfHash}"
+$options = {}
+OptionParser.new do |opts|
+    opts.banner = "Usage: generate_settings_extractor.rb asmFile settingFile [--use-deployment-location]"
+    opts.on("--use-deployment-location", "Flag to use deployment location.") do |flag|
+        $options[:use_deployment_location] = flag
+    end
+end.parse!
 
+inputHash = "// SettingsExtractor input hash: #{parseHash(inputFlnm, $options)} #{selfHash}"
+
 if FileTest.exist? outputFlnm
     File.open(outputFlnm, "r") {
         | inp |
@@ -55,7 +64,7 @@
     }
 end
 
-originalAST = parse(inputFlnm)
+originalAST = parse(inputFlnm, $options)
 prunedAST = Sequence.new(originalAST.codeOrigin, originalAST.filter(Setting))
 
 File.open(outputFlnm, "w") {

Modified: branches/safari-612-branch/Source/_javascript_Core/offlineasm/parser.rb (282948 => 282949)


--- branches/safari-612-branch/Source/_javascript_Core/offlineasm/parser.rb	2021-09-23 05:50:37 UTC (rev 282948)
+++ branches/safari-612-branch/Source/_javascript_Core/offlineasm/parser.rb	2021-09-23 06:06:00 UTC (rev 282949)
@@ -259,7 +259,7 @@
 #
 
 class Parser
-    def initialize(data, fileName)
+    def initialize(data, fileName, options)
         @tokens = lex(data, fileName)
         @idx = 0
         @annotation = nil
@@ -266,6 +266,7 @@
         # FIXME: CMake does not currently set BUILT_PRODUCTS_DIR.
         # https://bugs.webkit.org/show_bug.cgi?id=229340
         @buildProductsDirectory = ENV['BUILT_PRODUCTS_DIR'];
+        @options = options
     end
     
     def parseError(*comment)
@@ -830,7 +831,11 @@
                 parseError unless isIdentifier(@tokens[@idx])
                 moduleName = @tokens[@idx].string
                 @idx += 1
-                additionsDirectoryName = "#{@buildProductsDirectory}/usr/local/include/WebKitAdditions/"
+                if @options[:use_deployment_location]
+                    additionsDirectoryName = "/usr/local/include/WebKitAdditions/"
+                else
+                    additionsDirectoryName = "#{@buildProductsDirectory}/usr/local/include/WebKitAdditions/"
+                end
                 fileName = IncludeFile.new(moduleName, additionsDirectoryName).fileName
                 if not File.exists?(fileName)
                     fileName = IncludeFile.new(moduleName, @tokens[@idx].codeOrigin.fileName.dirname).fileName
@@ -837,7 +842,7 @@
                 end
                 fileExists = File.exists?(fileName)
                 raise "File not found: #{fileName}" if not fileExists and not isOptional
-                list << parse(fileName) if fileExists
+                list << parse(fileName, @options) if fileExists
             else
                 parseError "Expecting terminal #{final} #{comment}"
             end
@@ -862,7 +867,11 @@
                 parseError unless isIdentifier(@tokens[@idx])
                 moduleName = @tokens[@idx].string
                 @idx += 1
-                additionsDirectoryName = "#{@buildProductsDirectory}/usr/local/include/WebKitAdditions/"
+                if @options[:use_deployment_location]
+                    additionsDirectoryName = "/usr/local/include/WebKitAdditions/"
+                else
+                    additionsDirectoryName = "#{@buildProductsDirectory}/usr/local/include/WebKitAdditions/"
+                end
                 fileName = IncludeFile.new(moduleName, additionsDirectoryName).fileName
                 if not File.exists?(fileName)
                     fileName = IncludeFile.new(moduleName, @tokens[@idx].codeOrigin.fileName.dirname).fileName
@@ -890,17 +899,17 @@
     return data
 end
 
-def parseData(data, fileName)
-    parser = Parser.new(data, SourceFile.new(fileName))
+def parseData(data, fileName, options)
+    parser = Parser.new(data, SourceFile.new(fileName), options)
     parser.parseSequence(nil, "")
 end
 
-def parse(fileName)
-    parseData(readTextFile(fileName), fileName)
+def parse(fileName, options)
+    parseData(readTextFile(fileName), fileName, options)
 end
 
-def parseHash(fileName)
-    parser = Parser.new(readTextFile(fileName), SourceFile.new(fileName))
+def parseHash(fileName, options)
+    parser = Parser.new(readTextFile(fileName), SourceFile.new(fileName), options)
     fileList = parser.parseIncludes(nil, "")
     fileListHash(fileList)
 end
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to