[JSC] Make disassembler data structures constant read-only data
authorysuzuki@apple.com <ysuzuki@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 30 Jan 2019 22:12:52 +0000 (22:12 +0000)
committerysuzuki@apple.com <ysuzuki@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 30 Jan 2019 22:12:52 +0000 (22:12 +0000)
https://bugs.webkit.org/show_bug.cgi?id=194041

Reviewed by Mark Lam.

Bunch of disassembler data structures are not marked "const", which prevents the loader to put them in read-only region.
This patch makes them "const".

* disassembler/ARM64/A64DOpcode.cpp:
* disassembler/udis86/ud_itab.py:
(UdItabGenerator.genOpcodeTablesLookupIndex):
(UdItabGenerator.genInsnTable):
(UdItabGenerator.genMnemonicsList):
(genItabH):
* disassembler/udis86/udis86_decode.h:
* disassembler/udis86/udis86_syn.c:
* disassembler/udis86/udis86_syn.h:
* disassembler/udis86/udis86_types.h:

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

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/disassembler/ARM64/A64DOpcode.cpp
Source/JavaScriptCore/disassembler/udis86/ud_itab.py
Source/JavaScriptCore/disassembler/udis86/udis86_decode.h
Source/JavaScriptCore/disassembler/udis86/udis86_syn.c
Source/JavaScriptCore/disassembler/udis86/udis86_syn.h
Source/JavaScriptCore/disassembler/udis86/udis86_types.h

index 05d017e..036239a 100644 (file)
@@ -1,5 +1,26 @@
 2019-01-30  Yusuke Suzuki  <ysuzuki@apple.com>
 
+        [JSC] Make disassembler data structures constant read-only data
+        https://bugs.webkit.org/show_bug.cgi?id=194041
+
+        Reviewed by Mark Lam.
+
+        Bunch of disassembler data structures are not marked "const", which prevents the loader to put them in read-only region.
+        This patch makes them "const".
+
+        * disassembler/ARM64/A64DOpcode.cpp:
+        * disassembler/udis86/ud_itab.py:
+        (UdItabGenerator.genOpcodeTablesLookupIndex):
+        (UdItabGenerator.genInsnTable):
+        (UdItabGenerator.genMnemonicsList):
+        (genItabH):
+        * disassembler/udis86/udis86_decode.h:
+        * disassembler/udis86/udis86_syn.c:
+        * disassembler/udis86/udis86_syn.h:
+        * disassembler/udis86/udis86_types.h:
+
+2019-01-30  Yusuke Suzuki  <ysuzuki@apple.com>
+
         Unreviewed, update the builtin test results
         https://bugs.webkit.org/show_bug.cgi?id=194015
 
index 5430526..e28d5f9 100644 (file)
@@ -64,7 +64,7 @@ struct OpcodeGroupInitializer {
 #define OPCODE_GROUP_ENTRY(groupIndex, groupClass) \
 { groupIndex, groupClass::mask, groupClass::pattern, groupClass::format }
 
-static OpcodeGroupInitializer opcodeGroupList[] = {
+static const OpcodeGroupInitializer opcodeGroupList[] = {
     OPCODE_GROUP_ENTRY(0x08, A64DOpcodeLoadStoreRegisterPair),
     OPCODE_GROUP_ENTRY(0x08, A64DOpcodeLoadStoreExclusive),
     OPCODE_GROUP_ENTRY(0x09, A64DOpcodeLoadStoreRegisterPair),
index ef011d2..41f710e 100644 (file)
@@ -249,7 +249,7 @@ class UdItabGenerator:
 
     def genOpcodeTablesLookupIndex(self):
         self.ItabC.write( "\n\n"  );
-        self.ItabC.write( "struct ud_lookup_table_list_entry ud_lookup_table_list[] = {\n" )
+        self.ItabC.write( "const struct ud_lookup_table_list_entry ud_lookup_table_list[] = {\n" )
         for table in self.tables.getTableList():
             f0 = self.getTableName(table) + ","
             f1 = table.label() + ","
@@ -260,7 +260,7 @@ class UdItabGenerator:
 
 
     def genInsnTable( self ):
-        self.ItabC.write( "struct ud_itab_entry ud_itab[] = {\n" );
+        self.ItabC.write( "const struct ud_itab_entry ud_itab[] = {\n" );
         for insn in self.tables.getInsnList():
             opr_c = [ "O_NONE", "O_NONE", "O_NONE", "O_NONE" ]
             pfx_c = []
@@ -293,7 +293,7 @@ class UdItabGenerator:
     def genMnemonicsList(self):
         mnemonics = self.getMnemonicsList()
         self.ItabC.write( "\n\n"  );
-        self.ItabC.write( "const char* ud_mnemonics_str[] = {\n    " )
+        self.ItabC.write( "const char* const ud_mnemonics_str[] = {\n    " )
         self.ItabC.write( ",\n    ".join( [ "\"%s\"" % m for m in mnemonics ] ) )
         self.ItabC.write( "\n};\n" )
  
@@ -323,7 +323,7 @@ class UdItabGenerator:
         self.ItabH.write( enum )
         self.ItabH.write( "\n" )
 
-        self.ItabH.write( "extern const char * ud_mnemonics_str[];\n" )
+        self.ItabH.write( "extern const char * const ud_mnemonics_str[];\n" )
 
         self.ItabH.write( "\n#endif /* UD_ITAB_H */\n" )
     
index 411c883..d925d10 100644 (file)
@@ -185,8 +185,8 @@ struct ud_lookup_table_list_entry {
     const char *meta;
 };
      
-extern struct ud_itab_entry ud_itab[];
-extern struct ud_lookup_table_list_entry ud_lookup_table_list[];
+extern const struct ud_itab_entry ud_itab[];
+extern const struct ud_lookup_table_list_entry ud_lookup_table_list[];
 
 #endif /* UD_DECODE_H */
 
index 4417d99..e9e0ad3 100644 (file)
@@ -37,7 +37,7 @@
  * Register Table - Order Matters (types.h)!
  *
  */
-const char* ud_reg_tab[] = 
+const char* const ud_reg_tab[] = 
 {
   "al",   "cl",   "dl",   "bl",
   "ah",   "ch",   "dh",   "bh",
index 712ec37..73f4251 100644 (file)
@@ -31,7 +31,7 @@
 # include <stdarg.h>
 #endif /* __UD_STANDALONE__ */
 
-extern const char* ud_reg_tab[];
+extern const char* const ud_reg_tab[];
 
 uint64_t ud_syn_rel_target(struct ud*, struct ud_operand*);
 
index 604f08e..45bd75f 100644 (file)
@@ -231,8 +231,8 @@ struct ud
   uint8_t   vex_b2;
   uint8_t   primary_opcode;
   void *    user_opaque_data;
-  struct ud_itab_entry * itab_entry;
-  struct ud_lookup_table_list_entry *le;
+  const struct ud_itab_entry * itab_entry;
+  const struct ud_lookup_table_list_entry *le;
 };
 
 /* -----------------------------------------------------------------------------