@@ -37,6 +37,8 @@ using namespace llvm::object;
3737// / Common abstraction for globals that live on the host and device.
3838// / It simply encapsulates the symbol name, symbol size, and symbol address
3939// / (which might be host or device depending on the context).
40+ // / Both size and address may be absent (signified by 0/nullptr), and can be
41+ // / populated with getGlobalMetadataFromDevice/Image.
4042class GlobalTy {
4143 // NOTE: Maybe we can have a pointer to the offload entry name instead of
4244 // holding a private copy of the name as a std::string.
@@ -45,7 +47,7 @@ class GlobalTy {
4547 void *Ptr;
4648
4749public:
48- GlobalTy (const std::string &Name, uint32_t Size, void *Ptr = nullptr )
50+ GlobalTy (const std::string &Name, uint32_t Size = 0 , void *Ptr = nullptr )
4951 : Name(Name), Size(Size), Ptr(Ptr) {}
5052
5153 const std::string &getName () const { return Name; }
@@ -139,8 +141,11 @@ class GenericGlobalHandlerTy {
139141 bool isSymbolInImage (GenericDeviceTy &Device, DeviceImageTy &Image,
140142 StringRef SymName);
141143
142- // / Get the address and size of a global in the image. Address and size are
143- // / return in \p ImageGlobal, the global name is passed in \p ImageGlobal.
144+ // / Get the address and size of a global in the image. Address is
145+ // / returned in \p ImageGlobal and the global name is passed in \p
146+ // / ImageGlobal. If no size is present in \p ImageGlobal, then the size of the
147+ // / global will be stored there. If it is present, it will be validated
148+ // / against the real size of the global.
144149 Error getGlobalMetadataFromImage (GenericDeviceTy &Device,
145150 DeviceImageTy &Image, GlobalTy &ImageGlobal);
146151
@@ -149,9 +154,11 @@ class GenericGlobalHandlerTy {
149154 Error readGlobalFromImage (GenericDeviceTy &Device, DeviceImageTy &Image,
150155 const GlobalTy &HostGlobal);
151156
152- // / Get the address and size of a global from the device. Address is return in
153- // / \p DeviceGlobal, the global name and expected size are passed in
154- // / \p DeviceGlobal.
157+ // / Get the address and size of a global from the device. Address is
158+ // / returned in \p ImageGlobal and the global name is passed in \p
159+ // / ImageGlobal. If no size is present in \p ImageGlobal, then the size of the
160+ // / global will be stored there. If it is present, it will be validated
161+ // / against the real size of the global.
155162 virtual Error getGlobalMetadataFromDevice (GenericDeviceTy &Device,
156163 DeviceImageTy &Image,
157164 GlobalTy &DeviceGlobal) = 0;
0 commit comments