@@ -116,11 +116,15 @@ void Component::EstablishDescriptor(Descriptor &descriptor,
116
116
}
117
117
118
118
void Component::CreatePointerDescriptor (Descriptor &descriptor,
119
- const Descriptor &container, const SubscriptValue subscripts[] ,
120
- Terminator &terminator ) const {
119
+ const Descriptor &container, Terminator &terminator ,
120
+ const SubscriptValue *subscripts ) const {
121
121
RUNTIME_CHECK (terminator, genre_ == Genre::Data);
122
122
EstablishDescriptor (descriptor, container, terminator);
123
- descriptor.set_base_addr (container.Element <char >(subscripts) + offset_);
123
+ if (subscripts) {
124
+ descriptor.set_base_addr (container.Element <char >(subscripts) + offset_);
125
+ } else {
126
+ descriptor.set_base_addr (container.OffsetElement <char >() + offset_);
127
+ }
124
128
descriptor.raw ().attribute = CFI_attribute_pointer;
125
129
}
126
130
@@ -167,12 +171,11 @@ static void DumpScalarCharacter(
167
171
}
168
172
169
173
FILE *DerivedType::Dump (FILE *f) const {
170
- std::fprintf (
171
- f, " DerivedType @ 0x%p:\n " , reinterpret_cast <const void *>(this ));
174
+ std::fprintf (f, " DerivedType @ %p:\n " , reinterpret_cast <const void *>(this ));
172
175
const std::uint64_t *uints{reinterpret_cast <const std::uint64_t *>(this )};
173
176
for (int j{0 }; j < 64 ; ++j) {
174
177
int offset{j * static_cast <int >(sizeof *uints)};
175
- std::fprintf (f, " [+%3d](0x %p) 0x%016jx" , offset,
178
+ std::fprintf (f, " [+%3d](%p) 0x%016jx" , offset,
176
179
reinterpret_cast <const void *>(&uints[j]),
177
180
static_cast <std::uintmax_t >(uints[j]));
178
181
if (offset == offsetof (DerivedType, binding_)) {
@@ -235,7 +238,7 @@ FILE *DerivedType::Dump(FILE *f) const {
235
238
}
236
239
237
240
FILE *Component::Dump (FILE *f) const {
238
- std::fprintf (f, " Component @ 0x %p:\n " , reinterpret_cast <const void *>(this ));
241
+ std::fprintf (f, " Component @ %p:\n " , reinterpret_cast <const void *>(this ));
239
242
std::fputs (" name: " , f);
240
243
DumpScalarCharacter (f, name (), " Component::name" );
241
244
if (genre_ == Genre::Data) {
@@ -252,7 +255,7 @@ FILE *Component::Dump(FILE *f) const {
252
255
std::fprintf (f, " category %d kind %d rank %d offset 0x%zx\n " , category_,
253
256
kind_, rank_, static_cast <std::size_t >(offset_));
254
257
if (initialization_) {
255
- std::fprintf (f, " initialization @ 0x %p:\n " ,
258
+ std::fprintf (f, " initialization @ %p:\n " ,
256
259
reinterpret_cast <const void *>(initialization_));
257
260
for (int j{0 }; j < 128 ; j += sizeof (std::uint64_t )) {
258
261
std::fprintf (f, " [%3d] 0x%016jx\n " , j,
@@ -265,7 +268,7 @@ FILE *Component::Dump(FILE *f) const {
265
268
266
269
FILE *SpecialBinding::Dump (FILE *f) const {
267
270
std::fprintf (
268
- f, " SpecialBinding @ 0x %p:\n " , reinterpret_cast <const void *>(this ));
271
+ f, " SpecialBinding @ %p:\n " , reinterpret_cast <const void *>(this ));
269
272
switch (which_) {
270
273
case Which::ScalarAssignment:
271
274
std::fputs (" ScalarAssignment" , f);
@@ -297,7 +300,7 @@ FILE *SpecialBinding::Dump(FILE *f) const {
297
300
break ;
298
301
}
299
302
std::fprintf (f, " isArgDescriptorSet: 0x%x\n " , isArgDescriptorSet_);
300
- std::fprintf (f, " proc: 0x %p\n " , reinterpret_cast <void *>(proc_));
303
+ std::fprintf (f, " proc: %p\n " , reinterpret_cast <void *>(proc_));
301
304
return f;
302
305
}
303
306
0 commit comments