Advertisement
Guest User

GDB Listing

a guest
Apr 1st, 2012
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.96 KB | None | 0 0
  1. without if:
  2.  
  3. 0xc0105f95 <+425>: xchg %bx,%bx
  4. 0xc0105f98 <+428>: mov 0xc010b018,%eax
  5. 0xc0105f9d <+433>: mov %eax,-0xc(%ebp)
  6. 0xc0105fa0 <+436>: jmp 0xc0105fab <fork+447>
  7. 0xc0105fa2 <+438>: mov -0xc(%ebp),%eax
  8. 0xc0105fa5 <+441>: mov 0x20(%eax),%eax
  9. 0xc0105fa8 <+444>: mov %eax,-0xc(%ebp)
  10. 0xc0105fab <+447>: mov -0xc(%ebp),%eax
  11. 0xc0105fae <+450>: mov 0x20(%eax),%eax
  12. 0xc0105fb1 <+453>: test %eax,%eax
  13. 0xc0105fb3 <+455>: jne 0xc0105fa2 <fork+438>
  14. 0xc0105fb5 <+457>: mov -0xc(%ebp),%eax
  15. 0xc0105fb8 <+460>: mov -0x18(%ebp),%edx
  16. 0xc0105fbb <+463>: mov %edx,0x20(%eax)
  17. 0xc0105fbe <+466>: call 0xc01061c0
  18. 0xc0105fc3 <+471>: mov %eax,-0x1c(%ebp)
  19. 0xc0105fc6 <+474>: mov 0xc010b014,%eax
  20. 0xc0105fcb <+479>: cmp -0x10(%ebp),%eax
  21. 0xc0105fce <+482>: jne 0xc0105ffc <fork+528>
  22. 0xc0105fd0 <+484>: mov %esp,%ebx
  23. 0xc0105fd2 <+486>: mov %ebx,-0x20(%ebp)
  24. 0xc0105fd5 <+489>: mov %ebp,%ebx
  25. 0xc0105fd7 <+491>: mov %ebx,-0x24(%ebp)
  26. 0xc0105fda <+494>: mov -0x18(%ebp),%eax
  27. 0xc0105fdd <+497>: mov -0x20(%ebp),%edx
  28. 0xc0105fe0 <+500>: mov %edx,0x8(%eax)
  29. 0xc0105fe3 <+503>: mov -0x18(%ebp),%eax
  30. 0xc0105fe6 <+506>: mov -0x24(%ebp),%edx
  31. 0xc0105fe9 <+509>: mov %edx,0xc(%eax)
  32. 0xc0105fec <+512>: mov -0x18(%ebp),%eax
  33. 0xc0105fef <+515>: mov -0x1c(%ebp),%edx
  34. 0xc0105ff2 <+518>: mov %edx,0x10(%eax)
  35. 0xc0105ff5 <+521>: mov -0x18(%ebp),%eax
  36. 0xc0105ff8 <+524>: mov (%eax),%eax
  37. 0xc0105ffa <+526>: jmp 0xc0106001 <fork+533>
  38. 0xc0105ffc <+528>: mov $0x0,%eax
  39. 0xc0106001 <+533>: add $0x44,%esp
  40. 0xc0106004 <+536>: pop %ebx
  41. 0xc0106005 <+537>: pop %ebp
  42. 0xc0106006 <+538>: ret
  43.  
  44.  
  45. with if:
  46.  
  47. 0xc0105f95 <+425>: xchg %bx,%bx ;BOCHS_BREAKPOINT
  48. 0xc0105f98 <+428>: mov -0x14(%ebp),%eax
  49. 0xc0105f9b <+431>: mov (%eax),%eax
  50. 0xc0105f9d <+433>: test %eax,%eax
  51. 0xc0105f9f <+435>: je 0xc0105fc9 <fork+477>
  52. 0xc0105fa1 <+437>: mov 0xc010b018,%eax
  53. 0xc0105fa6 <+442>: mov %eax,-0xc(%ebp)
  54. 0xc0105fa9 <+445>: jmp 0xc0105fb4 <fork+456>
  55. 0xc0105fab <+447>: mov -0xc(%ebp),%eax
  56. 0xc0105fae <+450>: mov 0x20(%eax),%eax
  57. 0xc0105fb1 <+453>: mov %eax,-0xc(%ebp)
  58. 0xc0105fb4 <+456>: mov -0xc(%ebp),%eax
  59. 0xc0105fb7 <+459>: mov 0x20(%eax),%eax
  60. 0xc0105fba <+462>: test %eax,%eax
  61. 0xc0105fbc <+464>: jne 0xc0105fab <fork+447>
  62. 0xc0105fbe <+466>: mov -0xc(%ebp),%eax
  63. 0xc0105fc1 <+469>: mov -0x1c(%ebp),%edx
  64. 0xc0105fc4 <+472>: mov %edx,0x20(%eax)
  65. 0xc0105fc7 <+475>: jmp 0xc0105fef <fork+515>
  66. 0xc0105fc9 <+477>: mov 0xc010b018,%eax
  67. 0xc0105fce <+482>: mov %eax,-0x10(%ebp)
  68. 0xc0105fd1 <+485>: jmp 0xc0105fdc <fork+496>
  69. 0xc0105fd3 <+487>: mov -0x10(%ebp),%eax
  70. 0xc0105fd6 <+490>: mov 0x20(%eax),%eax
  71. 0xc0105fd9 <+493>: mov %eax,-0x10(%ebp)
  72. 0xc0105fdc <+496>: mov -0x10(%ebp),%eax
  73. 0xc0105fdf <+499>: mov 0x20(%eax),%eax
  74. 0xc0105fe2 <+502>: test %eax,%eax
  75. 0xc0105fe4 <+504>: jne 0xc0105fd3 <fork+487>
  76. 0xc0105fe6 <+506>: mov -0x10(%ebp),%eax
  77. 0xc0105fe9 <+509>: mov -0x1c(%ebp),%edx
  78. 0xc0105fec <+512>: mov %edx,0x20(%eax)
  79. 0xc0105fef <+515>: call 0xc01061f0
  80. 0xc0105ff4 <+520>: mov %eax,-0x20(%ebp)
  81. 0xc0105ff7 <+523>: mov 0xc010b014,%eax
  82. 0xc0105ffc <+528>: cmp -0x14(%ebp),%eax
  83. 0xc0105fff <+531>: jne 0xc010602d <fork+577>
  84. 0xc0106001 <+533>: mov %esp,%ebx
  85. 0xc0106003 <+535>: mov %ebx,-0x24(%ebp)
  86. 0xc0106006 <+538>: mov %ebp,%ebx
  87. 0xc0106008 <+540>: mov %ebx,-0x28(%ebp)
  88. 0xc010600b <+543>: mov -0x1c(%ebp),%eax
  89. 0xc010600e <+546>: mov -0x24(%ebp),%edx
  90. 0xc0106011 <+549>: mov %edx,0x8(%eax)
  91. 0xc0106014 <+552>: mov -0x1c(%ebp),%eax
  92. 0xc0106017 <+555>: mov -0x28(%ebp),%edx
  93. 0xc010601a <+558>: mov %edx,0xc(%eax)
  94. 0xc010601d <+561>: mov -0x1c(%ebp),%eax
  95. 0xc0106020 <+564>: mov -0x20(%ebp),%edx
  96. 0xc0106023 <+567>: mov %edx,0x10(%eax)
  97. 0xc0106026 <+570>: mov -0x1c(%ebp),%eax
  98. 0xc0106029 <+573>: mov (%eax),%eax
  99. 0xc010602b <+575>: jmp 0xc0106032 <fork+582>
  100. 0xc010602d <+577>: mov $0x0,%eax
  101. 0xc0106032 <+582>: add $0x44,%esp
  102. 0xc0106035 <+585>: pop %ebx
  103. 0xc0106036 <+586>: pop %ebp
  104. 0xc0106037 <+587>: ret
  105.  
  106. test2:
  107. #include "syscall.h"
  108.  
  109. int main() {
  110.  
  111. int fildes = syscall_open("/dev/fb0", 16);
  112.  
  113. if(fildes >= 0) {
  114. char buffer[20] = "yaaaayyy\n";
  115. syscall_write(fildes, buffer, 9);
  116. }
  117.  
  118. int ret = syscall_fork();
  119. if(!ret) {
  120. char bufferca[20] = "CHILD_A\n";
  121. int fildesca = syscall_open("/dev/fb0", 16);
  122. if(fildesca >= 0) {
  123. syscall_write(fildesca, bufferca, 8);
  124. }
  125. } else {
  126. char buffercb[20] = "CHILD_B\n";
  127. int fildescb = syscall_open("/dev/fb0", 16);
  128. if(fildescb >= 0) {
  129. syscall_write(fildescb, buffercb, 8);
  130. }
  131. }
  132.  
  133. syscall_exit();
  134.  
  135. return 0;
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement