gdb/features/Makefile - gdb

  1. # Copyright (C) 2007-2015 Free Software Foundation, Inc.

  2. # This file is part of GDB.

  3. # This program is free software; you can redistribute it and/or modify
  4. # it under the terms of the GNU General Public License as published by
  5. # the Free Software Foundation; either version 3 of the License, or
  6. # (at your option) any later version.
  7. #
  8. # This program is distributed in the hope that it will be useful,
  9. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  11. # GNU General Public License for more details.
  12. #
  13. # You should have received a copy of the GNU General Public License
  14. # along with this program.  If not, see <http://www.gnu.org/licenses/>.


  15. # This file requires GNU make!

  16. # This Makefile updates files in ../regformats from their XML master
  17. # copies.  Because this relies on xsltproc, it is not normally run
  18. # during the build process; it should be run by hand when one of the
  19. # affected XML files is changed, and the results should be kept in the
  20. # GDB repository.

  21. # It can also update the C files in the features directory from their
  22. # XML master copies.  This relies on a GDB linked with expat and that
  23. # is configured to include support for the architecture, so the files
  24. # are kept in the GDB repository.
  25. #
  26. # By default we'll generate all C files, and you must point make at a
  27. # GDB that has been configured with --enable-targets=all:
  28. #
  29. #   make GDB=/path/to/gdb cfiles
  30. #
  31. # To regenerate all C files from scratch:
  32. #
  33. #   make GDB=/path/to/gdb clean-cfiles cfiles
  34. #
  35. # To generate specific C files, you can override the XMLTOC make
  36. # variable:
  37. #
  38. #   make GDB=/path/to/gdb XMLTOC="xml files" cfiles

  39. WHICH = aarch64 \
  40.         arm-with-iwmmxt arm-with-vfpv2 arm-with-vfpv3 arm-with-neon \
  41.         i386/i386 i386/i386-linux \
  42.         i386/i386-mmx i386/i386-mmx-linux \
  43.         i386/amd64 i386/amd64-linux \
  44.         i386/i386-avx i386/i386-avx-linux \
  45.         i386/i386-mpx i386/i386-mpx-linux \
  46.         i386/i386-avx512 i386/i386-avx512-linux \
  47.         i386/amd64-avx i386/amd64-avx-linux \
  48.         i386/amd64-mpx i386/amd64-mpx-linux \
  49.         i386/amd64-avx512 i386/amd64-avx512-linux \
  50.         i386/x32 i386/x32-linux \
  51.         i386/x32-avx i386/x32-avx-linux \
  52.         i386/x32-avx512 i386/x32-avx512-linux \
  53.         mips-linux mips-dsp-linux \
  54.         microblaze-with-stack-protect \
  55.         mips64-linux mips64-dsp-linux \
  56.         nios2-linux \
  57.         rs6000/powerpc-32 \
  58.         rs6000/powerpc-32l rs6000/powerpc-altivec32l rs6000/powerpc-e500l \
  59.         rs6000/powerpc-64l rs6000/powerpc-altivec64l rs6000/powerpc-vsx32l \
  60.         rs6000/powerpc-vsx64l rs6000/powerpc-cell32l rs6000/powerpc-cell64l \
  61.         s390-linux32 s390-linux64 s390x-linux64 \
  62.         s390-linux32v1 s390-linux64v1 s390x-linux64v1 \
  63.         s390-linux32v2 s390-linux64v2 s390x-linux64v2 \
  64.         s390-te-linux64 s390x-te-linux64 \
  65.         tic6x-c64xp tic6x-c64x tic6x-c62x \
  66.         tic6x-c64xp-linux tic6x-c64x-linux tic6x-c62x-linux

  67. # Record which registers should be sent to GDB by default after stop.
  68. aarch64-expedite = x29,sp,pc
  69. arm-expedite = r11,sp,pc
  70. i386/i386-expedite = ebp,esp,eip
  71. i386/i386-linux-expedite = ebp,esp,eip
  72. i386/amd64-expedite = rbp,rsp,rip
  73. i386/amd64-linux-expedite = rbp,rsp,rip
  74. i386/i386-avx-expedite = ebp,esp,eip
  75. i386/i386-avx-linux-expedite = ebp,esp,eip
  76. i386/i386-mpx-expedite = ebp,esp,eip
  77. i386/i386-mpx-linux-expedite = ebp,esp,eip
  78. i386/i386-avx512-expedite = ebp,esp,eip
  79. i386/i386-avx512-linux-expedite = ebp,esp,eip
  80. i386/i386-mmx-expedite = ebp,esp,eip
  81. i386/i386-mmx-linux-expedite = ebp,esp,eip
  82. i386/amd64-avx-expedite = rbp,rsp,rip
  83. i386/amd64-avx-linux-expedite = rbp,rsp,rip
  84. i386/amd64-mpx-expedite = rbp,rsp,rip
  85. i386/amd64-mpx-linux-expedite = rbp,rsp,rip
  86. i386/amd64-avx512-expedite = rbp,rsp,rip
  87. i386/amd64-avx512-linux-expedite = rbp,rsp,rip
  88. i386/x32-expedite = rbp,rsp,rip
  89. i386/x32-linux-expedite = rbp,rsp,rip
  90. i386/x32-avx-expedite = rbp,rsp,rip
  91. i386/x32-avx-linux-expedite = rbp,rsp,rip
  92. i386/x32-avx512-expedite = rbp,rsp,rip
  93. i386/x32-avx512-linux-expedite = rbp,rsp,rip
  94. mips-expedite = r29,pc
  95. mips-dsp-expedite = r29,pc
  96. mips64-expedite = r29,pc
  97. mips64-dsp-expedite = r29,pc
  98. microblaze-expedite = r1,rpc
  99. nios2-linux-expedite = sp,pc
  100. powerpc-expedite = r1,pc
  101. rs6000/powerpc-cell32l-expedite = r1,pc,r0,orig_r3,r4
  102. rs6000/powerpc-cell64l-expedite = r1,pc,r0,orig_r3,r4
  103. s390-linux32-expedite = r14,r15,pswa
  104. s390-linux32v1-expedite = r14,r15,pswa
  105. s390-linux32v2-expedite = r14,r15,pswa
  106. s390-linux64-expedite = r14l,r15l,pswa
  107. s390-linux64v1-expedite = r14l,r15l,pswa
  108. s390-linux64v2-expedite = r14l,r15l,pswa
  109. s390-te-linux64-expedite = r14l,r15l,pswa
  110. s390x-linux64-expedite = r14,r15,pswa
  111. s390x-linux64v1-expedite = r14,r15,pswa
  112. s390x-linux64v2-expedite = r14,r15,pswa
  113. s390x-te-linux64-expedite = r14,r15,pswa
  114. tic6x-c64xp-expedite = A15,PC
  115. tic6x-c64x-expedite = A15,PC
  116. tic6x-c62x-expedite = A15,PC
  117. tic6x-c64xp-linux-expedite = A15,PC
  118. tic6x-c64x-linux-expedite = A15,PC
  119. tic6x-c62x-linux-expedite = A15,PC


  120. XSLTPROC = xsltproc
  121. outdir = ../regformats
  122. OUTPUTS = $(patsubst %,$(outdir)/%.dat,$(WHICH))

  123. # The set of xml files we'll generate .c files for GDB from.  By
  124. # default we'll build all .c files, which requires an
  125. # --enable-targets=all GDB.  You can override this by passing XMLTOC
  126. # to make on the command line.
  127. XMLTOC = \
  128.         aarch64.xml \
  129.         arm-with-iwmmxt.xml \
  130.         arm-with-m-fpa-layout.xml \
  131.         arm-with-m-vfp-d16.xml \
  132.         arm-with-m.xml \
  133.         arm-with-neon.xml \
  134.         arm-with-vfpv2.xml \
  135.         arm-with-vfpv3.xml \
  136.         i386/amd64-avx-linux.xml \
  137.         i386/amd64-avx.xml \
  138.         i386/amd64-avx512-linux.xml \
  139.         i386/amd64-avx512.xml \
  140.         i386/amd64-linux.xml \
  141.         i386/amd64-mpx-linux.xml \
  142.         i386/amd64-mpx.xml \
  143.         i386/amd64.xml \
  144.         i386/i386-avx-linux.xml \
  145.         i386/i386-avx.xml \
  146.         i386/i386-avx512-linux.xml \
  147.         i386/i386-avx512.xml \
  148.         i386/i386-linux.xml \
  149.         i386/i386-mmx-linux.xml \
  150.         i386/i386-mmx.xml \
  151.         i386/i386-mpx-linux.xml \
  152.         i386/i386-mpx.xml \
  153.         i386/i386.xml \
  154.         i386/x32-avx-linux.xml \
  155.         i386/x32-avx.xml \
  156.         i386/x32-avx512-linux.xml \
  157.         i386/x32-avx512.xml \
  158.         i386/x32-linux.xml \
  159.         i386/x32.xml \
  160.         microblaze-with-stack-protect.xml \
  161.         microblaze.xml \
  162.         mips-dsp-linux.xml \
  163.         mips-linux.xml \
  164.         mips64-dsp-linux.xml \
  165.         mips64-linux.xml \
  166.         nios2-linux.xml \
  167.         nios2.xml \
  168.         rs6000/powerpc-32.xml \
  169.         rs6000/powerpc-32l.xml \
  170.         rs6000/powerpc-403.xml \
  171.         rs6000/powerpc-403gc.xml \
  172.         rs6000/powerpc-405.xml \
  173.         rs6000/powerpc-505.xml \
  174.         rs6000/powerpc-601.xml \
  175.         rs6000/powerpc-602.xml \
  176.         rs6000/powerpc-603.xml \
  177.         rs6000/powerpc-604.xml \
  178.         rs6000/powerpc-64.xml \
  179.         rs6000/powerpc-64l.xml \
  180.         rs6000/powerpc-7400.xml \
  181.         rs6000/powerpc-750.xml \
  182.         rs6000/powerpc-860.xml \
  183.         rs6000/powerpc-altivec32.xml \
  184.         rs6000/powerpc-altivec32l.xml \
  185.         rs6000/powerpc-altivec64.xml \
  186.         rs6000/powerpc-altivec64l.xml \
  187.         rs6000/powerpc-cell32l.xml \
  188.         rs6000/powerpc-cell64l.xml \
  189.         rs6000/powerpc-e500.xml \
  190.         rs6000/powerpc-e500l.xml \
  191.         rs6000/powerpc-isa205-32l.xml \
  192.         rs6000/powerpc-isa205-64l.xml \
  193.         rs6000/powerpc-isa205-altivec32l.xml \
  194.         rs6000/powerpc-isa205-altivec64l.xml \
  195.         rs6000/powerpc-isa205-vsx32l.xml \
  196.         rs6000/powerpc-isa205-vsx64l.xml \
  197.         rs6000/powerpc-vsx32.xml \
  198.         rs6000/powerpc-vsx32l.xml \
  199.         rs6000/powerpc-vsx64.xml \
  200.         rs6000/powerpc-vsx64l.xml \
  201.         rs6000/rs6000.xml \
  202.         s390-linux32.xml \
  203.         s390-linux32v1.xml \
  204.         s390-linux32v2.xml \
  205.         s390-linux64.xml \
  206.         s390-linux64v1.xml \
  207.         s390-linux64v2.xml \
  208.         s390-te-linux64.xml \
  209.         s390x-linux64.xml \
  210.         s390x-linux64v1.xml \
  211.         s390x-linux64v2.xml \
  212.         s390x-te-linux64.xml \
  213.         tic6x-c62x-linux.xml \
  214.         tic6x-c62x.xml \
  215.         tic6x-c64x-linux.xml \
  216.         tic6x-c64x.xml \
  217.         tic6x-c64xp-linux.xml \
  218.         tic6x-c64xp.xml

  219. CFILES = $(patsubst %.xml,%.c,$(XMLTOC))
  220. GDB = false

  221. all: $(OUTPUTS)

  222. $(outdir)/%.dat: %.xml number-regs.xsl sort-regs.xsl gdbserver-regs.xsl
  223.         echo "# THIS FILE IS GENERATED.  -*- buffer-read-only: t -*- vi :set ro:" > $(outdir)/$*.tmp
  224.         echo "# Generated from: $<" >> $(outdir)/$*.tmp
  225.         echo "name:`echo $(notdir $*) | sed 's/-/_/g'`" >> $(outdir)/$*.tmp
  226.         echo "xmltarget:$(<F)" >> $(outdir)/$*.tmp
  227.         echo "expedite:$(if $($*-expedite),$($*-expedite),$($(firstword $(subst -, ,$(notdir $*)))-expedite))" \
  228.           >> $(outdir)/$*.tmp
  229.         $(XSLTPROC) --path "$(PWD)" --xinclude number-regs.xsl $< | \
  230.           $(XSLTPROC) sort-regs.xsl - | \
  231.           $(XSLTPROC) gdbserver-regs.xsl - >> $(outdir)/$*.tmp
  232.         sh ../../move-if-change $(outdir)/$*.tmp $(outdir)/$*.dat

  233. cfiles: $(CFILES)
  234. %.c: %.xml
  235.         $(GDB) -nx -q -batch \
  236.           -ex "set tdesc filename $<" -ex 'maint print c-tdesc' > $@.tmp
  237.         sh ../../move-if-change $@.tmp $@

  238. # Other dependencies.
  239. $(outdir)/arm-with-iwmmxt.dat: arm-core.xml xscale-iwmmxt.xml
  240. $(outdir)/i386/i386.dat: i386/32bit-core.xml i386/32bit-sse.xml
  241. $(outdir)/i386/i386-linux.dat: i386/32bit-core.xml i386/32bit-sse.xml \
  242.                                i386/32bit-linux.xml
  243. $(outdir)/i386/amd64.dat: i386/64bit-core.xml i386/64bit-sse.xml
  244. $(outdir)/i386/amd64-linux.dat: i386/64bit-core.xml i386/64bit-sse.xml \
  245.                                 i386/64bit-linux.xml
  246. $(outdir)/i386/i386-avx.dat: i386/32bit-core.xml i386/32bit-avx.xml
  247. $(outdir)/i386/i386-avx-linux.dat: i386/32bit-core.xml i386/32bit-avx.xml \
  248.                                i386/32bit-linux.xml
  249. $(outdir)/i386/i386-mpx.dat: i386/32bit-core.xml i386/32bit-avx.xml \
  250.                                i386/32bit-mpx.xml
  251. $(outdir)/i386/i386-mpx-linux.dat: i386/32bit-core.xml         i386/32bit-avx.xml \
  252.                                i386/32bit-linux.xml i386/32bit-mpx.xml
  253. $(outdir)/i386/i386-avx512.dat: i386/32bit-core.xml i386/32bit-avx.xml \
  254.                                i386/32bit-mpx.xml i386/32bit-avx512.xml
  255. $(outdir)/i386/i386-avx512-linux.dat: i386/32bit-core.xml i386/32bit-avx.xml \
  256.                                i386/32bit-linux.xml i386/32bit-mpx.xml i386/32bit-avx512.xml
  257. $(outdir)/i386/i386-mmx.dat: i386/32bit-core.xml
  258. $(outdir)/i386/i386-mmx-linux.dat: i386/32bit-core.xml i386/32bit-linux.xml
  259. $(outdir)/i386/amd64-avx.dat: i386/64bit-core.xml i386/64bit-avx.xml
  260. $(outdir)/i386/amd64-avx-linux.dat: i386/64bit-core.xml i386/64bit-avx.xml \
  261.                                     i386/64bit-linux.xml
  262. $(outdir)/i386/amd64-mpx-linux.dat: i386/64bit-core.xml i386/64bit-avx.xml \
  263.                                i386/64bit-linux.xml i386/64bit-mpx.xml
  264. $(outdir)/i386/amd64-mpx.dat: i386/64bit-core.xml i386/64bit-avx.xml \
  265.                                i386/64bit-mpx.xml
  266. $(outdir)/i386/amd64-avx512.dat: i386/64bit-core.xml i386/64bit-avx.xml \
  267.                                i386/64bit-mpx.xml i386/64bit-avx512.xml
  268. $(outdir)/i386/amd64-avx512-linux.dat: i386/64bit-core.xml i386/64bit-avx.xml \
  269.                                i386/64bit-mpx.xml i386/64bit-avx512.xml \
  270.                                i386/64bit-linux.xml
  271. $(outdir)/i386/x32.dat: i386/x32-core.xml i386/64bit-sse.xml
  272. $(outdir)/i386/x32-linux.dat: i386/x32-core.xml i386/64bit-sse.xml \
  273.                               i386/64bit-linux.xml
  274. $(outdir)/i386/x32-avx.dat: i386/x32-core.xml i386/64bit-avx.xml
  275. $(outdir)/i386/x32-avx-linux.dat: i386/x32-core.xml i386/64bit-avx.xml \
  276.                                   i386/64bit-linux.xml
  277. $(outdir)/i386/x32-avx512.dat: i386/x32-core.xml i386/64bit-avx.xml \
  278.                                i386/64bit-mpx.xml i386/64bit-avx512.xml
  279. $(outdir)/i386/x32-avx512-linux.dat: i386/x32-core.xml i386/64bit-avx.xml \
  280.                                i386/64bit-mpx.xml i386/64bit-avx512.xml i386/64bit-linux.xml

  281. # 'all' doesn't build the C files, so don't delete them in 'clean'
  282. # either.
  283. clean-cfiles:
  284.         rm -f $(CFILES)

  285. clean:
  286.         rm -f $(OUTPUTS)