Mercurial > hg > truffle
comparison agent/src/os/linux/ps_core.c @ 10229:f6a055fcf47d
8005038: remove crufty '_g' support from SA
Reviewed-by: coleenp, mgronlun, rbackman
author | sla |
---|---|
date | Tue, 07 May 2013 14:33:09 +0200 |
parents | 255c0a4cb4eb |
children | 1f42d3ec1759 |
comparison
equal
deleted
inserted
replaced
10228:b5fef8013a95 | 10229:f6a055fcf47d |
---|---|
193 } | 193 } |
194 | 194 |
195 //--------------------------------------------------------------- | 195 //--------------------------------------------------------------- |
196 // Part of the class sharing workaround: | 196 // Part of the class sharing workaround: |
197 // | 197 // |
198 // With class sharing, pages are mapped from classes[_g].jsa file. | 198 // With class sharing, pages are mapped from classes.jsa file. |
199 // The read-only class sharing pages are mapped as MAP_SHARED, | 199 // The read-only class sharing pages are mapped as MAP_SHARED, |
200 // PROT_READ pages. These pages are not dumped into core dump. | 200 // PROT_READ pages. These pages are not dumped into core dump. |
201 // With this workaround, these pages are read from classes[_g].jsa. | 201 // With this workaround, these pages are read from classes.jsa. |
202 | 202 |
203 // FIXME: !HACK ALERT! | 203 // FIXME: !HACK ALERT! |
204 // The format of sharing achive file header is needed to read shared heap | 204 // The format of sharing achive file header is needed to read shared heap |
205 // file mappings. For now, I am hard coding portion of FileMapHeader here. | 205 // file mappings. For now, I am hard coding portion of FileMapHeader here. |
206 // Refer to filemap.hpp. | 206 // Refer to filemap.hpp. |
282 | 282 |
283 static bool init_classsharing_workaround(struct ps_prochandle* ph) { | 283 static bool init_classsharing_workaround(struct ps_prochandle* ph) { |
284 lib_info* lib = ph->libs; | 284 lib_info* lib = ph->libs; |
285 while (lib != NULL) { | 285 while (lib != NULL) { |
286 // we are iterating over shared objects from the core dump. look for | 286 // we are iterating over shared objects from the core dump. look for |
287 // libjvm[_g].so. | 287 // libjvm.so. |
288 const char *jvm_name = 0; | 288 const char *jvm_name = 0; |
289 if ((jvm_name = strstr(lib->name, "/libjvm.so")) != 0 || | 289 if ((jvm_name = strstr(lib->name, "/libjvm.so")) != 0) { |
290 (jvm_name = strstr(lib->name, "/libjvm_g.so")) != 0) { | |
291 char classes_jsa[PATH_MAX]; | 290 char classes_jsa[PATH_MAX]; |
292 struct FileMapHeader header; | 291 struct FileMapHeader header; |
293 size_t n = 0; | 292 size_t n = 0; |
294 int fd = -1, m = 0; | 293 int fd = -1, m = 0; |
295 uintptr_t base = 0, useSharedSpacesAddr = 0; | 294 uintptr_t base = 0, useSharedSpacesAddr = 0; |
369 close(fd); | 368 close(fd); |
370 return false; | 369 return false; |
371 } | 370 } |
372 | 371 |
373 ph->core->classes_jsa_fd = fd; | 372 ph->core->classes_jsa_fd = fd; |
374 // add read-only maps from classes[_g].jsa to the list of maps | 373 // add read-only maps from classes.jsa to the list of maps |
375 for (m = 0; m < NUM_SHARED_MAPS; m++) { | 374 for (m = 0; m < NUM_SHARED_MAPS; m++) { |
376 if (header._space[m]._read_only) { | 375 if (header._space[m]._read_only) { |
377 base = (uintptr_t) header._space[m]._base; | 376 base = (uintptr_t) header._space[m]._base; |
378 // no need to worry about the fractional pages at-the-end. | 377 // no need to worry about the fractional pages at-the-end. |
379 // possible fractional pages are handled by core_read_data. | 378 // possible fractional pages are handled by core_read_data. |