[PATCH] D134563: [ObjectYAML][MachO] Encode export trie address as ULEB128, not as SLEB128

Daniel Rodríguez Troitiño via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 4 09:23:59 PDT 2022


This revision was automatically updated to reflect the committed changes.
Closed by commit rG57bd11f047d0: [ObjectYAML][MachO] Encode export trie address as ULEB128, not as SLEB128 (authored by drodriguez).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D134563/new/

https://reviews.llvm.org/D134563

Files:
  llvm/lib/ObjectYAML/MachOEmitter.cpp
  llvm/test/ObjectYAML/MachO/export_trie.yaml


Index: llvm/test/ObjectYAML/MachO/export_trie.yaml
===================================================================
--- llvm/test/ObjectYAML/MachO/export_trie.yaml
+++ llvm/test/ObjectYAML/MachO/export_trie.yaml
@@ -1,4 +1,6 @@
-# RUN: yaml2obj %s | obj2yaml | FileCheck %s
+# RUN: yaml2obj %s -o=%t
+# RUN: obj2yaml %t | FileCheck %s
+# RUN: llvm-objdump --macho --exports-trie %t | FileCheck %s --check-prefix=OBJDUMP-VERIFY
 
 --- !mach-o
 FileHeader:      
@@ -167,7 +169,7 @@
             NodeOffset:      37
             Name:            main
             Flags:           0x0000000000000000
-            Address:         0x0000000000001160
+            Address:         0x0000000000003FA0
             Other:           0x0000000000000000
             ImportName:      ''
 ...
@@ -188,4 +190,8 @@
 #CHECK:           - TerminalSize:    3
 #CHECK:             NodeOffset:      37
 #CHECK:             Name:            main
-#CHECK:             Address:         0x1160
+#CHECK:             Address:         0x3FA0
+
+# OBJDUMP-VERIFY: Exports trie:
+# OBJDUMP-VERIFY: 0x100000000  __mh_execute_header
+# OBJDUMP-VERIFY: 0x100003FA0  _main
Index: llvm/lib/ObjectYAML/MachOEmitter.cpp
===================================================================
--- llvm/lib/ObjectYAML/MachOEmitter.cpp
+++ llvm/lib/ObjectYAML/MachOEmitter.cpp
@@ -435,24 +435,24 @@
 
 void MachOWriter::dumpExportEntry(raw_ostream &OS,
                                   MachOYAML::ExportEntry &Entry) {
-  encodeSLEB128(Entry.TerminalSize, OS);
+  encodeULEB128(Entry.TerminalSize, OS);
   if (Entry.TerminalSize > 0) {
-    encodeSLEB128(Entry.Flags, OS);
+    encodeULEB128(Entry.Flags, OS);
     if (Entry.Flags & MachO::EXPORT_SYMBOL_FLAGS_REEXPORT) {
-      encodeSLEB128(Entry.Other, OS);
+      encodeULEB128(Entry.Other, OS);
       OS << Entry.ImportName;
       OS.write('\0');
     } else {
-      encodeSLEB128(Entry.Address, OS);
+      encodeULEB128(Entry.Address, OS);
       if (Entry.Flags & MachO::EXPORT_SYMBOL_FLAGS_STUB_AND_RESOLVER)
-        encodeSLEB128(Entry.Other, OS);
+        encodeULEB128(Entry.Other, OS);
     }
   }
   OS.write(static_cast<uint8_t>(Entry.Children.size()));
   for (auto EE : Entry.Children) {
     OS << EE.Name;
     OS.write('\0');
-    encodeSLEB128(EE.NodeOffset, OS);
+    encodeULEB128(EE.NodeOffset, OS);
   }
   for (auto EE : Entry.Children)
     dumpExportEntry(OS, EE);


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D134563.465049.patch
Type: text/x-patch
Size: 2411 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20221004/b5f44e43/attachment.bin>


More information about the llvm-commits mailing list