Changeset 86ffa27f in mainline for uspace/app
- Timestamp:
- 2011-08-07T11:21:44Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- cc574511
- Parents:
- 15f3c3f (diff), e8067c0 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - Location:
- uspace/app
- Files:
-
- 2 added
- 1 deleted
- 20 edited
-
bdsh/Makefile (modified) (1 diff)
-
bdsh/cmds/modules/cp/cp.c (modified) (2 diffs)
-
bdsh/cmds/modules/ls/ls.c (modified) (1 diff)
-
bdsh/compl.c (added)
-
bdsh/compl.h (added)
-
bdsh/config.h (modified) (1 diff)
-
bdsh/exec.c (modified) (4 diffs)
-
bdsh/exec.h (modified) (1 diff)
-
bdsh/input.c (modified) (5 diffs)
-
bdsh/scli.h (modified) (1 diff)
-
ext2info/ext2info.c (modified) (1 diff)
-
init/init.c (modified) (2 diffs)
-
sbi/src/input.c (modified) (2 diffs)
-
sbi/src/os/helenos.c (modified) (2 diffs)
-
sbi/src/os/os.h (modified) (1 diff)
-
sbi/src/os/posix.c (modified) (1 diff)
-
taskdump/elf_core.c (modified) (14 diffs)
-
taskdump/include/elf.h (deleted)
-
taskdump/include/elf_core.h (modified) (1 diff)
-
taskdump/include/symtab.h (modified) (1 diff)
-
taskdump/symtab.c (modified) (8 diffs)
-
taskdump/taskdump.c (modified) (4 diffs)
-
trace/syscalls.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/bdsh/Makefile
r15f3c3f r86ffa27f 54 54 cmds/mod_cmds.c \ 55 55 cmds/builtin_cmds.c \ 56 compl.c \ 56 57 errors.c \ 57 58 input.c \ -
uspace/app/bdsh/cmds/modules/cp/cp.c
r15f3c3f r86ffa27f 71 71 size_t blen, int vb) 72 72 { 73 int fd1, fd2, bytes = 0;74 off64_t total = 0;73 int fd1, fd2, bytes; 74 off64_t total; 75 75 int64_t copied = 0; 76 76 char *buff = NULL; … … 104 104 } 105 105 106 for (;;) { 107 ssize_t res; 108 size_t written = 0; 109 110 bytes = read(fd1, buff, blen); 111 if (bytes <= 0) 106 while ((bytes = read_all(fd1, buff, blen)) > 0) { 107 if ((bytes = write_all(fd2, buff, bytes)) < 0) 112 108 break; 113 109 copied += bytes; 114 res = bytes;115 do {116 /*117 * Theoretically, it may not be enough to call write()118 * only once. Also the previous read() may have119 * returned less data than requested.120 */121 bytes = write(fd2, buff + written, res);122 if (bytes < 0)123 goto err;124 written += bytes;125 res -= bytes;126 } while (res > 0);127 128 /* TODO: re-insert assert() once this is stand alone,129 * removed as abort() exits the entire shell130 */131 if (res != 0) {132 printf("\n%zd more bytes than actually exist were copied\n", res);133 goto err;134 }135 110 } 136 111 137 112 if (bytes < 0) { 138 err:139 113 printf("\nError copying %s, (%d)\n", src, bytes); 140 114 copied = bytes; -
uspace/app/bdsh/cmds/modules/ls/ls.c
r15f3c3f r86ffa27f 169 169 170 170 /* fill the name field */ 171 tosort[nbdirs].name = (char *) malloc(str_ length(dp->d_name) + 1);171 tosort[nbdirs].name = (char *) malloc(str_size(dp->d_name) + 1); 172 172 if (!tosort[nbdirs].name) { 173 173 cli_error(CL_ENOMEM, "ls: failed to scan %s", d); 174 174 goto out; 175 175 } 176 177 str_cpy(tosort[nbdirs].name, str_ length(dp->d_name) + 1, dp->d_name);176 177 str_cpy(tosort[nbdirs].name, str_size(dp->d_name) + 1, dp->d_name); 178 178 len = snprintf(buff, PATH_MAX - 1, "%s/%s", d, tosort[nbdirs].name); 179 179 buff[len] = '\0'; -
uspace/app/bdsh/config.h
r15f3c3f r86ffa27f 40 40 #endif 41 41 42 /* Work around for getenv() */43 #define PATH "/srv:/app"44 #define PATH_DELIM ":"45 46 42 /* Used in many places */ 47 43 #define SMALL_BUFLEN 256 -
uspace/app/bdsh/exec.c
r15f3c3f r86ffa27f 52 52 static int try_access(const char *); 53 53 54 const char *search_dir[] = { "/app", "/srv", NULL }; 55 54 56 /* work-around for access() */ 55 57 static int try_access(const char *f) … … 69 71 static char *find_command(char *cmd) 70 72 { 71 char *path_tok; 72 char *path[PATH_MAX]; 73 int n = 0, i = 0; 74 size_t x = str_size(cmd) + 2; 73 size_t i; 75 74 76 75 found = (char *)malloc(PATH_MAX); … … 81 80 } 82 81 83 path_tok = str_dup(PATH);84 85 /* Extract the PATH env to a path[] array */86 path[n] = strtok(path_tok, PATH_DELIM);87 while (NULL != path[n]) {88 if ((str_size(path[n]) + x ) > PATH_MAX) {89 cli_error(CL_ENOTSUP,90 "Segment %d of path is too large, search ends at segment %d",91 n, n-1);92 break;93 }94 path[++n] = strtok(NULL, PATH_DELIM);95 }96 97 82 /* We now have n places to look for the command */ 98 for (i =0; path[i]; i++) {83 for (i = 0; search_dir[i] != NULL; i++) { 99 84 memset(found, 0, sizeof(found)); 100 snprintf(found, PATH_MAX, "%s/%s", path[i], cmd);85 snprintf(found, PATH_MAX, "%s/%s", search_dir[i], cmd); 101 86 if (-1 != try_access(found)) { 102 free(path_tok);103 87 return (char *) found; 104 88 } … … 106 90 107 91 /* We didn't find it, just give it back as-is. */ 108 free(path_tok);109 92 return (char *) cmd; 110 93 } -
uspace/app/bdsh/exec.h
r15f3c3f r86ffa27f 33 33 #include "scli.h" 34 34 35 extern const char *search_dir[]; 36 35 37 extern unsigned int try_exec(char *, char **, iostate_t *); 36 38 -
uspace/app/bdsh/input.c
r15f3c3f r86ffa27f 1 1 /* 2 2 * Copyright (c) 2008 Tim Post 3 * Copyright (c) 2011 Jiri Svoboda 3 4 * All rights reserved. 4 5 * … … 43 44 44 45 #include "config.h" 46 #include "compl.h" 45 47 #include "util.h" 46 48 #include "scli.h" … … 168 170 } 169 171 170 rc = run_command( cmd, usr, &new_iostate);172 rc = run_command(actual_cmd, usr, &new_iostate); 171 173 172 174 finit_with_files: … … 226 228 int rc; 227 229 228 console_flush(tinput->console); 229 console_set_style(tinput->console, STYLE_EMPHASIS); 230 printf("%s", usr->prompt); 231 console_flush(tinput->console); 232 console_set_style(tinput->console, STYLE_NORMAL); 230 tinput_set_prompt(tinput, usr->prompt); 233 231 234 232 rc = tinput_read(tinput, &str); … … 263 261 } 264 262 263 tinput_set_compl_ops(tinput, &compl_ops); 264 265 265 return 0; 266 266 } -
uspace/app/bdsh/scli.h
r15f3c3f r86ffa27f 32 32 #include "config.h" 33 33 #include <stdint.h> 34 #include <stdio.h> 34 35 35 36 typedef struct { -
uspace/app/ext2info/ext2info.c
r15f3c3f r86ffa27f 590 590 printf(" Directory contents:\n"); 591 591 592 rc = ext2_directory_iterator_init(&it, fs, inode_ref );592 rc = ext2_directory_iterator_init(&it, fs, inode_ref, 0); 593 593 if (rc != EOK) { 594 594 printf("Failed initializing directory iterator\n"); -
uspace/app/init/init.c
r15f3c3f r86ffa27f 270 270 spawn("/srv/apic"); 271 271 spawn("/srv/i8259"); 272 spawn("/srv/fhc");273 272 spawn("/srv/obio"); 274 273 srv_start("/srv/cuda_adb"); … … 295 294 296 295 #ifdef CONFIG_MOUNT_DATA 296 /* Make sure fat is running. */ 297 if (str_cmp(STRING(RDFMT), "fat") != 0) { 298 srv_start("/srv/fat"); 299 } 297 300 mount_data(); 298 301 #else -
uspace/app/sbi/src/input.c
r15f3c3f r86ffa27f 176 176 int input_get_line(input_t *input, char **line) 177 177 { 178 const char *prompt; 178 179 const char *sp; 179 180 char *dp; … … 212 213 /* Interactive mode */ 213 214 if (input->line_no == 0) 214 pr intf("sbi> ");215 prompt = "sbi> "; 215 216 else 216 pr intf("... ");217 prompt = "... "; 217 218 218 219 fflush(stdout); 219 if (os_input_line( &line_p) != EOK)220 if (os_input_line(prompt, &line_p) != EOK) 220 221 return EIO; 221 222 -
uspace/app/sbi/src/os/helenos.c
r15f3c3f r86ffa27f 210 210 * @param ptr Place to store pointer to new string. 211 211 */ 212 int os_input_line(c har **ptr)212 int os_input_line(const char *prompt, char **ptr) 213 213 { 214 214 char *line; … … 219 219 if (tinput == NULL) 220 220 return EIO; 221 222 tinput_set_prompt(tinput, prompt); 221 223 } 222 224 -
uspace/app/sbi/src/os/os.h
r15f3c3f r86ffa27f 38 38 char *os_chr_to_astr(wchar_t chr); 39 39 void os_input_disp_help(void); 40 int os_input_line(c har **ptr);40 int os_input_line(const char *prompt, char **ptr); 41 41 int os_exec(char * const cmd[]); 42 42 -
uspace/app/sbi/src/os/posix.c
r15f3c3f r86ffa27f 193 193 * @param ptr Place to store pointer to new string. 194 194 */ 195 int os_input_line(char **ptr) 196 { 195 int os_input_line(const char *prompt, char **ptr) 196 { 197 printf("%s", prompt); 198 197 199 if (fgets(os_input_buffer, OS_INPUT_BUFFER_SIZE, stdin) == NULL) 198 200 os_input_buffer[0] = '\0'; -
uspace/app/taskdump/elf_core.c
r15f3c3f r86ffa27f 1 1 /* 2 * Copyright (c) 201 0Jiri Svoboda2 * Copyright (c) 2011 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 38 38 * Looking at core files produced by Linux, these don't have section headers, 39 39 * only program headers, although objdump shows them as having sections. 40 * Basically at the beginning there should be a note segment (which we 41 * do not write) and one loadable segment per memory area (which we do write). 42 * 43 * The note segment probably contains register state, etc. -- we don't 44 * deal with these yet. Nevertheless you can use these core files with 45 * objdump or gdb. 46 */ 47 40 * Basically at the beginning there should be a note segment followed 41 * by one loadable segment per memory area. 42 * 43 * The note segment contains a series of records with register state, 44 * process info etc. We only write one record NT_PRSTATUS which contains 45 * process/register state (anything which is not register state we fill 46 * with zeroes). 47 */ 48 49 #include <align.h> 50 #include <elf/elf.h> 51 #include <elf/elf_linux.h> 48 52 #include <stdio.h> 49 53 #include <stdlib.h> … … 58 62 #include <udebug.h> 59 63 #include <macros.h> 60 61 #include <elf.h> 62 #include " include/elf_core.h"64 #include <libarch/istate.h> 65 66 #include "elf_core.h" 63 67 64 68 static off64_t align_foff_up(off64_t, uintptr_t, size_t); 65 static int write_all(int, void *, size_t);69 static int align_pos(int, size_t); 66 70 static int write_mem_area(int, as_area_info_t *, async_sess_t *); 67 71 … … 83 87 */ 84 88 int elf_core_save(const char *file_name, as_area_info_t *ainfo, unsigned int n, 85 async_sess_t *sess )89 async_sess_t *sess, istate_t *istate) 86 90 { 87 91 elf_header_t elf_hdr; … … 90 94 elf_word flags; 91 95 elf_segment_header_t *p_hdr; 96 elf_prstatus_t pr_status; 97 elf_note_t note; 98 size_t word_size; 92 99 93 100 int fd; 94 int rc;101 ssize_t rc; 95 102 unsigned int i; 96 103 97 n_ph = n; 98 99 p_hdr = malloc(sizeof(elf_segment_header_t) * n); 104 #ifdef __32_BITS__ 105 word_size = 4; 106 #endif 107 #ifdef __64_BITS__ 108 /* 109 * This should be 8 per the 64-bit ELF spec, but the Linux kernel 110 * screws up and uses 4 anyway (and screws up elf_note_t as well) 111 * and we are trying to be compatible with Linux GDB target. Sigh. 112 */ 113 word_size = 4; 114 #endif 115 memset(&pr_status, 0, sizeof(pr_status)); 116 istate_to_elf_regs(istate, &pr_status.regs); 117 118 n_ph = n + 1; 119 120 p_hdr = malloc(sizeof(elf_segment_header_t) * n_ph); 100 121 if (p_hdr == NULL) { 101 122 printf("Failed allocating memory.\n"); … … 115 136 * ELF header 116 137 * program headers 138 * note segment 117 139 * repeat: 118 140 * (pad for alignment) 119 * segment data141 * core segment 120 142 * end repeat 121 143 */ … … 147 169 foff = elf_hdr.e_phoff + n_ph * sizeof(elf_segment_header_t); 148 170 149 for (i = 1; i <= n; ++i) { 150 foff = align_foff_up(foff, ainfo[i - 1].start_addr, PAGE_SIZE); 171 memset(&p_hdr[0], 0, sizeof(p_hdr[0])); 172 p_hdr[0].p_type = PT_NOTE; 173 p_hdr[0].p_offset = foff; 174 p_hdr[0].p_vaddr = 0; 175 p_hdr[0].p_paddr = 0; 176 p_hdr[0].p_filesz = sizeof(elf_note_t) 177 + ALIGN_UP((str_size("CORE") + 1), word_size) 178 + ALIGN_UP(sizeof(elf_prstatus_t), word_size); 179 p_hdr[0].p_memsz = 0; 180 p_hdr[0].p_flags = 0; 181 p_hdr[0].p_align = 1; 182 183 foff += p_hdr[0].p_filesz; 184 185 for (i = 0; i < n; ++i) { 186 foff = align_foff_up(foff, ainfo[i].start_addr, PAGE_SIZE); 151 187 152 188 flags = 0; 153 if (ainfo[i - 1].flags & AS_AREA_READ)189 if (ainfo[i].flags & AS_AREA_READ) 154 190 flags |= PF_R; 155 if (ainfo[i - 1].flags & AS_AREA_WRITE)191 if (ainfo[i].flags & AS_AREA_WRITE) 156 192 flags |= PF_W; 157 if (ainfo[i - 1].flags & AS_AREA_EXEC)193 if (ainfo[i].flags & AS_AREA_EXEC) 158 194 flags |= PF_X; 159 195 160 memset(&p_hdr[i - 1], 0, sizeof(p_hdr[i -1]));161 p_hdr[i -1].p_type = PT_LOAD;162 p_hdr[i -1].p_offset = foff;163 p_hdr[i - 1].p_vaddr = ainfo[i - 1].start_addr;164 p_hdr[i -1].p_paddr = 0;165 p_hdr[i - 1].p_filesz = ainfo[i - 1].size;166 p_hdr[i - 1].p_memsz = ainfo[i - 1].size;167 p_hdr[i -1].p_flags = flags;168 p_hdr[i -1].p_align = PAGE_SIZE;169 170 foff += ainfo[i - 1].size;196 memset(&p_hdr[i + 1], 0, sizeof(p_hdr[i + 1])); 197 p_hdr[i + 1].p_type = PT_LOAD; 198 p_hdr[i + 1].p_offset = foff; 199 p_hdr[i + 1].p_vaddr = ainfo[i].start_addr; 200 p_hdr[i + 1].p_paddr = 0; 201 p_hdr[i + 1].p_filesz = ainfo[i].size; 202 p_hdr[i + 1].p_memsz = ainfo[i].size; 203 p_hdr[i + 1].p_flags = flags; 204 p_hdr[i + 1].p_align = PAGE_SIZE; 205 206 foff += ainfo[i].size; 171 207 } 172 208 173 209 rc = write_all(fd, &elf_hdr, sizeof(elf_hdr)); 174 if (rc != EOK) {210 if (rc != sizeof(elf_hdr)) { 175 211 printf("Failed writing ELF header.\n"); 176 212 free(p_hdr); … … 180 216 for (i = 0; i < n_ph; ++i) { 181 217 rc = write_all(fd, &p_hdr[i], sizeof(p_hdr[i])); 182 if (rc != EOK) {218 if (rc != sizeof(p_hdr[i])) { 183 219 printf("Failed writing program header.\n"); 184 220 free(p_hdr); … … 187 223 } 188 224 189 for (i = 0; i < n_ph; ++i) { 225 if (lseek(fd, p_hdr[0].p_offset, SEEK_SET) == (off64_t) -1) { 226 printf("Failed writing memory data.\n"); 227 free(p_hdr); 228 return EIO; 229 } 230 231 /* 232 * Write note header 233 */ 234 note.namesz = str_size("CORE") + 1; 235 note.descsz = sizeof(elf_prstatus_t); 236 note.type = NT_PRSTATUS; 237 238 rc = write_all(fd, ¬e, sizeof(elf_note_t)); 239 if (rc != sizeof(elf_note_t)) { 240 printf("Failed writing note header.\n"); 241 free(p_hdr); 242 return EIO; 243 } 244 245 rc = write_all(fd, "CORE", note.namesz); 246 if (rc != (ssize_t) note.namesz) { 247 printf("Failed writing note header.\n"); 248 free(p_hdr); 249 return EIO; 250 } 251 252 rc = align_pos(fd, word_size); 253 if (rc != EOK) { 254 printf("Failed writing note header.\n"); 255 free(p_hdr); 256 return EIO; 257 } 258 259 rc = write_all(fd, &pr_status, sizeof(elf_prstatus_t)); 260 if (rc != sizeof(elf_prstatus_t)) { 261 printf("Failed writing register data.\n"); 262 free(p_hdr); 263 return EIO; 264 } 265 266 for (i = 1; i < n_ph; ++i) { 190 267 if (lseek(fd, p_hdr[i].p_offset, SEEK_SET) == (off64_t) -1) { 191 268 printf("Failed writing memory data.\n"); … … 193 270 return EIO; 194 271 } 195 if (write_mem_area(fd, &ainfo[i ], sess) != EOK) {272 if (write_mem_area(fd, &ainfo[i - 1], sess) != EOK) { 196 273 printf("Failed writing memory data.\n"); 197 274 free(p_hdr); … … 210 287 off64_t rva = vaddr % page_size; 211 288 off64_t rfo = foff % page_size; 212 289 213 290 if (rva >= rfo) 214 291 return (foff + (rva - rfo)); 215 292 216 293 return (foff + (page_size + (rva - rfo))); 217 294 } … … 231 308 size_t total; 232 309 uintptr_t addr; 233 int rc;310 ssize_t rc; 234 311 235 312 addr = area->start_addr; … … 245 322 246 323 rc = write_all(fd, buffer, to_copy); 247 if (rc != EOK) {324 if (rc != (ssize_t) to_copy) { 248 325 printf("Failed writing memory contents.\n"); 249 326 return EIO; … … 257 334 } 258 335 259 /** Write until the buffer is written in its entirety. 260 * 261 * This function fails if it cannot write exactly @a len bytes to the file. 262 * 263 * @param fd The file to write to. 264 * @param buf Data, @a len bytes long. 265 * @param len Number of bytes to write. 266 * 267 * @return EOK on error, return value from write() if writing 268 * failed. 269 */ 270 static int write_all(int fd, void *data, size_t len) 336 static int align_pos(int fd, size_t align) 271 337 { 272 int cnt = 0;273 274 do { 275 data += cnt;276 len -= cnt;277 cnt = write(fd, data, len);278 } while (cnt > 0 && (len - cnt) > 0); 279 280 if (cnt < 0)281 return cnt; 282 283 if ( len - cnt >0)284 return EIO;338 off64_t cur_pos; 339 size_t rem, adv; 340 341 cur_pos = lseek(fd, 0, SEEK_CUR); 342 if (cur_pos < 0) 343 return -1; 344 345 rem = cur_pos % align; 346 adv = align - rem; 347 348 cur_pos = lseek(fd, adv, SEEK_CUR); 349 if (cur_pos < 0) 350 return -1; 285 351 286 352 return EOK; 287 353 } 288 354 289 290 355 /** @} 291 356 */ -
uspace/app/taskdump/include/elf_core.h
r15f3c3f r86ffa27f 37 37 38 38 #include <async.h> 39 #include <elf/elf_linux.h> 40 #include <libarch/istate.h> 39 41 40 42 extern int elf_core_save(const char *, as_area_info_t *, unsigned int, 41 async_sess_t * );43 async_sess_t *, istate_t *); 42 44 43 45 #endif -
uspace/app/taskdump/include/symtab.h
r15f3c3f r86ffa27f 36 36 #define SYMTAB_H_ 37 37 38 #include <elf/elf.h> 38 39 #include <sys/types.h> 39 #include <elf.h>40 40 41 41 typedef struct { -
uspace/app/taskdump/symtab.c
r15f3c3f r86ffa27f 36 36 */ 37 37 38 #include <elf/elf.h> 38 39 #include <stdio.h> 39 40 #include <stdlib.h> … … 43 44 #include <fcntl.h> 44 45 45 #include <elf.h>46 46 #include "include/symtab.h" 47 47 … … 50 50 elf_section_header_t *shdr); 51 51 static int chunk_load(int fd, off64_t start, size_t size, void **ptr); 52 static int read_all(int fd, void *buf, size_t len);53 52 54 53 /** Load symbol table from an ELF file. … … 90 89 91 90 rc = read_all(fd, &elf_hdr, sizeof(elf_header_t)); 92 if (rc != EOK) {91 if (rc != sizeof(elf_header_t)) { 93 92 printf("failed reading elf header\n"); 94 93 free(stab); … … 312 311 313 312 rc = read_all(fd, sec_hdr, sizeof(elf_section_header_t)); 314 if (rc != EOK)313 if (rc != sizeof(elf_section_header_t)) 315 314 return EIO; 316 315 … … 331 330 static int chunk_load(int fd, off64_t start, size_t size, void **ptr) 332 331 { 333 int rc; 334 335 rc = lseek(fd, start, SEEK_SET); 336 if (rc == (off64_t) -1) { 332 ssize_t rc; 333 off64_t offs; 334 335 offs = lseek(fd, start, SEEK_SET); 336 if (offs == (off64_t) -1) { 337 337 printf("failed seeking chunk\n"); 338 338 *ptr = NULL; … … 347 347 348 348 rc = read_all(fd, *ptr, size); 349 if (rc != EOK) {349 if (rc != (ssize_t) size) { 350 350 printf("failed reading chunk\n"); 351 351 free(*ptr); … … 357 357 } 358 358 359 /** Read until the buffer is read in its entirety.360 *361 * This function fails if it cannot read exactly @a len bytes from the file.362 *363 * @param fd The file to read from.364 * @param buf Buffer for storing data, @a len bytes long.365 * @param len Number of bytes to read.366 *367 * @return EOK on error, EIO if file is short or return value368 * from read() if reading failed.369 */370 static int read_all(int fd, void *buf, size_t len)371 {372 int cnt = 0;373 374 do {375 buf += cnt;376 len -= cnt;377 cnt = read(fd, buf, len);378 } while (cnt > 0 && (len - cnt) > 0);379 380 if (cnt < 0)381 return cnt;382 383 if (len - cnt > 0)384 return EIO;385 386 return EOK;387 }388 389 359 /** @} 390 360 */ -
uspace/app/taskdump/taskdump.c
r15f3c3f r86ffa27f 34 34 35 35 #include <async.h> 36 #include <elf/elf_linux.h> 36 37 #include <stdio.h> 37 38 #include <stdlib.h> … … 72 73 static char *get_app_task_name(void); 73 74 static char *fmt_sym_address(uintptr_t addr); 75 76 static istate_t reg_state; 74 77 75 78 int main(int argc, char *argv[]) … … 293 296 if (write_core_file) { 294 297 printf("Writing core file '%s'\n", core_file_name); 295 rc = elf_core_save(core_file_name, ainfo_buf, n_areas, sess); 298 299 rc = elf_core_save(core_file_name, ainfo_buf, n_areas, sess, 300 ®_state); 301 296 302 if (rc != EOK) { 297 303 printf("Failed writing core file.\n"); … … 321 327 pc = istate_get_pc(&istate); 322 328 fp = istate_get_fp(&istate); 329 330 /* Save register state for dumping to core file later. */ 331 reg_state = istate; 323 332 324 333 sym_pc = fmt_sym_address(pc); -
uspace/app/trace/syscalls.c
r15f3c3f r86ffa27f 80 80 [SYS_SYSINFO_GET_DATA] = { "sysinfo_get_data", 5, V_ERRNO }, 81 81 82 [SYS_DEBUG_ ENABLE_CONSOLE] = { "debug_enable_console", 0, V_ERRNO },82 [SYS_DEBUG_ACTIVATE_CONSOLE] = { "debug_activate_console", 0, V_ERRNO }, 83 83 [SYS_IPC_CONNECT_KBOX] = { "ipc_connect_kbox", 1, V_ERRNO } 84 84 };
Note:
See TracChangeset
for help on using the changeset viewer.
