Don't truncate MachO addresses.
authorJim Grosbach <grosbach@apple.com>
Tue, 9 Aug 2011 22:12:37 +0000 (22:12 +0000)
committerJim Grosbach <grosbach@apple.com>
Tue, 9 Aug 2011 22:12:37 +0000 (22:12 +0000)
Assigned symbol addresses get truncated to 32-bits, even on 64-bit platforms.
That's obviously bogus.
For example,

 .globl _foo
 .equ _foo, 0x987654321ULL

rdar://9922863

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137158 91177308-0d34-0410-b5e6-96231b3b80d8

lib/MC/MachObjectWriter.cpp

index 2590f0ff7b22829c928cda6b7e0d6e96a9de7ff4..6f64bdf40bea5188231c3afb787110fc72c85379 100644 (file)
@@ -291,7 +291,7 @@ void MachObjectWriter::WriteNlist(MachSymbolData &MSD,
   const MCSymbol &Symbol = Data.getSymbol();
   uint8_t Type = 0;
   uint16_t Flags = Data.getFlags();
-  uint32_t Address = 0;
+  uint64_t Address = 0;
 
   // Set the N_TYPE bits. See <mach-o/nlist.h>.
   //