diff options
Diffstat (limited to 'tools/perf/jvmti/jvmti_agent.c')
| -rw-r--r-- | tools/perf/jvmti/jvmti_agent.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/tools/perf/jvmti/jvmti_agent.c b/tools/perf/jvmti/jvmti_agent.c index cf36de7ea255..0c6d1002b524 100644 --- a/tools/perf/jvmti/jvmti_agent.c +++ b/tools/perf/jvmti/jvmti_agent.c | |||
| @@ -384,13 +384,13 @@ jvmti_write_code(void *agent, char const *sym, | |||
| 384 | } | 384 | } |
| 385 | 385 | ||
| 386 | int | 386 | int |
| 387 | jvmti_write_debug_info(void *agent, uint64_t code, const char *file, | 387 | jvmti_write_debug_info(void *agent, uint64_t code, |
| 388 | jvmti_line_info_t *li, int nr_lines) | 388 | int nr_lines, jvmti_line_info_t *li, |
| 389 | const char * const * file_names) | ||
| 389 | { | 390 | { |
| 390 | struct jr_code_debug_info rec; | 391 | struct jr_code_debug_info rec; |
| 391 | size_t sret, len, size, flen; | 392 | size_t sret, len, size, flen = 0; |
| 392 | uint64_t addr; | 393 | uint64_t addr; |
| 393 | const char *fn = file; | ||
| 394 | FILE *fp = agent; | 394 | FILE *fp = agent; |
| 395 | int i; | 395 | int i; |
| 396 | 396 | ||
| @@ -405,7 +405,9 @@ jvmti_write_debug_info(void *agent, uint64_t code, const char *file, | |||
| 405 | return -1; | 405 | return -1; |
| 406 | } | 406 | } |
| 407 | 407 | ||
| 408 | flen = strlen(file) + 1; | 408 | for (i = 0; i < nr_lines; ++i) { |
| 409 | flen += strlen(file_names[i]) + 1; | ||
| 410 | } | ||
| 409 | 411 | ||
| 410 | rec.p.id = JIT_CODE_DEBUG_INFO; | 412 | rec.p.id = JIT_CODE_DEBUG_INFO; |
| 411 | size = sizeof(rec); | 413 | size = sizeof(rec); |
| @@ -421,7 +423,7 @@ jvmti_write_debug_info(void *agent, uint64_t code, const char *file, | |||
| 421 | * file[] : source file name | 423 | * file[] : source file name |
| 422 | */ | 424 | */ |
| 423 | size += nr_lines * sizeof(struct debug_entry); | 425 | size += nr_lines * sizeof(struct debug_entry); |
| 424 | size += flen * nr_lines; | 426 | size += flen; |
| 425 | rec.p.total_size = size; | 427 | rec.p.total_size = size; |
| 426 | 428 | ||
| 427 | /* | 429 | /* |
| @@ -452,7 +454,7 @@ jvmti_write_debug_info(void *agent, uint64_t code, const char *file, | |||
| 452 | if (sret != 1) | 454 | if (sret != 1) |
| 453 | goto error; | 455 | goto error; |
| 454 | 456 | ||
| 455 | sret = fwrite_unlocked(fn, flen, 1, fp); | 457 | sret = fwrite_unlocked(file_names[i], strlen(file_names[i]) + 1, 1, fp); |
| 456 | if (sret != 1) | 458 | if (sret != 1) |
| 457 | goto error; | 459 | goto error; |
| 458 | } | 460 | } |
