print_offsets.awk
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:1k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. BEGIN {
  2. print "#ifndef _ASM_IA64_OFFSETS_H"
  3. print "#define _ASM_IA64_OFFSETS_H"
  4. print "/*"
  5. print " * DO NOT MODIFY"
  6. print " *"
  7. print " * This file was generated by arch/ia64/tools/print_offsets.awk."
  8. print " *"
  9. print " */"
  10. #
  11. # This is a cheesy hack.  Make sure that
  12. # PT_PTRACED == 1<<PT_PTRACED_BIT.
  13. #
  14. print "#define PT_PTRACED_BIT 0"
  15. print "#define PT_TRACESYS_BIT 1"
  16. }
  17. # look for .tab:
  18. # stringz "name"
  19. # data value
  20. # sequence
  21. /.*[.]size/ {
  22. inside_table = 0
  23. }
  24. /// end/ {
  25. inside_table = 0
  26. }
  27. /.*[.]rodata/ {
  28. inside_table = 0
  29. }
  30. {
  31. if (inside_table) {
  32. if ($1 == "//") getline;
  33. name=$2
  34. getline
  35. getline
  36. if ($1 == "//") getline;
  37. value=$2
  38. len = length(name)
  39. name = substr(name, 2, len - 2)
  40. len -= 2
  41. if (len == 0)
  42. print ""
  43. else {
  44. len += 8
  45. if (len >= 40) {
  46. space=" "
  47. } else {
  48. space=""
  49. while (len < 40) {
  50. len += 8
  51. space = space"t"
  52. }
  53. }
  54. printf("#define %s%s%lut/* 0x%lx */n", name, space, value, value)
  55. }
  56. }
  57. }
  58. /tab:/ {
  59. inside_table = 1
  60. }
  61. /tab#:/ {
  62. inside_table = 1
  63. }
  64. END {
  65. print ""
  66. print "#endif /* _ASM_IA64_OFFSETS_H */"
  67. }